@migor/agentia 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +198 -1
- package/README.md +1 -1
- package/dist/AGENTS.md +160 -16
- package/dist/container/container.d.ts +8 -1
- package/dist/container/container.js +8 -1
- package/dist/container/container.js.map +1 -1
- package/dist/core/run.d.ts +5 -1
- package/dist/core/timeout.d.ts +8 -0
- package/dist/core/timeout.js +14 -3
- package/dist/core/timeout.js.map +1 -1
- package/dist/core/tool.d.ts +64 -0
- package/dist/engine/budget.d.ts +17 -4
- package/dist/engine/budget.js +3 -3
- package/dist/engine/budget.js.map +1 -1
- package/dist/engine/loop.d.ts +7 -0
- package/dist/engine/loop.js +102 -6
- package/dist/engine/loop.js.map +1 -1
- package/dist/engine/spec.d.ts +18 -2
- package/dist/engine/spec.js.map +1 -1
- package/dist/engine/tracer.d.ts +11 -0
- package/dist/engine/tracer.js +25 -12
- package/dist/engine/tracer.js.map +1 -1
- package/dist/engine/turn.d.ts +25 -3
- package/dist/engine/turn.js +63 -4
- package/dist/engine/turn.js.map +1 -1
- package/dist/engine/types.d.ts +28 -1
- package/dist/engine/types.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/anthropic.d.ts +5 -0
- package/dist/integrations/anthropic.js +57 -4
- package/dist/integrations/anthropic.js.map +1 -1
- package/dist/integrations/mcp-http.d.ts +43 -0
- package/dist/integrations/mcp-http.js +250 -0
- package/dist/integrations/mcp-http.js.map +1 -0
- package/dist/integrations/mcp-stdio.d.ts +46 -0
- package/dist/integrations/mcp-stdio.js +230 -0
- package/dist/integrations/mcp-stdio.js.map +1 -0
- package/dist/integrations/mcp.d.ts +46 -73
- package/dist/integrations/mcp.js +24 -421
- package/dist/integrations/mcp.js.map +1 -1
- package/dist/integrations/metrics-otlp.d.ts +42 -0
- package/dist/integrations/metrics-otlp.js +178 -0
- package/dist/integrations/metrics-otlp.js.map +1 -0
- package/dist/integrations/metrics-render.d.ts +2 -0
- package/dist/integrations/metrics-render.js +145 -0
- package/dist/integrations/metrics-render.js.map +1 -0
- package/dist/integrations/metrics-state.d.ts +191 -0
- package/dist/integrations/metrics-state.js +363 -0
- package/dist/integrations/metrics-state.js.map +1 -0
- package/dist/integrations/metrics.d.ts +3 -86
- package/dist/integrations/metrics.js +28 -650
- package/dist/integrations/metrics.js.map +1 -1
- package/dist/integrations/openai.js +25 -3
- package/dist/integrations/openai.js.map +1 -1
- package/dist/integrations/otlp.js +15 -6
- package/dist/integrations/otlp.js.map +1 -1
- package/dist/runtime/run.d.ts +6 -0
- package/dist/runtime/run.js +23 -0
- package/dist/runtime/run.js.map +1 -1
- package/dist/store/fsStore.d.ts +3 -2
- package/dist/store/fsStore.js +20 -6
- package/dist/store/fsStore.js.map +1 -1
- package/dist/store/sqliteStore.js +7 -5
- package/dist/store/sqliteStore.js.map +1 -1
- package/dist/store/store.d.ts +17 -1
- package/dist/store/store.js +3 -2
- package/dist/store/store.js.map +1 -1
- package/dist/toolkit/asset.d.ts +3 -2
- package/dist/toolkit/asset.js +11 -2
- package/dist/toolkit/asset.js.map +1 -1
- package/dist/toolkit/module.d.ts +3 -2
- package/dist/toolkit/module.js +3 -0
- package/dist/toolkit/module.js.map +1 -1
- package/dist/toolkit/skill.js +46 -8
- package/dist/toolkit/skill.js.map +1 -1
- package/dist/toolkit/subagent.js +26 -1
- package/dist/toolkit/subagent.js.map +1 -1
- package/dist/toolkit/tool.d.ts +6 -0
- package/dist/toolkit/tool.js +1 -0
- package/dist/toolkit/tool.js.map +1 -1
- package/dist/transport/async.d.ts +81 -1
- package/dist/transport/async.js +323 -11
- package/dist/transport/async.js.map +1 -1
- package/dist/transport/http.d.ts +5 -0
- package/dist/transport/http.js +74 -2
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/scheduler.js +33 -2
- package/dist/transport/scheduler.js.map +1 -1
- package/package.json +9 -5
package/dist/toolkit/asset.js
CHANGED
|
@@ -23,13 +23,22 @@ import { readFileSync } from 'node:fs';
|
|
|
23
23
|
*
|
|
24
24
|
* 边界口径:rel 是**开发者字面量**而非外部输入,`../` 越出能力目录**有意放行**
|
|
25
25
|
*(共享资产如 `../../shared/common.md` 是合法用法,框架不替作者设防);
|
|
26
|
-
*
|
|
27
|
-
*
|
|
26
|
+
* 但**带 scheme** 的(`file:` / `https:` …)与**绝对路径**(`/etc/passwd`)都会让
|
|
27
|
+
* `new URL(rel, base)` 把 base 的路径部分整个丢掉 —— 「以为读了能力目录里的文件,
|
|
28
|
+
* 实际读了别处」,这种静默错位显式拒绝。(`../` 不在此列:它**是**相对 base 解析的。)
|
|
28
29
|
*/
|
|
29
30
|
export function asset(base, rel) {
|
|
30
31
|
if (/^[A-Za-z][A-Za-z0-9+.-]*:/.test(rel)) {
|
|
31
32
|
throw new Error(`asset() 的 rel 必须是相对路径(如 './system.md'),收到带 scheme 的 "${rel}" —— 它会让 base 被整个忽略`);
|
|
32
33
|
}
|
|
34
|
+
// 绝对路径与带 scheme 的**同一类**:`new URL('/etc/passwd', 'file:///a/b/c.js')`
|
|
35
|
+
// 解析成 `file:///etc/passwd`,base 被整个忽略。此前只拦了 scheme,注释声称的
|
|
36
|
+
// 那个不变量(「不让 base 被静默忽略」)实际上没守住。
|
|
37
|
+
// `\\` 一并拦:`file:` 是 special scheme,反斜杠会被规范化成 `/`,同样丢掉 base。
|
|
38
|
+
// Windows 的 `C:\x` 已被上面的 scheme 正则拦下。
|
|
39
|
+
if (rel.startsWith('/') || rel.startsWith('\\')) {
|
|
40
|
+
throw new Error(`asset() 的 rel 必须是相对路径(如 './system.md'),收到绝对路径 "${rel}" —— 它会让 base 被整个忽略`);
|
|
41
|
+
}
|
|
33
42
|
return readFileSync(new URL(rel, base), 'utf8');
|
|
34
43
|
}
|
|
35
44
|
//# sourceMappingURL=asset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/toolkit/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/toolkit/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,KAAK,CAAC,IAAkB,EAAE,GAAW;IACnD,IAAI,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,wDAAwD,GAAG,qBAAqB,CACjF,CAAC;IACJ,CAAC;IACD,sEAAsE;IACtE,yDAAyD;IACzD,gCAAgC;IAChC,6DAA6D;IAC7D,sCAAsC;IACtC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,kDAAkD,GAAG,qBAAqB,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/toolkit/module.d.ts
CHANGED
|
@@ -107,8 +107,9 @@ export interface RunAppOptions<S extends JsonSchema = JsonSchema> extends RunInv
|
|
|
107
107
|
* 会话持久化(C4):语义同 `ExecuteRunOptions.session` —— run 开始把历史拼在传入
|
|
108
108
|
* messages 之前,成功收尾把本轮消息 + 回复追加回去。与 `blackboard`(键值黑板)正交。
|
|
109
109
|
*
|
|
110
|
-
* 只在程序内直接 `app.run` 时可用(store
|
|
111
|
-
*
|
|
110
|
+
* 只在程序内直接 `app.run` 时可用(store 实例不可序列化)。**异步宿主**的会话走
|
|
111
|
+
* `RunInvocationOptions.sessionId` + `AsyncRunner` 的 `sessionStore` —— 任务里只落
|
|
112
|
+
* 可序列化的 id,store 实例由 runner 持有、执行前注入(重启续跑也接得上)。
|
|
112
113
|
*/
|
|
113
114
|
session?: {
|
|
114
115
|
store: SessionStore;
|
package/dist/toolkit/module.js
CHANGED
|
@@ -252,6 +252,9 @@ export class AgentApp {
|
|
|
252
252
|
// 「契约字段必须原样透传」的规则(漏掉这一行 = traceparent 头解析出来了却没人用)。
|
|
253
253
|
traceContext: opts.traceContext,
|
|
254
254
|
idempotencyKey: opts.idempotencyKey,
|
|
255
|
+
// HITL:审批决定(tool_use_id → 决定)原样进引擎;恢复挂起任务时由
|
|
256
|
+
// AsyncRunner 经它把落库的决定喂回来
|
|
257
|
+
approvals: opts.approvals,
|
|
255
258
|
contextPolicy: opts.contextPolicy ?? this.base.contextPolicy,
|
|
256
259
|
retry: opts.retry ?? this.base.retry,
|
|
257
260
|
maxTotalTokens: opts.maxTotalTokens ?? this.base.maxTotalTokens,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/toolkit/module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/toolkit/module.ts"],"names":[],"mappings":"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"}
|
package/dist/toolkit/skill.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertMethodTarget, scanDecoratedMethods, capabilityName } from './collect.js';
|
|
2
|
+
import { combineSignals, releaseCombinedSignal } from '../core/abort.js';
|
|
2
3
|
import { isSuccessStopReason } from '../engine/types.js';
|
|
3
4
|
import { runAgentScoped } from '../engine/loop.js';
|
|
4
5
|
import { classifyError } from '../engine/errors.js';
|
|
@@ -56,6 +57,32 @@ export function skillToTool(capability, resolveTools) {
|
|
|
56
57
|
closed = true;
|
|
57
58
|
recorder.end(capabilityId, patch);
|
|
58
59
|
};
|
|
60
|
+
// 引擎超时「放弃等待」(toolTimeoutMs)时:span 立刻以 error 收尾 + 中止子循环
|
|
61
|
+
// (与 subagent.ts 同款:trace 交付是浅拷,迟到的 close 进不了已交付的 trace;
|
|
62
|
+
// 不中止的话子循环在后台继续烧 token,且不进任何观测面)。
|
|
63
|
+
const onAbandoned = () => {
|
|
64
|
+
close({
|
|
65
|
+
status: 'error',
|
|
66
|
+
error: {
|
|
67
|
+
type: 'timeout',
|
|
68
|
+
message: `skill(${name}) 执行超时被引擎放弃等待`,
|
|
69
|
+
retryable: true,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
ctx.abandoned?.addEventListener('abort', onAbandoned, { once: true });
|
|
74
|
+
const combined = combineSignals(ctx.signal, ctx.abandoned);
|
|
75
|
+
// llm 子运行失败的丰富错误(type/retryable 比通用 Error 信息量大)先存在这里,
|
|
76
|
+
// 由外层 catch 兜底时取用 —— **不在 llm 闭包里直接 close**:方法体是用户代码,
|
|
77
|
+
// 可以 try/catch 掉 llm 失败再继续(降级路径),提前 close 会把一次整体成功的
|
|
78
|
+
// 调用永久误标成 error(close 幂等,ok 再也写不进去)。
|
|
79
|
+
let llmError;
|
|
80
|
+
// 与 llmError **同点赋值**:记录 llm 闭包实际抛出的错误对象本身。外层 catch 按
|
|
81
|
+
// **引用相等**判定「这次冒上来的是不是那次 llm 失败」—— 方法体 catch 掉 llm 失败
|
|
82
|
+
// (降级)后又因**别的原因**抛错时,e !== llmThrew ⇒ 回落 classifyError(e),
|
|
83
|
+
// 不会拿残留的 llmError 给无关异常贴错标签(type/retryable 全错、真实分类被丢弃)。
|
|
84
|
+
// 不能用「调用前重置」:那会把主路径(方法体不 catch)的 llmError 一并清掉。
|
|
85
|
+
let llmThrew;
|
|
59
86
|
const skillCtx = {
|
|
60
87
|
model: spec.model,
|
|
61
88
|
llm: async (opts) => {
|
|
@@ -76,9 +103,12 @@ export function skillToTool(capability, resolveTools) {
|
|
|
76
103
|
tools: spec.tools?.length ? resolveTools() : [],
|
|
77
104
|
recorder,
|
|
78
105
|
parentSpanId: capabilityId,
|
|
79
|
-
signal:
|
|
106
|
+
signal: combined,
|
|
80
107
|
// 价格覆盖透传(F1):子循环用同一模型也要能算成本
|
|
81
108
|
priceOverrides: ctx.priceOverrides,
|
|
109
|
+
// 宿主的未定价告警回调透传到嵌套循环(F2):子循环用了未定价模型时,
|
|
110
|
+
// 宿主的告警照样要响(与 priceOverrides 同写法透传)
|
|
111
|
+
onUnpricedModel: ctx.onUnpricedModel,
|
|
82
112
|
// 事件截断口径透传:同一棵树上主/子 agent 的正文可见性必须一致
|
|
83
113
|
maxEventChars: ctx.maxEventChars,
|
|
84
114
|
// 成本护栏透传(C1):预算是整条 run(含子循环)的口径,子循环每回合也检查
|
|
@@ -90,16 +120,17 @@ export function skillToTool(capability, resolveTools) {
|
|
|
90
120
|
});
|
|
91
121
|
if (!isSuccessStopReason(loop.stopReason)) {
|
|
92
122
|
const report = `skill "${name}".llm ${loop.stopReason}: ${(loop.finalText || loop.error?.message || '').slice(0, 2000)}`;
|
|
93
|
-
|
|
123
|
+
// 丰富错误(type/retryable)存起来交给外层 catch 收尾,**不在这里 close** ——
|
|
124
|
+
// 用户方法体可以 catch 掉这次失败并降级继续,提前 close 会把一次整体成功的
|
|
125
|
+
// 调用永久误标成 error(幂等守卫会让后来的 ok 写不进去)。
|
|
126
|
+
llmError = loop.error ?? {
|
|
94
127
|
type: 'agent_error',
|
|
95
128
|
message: report,
|
|
96
129
|
retryable: true,
|
|
97
130
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
close({ status: 'error', error });
|
|
102
|
-
throw new Error(report);
|
|
131
|
+
const failure = new Error(report);
|
|
132
|
+
llmThrew = failure; // 与 llmError 同点赋值:外层 catch 按引用相等认领
|
|
133
|
+
throw failure;
|
|
103
134
|
}
|
|
104
135
|
return { text: loop.finalText, stopReason: loop.stopReason };
|
|
105
136
|
},
|
|
@@ -110,9 +141,16 @@ export function skillToTool(capability, resolveTools) {
|
|
|
110
141
|
return out;
|
|
111
142
|
}
|
|
112
143
|
catch (e) {
|
|
113
|
-
|
|
144
|
+
// 引用相等认领:冒上来的是 llm 闭包抛的那个对象 ⇒ 用它的丰富错误收尾;
|
|
145
|
+
// 否则(方法体降级后又因别的原因抛错)按真实异常分类 —— 不拿残留 llmError 贴错标签
|
|
146
|
+
close({ status: 'error', error: e === llmThrew ? llmError : classifyError(e) });
|
|
114
147
|
throw e;
|
|
115
148
|
}
|
|
149
|
+
finally {
|
|
150
|
+
// 摘除监听:宿主级共享 signal 是长寿的,不摘会按调用次数累积
|
|
151
|
+
ctx.abandoned?.removeEventListener('abort', onAbandoned);
|
|
152
|
+
releaseCombinedSignal(combined);
|
|
153
|
+
}
|
|
116
154
|
},
|
|
117
155
|
};
|
|
118
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/toolkit/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/toolkit/skill.ts"],"names":[],"mappings":"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"}
|
package/dist/toolkit/subagent.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertMethodTarget, scanDecoratedMethods, capabilityName } from './collect.js';
|
|
2
|
+
import { combineSignals, releaseCombinedSignal } from '../core/abort.js';
|
|
2
3
|
import { isSuccessStopReason } from '../engine/types.js';
|
|
3
4
|
import { runAgentScoped } from '../engine/loop.js';
|
|
4
5
|
import { classifyError } from '../engine/errors.js';
|
|
@@ -57,6 +58,22 @@ export function subagentToTool(capability, resolveTools) {
|
|
|
57
58
|
closed = true;
|
|
58
59
|
recorder.end(capabilityId, patch);
|
|
59
60
|
};
|
|
61
|
+
// 引擎超时「放弃等待」(toolTimeoutMs)时:capability span **立刻**以 error 收尾
|
|
62
|
+
// —— trace 在 run 结束时浅拷交付,等子循环自己 settle 再关,交付的那份里这个 span
|
|
63
|
+
// 永远没有 endedAt、status 停在缺省 ok(与同回合 tool.output 事件的 timeout 矛盾)。
|
|
64
|
+
// 同时合成 signal 中止子循环:在飞请求被掐掉,后台不再继续烧 token。
|
|
65
|
+
const onAbandoned = () => {
|
|
66
|
+
close({
|
|
67
|
+
status: 'error',
|
|
68
|
+
error: {
|
|
69
|
+
type: 'timeout',
|
|
70
|
+
message: `subagent(${name}) 执行超时被引擎放弃等待`,
|
|
71
|
+
retryable: true,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
ctx.abandoned?.addEventListener('abort', onAbandoned, { once: true });
|
|
76
|
+
const combined = combineSignals(ctx.signal, ctx.abandoned);
|
|
60
77
|
try {
|
|
61
78
|
const raw = input ?? {};
|
|
62
79
|
const task = typeof raw === 'string' ? { task: raw } : raw;
|
|
@@ -72,10 +89,13 @@ export function subagentToTool(capability, resolveTools) {
|
|
|
72
89
|
tools,
|
|
73
90
|
recorder,
|
|
74
91
|
parentSpanId: capabilityId,
|
|
75
|
-
signal:
|
|
92
|
+
signal: combined,
|
|
76
93
|
resultSchema: spec.resultSchema,
|
|
77
94
|
// 价格覆盖透传(F1):子 agent 用同一模型也要能算成本
|
|
78
95
|
priceOverrides: ctx.priceOverrides,
|
|
96
|
+
// 宿主的未定价告警回调透传到嵌套循环(F2):子 agent 用了未定价模型时,
|
|
97
|
+
// 宿主的告警照样要响(与 priceOverrides 同写法透传)
|
|
98
|
+
onUnpricedModel: ctx.onUnpricedModel,
|
|
79
99
|
// 事件截断口径透传:子 agent 里的工具结果同样要能看全文
|
|
80
100
|
maxEventChars: ctx.maxEventChars,
|
|
81
101
|
// 成本护栏透传(C1):预算是整条 run(含子 agent)的口径,子循环每回合也检查
|
|
@@ -116,6 +136,11 @@ export function subagentToTool(capability, resolveTools) {
|
|
|
116
136
|
close({ status: 'error', error: classifyError(e) });
|
|
117
137
|
throw e;
|
|
118
138
|
}
|
|
139
|
+
finally {
|
|
140
|
+
// 摘除监听:宿主级共享 signal(ctx.signal)是长寿的,不摘会按调用次数累积
|
|
141
|
+
ctx.abandoned?.removeEventListener('abort', onAbandoned);
|
|
142
|
+
releaseCombinedSignal(combined);
|
|
143
|
+
}
|
|
119
144
|
},
|
|
120
145
|
};
|
|
121
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/toolkit/subagent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/toolkit/subagent.ts"],"names":[],"mappings":"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"}
|
package/dist/toolkit/tool.d.ts
CHANGED
|
@@ -27,6 +27,12 @@ export interface ToolSpec<S extends JsonSchema = JsonSchema> {
|
|
|
27
27
|
schema: S;
|
|
28
28
|
/** strict 参数校验(透传给 Anthropic 的 strict 模式) */
|
|
29
29
|
strict?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* 人工审批闸(HITL):`'required'` 时该工具的每次调用都先挂起等审批
|
|
32
|
+
* (回合级全有或全无,见 `AgentTool.approval`);批准/拒绝经
|
|
33
|
+
* `AsyncRunner.approve` / `POST /tasks/<id>/approve` 到达。
|
|
34
|
+
*/
|
|
35
|
+
approval?: 'required';
|
|
30
36
|
}
|
|
31
37
|
/**
|
|
32
38
|
* 方法装饰器:登记 spec。被装饰方法入参即结构化 tool input,
|
package/dist/toolkit/tool.js
CHANGED
|
@@ -29,6 +29,7 @@ function buildTool(instance, key, spec) {
|
|
|
29
29
|
description: spec.description,
|
|
30
30
|
inputSchema: spec.schema,
|
|
31
31
|
...(spec.strict ? { strict: true } : {}),
|
|
32
|
+
...(spec.approval ? { approval: spec.approval } : {}),
|
|
32
33
|
run: (input) => Reflect.apply(instance[key], instance, [input]),
|
|
33
34
|
};
|
|
34
35
|
}
|
package/dist/toolkit/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/toolkit/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/toolkit/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsCxF,sDAAsD;AACtD,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAA6C,IAAiB;IAChF,OAAO,CACL,KAAgD,EAChD,OAAmC,EAC7B,EAAE;QACR,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,qDAAqD;QACrD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAgB,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CACrE,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,GAAoB,EAAE,IAAc;IACvE,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CACV,QAAqE,CAAC,GAAG,CAAC,EAC3E,QAAQ,EACR,CAAC,KAAK,CAAC,CACR;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -8,6 +8,8 @@ import type { MaybePromise, TaskRecord, TaskStore } from '../store/store.js';
|
|
|
8
8
|
* Agentia —— 异步任务宿主(spec §6.3 异步 / §6.5 确定性 / §6.6 换宿主不换语义)。
|
|
9
9
|
*
|
|
10
10
|
* - submit 即回(queued),后台驱动状态机 queued → running → succeeded/failed;
|
|
11
|
+
* 工具标了 `approval: 'required'` 时 run 可在回合间挂起为 **awaiting_approval**
|
|
12
|
+
* (HITL:非终态、不占并发槽、不触发 TaskSink.onFinished),`approve()` 给齐决定后恢复;
|
|
11
13
|
* - **at-least-once 去重**:同一 idempotencyKey 重复 submit,若上一任务仍在
|
|
12
14
|
* queued/running/succeeded 则直接返回既有记录,不重复执行(失败可重试新任务);
|
|
13
15
|
* - run 记录落 TaskStore(v1 InMemoryTaskStore),trace 随 result 一同保留;
|
|
@@ -30,9 +32,36 @@ import type { MaybePromise, TaskRecord, TaskStore } from '../store/store.js';
|
|
|
30
32
|
export interface TaskSink {
|
|
31
33
|
onFinished(rec: TaskRecord): void | Promise<void>;
|
|
32
34
|
}
|
|
35
|
+
/** `approve` 的入参:一批 tool_use_id → 批准/拒绝(理由可选) */
|
|
36
|
+
export type ApprovalDecisions = Record<string, {
|
|
37
|
+
approved: boolean;
|
|
38
|
+
reason?: string;
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* `approve` 的失败:带 HTTP 语义的状态码(404 = 任务不存在,409 = 任务当前不在
|
|
42
|
+
* `awaiting_approval` 状态),HTTP 宿主据此回对应响应。
|
|
43
|
+
* module 级 export —— 不进公共导出面(纯宿主内部实现细节)。
|
|
44
|
+
*/
|
|
45
|
+
export declare class TaskApproveError extends Error {
|
|
46
|
+
readonly status: 404 | 409;
|
|
47
|
+
constructor(status: 404 | 409, message: string);
|
|
48
|
+
}
|
|
33
49
|
export interface AsyncRunnerOptions {
|
|
34
50
|
client?: ModelClient;
|
|
35
51
|
store?: TaskStore;
|
|
52
|
+
/**
|
|
53
|
+
* 会话历史 store(C4):配上之后,任务 `options.sessionId`(可序列化的会话引用)
|
|
54
|
+
* 在执行前被换成 `RunAppOptions.session`(store 实例 + id)注入 run ——
|
|
55
|
+
* 这是异步宿主上会话的**正式通道**(store 实例不可序列化,所以任务里只带 id、
|
|
56
|
+
* 实例由 runner 持有;同步宿主没有这一步,会话走程序内 `RunAppOptions.session`)。
|
|
57
|
+
*
|
|
58
|
+
* 不配它而任务带了 `sessionId` ⇒ submit 当场抛 `TaskInputError`(响亮失败,
|
|
59
|
+
* 不静默降级成「没有会话」)。
|
|
60
|
+
*/
|
|
61
|
+
sessionStore?: {
|
|
62
|
+
load(sessionId: string): MessageParam[] | Promise<MessageParam[]>;
|
|
63
|
+
append(sessionId: string, messages: MessageParam[]): void | Promise<void>;
|
|
64
|
+
};
|
|
36
65
|
/** 同时执行的任务上限;缺省不限。超出部分排队等槽位(状态保持 queued) */
|
|
37
66
|
concurrency?: number;
|
|
38
67
|
/** 任务完成回调(进程内);见 TaskSink */
|
|
@@ -47,6 +76,16 @@ export interface AsyncRunnerOptions {
|
|
|
47
76
|
* 槽位无论如何立即回收;被放弃且仍在跑的任务会让实际并发短暂高于 concurrency。
|
|
48
77
|
*/
|
|
49
78
|
runTimeoutMs?: number;
|
|
79
|
+
/**
|
|
80
|
+
* 审批等待超时(毫秒,HITL);缺省 0 = 不限(一直等人)。
|
|
81
|
+
*
|
|
82
|
+
* **惰性判定,不起定时器**:`approve` / `poll` / `resumePending` 读到一个
|
|
83
|
+
* `awaiting_approval` 任务时,若它挂起已超过该值,框架自动把**全部待决项**写成
|
|
84
|
+
* 「denied,reason: '审批超时'」并恢复执行(模型收到拒绝理由,可自行换路)。
|
|
85
|
+
* 也就是说超时只在「有人读它」时生效 —— 没人读的任务不会自己动(进程里不养定时器,
|
|
86
|
+
* 崩溃/重启也不依赖任何在飞回调)。
|
|
87
|
+
*/
|
|
88
|
+
approvalTimeoutMs?: number;
|
|
50
89
|
}
|
|
51
90
|
/** resumePending 的启动扫描选项 */
|
|
52
91
|
export interface ResumePendingOptions {
|
|
@@ -75,8 +114,10 @@ export declare class AsyncRunner {
|
|
|
75
114
|
/** 本进程标识:写进认领的 TaskRecord.ownerId,供 resumePending 区分他我 */
|
|
76
115
|
readonly ownerId: string;
|
|
77
116
|
private readonly client;
|
|
117
|
+
private readonly sessionStore;
|
|
78
118
|
private readonly concurrency;
|
|
79
119
|
private readonly runTimeoutMs;
|
|
120
|
+
private readonly approvalTimeoutMs;
|
|
80
121
|
private running;
|
|
81
122
|
private readonly waitQueue;
|
|
82
123
|
/** 已受理但未达终态的任务数(queued + running)—— /healthz 与 drain 共用 */
|
|
@@ -84,6 +125,17 @@ export declare class AsyncRunner {
|
|
|
84
125
|
private draining;
|
|
85
126
|
private readonly drainWaiters;
|
|
86
127
|
private readonly taskSinks;
|
|
128
|
+
/**
|
|
129
|
+
* HITL 挂起时快照的「本轮用户输入」(taskId → messages)—— 恢复段成功后做会话回写用
|
|
130
|
+
* (恢复段不把 session 交给 run 层,见 #executeInner 的 callOpts 注释)。
|
|
131
|
+
* 只在首个挂起段快照;任务达终态时清掉(#execute 的出口)。
|
|
132
|
+
*
|
|
133
|
+
* **刻意只放内存**:进程崩在「挂起 → 重启 → approve」之间会丢这一次会话回写 ——
|
|
134
|
+
* 会话少一轮,但绝写不进坏历史(孤立 tool_use / 历史翻倍),审批决定本身已落库、
|
|
135
|
+
* 不受影响。快照若落库就要动 TaskRecord 的序列化 schema(sqlite / redis),
|
|
136
|
+
* 而它相对审批决定只是锦上添花 —— 这个取舍是有意的。
|
|
137
|
+
*/
|
|
138
|
+
private readonly sessionInputs;
|
|
87
139
|
constructor(app: AppCallable, opts?: AsyncRunnerOptions);
|
|
88
140
|
/**
|
|
89
141
|
* 提交一次异步任务。入参可为 string / messages / {prompt|text|messages}。
|
|
@@ -100,6 +152,30 @@ export declare class AsyncRunner {
|
|
|
100
152
|
poll(taskId: string): MaybePromise<TaskRecord | undefined>;
|
|
101
153
|
byIdempotency(key: string): MaybePromise<TaskRecord | undefined>;
|
|
102
154
|
list(): MaybePromise<TaskRecord[]>;
|
|
155
|
+
/**
|
|
156
|
+
* 审批一个处于 `awaiting_approval` 的任务(HITL)。
|
|
157
|
+
*
|
|
158
|
+
* - **逐 tool_use_id 幂等**:已存在的决定不覆盖(第一次决定赢)—— 重复提交 /
|
|
159
|
+
* 并发点击不会推翻已有决定,也不会让恢复段重复执行;
|
|
160
|
+
* - **并发重入共享在飞那次**:同一任务的并发 approve(双击「批准」/两个审批人
|
|
161
|
+
* 同时批)返回同一个 Promise —— 否则两个调用都在对方落库前读到
|
|
162
|
+
* `awaiting_approval`、各自判「决定齐了」、**各派发一次**(同一任务重复执行,
|
|
163
|
+
* 与 resumePending 的闸门同一 bug 类)。被共享的那次覆盖不到的决定不丢:
|
|
164
|
+
* 调用方从返回的记录看到任务仍在等待,重试即并入;
|
|
165
|
+
* - 决定齐了就恢复:`status` 回 `running`、**先落库再派发**(与 `#redispatch`
|
|
166
|
+
* 同一条纪律 —— 没落库就恢复,进程崩在窗口里会丢决定);恢复段带着
|
|
167
|
+
* `rec.approvals` 与扩展后的消息历史(`rec.spec.messages`,末尾是含未决
|
|
168
|
+
* tool_use 的那条 assistant 消息)重进引擎循环;
|
|
169
|
+
* - 决定**没**齐:只把本批决定落库,任务继续等(可能多轮审批);
|
|
170
|
+
* - 返回当前 TaskRecord(快照)。任务不存在抛 404 语义、状态不对抛 409 语义
|
|
171
|
+
* 的 `TaskApproveError`。
|
|
172
|
+
*/
|
|
173
|
+
approve(taskId: string, decisions: ApprovalDecisions, opts?: {
|
|
174
|
+
decidedBy?: string;
|
|
175
|
+
}): Promise<TaskRecord>;
|
|
176
|
+
/** 同一任务的在飞审批(approve 的重入闸,见上)。**与惰性超时恢复共用同一把闸** ——
|
|
177
|
+
* approve 与 #expireAndResume 都会「填决定 + 落库 + 派发」,不互斥就是同一任务跑两遍。 */
|
|
178
|
+
private readonly inflightApprovals;
|
|
103
179
|
/** 已受理但未达终态的任务数(queued + running)—— 健康检查与 drain 共用同一口径 */
|
|
104
180
|
get inFlight(): number;
|
|
105
181
|
/** 是否已进入优雅停机(drain 之后为 true)—— HTTP 宿主据此对新单回 503 */
|
|
@@ -115,7 +191,7 @@ export declare class AsyncRunner {
|
|
|
115
191
|
drain(opts?: {
|
|
116
192
|
timeoutMs?: number;
|
|
117
193
|
}): Promise<boolean>;
|
|
118
|
-
/**
|
|
194
|
+
/** 等到任务终态;超时抛错。`awaiting_approval` 不是终态 —— 继续等(人在路上)。 */
|
|
119
195
|
awaitTask(taskId: string, opts?: {
|
|
120
196
|
timeoutMs?: number;
|
|
121
197
|
intervalMs?: number;
|
|
@@ -125,6 +201,10 @@ export declare class AsyncRunner {
|
|
|
125
201
|
* (running 视为进程中断)。返回重派数量(异步 store 下返回 Promise<number>)。
|
|
126
202
|
* 幂等键去重照常生效。
|
|
127
203
|
*
|
|
204
|
+
* `awaiting_approval`(HITL)**不捡**:它在等人、不是孤儿(进程没死也可能挂着)。
|
|
205
|
+
* 但读到它会做**惰性超时判定**:配了 `approvalTimeoutMs` 且已超时的挂起任务
|
|
206
|
+
* 自动全拒(`denied, reason: '审批超时'`)并重派。
|
|
207
|
+
*
|
|
128
208
|
* **认领先落库、再派发**(见 `#redispatch`);异步 store 的认领落库失败会让本方法
|
|
129
209
|
* reject —— 宁可让调用方看见「续跑没做」,也不要静默放出一批会被重复执行的任务。
|
|
130
210
|
*
|