ToolJournal
CORE · interface · 类型合同
Request-local execution receipts; the host decides their domain content.
导入
ts
import type { ToolJournal } from '@jangts/agent-core/tools';js
/** @typedef {import('@jangts/agent-core/tools').ToolJournal} ToolJournal */其他公开入口:@jangts/agent-core、@jangts/agent-core/types、@jangts/agent-core/structs、@jangts/agent-core/tools、@jangts/agent-core/kits/tools、@jangts/agent-core/kits。
定义
ts
interface ToolJournal字段结构
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
beginTool | (request: ToolJournalStart) => string | 必需 | Opens a receipt and returns the invocation id later passed to finishTool. |
finishTool | (request: ToolJournalFinish) => void | 必需 | Closes the receipt; must be called exactly once per opened invocation. |
成员目录
| 成员 | 用途 |
|---|---|
beginTool | Opens a receipt and returns the invocation id later passed to finishTool. |
finishTool | Closes the receipt; must be called exactly once per opened invocation. |
成员详情
beginTool
Opens a receipt and returns the invocation id later passed to finishTool.
ts
ToolJournal.beginTool(request: ToolJournalStart): stringOpens a receipt and returns the invocation id later passed to finishTool.
| 参数 | 类型 | 传递 | 说明 |
|---|---|---|---|
request | ToolJournalStart | 必需 | — |
request 的字段
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
toolId | string | 必需 | Tool being invoked. |
input | unknown | 必需 | Parsed input; stored as-is so the host can build its own domain record. |
invocation | Partial<InvocationMetadata> | undefined | 可省略 | What the caller already knows. The journal fills gaps and generates an id when absent. |
返回: string。
finishTool
Closes the receipt; must be called exactly once per opened invocation.
ts
ToolJournal.finishTool(request: ToolJournalFinish): voidCloses the receipt; must be called exactly once per opened invocation.
| 参数 | 类型 | 传递 | 说明 |
|---|---|---|---|
request | ToolJournalFinish | 必需 | — |
request 的字段
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
invocationId | string | 必需 | Invocation opened by beginTool. |
status | "error" | "success" | "cancelled" | 必需 | Terminal status; cancelled is distinct from error. |
value | unknown | 必需 | Produced value on success; failure detail on error; ignored for cancellation. |
返回: void。
使用示例
- 宿主已选定调用的同步执行适配:为宿主已经选定的同步调用统一记录开始、完成和失败,不替代选工具与授权。
执行 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());