# @appport/appboundry 中文文档

规范地址：https://npmcn.com/package/%40appport/appboundry/

版本：1\.11\.0
npm 元数据更新时间：2026-11-05T19:26:28.959Z
中文译文更新时间：2026-11-08T11:58:52.863Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40appport/appboundry
原文对照：https://npmcn.com/package/%40appport/appboundry/?lang=original
项目主页：https://github.com/rkendel1/appport#readme
源码仓库：https://github.com/rkendel1/appport

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：2.7 MB，301 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：10 个
- 首次发布：2026-09-08T12:17:24.369Z
- 最新版本发布：2026-11-05T19:26:28.773Z
- 近 30 天下载量：1784（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：22（近 12 个月 22 个）

## 中文简介

构建并验证AppBoundry的寄存器应用程序,并配备有明确的Cononical产品工具.

## 安装

```sh
npm install @appport/appboundry
```

也可以使用：`pnpm add @appport/appboundry`、`yarn add @appport/appboundry`、`bun add @appport/appboundry`

## README

# @ appport/ appboundry (帮助)

为 AppBoundry 构建并验证 AppPort 应用程序 。 默认命令运行于当前寄存器的权威合同,执行,以及WASM的文物上.

条形AppBoundry产品工具在明快下可用 `product` 子命令,所以不能与客户应用程序构建相混淆 :

```sh
# Wrap the customer application in the current directory
npx appport add
npx @appport/appboundry test
npx @appport/appboundry build
npx @appport/appboundry verify

# Build the canonical AppBoundry product
npx @appport/appboundry product build
npx @appport/appboundry product certify
```

货船 `templates/appboundry.gitignore` 用于生成或复制 AppBundry工作空间. 安装者复制到 `.gitignore`;它排除了macOS 元数据 (`.DS_Store` 财务报告和审定财务报表 `.DS_changes`和 `node_modules/`。 。 。 .

```sh
npx @appport/appboundry product build --out AppBoundry.app
npx @appport/appboundry product certify # defaults to AppBoundry.app
```

`test` 以当前寄存器的运行应用程序打开 Apport Studio,这样在部署前就可以行使它的能力边界. `build` 发出一个名为不可变的寄存器 `AppPort/application-bundle/1` `.app` 目录加其可浏览器上载 `.appbundle`。 。 。 . `verify` 检查申请及其申报的能力. `product build` 财务报告和审定财务报表 `product certify` 专为舟子Appboundry平台文物而设.

## 1.11.0的升级说明:拒绝申报账户或租赁的文物

从1.11.0, `appboundry run` **拒绝** 其清单申报的文物 `identity.accounts` 或者说 `identity.tenancy` (FeltKit为 `auth.accounts` 财务报告和审定财务报表 `auth.tenant`),与 `ARTIFACT_IDENTITY_UNSUPPORTED`此主机不为 FeltKit 服务 注册、注册、邀请或租户路线`/api/auth/*`, (中文(简体) ), `/api/tenants/*`),所以这样 文物只能由运营商发行,其租户范围藏品关闭. 1.1.0, 更早之前.

要继续运行操作员发布的会话,请明确接受:

```bash
appboundry run my-app.app --state ./state --accounts operator-sessions
# or: APPBOUNDRY_ACCOUNTS=operator-sessions appboundry run my-app.app --state ./state
```

验收记录为运行时间警告. 在FeltKit宣布这些之前建造的艺术品 和不使用账户或租赁的文物不受影响。 开始的部署 运行时间本身(容器、赫兹纳跑道)必须在 移动到1.11.0. 拟议的身份主机接口在 `docs/identity-host-interface.md` (FK-GAP-013) (法语).

## 自成一体的文物`appboundry.app/1`(中文(简体) )

从1.2.0, `appboundry run` 为自成一体的文物服务:a `manifest.json` 加一个 `module.wasm` 进口什么。 费特基特 `feltkit build --target appboundry` 产生一个.

