@appport/appboundry

中文文档
1.11.0发布于 2026/11/06Apache-2.0TypeScriptES Module近 30 天下载 1784

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

中文使用文档
文档目录3 节
  1. 1.11.0的升级说明:拒绝申报账户或租赁的文物
  2. 自成一体的文物 appboundry.app/1 (中文(简体) )
  3. WASM 供应商

@ appport/ appboundry (帮助)

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

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

# 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/。 。 。 .

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, 更早之前.

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

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 产生一个.

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 拥有包装,供应商组成, 约束、授权和援引路线:

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

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

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

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

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

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

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

# 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 共发布 22 个版本,首次发布于 2026/09/08;过去 12 个月发布了 22 个版本。

版本发布日期距今
1.11.0latest2026/11/062 天前
1.10.02026/11/062 天前
1.9.02026/11/052 天前
1.8.02026/11/053 天前
1.7.32026/11/053 天前
1.7.22026/11/043 天前

关于 @appport/appboundry 的常见问题

@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 和提交记录判断。