@ 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编号 :revokeCLI 命令尚未曝光; 撤销并过期 是边缘能力