@migor/agentia 0.9.4 → 0.10.0
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 +1280 -4
- package/README.en.md +61 -3
- package/README.md +66 -4
- package/dist/AGENTS.md +330 -45
- package/dist/container/container.js +21 -0
- package/dist/container/container.js.map +1 -1
- package/dist/core/limits.d.ts +101 -14
- package/dist/core/limits.js +103 -13
- package/dist/core/limits.js.map +1 -1
- package/dist/core/line-framing.d.ts +36 -0
- package/dist/core/line-framing.js +39 -0
- package/dist/core/line-framing.js.map +1 -0
- package/dist/core/message.d.ts +11 -0
- package/dist/core/run.d.ts +68 -4
- package/dist/core/run.js +27 -1
- package/dist/core/run.js.map +1 -1
- package/dist/core/schema.js +59 -8
- package/dist/core/schema.js.map +1 -1
- package/dist/core/timeout.d.ts +43 -1
- package/dist/core/timeout.js +76 -3
- package/dist/core/timeout.js.map +1 -1
- package/dist/core/tool.d.ts +25 -1
- package/dist/core/trace.d.ts +40 -1
- package/dist/core/trace.js +26 -0
- package/dist/core/trace.js.map +1 -1
- package/dist/engine/budget.js +14 -0
- package/dist/engine/budget.js.map +1 -1
- package/dist/engine/defer.d.ts +49 -0
- package/dist/engine/defer.js +72 -0
- package/dist/engine/defer.js.map +1 -0
- package/dist/engine/errors.d.ts +23 -1
- package/dist/engine/errors.js +24 -0
- package/dist/engine/errors.js.map +1 -1
- package/dist/engine/forwarded.d.ts +14 -5
- package/dist/engine/forwarded.js +4 -1
- package/dist/engine/forwarded.js.map +1 -1
- package/dist/engine/loop-result.d.ts +65 -7
- package/dist/engine/loop-result.js +24 -5
- package/dist/engine/loop-result.js.map +1 -1
- package/dist/engine/loop.d.ts +2 -0
- package/dist/engine/loop.js +157 -17
- package/dist/engine/loop.js.map +1 -1
- package/dist/engine/mcp-server-http.d.ts +2 -0
- package/dist/engine/mcp-server-http.js +215 -0
- package/dist/engine/mcp-server-http.js.map +1 -0
- package/dist/engine/mcp-server-stdio.d.ts +15 -0
- package/dist/engine/mcp-server-stdio.js +106 -0
- package/dist/engine/mcp-server-stdio.js.map +1 -0
- package/dist/engine/mcp-server.d.ts +134 -0
- package/dist/engine/mcp-server.js +232 -0
- package/dist/engine/mcp-server.js.map +1 -0
- package/dist/engine/menu-drift.d.ts +34 -0
- package/dist/engine/menu-drift.js +81 -0
- package/dist/engine/menu-drift.js.map +1 -0
- package/dist/engine/policy.d.ts +2 -1
- package/dist/engine/policy.js +7 -1
- package/dist/engine/policy.js.map +1 -1
- package/dist/engine/replay.d.ts +2 -1
- package/dist/engine/replay.js +3 -2
- package/dist/engine/replay.js.map +1 -1
- package/dist/engine/resume-input.d.ts +10 -0
- package/dist/engine/resume-input.js +11 -0
- package/dist/engine/resume-input.js.map +1 -1
- package/dist/engine/run-config.d.ts +26 -2
- package/dist/engine/run-config.js +60 -0
- package/dist/engine/run-config.js.map +1 -1
- package/dist/engine/spec.d.ts +33 -4
- package/dist/engine/spec.js.map +1 -1
- package/dist/engine/tool-context.d.ts +10 -5
- package/dist/engine/tool-context.js +5 -1
- package/dist/engine/tool-context.js.map +1 -1
- package/dist/engine/tracer.d.ts +43 -5
- package/dist/engine/tracer.js +73 -10
- package/dist/engine/tracer.js.map +1 -1
- package/dist/engine/trimming.js +28 -2
- package/dist/engine/trimming.js.map +1 -1
- package/dist/engine/turn.d.ts +60 -3
- package/dist/engine/turn.js +180 -71
- package/dist/engine/turn.js.map +1 -1
- package/dist/engine/types.d.ts +89 -3
- package/dist/engine/types.js +38 -2
- package/dist/engine/types.js.map +1 -1
- package/dist/eval/export.d.ts +48 -0
- package/dist/eval/export.js +146 -0
- package/dist/eval/export.js.map +1 -0
- package/dist/eval/harvest.js +7 -2
- package/dist/eval/harvest.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/adapter-options.d.ts +22 -0
- package/dist/integrations/adapter-options.js +51 -0
- package/dist/integrations/adapter-options.js.map +1 -1
- package/dist/integrations/anthropic.d.ts +4 -2
- package/dist/integrations/anthropic.js +27 -27
- package/dist/integrations/anthropic.js.map +1 -1
- package/dist/integrations/file-sink.d.ts +20 -0
- package/dist/integrations/file-sink.js +27 -0
- package/dist/integrations/file-sink.js.map +1 -0
- package/dist/integrations/mcp-http.d.ts +3 -3
- package/dist/integrations/mcp-http.js +1 -1
- package/dist/integrations/mcp-http.js.map +1 -1
- package/dist/integrations/mcp-protocol.d.ts +115 -0
- package/dist/integrations/mcp-protocol.js +69 -0
- package/dist/integrations/mcp-protocol.js.map +1 -0
- package/dist/integrations/mcp-stdio.d.ts +3 -3
- package/dist/integrations/mcp-stdio.js +17 -3
- package/dist/integrations/mcp-stdio.js.map +1 -1
- package/dist/integrations/mcp.d.ts +6 -95
- package/dist/integrations/mcp.js +24 -66
- package/dist/integrations/mcp.js.map +1 -1
- package/dist/integrations/metrics-otlp.js +52 -7
- package/dist/integrations/metrics-otlp.js.map +1 -1
- package/dist/integrations/metrics-render.d.ts +15 -0
- package/dist/integrations/metrics-render.js +79 -2
- package/dist/integrations/metrics-render.js.map +1 -1
- package/dist/integrations/metrics-state.d.ts +99 -1
- package/dist/integrations/metrics-state.js +128 -4
- package/dist/integrations/metrics-state.js.map +1 -1
- package/dist/integrations/metrics.d.ts +62 -6
- package/dist/integrations/metrics.js +49 -8
- package/dist/integrations/metrics.js.map +1 -1
- package/dist/integrations/openai.js +9 -31
- package/dist/integrations/openai.js.map +1 -1
- package/dist/integrations/otlp.d.ts +3 -3
- package/dist/integrations/report.d.ts +7 -0
- package/dist/integrations/report.js +20 -1
- package/dist/integrations/report.js.map +1 -1
- package/dist/runtime/memory.d.ts +61 -1
- package/dist/runtime/memory.js +47 -7
- package/dist/runtime/memory.js.map +1 -1
- package/dist/runtime/run.d.ts +12 -2
- package/dist/runtime/run.js +126 -17
- package/dist/runtime/run.js.map +1 -1
- package/dist/store/fsStore.js +10 -4
- package/dist/store/fsStore.js.map +1 -1
- package/dist/store/record.d.ts +41 -0
- package/dist/store/record.js +54 -0
- package/dist/store/record.js.map +1 -0
- package/dist/store/redisStore.d.ts +24 -1
- package/dist/store/redisStore.js +42 -7
- package/dist/store/redisStore.js.map +1 -1
- package/dist/store/sqliteStore.d.ts +23 -0
- package/dist/store/sqliteStore.js +103 -8
- package/dist/store/sqliteStore.js.map +1 -1
- package/dist/store/store.d.ts +65 -2
- package/dist/store/store.js +5 -2
- package/dist/store/store.js.map +1 -1
- package/dist/toolkit/capability-cycles.d.ts +50 -0
- package/dist/toolkit/capability-cycles.js +88 -0
- package/dist/toolkit/capability-cycles.js.map +1 -0
- package/dist/toolkit/capability-slice.d.ts +86 -0
- package/dist/toolkit/capability-slice.js +98 -0
- package/dist/toolkit/capability-slice.js.map +1 -0
- package/dist/toolkit/module.d.ts +7 -1
- package/dist/toolkit/module.js +65 -32
- package/dist/toolkit/module.js.map +1 -1
- package/dist/transport/approval-policy.d.ts +1 -1
- package/dist/transport/approval-policy.js +8 -4
- package/dist/transport/approval-policy.js.map +1 -1
- package/dist/transport/approval-supervisor.d.ts +73 -0
- package/dist/transport/approval-supervisor.js +252 -0
- package/dist/transport/approval-supervisor.js.map +1 -0
- package/dist/transport/async.d.ts +159 -56
- package/dist/transport/async.js +627 -269
- package/dist/transport/async.js.map +1 -1
- package/dist/transport/drain-gate.d.ts +6 -2
- package/dist/transport/drain-gate.js +14 -2
- package/dist/transport/drain-gate.js.map +1 -1
- package/dist/transport/http-endpoints.d.ts +151 -0
- package/dist/transport/http-endpoints.js +480 -0
- package/dist/transport/http-endpoints.js.map +1 -0
- package/dist/transport/http-io.d.ts +66 -0
- package/dist/transport/http-io.js +145 -0
- package/dist/transport/http-io.js.map +1 -0
- package/dist/transport/http-route.d.ts +10 -3
- package/dist/transport/http-route.js +18 -3
- package/dist/transport/http-route.js.map +1 -1
- package/dist/transport/http-shapes.d.ts +11 -0
- package/dist/transport/http-shapes.js +31 -1
- package/dist/transport/http-shapes.js.map +1 -1
- package/dist/transport/http.d.ts +22 -35
- package/dist/transport/http.js +98 -476
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/owner-id.d.ts +29 -0
- package/dist/transport/owner-id.js +46 -0
- package/dist/transport/owner-id.js.map +1 -0
- package/dist/transport/owner-liveness.d.ts +8 -0
- package/dist/transport/owner-liveness.js +56 -0
- package/dist/transport/owner-liveness.js.map +1 -0
- package/dist/transport/resume-policy.d.ts +48 -10
- package/dist/transport/resume-policy.js +25 -10
- package/dist/transport/resume-policy.js.map +1 -1
- package/dist/transport/resume-scanner.d.ts +55 -0
- package/dist/transport/resume-scanner.js +219 -0
- package/dist/transport/resume-scanner.js.map +1 -0
- package/dist/transport/scheduler.js +9 -23
- package/dist/transport/scheduler.js.map +1 -1
- package/dist/transport/signal-supervisor.d.ts +80 -0
- package/dist/transport/signal-supervisor.js +129 -0
- package/dist/transport/signal-supervisor.js.map +1 -0
- package/dist/transport/slot-pool.d.ts +9 -1
- package/dist/transport/slot-pool.js +9 -1
- package/dist/transport/slot-pool.js.map +1 -1
- package/dist/transport/task-events.d.ts +34 -3
- package/dist/transport/task-events.js +93 -5
- package/dist/transport/task-events.js.map +1 -1
- package/dist/transport/wake-policy.d.ts +50 -0
- package/dist/transport/wake-policy.js +43 -0
- package/dist/transport/wake-policy.js.map +1 -0
- package/package.json +14 -4
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 到期唤醒的**纯判定** + 挂起读数 —— durable timer(2026-09-28 ① 的 timer 侧)。
|
|
3
|
+
*
|
|
4
|
+
* 从 AsyncRunner 里抽出来的第五个协作件(slot-pool → approval-policy → drain-gate →
|
|
5
|
+
* resume-policy → 这里),与 `approval-policy.ts` 是**明确的一对**:挂起的两个原因各有一套闸,
|
|
6
|
+
* 各自一个纯文件。为什么非要分开写:C 之前「挂起」是一个状态兼职两件事
|
|
7
|
+
* (`awaiting_approval` 既等人也等时刻),于是 `approvalTimeoutMs` 会去叫醒一条在等时刻的 run
|
|
8
|
+
* (而且 `#expireAndResume` 紧接着就重派 —— 补不出任何决定也照样开跑)。
|
|
9
|
+
* 两个原因的判据分开成两个具名函数之后,「谁管谁」在调用点一眼可见,也各有单测。
|
|
10
|
+
*
|
|
11
|
+
* 纯的边界:入参不变则结果不变;不碰 store、不改 rec、不派发、不起定时器。
|
|
12
|
+
*/
|
|
13
|
+
import type { SuspendedReason } from '../core/run.js';
|
|
14
|
+
import type { TaskRecord } from '../store/store.js';
|
|
15
|
+
/**
|
|
16
|
+
* 到点了吗(时间挂起)。
|
|
17
|
+
*
|
|
18
|
+
* - 两条判据缺一不可:状态是 `suspended` **且**原因是 `timer`(原因那一半是 C 定的口径 ——
|
|
19
|
+
* 没有它,等审批的挂起会被到期扫描按「`wakeAt` 缺失」判成不到点,看着像对,其实是
|
|
20
|
+
* **恰好**躲过;等时刻的挂起则会被审批那条闸叫醒);
|
|
21
|
+
* - `wakeAt` 缺失 ⇒ 永远不到点:**不**拿 `createdAt` / `startedAt` 之类退化(与
|
|
22
|
+
* `approvalExpired` 的取舍相反)—— 「不知道它什么时候醒」和「现在就该醒」是两件事,
|
|
23
|
+
* 猜错的方向是**提前开跑**,代价是真实副作用;
|
|
24
|
+
* - 边界是**不晚于现在**(`wakeAt <= now`):到点即可唤醒。与 `approvalExpired` 的严格大于
|
|
25
|
+
* 相反,两个闸的语义本来就不同 —— 超时是「等够了没」(恰好等于还没够),
|
|
26
|
+
* 到期是「到点了没」(恰好等于就到了)。
|
|
27
|
+
*/
|
|
28
|
+
export declare function timerDue(rec: TaskRecord, now: number): boolean;
|
|
29
|
+
/** 一条挂起记录的读数 —— AsyncRunner 只留「原因 + 目标时刻」,不持有整条记录 */
|
|
30
|
+
export interface SuspendedEntry {
|
|
31
|
+
reason: SuspendedReason;
|
|
32
|
+
wakeAt: number | undefined;
|
|
33
|
+
}
|
|
34
|
+
/** `/healthz` 的 `suspended` 段 */
|
|
35
|
+
export interface SuspendedSummary {
|
|
36
|
+
/** 等人工决定的条数 */
|
|
37
|
+
approval: number;
|
|
38
|
+
/** 等一个时刻的条数 */
|
|
39
|
+
timer: number;
|
|
40
|
+
/** 最早的目标时刻(epoch ms);一条时间挂起都没有 ⇒ **`null`**(不是 `0`) */
|
|
41
|
+
nextWakeAt: number | null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 把挂起的条目收成读数。口径写在调用方(`AsyncRunner.suspendedSummary`):只数**本进程**
|
|
45
|
+
* 看得见的记录 —— 与 `inFlight` 同一张表,不假装是全局面(跨进程合并看板是聚合方的事)。
|
|
46
|
+
*
|
|
47
|
+
* `nextWakeAt` 给 `null` 而不是 `0`:`0` 在 JSON 里是一个**合法时刻**(1970 年),
|
|
48
|
+
* 监控端拿它算 `nextWakeAt - now` 会得到一个巨大的负数,看着像「早就该醒却没人醒」。
|
|
49
|
+
*/
|
|
50
|
+
export declare function summarizeSuspended(entries: Iterable<SuspendedEntry>): SuspendedSummary;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 到点了吗(时间挂起)。
|
|
3
|
+
*
|
|
4
|
+
* - 两条判据缺一不可:状态是 `suspended` **且**原因是 `timer`(原因那一半是 C 定的口径 ——
|
|
5
|
+
* 没有它,等审批的挂起会被到期扫描按「`wakeAt` 缺失」判成不到点,看着像对,其实是
|
|
6
|
+
* **恰好**躲过;等时刻的挂起则会被审批那条闸叫醒);
|
|
7
|
+
* - `wakeAt` 缺失 ⇒ 永远不到点:**不**拿 `createdAt` / `startedAt` 之类退化(与
|
|
8
|
+
* `approvalExpired` 的取舍相反)—— 「不知道它什么时候醒」和「现在就该醒」是两件事,
|
|
9
|
+
* 猜错的方向是**提前开跑**,代价是真实副作用;
|
|
10
|
+
* - 边界是**不晚于现在**(`wakeAt <= now`):到点即可唤醒。与 `approvalExpired` 的严格大于
|
|
11
|
+
* 相反,两个闸的语义本来就不同 —— 超时是「等够了没」(恰好等于还没够),
|
|
12
|
+
* 到期是「到点了没」(恰好等于就到了)。
|
|
13
|
+
*/
|
|
14
|
+
export function timerDue(rec, now) {
|
|
15
|
+
return (rec.status === 'suspended' &&
|
|
16
|
+
rec.suspendedReason === 'timer' &&
|
|
17
|
+
rec.wakeAt !== undefined &&
|
|
18
|
+
rec.wakeAt <= now);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 把挂起的条目收成读数。口径写在调用方(`AsyncRunner.suspendedSummary`):只数**本进程**
|
|
22
|
+
* 看得见的记录 —— 与 `inFlight` 同一张表,不假装是全局面(跨进程合并看板是聚合方的事)。
|
|
23
|
+
*
|
|
24
|
+
* `nextWakeAt` 给 `null` 而不是 `0`:`0` 在 JSON 里是一个**合法时刻**(1970 年),
|
|
25
|
+
* 监控端拿它算 `nextWakeAt - now` 会得到一个巨大的负数,看着像「早就该醒却没人醒」。
|
|
26
|
+
*/
|
|
27
|
+
export function summarizeSuspended(entries) {
|
|
28
|
+
let approval = 0;
|
|
29
|
+
let timer = 0;
|
|
30
|
+
let nextWakeAt = null;
|
|
31
|
+
for (const e of entries) {
|
|
32
|
+
if (e.reason === 'approval') {
|
|
33
|
+
approval++;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
timer++;
|
|
37
|
+
if (e.wakeAt !== undefined && (nextWakeAt === null || e.wakeAt < nextWakeAt)) {
|
|
38
|
+
nextWakeAt = e.wakeAt;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return { approval, timer, nextWakeAt };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=wake-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wake-policy.js","sourceRoot":"","sources":["../../src/transport/wake-policy.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAe,EAAE,GAAW;IACnD,OAAO,CACL,GAAG,CAAC,MAAM,KAAK,WAAW;QAC1B,GAAG,CAAC,eAAe,KAAK,OAAO;QAC/B,GAAG,CAAC,MAAM,KAAK,SAAS;QACxB,GAAG,CAAC,MAAM,IAAI,GAAG,CAClB,CAAC;AACJ,CAAC;AAkBD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAiC;IAClE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5B,QAAQ,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QACD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;YAC7E,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@migor/agentia",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "面向应用开发的声明式 agent 服务开发框架:装饰器 + DI 声明四类能力,主 agent 编排执行;每次 run 产出结构化结果与可观测调用树(trace、成本、指标),交付可直接上线的服务。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
8
15
|
"files": [
|
|
9
16
|
"dist",
|
|
10
17
|
"CHANGELOG.md"
|
|
@@ -53,17 +60,20 @@
|
|
|
53
60
|
"e2e:grpc": "npm run build && tsx scripts/e2e-grpc.ts",
|
|
54
61
|
"e2e:live": "tsx scripts/e2e-live.ts",
|
|
55
62
|
"e2e:mcp": "npm run build:cli && tsx scripts/e2e-mcp.ts",
|
|
63
|
+
"e2e:mcp:server": "tsx scripts/e2e-mcp-server.ts",
|
|
56
64
|
"e2e:soak": "tsx scripts/e2e-soak.ts",
|
|
65
|
+
"e2e:soak:app": "npm run build && tsx scripts/e2e-soak-app.ts",
|
|
57
66
|
"bench:trace": "tsx scripts/bench-trace-cost.ts",
|
|
58
|
-
"bench:assembly": "tsx scripts/bench-app-assembly.ts"
|
|
67
|
+
"bench:assembly": "tsx scripts/bench-app-assembly.ts",
|
|
68
|
+
"bench:otlp": "tsx scripts/bench-otlp-snapshot.ts"
|
|
59
69
|
},
|
|
60
70
|
"devDependencies": {
|
|
61
|
-
"@anthropic-ai/sdk": "^0.
|
|
71
|
+
"@anthropic-ai/sdk": "^0.128.0",
|
|
62
72
|
"@biomejs/biome": "^2.5.14",
|
|
63
73
|
"@grpc/grpc-js": "^1.14.5",
|
|
64
74
|
"@grpc/proto-loader": "^0.8.1",
|
|
65
75
|
"@types/node": "^26.5.1",
|
|
66
|
-
"c8": "^
|
|
76
|
+
"c8": "^12.0.0",
|
|
67
77
|
"tsx": "^4.19.0",
|
|
68
78
|
"typescript": "^7.0.2",
|
|
69
79
|
"zod": "^4.6.1"
|