打包发布

Ageniti 可以把同一个 app definition 转成可分发的 CLI、MCP、manifest 和 skill 文档产物。

会生成什么

bundle target 会写出:

ageniti.manifest.json
ageniti.actions.json
ageniti.mcp.json
cli.mjs
mcp-stdio.mjs
GUIDE.md
package.json
README.md
ageniti.bundle.json

这些文件描述 app、提供可运行 launcher,并让 app 可以被安装或审查。

生成出来的 README.md 不是占位文件。它会跟着 bundle 一起交付,告诉下游用户如何运行、安装、发布和接入这些 app surface。

必需的 App Module

Launcher target 需要一个 Node-safe module 来 export 你的 Ageniti app。

src/ageniti/app.js

不要从这个入口 import React components、browser-only APIs、route files 或 mobile runtime code。

Build

task-app build bundle --app-module ./src/ageniti/app.js --app-export app --out-dir ./dist/ageniti

如果项目里有 ageniti.config.json,build command 可以读取其中的默认配置。

Package

task-app package --app-module ./src/ageniti/app.js --app-export app --out-dir ./dist/ageniti

这个命令会构建 bundle,并在生成的 output directory 里运行 npm pack

输出会是类似这样的 tarball:

task-app-ageniti-0.1.0.tgz

你可以用同样的安装形态做本地验证:

npm install -g ./dist/ageniti/task-app-ageniti-*.tgz
task-app
task-app-mcp

Publish

task-app publish --app-module ./src/ageniti/app.js --app-export app --out-dir ./dist/ageniti

publish 默认是 dry run。只有确定要真实发布时,才传 --live

task-app publish --live --access public --tag latest --app-module ./src/ageniti/app.js --app-export app --out-dir ./dist/ageniti

如果 npm 要求两步验证,按 npm 在发布过程中的额外验证提示完成即可。

发布之后,下游用户安装的是你生成出来的 app package,不是 Ageniti SDK 本身:

npm install -g task-app-ageniti
task-app
task-app-mcp

MCP Descriptor

ageniti.mcp.json 包含 command metadata,以及常见 MCP host 的配置片段。生成的 stdio command 指向:

node ./mcp-stdio.mjs

本地开发时,MCP client 可以指向生成出来的 bundle 目录:

{
  "mcpServers": {
    "task-app": {
      "command": "node",
      "args": ["./mcp-stdio.mjs"],
      "cwd": "/absolute/path/to/dist/ageniti"
    }
  }
}

全局安装后,很多 MCP client 可以直接调用生成的 MCP bin:

{
  "mcpServers": {
    "task-app": {
      "command": "task-app-mcp",
      "args": []
    }
  }
}

具体 bundle 以 ageniti.mcp.json 里的 snippets 为准。

CLI 部署

生成的 CLI 可以直接从 bundle 里运行:

node ./dist/ageniti/cli.mjs actions
node ./dist/ageniti/cli.mjs manifest

通过 npm 安装后,用户运行生成的 bin:

task-app actions
task-app manifest
task-app create-task --json '{"title":"Follow up"}'

bin 名称来自 ageniti.config.json 里的 package.binName

HTTP 部署

HTTP 通常部署在你自己的后端里,而不是从这个静态 bundle 直接启动。你在 server process 里挂同一个 Ageniti app:

const handle = app.createHttpHandler();

请求路径是:

GET  /ageniti/actions
POST /ageniti/actions/<action-name>/invoke

这样 auth、session、网络策略和 hosting 都仍然由你的基础设施负责。可以用 npx @ageniti/core init host-http 生成 starter。

Skill 文档

GUIDE.md 从 app 和 action metadata 生成。它给 Agent、coding assistant 和自动化系统提供一份紧凑的能力使用说明。

发布前审查

发布新 bundle 前建议:

  • 检查 ageniti.manifest.json
  • 检查 ageniti.actions.json
  • 检查 ageniti.mcp.json
  • 运行生成的 cli.mjs
  • 用 MCP host 测试生成的 mcp-stdio.mjs
  • task-app diff 对比新旧 manifests