# @absolutejs/manifest 中文文档

规范地址：https://npmcn.com/package/%40absolutejs/manifest/

版本：0\.10\.0
npm 元数据更新时间：2026-08-23T01:33:59.947Z
中文译文更新时间：2026-11-05T20:47:21.864Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：329 kB，20 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：typebox \>=1\.3\.0 \<2
- 首次发布：2026-07-13T00:49:23.977Z
- 最新版本发布：2026-08-23T01:33:59.771Z
- 近 30 天下载量：24461（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：17（近 12 个月 17 个）

## 中文简介

绝对JS包单合同. 每个@absolutejs/\* 包都从它的./ 明显子路径输出出一个打入的列表(设置 schema, env 要求, 适配器插槽, 接线配方, AI 工具) ; 此包是这些列表是拼写的合同

## 安装

```sh
npm install @absolutejs/manifest
```

也可以使用：`pnpm add @absolutejs/manifest`、`yarn add @absolutejs/manifest`、`bun add @absolutejs/manifest`

## README

# @absolutejs/manifest(绝对)

0.4版本通过构建使远程工具安全. 合同表2 宣布足够的策略元数据,供主机或无代码控制平面解释, 批准、租赁、执行、审计,并在可能情况下对每一项行动给予补偿. Contract-1显示仍装入目录和升级工具,但其工具 故意省略AI和MCP桥.

## 代理行动授权(合同2)

合同2增加了语义工具效应和执行要求。 这些是 政策投入,而不是模式提示:

```ts
send_email: tool.runtime({
  authorization: {
    approval: "policy",
    audience: "owner",
    destinationFields: ["to"],
    effects: ["send", "external-network"],
    idempotency: { mode: "host" },
    requiredScopes: ["email:send"],
    reversible: false,
  },
  // input, handler, description…
});
```

桥梁被关闭: 工具被省略,除非清单是合同2 工具具有有效的授权元数据、运行时间或工作空间能力 以及东道方用品 `ToolBindings.enforce`。执行者得到 深冻,验证,默认的论据, 他们的犬科SHA-256摘要, 软件包/工具身份,以及单用途执行关闭。 结 论 执行返回时过期, 关闭批准- 现在/ 执行- 不同- 输入间隙。 一个主机可以包 批准,授权, idepotency租赁, 并记录收货情况.

`inspectManifestSecurity` 返回每个工具的姿态和可操作的问题代码 用于目录和无编码的 UI。 它检查范围,公众曝光,目的地, (c) 资源与开支约束、一能性、可逆性/补偿, 破坏性提示,只读提示,以及每个引用的输入字段.

绝对JS包单合同. 每个 `@absolutejs/*` 软件包 出口其类型 `./manifest` 描述什么 软件包是,它需要什么, 它如何连接到一个应用程序, 什么AI工具 提供。 这个包是合同 那些清单被写反 - 加上将任何显示变成AI工具地图的桥梁 (单位:千美元)`@absolutejs/ai`)或远程MCP工具登记册(`@absolutejs/mcp`),这样 任何人都可以在生态系统的顶端建立AI工具或MCP服务器 不只是绝对JS自己的产品.

麻省理工学院有执照 单一对等依赖 : `@sinclair/typebox`。 。 。 .

## 无代码集成作用

软件包明确描述无码主机如何集成它们:

-   `integration: { mode: "recipe" }` 拥有可执行线条,必须发布于 至少一张接线菜谱.
-   `integration: { mode: "adapter" }` 填补一个命名的生态系统位置并必须 至少发布一个 `implements` 输入.
-   `integration: { mode: "code-first", description: "…" }` 仍然可以搜索 并且可以解释 但东道主不能假装可以自动组装 特定生产商店、政策、签字人、召回或身份.

没有此字段的旧表对于兼容性仍然有效 。 消费者 可能保留对这些套件的历史推论,但目前 清单应明确宣布该角色.

## 为什么类型框

TypeBox 计划同时是 TypeScript 类型(通过 `Static<>`)和a 数据 plain JSON Schema 运行时的对象。 这才成为真相的唯一来源 用于工具的输入: 相同的计数器在编译时键入处理器, 并且是 将逐字记录交给AI供应商(`input_schema`)和MCP(`inputSchema`) (中文(简体) ). 没有 手写出JSON Schema,没有漂移.

## 撰写一份清单

```ts
// src/manifest.ts of @absolutejs/dispatch
import { Type } from "@sinclair/typebox";
import { defineManifest, toolFactory } from "@absolutejs/manifest";
import type { Dispatcher, DispatcherOptions } from "./types";

const tool = toolFactory<Dispatcher>();

export const manifest = defineManifest<DispatcherOptions, Dispatcher>()({
  contract: 2,
  identity: {
    category: "messaging",
    name: "@absolutejs/dispatch",
    tagline: "Send email, texts, and push notifications from your site.",
  },
  settings: Type.Object({
    defaultFrom: Type.Optional(
      Type.Object(
        { email: Type.Optional(Type.String({ format: "email" })) },
        { title: "Default sender" },
      ),
    ),
  }),
  slots: {
    email: {
      configPath: "email",
      contract: "dispatch/email-adapter",
      description: "Email transport",
      known: ["@absolutejs/dispatch-resend", "@absolutejs/dispatch-postmark"],
    },
  },
  tools: {
    send_email: tool.runtime({
      annotations: { openWorldHint: true },
      authorization: {
        approval: "policy",
        audience: "owner",
        destinationFields: ["to"],
        effects: ["send", "external-network"],
        idempotency: { mode: "host" },
        requiredScopes: ["email:send"],
        reversible: false,
      },
      description: "Send a transactional email through the configured adapter.",
      handler: async (input, dispatcher) => {
        const result = await dispatcher.email(input);

        return `sent via ${result.provider}`;
      },
      input: Type.Object({
        subject: Type.String(),
        text: Type.String(),
        to: Type.String({ format: "email" }),
      }),
    }),
  },
  wiring: [
    {
      id: "default",
      server: {
        code: "const dispatcher = createDispatcher({ email: ${slot.email}, ...${settings} });",
        imports: [
          { from: "@absolutejs/dispatch", names: ["createDispatcher"] },
        ],
        placement: "module-scope",
      },
      title: "Create the dispatcher",
    },
  ],
});
```