```bash
npx @appport/appboundry@^1.5.0 run my-app.app --state ./state
appboundry --version --json   # format, guest ABI, host interfaces (migrations@1 from 1.4.0, transactions@1 from 1.5.0), services, stateContract: "enforced"
```

**主机提供的应用程序代码 :**

-   存储,在 `--state` 目录;
-   身份和会话;
-   文件、 通知、 配置、 任务( 作为 enqueuer 运行) 和 webhooks (emit 是) 记录;没有交付,因为文物没有网络).

**文物数据保障(1.3.0).** 名单 `state.contract`状态 合同,由FeltDB执行,如同在制作人自己的运行时间:

-   需要的领域和类型;
-   独有的限制(重复为 `CONFLICT`(三);
-   对删除加以限制的引用`FAILED_PRECONDITION`(三);
-   没有未申报的收藏.

**如何安装合同.** 由AppPort服务公司组成 收集文物用途,并在提供物品之前安装:

-   **一个新的文物版本** 只有在每一个存储的记录符合合同时才被接受.
-   **否则,当它掉下一个人口集,** 主机拒绝以 `SCHEMA_INCOMPATIBLE`,命名改变和失败的记录。 前一个版本保存 以未改变的数据运行.
-   **合同签订前建造的文物** 和以前一样,带着警告而运行.

**文物数据迁移 (1.4.0).** 清单可列出迁移情况 (单位:千美元)`state.migrations: { format: "appboundry.migrations/1", order: [...] }`,主机接口 `migrations@1`) (中文(简体) ). 它们是应用程序自己的功能,捆绑在一起 `module.wasm` 喜欢 每个其它函数( FeltKit : `app.migration()`;主机从未收到代码作为数据. 服务前,主持人:

-   按所列顺序,在客人中运行一次待迁移(召集) `{ migration: name }`) (中文(简体) ). 迁移只能读取申请记录 (单位:千美元)`migration.records`)它返回了它所表现的文字,后来的迁移读取了什么 之前写道:;
-   写新合同和历史记录 **一个** FeltDB 进化; FeltDB重新验证了所有反对新合同的记录. 新合同的收藏品 滴滴首先被清空,在中间合同版本中记录一次;
-   记录 `_appboundry_contract` 其实际应用:迁移、有多少人 记录被放入并被删除, 合同版本, 文物和谁授权开始 (单位:千美元)`authorizedBy`· ; `appboundry run` 记录 `"appboundry run"`) (中文(简体) ).

移民失败,或者留下记录 新合同拒绝,拒绝开始 `SCHEMA_INCOMPATIBLE` (迁移、错误代码或 FeltDB 违反)和更改 无所事事:前件文物一直以未变的数据运行. 从未申请过移民 再次运行。 格式除此以外 `appboundry.migrations/1` 文物装入时拒绝 (单位:千美元)`MIGRATIONS_UNSUPPORTED`) (中文(简体) ). `appboundry run --no-migrate` 拒绝启动文物 这样部署就可以继续授权更改 从运行时间开始.

**顺序与承诺后效应 (1.5.0).** 需要主机接口的文物 `transactions@1` (费尔特基特: `ctx.db.sequence`, (中文(简体) ), `ctx.afterCommit`)获得两个来宾业务:

