Skip to content
English

宿主已选定调用的同步执行适配 ​

为宿主已经选定的同步调用统一记录开始、完成和失败,不替代选工具与授权。

executeInvocation 返回 void,结果由 App 自己的 Context 和可选 receipt 端口表达。handler.call 必须同步,不允许偷偷返回 Promise。选择、授权事实、参数结构及副作用仍归宿主。

需要异步值与统一 ToolResult 时优先使用 ToolRegistry/Support 工具运行时。这个同步适配主要连接已有的宿主调用流程,不要为所有工具另建一套 InvocationHandler 框架。可配置 journal/diagnostics/signal/checkpoint/receipt,它们都是已有合同的 App 实现。

由简到繁的同业务示例 ​

执行 App 已选定的本地调用 ​

入门 · Node.js

ts
import { executeInvocation } from '@jangts/agent-core/tools';
const state = { status: '' };
executeInvocation({ id: 'read-status', call(_input: {}, context: typeof state) {
  context.status = '服务正常';
} }, {}, state);
console.log(state.status);
js
import { executeInvocation } from '@jangts/agent-core/tools';
const state = { status: '' };
executeInvocation({ id: 'read-status', call(_input, context) {
        context.status = '服务正常';
    } }, {}, state);
console.log(state.status);

接入同一请求 journal 和取消信号 ​

配置 · Node.js

ts
import { executeInvocation } from '@jangts/agent-core/tools';
import { ContextJournal } from '@jangts/agent-core/journal';
const state = { status: '', journal: new ContextJournal(), signal: new AbortController().signal };
executeInvocation({ id: 'read-status', call(_input: {}, context: typeof state) { context.status = '服务正常'; } }, {}, state, {
  signal: context => context.signal,
  journal: context => context.journal,
  receipt: context => context.status,
});
console.log(state.journal.snapshot());
js
import { executeInvocation } from '@jangts/agent-core/tools';
import { ContextJournal } from '@jangts/agent-core/journal';
const state = { status: '', journal: new ContextJournal(), signal: new AbortController().signal };
executeInvocation({ id: 'read-status', call(_input, context) { context.status = '服务正常'; } }, {}, state, {
    signal: context => context.signal,
    journal: context => context.journal,
    receipt: context => context.status,
});
console.log(state.journal.snapshot());

策略与实现 ​

接口参考、使用示例与开发指南。