`defineManifest<TConfig, TRuntime>()` 是断流者: `settings` schema 与软件包的真实导出配置类型相匹配 。 重命名一个 不更新清单和软件包本身的配置密钥 `tsc` 失败 此模块。 类型安全在升级中存活下来,因为它在 类型存在.

服务器接线使用放置来保存生命周期语义: `server-boundary` 在第一个路径( 错误抓取, 请求) 之前挂载 上下文,以及必须观察每个处理器的其他钩; `server-plugin` 加入普通插件链; `module-scope` 创造顶级资源 `server-factory` 保留给主机厂组成。 客户食谱的使用 `client-entry`。 。 。 .

### 包装管道

```jsonc
// package.json
{
  "absolutejs": {
    "manifestContract": 2,
  },
  "exports": {
    "./manifest": {
      "types": "./dist/manifest.d.ts",
      "import": "./dist/manifest.js",
    },
    "./manifest.json": "./dist/manifest.json",
  },
  "scripts": {
    "build": "… && absolute-manifest emit",
  },
}
```

`absolute-manifest emit` 验证运算表(schema,工具键命名, 预设值、 package.json 协议和同伴依赖关系)并写入 `dist/manifest.json` - 可序列投影(剥去手)用于 无法执行软件包代码的消费者. 它是衍生出来的, 从来没有手写, 所以这两种形式是不能分开的. `absolute-manifest scaffold` 生成一个 启动 `src/manifest.ts`。 。 。 .

标准包元数据是唯一的依赖合同. 安装主机 运行时间 `peerDependencies`中,可选性 `peerDependenciesMeta`,则 测试所用的版本 `devDependencies`在软件包中配置外部 实际构建命令或构建 API。 没有平行的绝对JS依赖地图 所需经费.

`absolute-manifest verify-package` 检查衍生的同行关系,例如 拒绝复制到的同位素 `dependencies`。 。 。 . `absolute-manifest verify-tree [directory]` 连续应用相同的检查 但不包括生成和依赖目录.

## 消费清单

```ts
import { loadManifest, toAIToolMap, toMcpToolRegistry } from '@absolutejs/manifest';

const result = await loadManifest('@absolutejs/dispatch');
if (!result.ok) throw new Error(result.details);

// AI tool loop (@absolutejs/ai)
const enforce = async (request, execute) => {
    await agency.authorizeAndLease(request);
    const toolResult = await execute();
    await agency.recordReceipt(request, toolResult);

    return toolResult;
};
const tools = toAIToolMap(result.manifest, { enforce, runtime: dispatcher });
streamAIToSSE({ tools, ... });

// Remote MCP server (@absolutejs/mcp)
new Elysia().use(mcpServer({
    path: '/mcp',
    tools: () => toMcpToolRegistry(result.manifest, { enforce, runtime: dispatcher })
}));
```

桥梁验证和默认执行前的每一次呼叫 **关闭失败**。 。 。 . 合同-1工具、无人看守工具、缺少运行时间、没有工作空间 没有执行者的主机从不出现在登记册中.

搬运工得不到任何环境——没有 `process.env`没有主持人的秘密。 A 类 `runtime` 工具获得构建主机的软件包实例; a `workspace` 工具会让主机被囚禁 `Workspace` (阅读/glob/write/exec,各获批) (第1行,第2行,第3行) 运行不可信运算表的主机应另编 `@absolutejs/ai`是因为 `hardenUntrustedTool` 越过了桥梁地图.

## 适应器槽

核心软件包声明 **插槽** (单位:千美元)`contract: 'dispatch/email-adapter'`(三); 声明适配软件包 `implements` 使用同一合同编号的条目. 消费者通过扫描安装的货单来解决问题 所以发布新的 销售商适配器点亮每个消费者,没有核心发布. 保留编号 而被冻结的接线占位符语法 [合同(md)](https://npmcn.com/package/%40absolutejs/manifest/CONTRACTS.md)。 。 。 .

## 常见问题

### @absolutejs/manifest 是什么？

绝对JS包单合同\. 每个@absolutejs/\* 包都从它的\./ 明显子路径输出出一个打入的列表\(设置 schema, env 要求, 适配器插槽, 接线配方, AI 工具\) ; 此包是这些列表是拼写的合同

### 如何安装 @absolutejs/manifest？

在项目目录运行 npm install @absolutejs/manifest，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：typebox（\>=1\.3\.0 \<2）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。它还提供命令行工具 absolute-manifest，可以用 npx absolute-manifest 直接运行。

### @absolutejs/manifest 支持 TypeScript 吗？

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

### @absolutejs/manifest 支持 ESM 还是 CommonJS？

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

### @absolutejs/manifest 可以商用吗？

@absolutejs/manifest 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @absolutejs/manifest 的下载量有多少？

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

### @absolutejs/manifest 还在维护吗？

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

