@agenticprimitives/service-agent

中文文档
0.0.0-alpha.33发布于 2026/10/26MITTypeScriptES Module近 30 天下载 4127

Generic service-agent capability framework (spec 283): define -> assert -> entitle -> delegate -> primitive-plan -> execute -> receipt. Provider-neutral; all authority evaluators + primitives are injected. Domain catalogs (e.g. @agenticprimitives/treasury

原始使用文档
文档目录3 节
  1. The lifecycle
  2. Example
  3. What lives elsewhere

@agenticprimitives/service-agent

Part of Agentic Primitives — the open-source trust substrate for agentic applications: identity that can sign, authority checked at act time, evidence the owner carries. Developer kit · All packages

Status: experimental (spec 283 PR1).

A generic framework for building service agents — agents that expose a catalog of capabilities (skills) and execute them under layered authority. It is provider-neutral and Ring-0 pure: it depends only on @agenticprimitives/types and imports no wallet, exchange, RPC, MCP, delegation, or policy code. The concrete providers and authority evaluators are injected by the host.

Domain catalogs — e.g. @agenticprimitives/treasury — are separate packages that supply skill definitions

  • a provider-neutral plan; this package runs the lifecycle.

The lifecycle

define  →  assert  →  entitle / delegate  →  primitive-plan  →  execute  →  receipt
  • define — a SkillDefinition states a skill's meaning: id, version, effect (read|sign|spend|trade|admin), default exposure, the logical capabilities it requires, optional I/O schemas, and a compile() that emits a primitive plan. A definition does NOT claim the host can run it.
  • assert — assertSkills resolves each definition's requires against the PrimitiveRegistry. A skill asserts only when every non-optional requirement binds to an installed Primitive whose constraints cover the requirement (monotonic). The result is an AssertionReport (asserted / unavailable / rejected). The optional publishAssertion hook is the seam for public disclosure (spec 282: vault claim → atl:skills → discovery + A2A card).
  • entitle / delegate / guard — the plan's .authorize('entitlement', …), .authorize('delegation', …) and .guard(…) steps call the injected evaluators (mapping to tool-policy/entitlements, delegation, and tool-policy at the host). Every gate must ALLOW; the first denial throws the typed error and nothing further runs (fail-closed).
  • primitive-plan / execute — runPlan resolves ref()s, calls registered primitives for .steps (plus built-in ledger.reserve/ledger.finalize), and collects .output.
  • receipt — invoke returns a normalized ExecutionReceipt (authority decisions + primitive bindings
    • outputs); the host sinks/signs it via audit.

Example

import { ServiceAgent, defineSkill, createPrimitiveRegistry, primitivePlan, ref } from '@agenticprimitives/service-agent';

const balance = defineSkill<{ accountId: string }, { balance: string }>({
  id: 'treasury.account.balance', version: '1.0.0', name: 'Read balance',
  effect: 'read', defaultExposure: 'authenticated',
  requires: [{ capability: 'account.balance' }],
  compile: ({ input }) =>
    primitivePlan('plan.balance')
      .step('bal', 'account.balance', { accountId: input.accountId })
      .output({ balance: ref('bal', 'balance') }),
});

const registry = createPrimitiveRegistry();
registry.register(myAccountProvider); // advertises { id: 'account.balance', version, constraints }

const agent = new ServiceAgent({ descriptor: { id: '0x…', name: 'Treasury', version: '1.0.0' }, primitives: registry });
agent.define(balance);
await agent.assert();
const receipt = await agent.invoke({ skillId: 'treasury.account.balance', input: { accountId: 'acct-1' } });

For a spend skill, add .authorize('entitlement', …), .authorize('delegation', …), .guard(…), and the ledger reserve/finalize steps; wire entitlements / delegations / policies / ledger into ServiceAgentOptions. See test/conformance.test.ts for the full lifecycle with fakes.

What lives elsewhere

  • Providers (EVM transfer, swap venue, RPC, KMS signer) — EXTERNAL (ADR-0037); they register as Primitives. Demos ship fakes.
  • Authority logic — delegation, tool-policy, entitlements; injected as evaluators.
  • The treasury catalog — @agenticprimitives/treasury. Public disclosure — the app, via publishAssertion (spec 282).

版本与发布记录

@agenticprimitives/service-agent 共发布 30 个版本,首次发布于 2026/07/01;过去 12 个月发布了 30 个版本。

版本发布日期距今
0.0.0-alpha.33latest2026/10/2612 天前
0.0.0-alpha.322026/10/2612 天前
0.0.0-alpha.312026/10/1721 天前
0.0.0-alpha.302026/10/1722 天前
0.0.0-alpha.292026/10/1622 天前
0.0.0-alpha.282026/10/1622 天前

关于 @agenticprimitives/service-agent 的常见问题

@agenticprimitives/service-agent 是什么?

Generic service-agent capability framework (spec 283): define -> assert -> entitle -> delegate -> primitive-plan -> execute -> receipt. Provider-neutral; all authority evaluators + primitives are injected. Domain catalogs (e.g. @agenticprimitives/treasury

如何安装 @agenticprimitives/service-agent?

在项目目录运行 npm install @agenticprimitives/service-agent,或使用 pnpm add / yarn add / bun add。

@agenticprimitives/service-agent 支持 TypeScript 吗?

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

@agenticprimitives/service-agent 支持 ESM 还是 CommonJS?

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

@agenticprimitives/service-agent 可以商用吗?

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

@agenticprimitives/service-agent 的下载量有多少?

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

@agenticprimitives/service-agent 还在维护吗?

最新版本 0.0.0-alpha.33 发布于 2026/10/26(12 天前);至今共发布 30 个版本,其中过去 12 个月发布了 30 个;首次发布于 2026/07/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。