-   `db.sequence { name }`: 一个流的下个数, 在变异的交易和 用它写, 在读本上小心。 在溪流中,人数正严格增加 并且没有间隙。失败的变异不会消耗任何东西。 不同的溪流从不争吵. 将一个流序列化的同时作家( Q)`CONFLICT`) (中文(简体) ). 显示函数 `retry: { sequenceConflicts: n }` 当它没有使用服务时,它将被重新运行.
-   `outbox.stage { effects }`: 承诺后通知、网约车事件和工作,验证和 与变异者所写的一起犯罪(`_appboundry_outbox`)),或根本没有. 承诺之后, 主办人履行他们作为召唤者和记录者的职责 `done` 或者说 `failed`工人康复 记录一个停止运行的时间 留下。 失败者等待操作员 : `appboundry admin outbox list [--status failed]` 财务报告和审定财务报表 `appboundry admin outbox retry <id>`。 。 。 . 从 1. 6.0 开始,在记录以下内容的同一 FeltDB 交易中创建了工作或 Webhook 交付 实现效果(AppPort Services的交易上下文, `@appport/services` (原始内容存档于2019-09-13). 0.13. 所以它存在 一旦每一次承诺的效果, 穿过一站和复苏; 被拒绝的创造 任务或完成标记。 通知将记录ID作为一能键。 创造,不是 执行:一个任务运行,一个webhook交付到它的终点,由服务机构重审.

没有接口的主机在装入时拒绝这样的文物,拒绝不支持 界面版本。 这份合同是FeltKit的 `docs/TRANSACTIONS.md`; FeltKit 软件 `tests/e2e/transactions-parity.test.mjs` 这里和FeltKit的运行时间需要相同的结果.

**MCP (1.11.0) (中文(简体) ).** 一个运行中的文物也服务于它作为 MCP 发布的 AppPort 功能 工具时间 `POST /mcp` (Streamable HTTP、无国籍、JSON的答复; `@appport/mcp`) (中文(简体) ). 它使用 同届东道主会议(`Authorization: Bearer abs_…`角色和宾客决定 `/appport`(单位:千美元) 无法验证的符号为 401, 匿名呼叫者仅到达 `public` 能力.

**两种文物格式(1.11.** `appboundry run`, (中文(简体) ), `appboundry artifact verify|inspect` 财务报告和审定财务报表 `appboundry app install|inspect` 以文物的明细表辨认出来。 一个 `appboundry.app/1` 文物和以前一样运行在文物主机上. AppPort 应用程序捆绑 (单位:千美元)`AppPort/application-bundle/1`从 `appport app package`) 已核实,然后以 `appport app start`。管理下的部署路径仍然接受 `appboundry.app/1` 仅限 (单位:千美元)`docs/artifact-formats.md`) (中文(简体) ).

**如何检查释放.** `pnpm release:appboundry:verify` 包这个软件包,安装它 输入一个空目录,并运行由 npm 创建的 FeltKit 应用程序.

**1 AppPort运行时间(1.7.** 软件包取决于已发布 `@appport/core`, (中文(简体) ), `@appport/sdk` 财务报告和审定财务报表 `appport` 准确的版本,而不是私人的复制品, 所以安装 运行一个 AppPort 运行时间, 与应用程序自己共享 `@appport/sdk`它跟随 AppPort 的 当前语义: 申请合同包含每种能力的明确内容 `effect` 财务报告和审定财务报表 `authorizationContract`,因此重建应用程序生成新的软件包身份,同时 由早先的版本所建的软件包,仍按其原始身份加以验证;以及 拒绝给予许可(`UNAUTHORIZED`除非东道主提供一名授权人.

**Bundry设计基础(1.7.1).** 文物门户服务于 `/portal` (单位:千美元)`portal/app.js`, (中文(简体) ), `portal/portal.css`输入 `AppBoundry.wasm`)使用同样的 基础作为云端: StackUI 用于部署、连接和证书, 失败的主机读取为未知而非缺失, 以及共享的主题切换 。 包裹 取决于 `appport` 1.3.0,其捆绑工作室搭载AppBoundry主机控制台在同一台 基础.

## WASM 供应商

AppBoundry 重用同样的 `.app` 经核实的突触WASM软件包 能力。 突触拥有模块的发现,验证,能力合同, 和 WASM 执行语义; AppBoundry 拥有包装,供应商组成, 约束、授权和援引路线:

```text
.app
 └── WASM provider
       ↓
  Synapse capability
       ↓
 AppBoundry discovery → bind → invoke
```

例如,一个包装 `change-context-resolver` 继续做广告 `change-impact.context@1.0.0`消费者需要通过下列途径获得这种能力: 正常的AppBundry成分 API 并且不需要知道文物路径, 模块文件名,或运行时间。 检查或安装软件包报告 `runtime: wasm` 在保留突触能力特性的同时.

要通过 AppBoundry 边缘共享一个私有的 HTTP 应用程序,请保留 应用程序绑定到本地主机并运行 :

```sh
npx @appport/appboundry connect 3000 --edge https://edge.example
```

或者设定 `APPBOUNDRY_EDGE_URL` 选择 `APPBOUNDRY_CREDENTIAL`。 。 。 .

连接路径是中立的,不需要 AppPort 应用程序运行时间 。 客户端与 边,接收边缘发行的共享和端点,代号 a 将 HTTP 子集绑定为本地端口 .

软件包还暴露了记忆能力成分 运行时加 提供/消费者/约束状态 在不要求将应用程序与应用程序直接结合的情况下可观察到:

```sh
# publish a local capability provider into a runtime snapshot
npx @appport/appboundry capabilities publish llm.generate@1 \
  --provider local-llm \
  --application example.local-llm

# register a consumer requirement
npx @appport/appboundry capabilities require llm.generate@1 \
  --consumer my-app \
  --application example.consumer

# inspect currently reachable providers
npx @appport/appboundry providers llm.generate@1

# create a logical binding
npx @appport/appboundry bind llm.generate@1 \
  --consumer-application example.consumer \
  --provider-application example.local-llm

# inspect the application view
npx @appport/appboundry capabilities --application example.consumer
```

默认情况下这些命令读取并写入 `.appboundry/runtime.json` 输入 当前工作目录。 过 `--runtime <path>` 瞄准不同的目标 抓取文件,和 `--json` 用于机器可读输出.

当前连接表面 :

-   共享 `AppBoundry/connect` 协议与 `hello`, (中文(简体) ), `ready`, (中文(简体) ), `request`, (中文(简体) ), `response`, (中文(简体) ), `heartbeat`, (中文(简体) ), `close`,以及 `error` 信件
-   边缘自有 `connection_id`, (中文(简体) ), `share_id`, (中文(简体) ), `endpoint_id`,以及 认证 `application_id`
-   明确限值缓冲:
    -   最大请求正文: 524288字节
    -   最大响应机构: 524288字节
    -   最大框架大小: 2097152字节
-   支持的方法 : `GET`, (中文(简体) ), `POST`, (中文(简体) ), `PUT`, (中文(简体) ), `PATCH`, (中文(简体) ), `DELETE`, (中文(简体) ), `HEAD`, (中文(简体) ), `OPTIONS`
-   双向跳行头过滤
-   心跳/活性、断开、重新连接、撤销和过期处理

目前的限制 :

-   缓冲是受约束的,而不是流
-   开发边缘为单节点,在内存中保持共享/端点状态
-   `status` 编号 : `revoke` CLI 命令尚未曝光; 撤销并过期 是边缘能力

## 常见问题

### @appport/appboundry 是什么？

构建并验证AppBoundry的寄存器应用程序,并配备有明确的Cononical产品工具\.

### 如何安装 @appport/appboundry？

在项目目录运行 npm install @appport/appboundry，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 appboundry，可以用 npx appboundry 直接运行。

### @appport/appboundry 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @appport/appboundry 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @appport/appboundry 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @appport/appboundry 可以商用吗？

@appport/appboundry 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @appport/appboundry 的下载量有多少？

根据 npm 官方下载统计，@appport/appboundry 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,784 次，日均约 59 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @appport/appboundry 还在维护吗？

最新版本 1\.11\.0 发布于 2026/11/06（2 天前）；至今共发布 22 个版本，其中过去 12 个月发布了 22 个；首次发布于 2026/09/08。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

