@migor/agentia 0.10.5 → 0.10.6

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.
Files changed (124) hide show
  1. package/CHANGELOG.md +128 -1
  2. package/README.md +1 -1
  3. package/dist/AGENTS.md +9 -1
  4. package/dist/container/container.js +3 -0
  5. package/dist/container/container.js.map +1 -1
  6. package/dist/core/abort.js +6 -1
  7. package/dist/core/abort.js.map +1 -1
  8. package/dist/core/json.js +4 -0
  9. package/dist/core/json.js.map +1 -1
  10. package/dist/core/limits.d.ts +5 -5
  11. package/dist/core/limits.js +5 -5
  12. package/dist/core/limits.js.map +1 -1
  13. package/dist/core/sse.d.ts +0 -13
  14. package/dist/core/sse.js +28 -2
  15. package/dist/core/sse.js.map +1 -1
  16. package/dist/core/timeout.d.ts +8 -0
  17. package/dist/core/timeout.js +19 -1
  18. package/dist/core/timeout.js.map +1 -1
  19. package/dist/core/trace.d.ts +7 -0
  20. package/dist/core/trace.js +7 -0
  21. package/dist/core/trace.js.map +1 -1
  22. package/dist/engine/loop.js +37 -11
  23. package/dist/engine/loop.js.map +1 -1
  24. package/dist/engine/mcp-server.d.ts +17 -1
  25. package/dist/engine/mcp-server.js +36 -2
  26. package/dist/engine/mcp-server.js.map +1 -1
  27. package/dist/engine/policy.js +5 -1
  28. package/dist/engine/policy.js.map +1 -1
  29. package/dist/engine/replay.js +63 -1
  30. package/dist/engine/replay.js.map +1 -1
  31. package/dist/engine/run-config.d.ts +6 -0
  32. package/dist/engine/run-config.js +15 -6
  33. package/dist/engine/run-config.js.map +1 -1
  34. package/dist/engine/spec.d.ts +6 -0
  35. package/dist/engine/spec.js.map +1 -1
  36. package/dist/engine/stop-reason.js +19 -1
  37. package/dist/engine/stop-reason.js.map +1 -1
  38. package/dist/engine/tool-events.d.ts +1 -0
  39. package/dist/engine/tool-events.js +7 -0
  40. package/dist/engine/tool-events.js.map +1 -1
  41. package/dist/engine/tracer.js +10 -3
  42. package/dist/engine/tracer.js.map +1 -1
  43. package/dist/engine/turn.d.ts +4 -12
  44. package/dist/engine/turn.js +89 -8
  45. package/dist/engine/turn.js.map +1 -1
  46. package/dist/engine/types.d.ts +10 -1
  47. package/dist/engine/types.js +1 -0
  48. package/dist/engine/types.js.map +1 -1
  49. package/dist/engine/usage.js +12 -4
  50. package/dist/engine/usage.js.map +1 -1
  51. package/dist/index.d.ts +1 -1
  52. package/dist/index.js +1 -1
  53. package/dist/integrations/anthropic.d.ts +9 -1
  54. package/dist/integrations/anthropic.js +42 -7
  55. package/dist/integrations/anthropic.js.map +1 -1
  56. package/dist/integrations/file-sink.d.ts +1 -0
  57. package/dist/integrations/file-sink.js +35 -32
  58. package/dist/integrations/file-sink.js.map +1 -1
  59. package/dist/integrations/mcp-http.js +33 -9
  60. package/dist/integrations/mcp-http.js.map +1 -1
  61. package/dist/integrations/mcp-protocol.js +33 -16
  62. package/dist/integrations/mcp-protocol.js.map +1 -1
  63. package/dist/integrations/metrics-otlp.js +4 -0
  64. package/dist/integrations/metrics-otlp.js.map +1 -1
  65. package/dist/integrations/metrics.js +17 -2
  66. package/dist/integrations/metrics.js.map +1 -1
  67. package/dist/integrations/openai.d.ts +6 -1
  68. package/dist/integrations/openai.js +45 -8
  69. package/dist/integrations/openai.js.map +1 -1
  70. package/dist/integrations/otlp.js +6 -0
  71. package/dist/integrations/otlp.js.map +1 -1
  72. package/dist/runtime/memory.d.ts +0 -8
  73. package/dist/runtime/memory.js +24 -2
  74. package/dist/runtime/memory.js.map +1 -1
  75. package/dist/runtime/run.js +34 -9
  76. package/dist/runtime/run.js.map +1 -1
  77. package/dist/store/fsStore.d.ts +2 -0
  78. package/dist/store/fsStore.js +38 -5
  79. package/dist/store/fsStore.js.map +1 -1
  80. package/dist/store/record.d.ts +40 -0
  81. package/dist/store/record.js +72 -0
  82. package/dist/store/record.js.map +1 -1
  83. package/dist/store/redisStore.js +15 -4
  84. package/dist/store/redisStore.js.map +1 -1
  85. package/dist/store/sqliteStore.js +39 -14
  86. package/dist/store/sqliteStore.js.map +1 -1
  87. package/dist/store/store.js +10 -4
  88. package/dist/store/store.js.map +1 -1
  89. package/dist/toolkit/module.js +1 -0
  90. package/dist/toolkit/module.js.map +1 -1
  91. package/dist/toolkit/prompt.js +12 -3
  92. package/dist/toolkit/prompt.js.map +1 -1
  93. package/dist/transport/approval-policy.d.ts +1 -1
  94. package/dist/transport/approval-policy.js +18 -3
  95. package/dist/transport/approval-policy.js.map +1 -1
  96. package/dist/transport/approval-supervisor.d.ts +15 -3
  97. package/dist/transport/approval-supervisor.js +37 -11
  98. package/dist/transport/approval-supervisor.js.map +1 -1
  99. package/dist/transport/async.d.ts +1 -0
  100. package/dist/transport/async.js +143 -23
  101. package/dist/transport/async.js.map +1 -1
  102. package/dist/transport/drain-gate.js +13 -1
  103. package/dist/transport/drain-gate.js.map +1 -1
  104. package/dist/transport/http-endpoints.js +7 -0
  105. package/dist/transport/http-endpoints.js.map +1 -1
  106. package/dist/transport/resume-scanner.d.ts +3 -0
  107. package/dist/transport/resume-scanner.js +10 -1
  108. package/dist/transport/resume-scanner.js.map +1 -1
  109. package/dist/transport/run-call-options.js +43 -1
  110. package/dist/transport/run-call-options.js.map +1 -1
  111. package/dist/transport/run-outcome.js +18 -1
  112. package/dist/transport/run-outcome.js.map +1 -1
  113. package/dist/transport/serve.js +10 -0
  114. package/dist/transport/serve.js.map +1 -1
  115. package/dist/transport/signal-supervisor.d.ts +3 -0
  116. package/dist/transport/signal-supervisor.js +5 -1
  117. package/dist/transport/signal-supervisor.js.map +1 -1
  118. package/dist/transport/stream-janitor.d.ts +45 -0
  119. package/dist/transport/stream-janitor.js +137 -0
  120. package/dist/transport/stream-janitor.js.map +1 -0
  121. package/dist/transport/task-wake-gate.d.ts +40 -0
  122. package/dist/transport/task-wake-gate.js +69 -0
  123. package/dist/transport/task-wake-gate.js.map +1 -0
  124. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
- import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, truncateSync, writeFileSync, } from 'node:fs';
1
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, truncateSync, writeFileSync, } from 'node:fs';
2
2
  import { dirname } from 'node:path';
3
- import { parseTaskRecord } from './record.js';
3
+ import { parseTaskRecord, serializeTaskRecord } from './record.js';
4
4
  import { cloneTaskRecord } from './store.js';
5
5
  /**
6
6
  * Agentia —— 文件宿主 TaskStore(spec §6.6:异步耐久 = 换宿主不换语义)。
@@ -25,6 +25,8 @@ export class FileTaskStore {
25
25
  // (实测读数见 spec §10 2026-09-28 ref-due-index-measure)。runner 对缺失的 listDue 回退全表,语义不变。
26
26
  byTask = new Map();
27
27
  byKey = new Map(); // idempotencyKey → taskId
28
+ /** 启动读取失败后进入降级态:仍可追加新记录,但**禁止 compact**(否则空内存会重写掉旧文件) */
29
+ degraded = false;
28
30
  constructor(file, onLoadError) {
29
31
  this.file = file;
30
32
  this.onLoadError = onLoadError;
@@ -41,7 +43,10 @@ export class FileTaskStore {
41
43
  raw = readFileSync(this.file, 'utf8');
42
44
  }
43
45
  catch (err) {
44
- // 读失败按空宿主启动:观测不击穿业务,缺省仍吞;宿主要告警就传 onLoadError
46
+ // 读失败按空宿主启动(不击穿业务),但**必须出声**:否则宿主以为续跑扫描跑了,
47
+ // 实际一条旧任务都没读到;再调 compact 会把旧文件永久清空(2026-11-07 深评)。
48
+ this.degraded = true;
49
+ console.warn(`[agentia] FileTaskStore 读取 ${this.file} 失败,按空库启动(续跑将看不到旧任务;已禁用 compact):`, err instanceof Error ? err.message : err);
45
50
  this.onLoadError?.(err);
46
51
  return;
47
52
  }
@@ -94,7 +99,30 @@ export class FileTaskStore {
94
99
  }
95
100
  }
96
101
  append(rec) {
97
- writeFileSync(this.file, `${JSON.stringify(rec)}\n`, { flag: 'a' });
102
+ // 半行自愈(2026-11-07 深评):此前只在启动时 healTail;同进程一次写残(ENOSPC /
103
+ // 中断)后,下一次 append 会粘在残行尾部,重启时整行非法被跳过(丢一条记录)。
104
+ // 记录写前长度,失败时截回去。
105
+ let before = -1;
106
+ try {
107
+ before = existsSync(this.file) ? statSync(this.file).size : 0;
108
+ }
109
+ catch {
110
+ before = -1;
111
+ }
112
+ try {
113
+ writeFileSync(this.file, `${serializeTaskRecord(rec)}\n`, { flag: 'a' });
114
+ }
115
+ catch (e) {
116
+ if (before >= 0) {
117
+ try {
118
+ truncateSync(this.file, before);
119
+ }
120
+ catch {
121
+ /* 截不回去也没别的补救;至少原错误照抛 */
122
+ }
123
+ }
124
+ throw e;
125
+ }
98
126
  }
99
127
  save(rec) {
100
128
  // **先落盘、后更新内存**(2026-09-20):落盘抛错时内存不得先推进 —— 否则内存说
@@ -133,6 +161,11 @@ export class FileTaskStore {
133
161
  * 旧文件也完整),内存态不受影响。
134
162
  */
135
163
  compact() {
164
+ if (this.degraded) {
165
+ // 读失败时内存是空的;compact 会把文件重写成空/只剩新记录 —— 等于永久删除旧历史。
166
+ console.warn(`[agentia] FileTaskStore 处于降级态(启动读取失败),拒绝 compact:${this.file}`);
167
+ return;
168
+ }
136
169
  // 赢家殿后:内存语义是「同幂等键最后 save 的 taskId 赢」(save 覆写 byKey),
137
170
  // 而 load 回放按行序 last-wins。直接按 Map 首次插入序写盘会丢掉「最后 save」
138
171
  // 信息 —— 同键重提的新任务插入在后,旧任务又被 save 赢回时,插入序恰与赢家
@@ -140,7 +173,7 @@ export class FileTaskStore {
140
173
  // 殿后即等价内存语义);Array.prototype.sort 稳定,同组内仍按插入序。
141
174
  const winners = new Set(this.byKey.values());
142
175
  const rows = [...this.byTask.values()].sort((a, b) => Number(winners.has(a.taskId)) - Number(winners.has(b.taskId)));
143
- const body = rows.map((r) => `${JSON.stringify(r)}\n`).join('');
176
+ const body = rows.map((r) => `${serializeTaskRecord(r)}\n`).join('');
144
177
  // 原子重写:先写临时文件再 rename。直接 writeFileSync 截断重写,中途被杀会留下
145
178
  // 半截文件、丢掉全部记录;同目录 rename 是原子的,旧文件在新文件就位前保持完整。
146
179
  // 临时文件名固定(单写者前提,见头注释)—— 上次被杀留下的残临时文件会被本次覆写。
@@ -1 +1 @@
1
- {"version":3,"file":"fsStore.js","sourceRoot":"","sources":["../../src/store/fsStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fsStore.js","sourceRoot":"","sources":["../../src/store/fsStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAa;IAUL,IAAI;IACJ,WAAW;IAV9B,+DAA+D;IAC/D,8CAA8C;IAC9C,mFAAmF;IAClE,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IACvC,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,0BAA0B;IAC9E,yDAAyD;IACjD,QAAQ,GAAG,KAAK,CAAC;IAEzB,YACmB,IAAY,EACZ,WAAoC;oBADpC,IAAI;2BACJ,WAAW;QAE5B,6DAA6D;QAC7D,2BAA2B;QAC3B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO;QACnC,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2CAA2C;YAC3C,mDAAmD;YACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO,CAAC,IAAI,CACV,8BAA8B,IAAI,CAAC,IAAI,mCAAmC,EAC1E,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;YACF,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBACH,2CAA2C;gBAC3C,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,GAAG;oBAAE,SAAS;gBACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACjC,IAAI,GAAG,CAAC,cAAc;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACzE,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,GAAW;QAC1B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC;YACH,2CAA2C;YAC3C,iBAAiB;YACjB,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,QAAQ;gBACV,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc;;gBAC5C,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAe;QAC5B,wDAAwD;QACxD,6CAA6C;QAC7C,iBAAiB;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,CAAC,CAAC,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAe;QAClB,kDAAkD;QAClD,+CAA+C;QAC/C,0CAA0C;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,yEAAyE;QACzE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,cAAc;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;OAOG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,iDAAiD;YACjD,OAAO,CAAC,IAAI,CACV,oDAAoD,IAAI,CAAC,IAAI,EAAE,CAChE,CAAC;YACF,OAAO;QACT,CAAC;QACD,qDAAqD;QACrD,qDAAqD;QACrD,4CAA4C;QAC5C,+CAA+C;QAC/C,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CACxE,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,oDAAoD;QACpD,8CAA8C;QAC9C,4CAA4C;QAC5C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,cAAc,CAAC;QACvC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF"}
@@ -32,6 +32,46 @@ import type { TaskRecord } from './store.js';
32
32
  * 返回值留给需要自己决定要不要回写的调用方(`sqliteStore` 的派生列)。
33
33
  */
34
34
  export declare function normalizeLegacyRecord(rec: TaskRecord): boolean;
35
+ /**
36
+ * 「哪些进程内引用在落库时被剥掉了」的键。
37
+ *
38
+ * ⚠️ **内部键,刻意不进 `RunInvocationOptions` 公共类型面**(AGENTS.md「内部工具不进公共面」):
39
+ * 它只在一条记录自「save」到「恢复段读回」之间活着,是给恢复路径的一句提示,不是使用者该
40
+ * 配置的东西。读侧一律走 `droppedRuntimeRefsOf`,别在别处直接摸这个键名。
41
+ */
42
+ export declare const DROPPED_REFS_KEY = "__agentiaDroppedRefs";
43
+ /** 被剥掉的进程内引用(只有 `true` 的那些有意义;键名对应 `RunInvocationOptions` 上的位置) */
44
+ export interface DroppedRuntimeRefs {
45
+ /** 主 `client`:恢复段会退回 runner 级 / 默认 client */
46
+ client: boolean;
47
+ /** `tools` 菜单:恢复段会退回装配菜单(`app.tools`) */
48
+ tools: boolean;
49
+ /** fallback 环里的 `client`:只保留 `model`,client 由 runner/应用级配置兜住 */
50
+ fallbacks: boolean;
51
+ }
52
+ /**
53
+ * 读一条落库记录上的剥离标记(2026-11-09 深评 P1)。
54
+ *
55
+ * 为什么需要标记:`serializeTaskRecord` 会剥掉主 `client` 与 `tools`,而恢复段的
56
+ * `buildRunCallOptions` 无从区分「提交时本来没传」与「传了但落库时被剥掉了」—— 两种情况下
57
+ * `rec.spec.options.client` 都是 `undefined`。没有这个标记,per-task 自定义 client(典型是
58
+ * OpenAI 兼容端点)的任务重启续跑时会**静默**打到 runner 的端点,自定义工具菜单也会静默
59
+ * 换回装配菜单。标记只用来让恢复段**出声**,不改变任何装配结果。
60
+ */
61
+ export declare function droppedRuntimeRefsOf(options: object | undefined): DroppedRuntimeRefs | undefined;
62
+ /**
63
+ * 落库前的**可序列化清洗**(2026-11-07 深评):`JSON.stringify` 会把 `AbortSignal` 变成
64
+ * `{}`、把 `ModelClient` 变成 `{messages:{}}`、把 `tools` 里的 run 函数丢掉。读回后这些
65
+ * 空壳会在恢复段被当成真对象使用(`combineSignals({})` 直接 TypeError / 工具菜单半残)。
66
+ *
67
+ * 因此三条 JSON store 统一走这里:
68
+ * - 去掉 `signal` / `client` / 回调 / `tools`(它们属于提交进程,不能跨重启);
69
+ * - fallback 环只保留 `model`(client 由 runner/应用级配置兜住,与文档口径一致);
70
+ * - 剥掉的「主 client / tools / fallback client」记进 `DROPPED_REFS_KEY`,让恢复段能出声
71
+ * (2026-11-09 深评 P1:此前剥得比文档承诺的多,且恢复路径看不到这件事)。
72
+ * 返回的是**新对象**,不改调用方记录。
73
+ */
74
+ export declare function serializeTaskRecord(rec: TaskRecord): string;
35
75
  /**
36
76
  * bytes → 记录(**唯一入口**):解析 + 形状守卫 + 读时归一。
37
77
  *
@@ -1,3 +1,4 @@
1
+ import { cloneTaskRecord } from './store.js';
1
2
  /**
2
3
  * ① 之前的状态值。它在本版的 `RunStatus` 联合类型里**不存在**,所以下面那处比较只能走字符串
3
4
  * (`rec.status === 'awaiting_approval'` 根本编译不过)—— 这本身就说明问题:类型看不见盘上的数据。
@@ -38,6 +39,77 @@ export function normalizeLegacyRecord(rec) {
38
39
  }
39
40
  return changed;
40
41
  }
42
+ /**
43
+ * 「哪些进程内引用在落库时被剥掉了」的键。
44
+ *
45
+ * ⚠️ **内部键,刻意不进 `RunInvocationOptions` 公共类型面**(AGENTS.md「内部工具不进公共面」):
46
+ * 它只在一条记录自「save」到「恢复段读回」之间活着,是给恢复路径的一句提示,不是使用者该
47
+ * 配置的东西。读侧一律走 `droppedRuntimeRefsOf`,别在别处直接摸这个键名。
48
+ */
49
+ export const DROPPED_REFS_KEY = '__agentiaDroppedRefs';
50
+ /**
51
+ * 读一条落库记录上的剥离标记(2026-11-09 深评 P1)。
52
+ *
53
+ * 为什么需要标记:`serializeTaskRecord` 会剥掉主 `client` 与 `tools`,而恢复段的
54
+ * `buildRunCallOptions` 无从区分「提交时本来没传」与「传了但落库时被剥掉了」—— 两种情况下
55
+ * `rec.spec.options.client` 都是 `undefined`。没有这个标记,per-task 自定义 client(典型是
56
+ * OpenAI 兼容端点)的任务重启续跑时会**静默**打到 runner 的端点,自定义工具菜单也会静默
57
+ * 换回装配菜单。标记只用来让恢复段**出声**,不改变任何装配结果。
58
+ */
59
+ export function droppedRuntimeRefsOf(options) {
60
+ if (options === undefined)
61
+ return undefined;
62
+ const raw = options[DROPPED_REFS_KEY];
63
+ if (!Array.isArray(raw))
64
+ return undefined;
65
+ return {
66
+ client: raw.includes('client'),
67
+ tools: raw.includes('tools'),
68
+ fallbacks: raw.includes('fallbacks[].client'),
69
+ };
70
+ }
71
+ /**
72
+ * 落库前的**可序列化清洗**(2026-11-07 深评):`JSON.stringify` 会把 `AbortSignal` 变成
73
+ * `{}`、把 `ModelClient` 变成 `{messages:{}}`、把 `tools` 里的 run 函数丢掉。读回后这些
74
+ * 空壳会在恢复段被当成真对象使用(`combineSignals({})` 直接 TypeError / 工具菜单半残)。
75
+ *
76
+ * 因此三条 JSON store 统一走这里:
77
+ * - 去掉 `signal` / `client` / 回调 / `tools`(它们属于提交进程,不能跨重启);
78
+ * - fallback 环只保留 `model`(client 由 runner/应用级配置兜住,与文档口径一致);
79
+ * - 剥掉的「主 client / tools / fallback client」记进 `DROPPED_REFS_KEY`,让恢复段能出声
80
+ * (2026-11-09 深评 P1:此前剥得比文档承诺的多,且恢复路径看不到这件事)。
81
+ * 返回的是**新对象**,不改调用方记录。
82
+ */
83
+ export function serializeTaskRecord(rec) {
84
+ const copy = cloneTaskRecord(rec);
85
+ const options = copy.spec.options;
86
+ if (options !== undefined) {
87
+ const rest = { ...options };
88
+ // 剥之前先记:这几样是「提交进程的运行时引用」,恢复段只能退回配置兜底
89
+ const dropped = [];
90
+ if (options.client !== undefined)
91
+ dropped.push('client');
92
+ if (options.tools !== undefined && options.tools.length > 0)
93
+ dropped.push('tools');
94
+ if (options.fallbacks?.some((link) => link.client !== undefined)) {
95
+ dropped.push('fallbacks[].client');
96
+ }
97
+ // 只摘「进程内对象」;纯数据(approvals / events / blackboard / 预算 / labels)保留。
98
+ delete rest.signal;
99
+ delete rest.client;
100
+ delete rest.onText;
101
+ delete rest.onTraceEvent;
102
+ delete rest.tools;
103
+ if (rest.fallbacks !== undefined) {
104
+ rest.fallbacks = rest.fallbacks.map((link) => ({ model: link.model }));
105
+ }
106
+ if (dropped.length > 0) {
107
+ rest[DROPPED_REFS_KEY] = dropped;
108
+ }
109
+ copy.spec = { ...copy.spec, options: rest };
110
+ }
111
+ return JSON.stringify(copy);
112
+ }
41
113
  /**
42
114
  * bytes → 记录(**唯一入口**):解析 + 形状守卫 + 读时归一。
43
115
  *
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/store/record.ts"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC1C,iDAAiD;AACjD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAe;IACnD,MAAM,GAAG,GAAG,GAAyC,CAAC;IACtD,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACjC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC;QACzB,wEAAwE;QACxE,gDAAgD;QAChD,cAAc;QACd,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS;YAAE,GAAG,CAAC,eAAe,GAAG,UAAU,CAAC;QACxE,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,iDAAiD;IACjD,gDAAgD;IAChD,8DAA8D;IAC9D,UAAU;IACV,IAAI,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC9C,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS;YAAE,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACjF,OAAO,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC7D,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/store/record.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { isTerminalStatus } from '../core/run.js';
2
- import { parseTaskRecord } from './record.js';
2
+ import { parseTaskRecord, serializeTaskRecord } from './record.js';
3
3
  export class RedisTaskStore {
4
4
  client;
5
5
  prefix;
@@ -41,7 +41,7 @@ export class RedisTaskStore {
41
41
  return `${this.prefix}idem:${key}`;
42
42
  }
43
43
  async save(rec) {
44
- const json = JSON.stringify(rec);
44
+ const json = serializeTaskRecord(rec);
45
45
  // TTL 只加在**终态**记录上(2026-09-28 外部深评 S1)。此前无条件加:一条在等审批的
46
46
  // 任务,TTL 一到记录就没了 —— 那条「批了它」的决定无家可归(`InMemoryTaskStore.evict`
47
47
  // 里那句「suspended 不可淘汰」是同一条道理,两处此前读数相反)。
@@ -86,10 +86,21 @@ export class RedisTaskStore {
86
86
  return taskId ? this.get(taskId) : undefined;
87
87
  }
88
88
  async list() {
89
- const keys = await this.enumerate(this.taskPattern());
89
+ // Redis SCAN 契约允许同一个 key 返回多次(rehash / 过期时真实发生)。不去重会让
90
+ // `resumePending` 把同一条记录认领两次并派发两次(2026-11-07 深评)。
91
+ const keys = [...new Set(await this.enumerate(this.taskPattern()))];
90
92
  const recs = [];
91
93
  for (const k of keys) {
92
- const rec = parseRecord(await this.client.get(k));
94
+ let raw;
95
+ try {
96
+ raw = await this.client.get(k);
97
+ }
98
+ catch (e) {
99
+ // 单 key 读失败不该让整次 resume 扫描 reject(扫描会因此完全停摆)。
100
+ console.warn(`[agentia] RedisTaskStore.list 读取 ${k} 失败,跳过该条:`, e instanceof Error ? e.message : e);
101
+ continue;
102
+ }
103
+ const rec = parseRecord(raw);
93
104
  if (rec)
94
105
  recs.push(rec);
95
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redisStore.js","sourceRoot":"","sources":["../../src/store/redisStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redisStore.js","sourceRoot":"","sources":["../../src/store/redisStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA2FnE,MAAM,OAAO,cAAc;IASN,MAAM;IARR,MAAM,CAAS;IAChC;;;OAGG;IACc,QAAQ,CAAqC;IAE9D,YACmB,MAAiB,EAClC,IAAI,GAA0B,EAAE;sBADf,MAAM;QAGvB,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,oDAAoD;YACpD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;YAChB,wDAAwD;YACxD,MAAM,IAAI,KAAK,CACb,yDAAyD,IAAI,CAAC,UAAU,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,2CAA2C;gBAC3C,MAAM,IAAI,KAAK,CACb,uEAAuE;oBACrE,8DAA8D,CACjE,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,MAAc;QAC5B,OAAO,GAAG,IAAI,CAAC,MAAM,QAAQ,MAAM,EAAE,CAAC;IACxC,CAAC;IAEO,OAAO,CAAC,GAAW;QACzB,OAAO,GAAG,IAAI,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAe;QACxB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACtC,sDAAsD;QACtD,6DAA6D;QAC7D,uCAAuC;QACvC,yDAAyD;QACzD,qCAAqC;QACrC,yCAAyC;QACzC,yCAAyC;QACzC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,uDAAuD;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;YACvB,yCAAyC;YACzC,6BAA6B;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,KAAa,EAAE,OAAgB;QAC9D,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,iDAAiD;QACjD,iDAAiD;QACjD,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,OAAO,WAAW,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,sDAAsD;QACtD,kDAAkD;QAClD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAiB,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,GAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,8CAA8C;gBAC9C,OAAO,CAAC,IAAI,CACV,oCAAoC,CAAC,WAAW,EAChD,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CACnC,CAAC;gBACF,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CACP,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,OAAO,IAAI,KAAK,UAAU;YAAE,OAAO;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;IAED,4DAA4D;IACpD,WAAW;QACjB,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,8CAA8C;IACtC,KAAK,CAAC,SAAS,CAAC,OAAe;QACrC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBACnF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;;oBACxC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAK,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,mDAAmD;AACnD,SAAS,WAAW,CAAC,GAAkB;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC;QACH,kDAAkD;QAClD,cAAc;QACd,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'node:module';
2
- import { parseTaskRecord } from './record.js';
2
+ import { parseTaskRecord, serializeTaskRecord } from './record.js';
3
3
  // node:sqlite 是 Node ≥22.5 才有的内置模块。这里**延迟加载**而非顶层静态 import:
4
4
  // 顶层 import 会让**整个包**在未提供该模块的运行时「加载即崩」——`src/index.ts` 对
5
5
  // SqliteTaskStore 是 eager 再导出,于是连不用 SQLite 的用户也被殃及。延迟到真正构造
@@ -65,19 +65,37 @@ export class SqliteTaskStore {
65
65
  // 读时自愈判据扩到两列(见 healRow)。存量库走下面的**就地迁移**:
66
66
  // CREATE TABLE IF NOT EXISTS 不会给旧表加列,所以查列 → 缺则 ALTER + 从 json 回填。
67
67
  const cols = this.db.prepare('PRAGMA table_info(tasks)').all();
68
+ // 迁移事务化(2026-11-07 深评):ALTER 与回填是两条 DDL/DML,中间被杀会留下
69
+ // 「列在、wake_at 全 NULL」的半迁移;两个 worker 同时首启还会 duplicate column 崩。
70
+ // BEGIN IMMEDIATE 串行化;duplicate column 视为「别的进程刚做完」并继续。
68
71
  if (!cols.some((c) => c.name === 'wake_at')) {
69
- this.db.exec('ALTER TABLE tasks ADD COLUMN wake_at INTEGER');
70
- // 回填:旧行的 wakeAt 只在 json 里(不补的话旧库里的在睡任务从此醒不来 ——
71
- // 那正是本列要服务的那批记录)
72
- this.db.exec("UPDATE tasks SET wake_at = json_extract(json, '$.wakeAt') " +
73
- "WHERE json_extract(json, '$.wakeAt') IS NOT NULL");
72
+ try {
73
+ this.db.exec('BEGIN IMMEDIATE');
74
+ this.db.exec('ALTER TABLE tasks ADD COLUMN wake_at INTEGER');
75
+ this.db.exec("UPDATE tasks SET wake_at = json_extract(json, '$.wakeAt') " +
76
+ "WHERE json_extract(json, '$.wakeAt') IS NOT NULL");
77
+ this.db.exec('COMMIT');
78
+ }
79
+ catch (e) {
80
+ try {
81
+ this.db.exec('ROLLBACK');
82
+ }
83
+ catch {
84
+ /* 已回滚 / 事务未开始 */
85
+ }
86
+ if (!/duplicate column/i.test(e?.message ?? String(e)))
87
+ throw e;
88
+ }
74
89
  }
90
+ // 幂等回填:半迁移窗口留下的 NULL 也在这里补(只扫 wake_at IS NULL 的行)。
91
+ this.db.exec("UPDATE tasks SET wake_at = json_extract(json, '$.wakeAt') " +
92
+ "WHERE wake_at IS NULL AND json_extract(json, '$.wakeAt') IS NOT NULL");
75
93
  this.db.exec('CREATE INDEX IF NOT EXISTS idx_tasks_due ON tasks(status, wake_at)');
76
94
  }
77
95
  save(rec) {
78
96
  this.db
79
97
  .prepare('INSERT OR REPLACE INTO tasks (task_id, idempotency_key, status, wake_at, json) VALUES (?, ?, ?, ?, ?)')
80
- .run(rec.taskId, rec.idempotencyKey ?? null, rec.status, rec.wakeAt ?? null, JSON.stringify(rec));
98
+ .run(rec.taskId, rec.idempotencyKey ?? null, rec.status, rec.wakeAt ?? null, serializeTaskRecord(rec));
81
99
  }
82
100
  /**
83
101
  * 把派生列(`status` / `wake_at`)拉回与 json 一致(**只在不一致时写**,一次代价)。
@@ -91,14 +109,21 @@ export class SqliteTaskStore {
91
109
  * 判据是「列 ≠ json」而不是「刚才归一过没有」:任何原因(手改过、旧版本写的、将来又一次
92
110
  * 改名)造成的漂移都该被顺手修掉,不依赖调用方传一个「我改过」的旗子。
93
111
  */
94
- healRow(storedStatus, storedWakeAt, rec) {
112
+ healRow(storedStatus, storedWakeAt, storedJson, rec) {
95
113
  const wakeAt = rec.wakeAt ?? null;
96
114
  if (storedStatus === rec.status && storedWakeAt === wakeAt)
97
115
  return;
98
116
  try {
117
+ // 派生列先拉正(不碰 json,绝无覆盖并发 save 的风险)。
118
+ this.db
119
+ .prepare('UPDATE tasks SET status = ?, wake_at = ? WHERE task_id = ?')
120
+ .run(rec.status, wakeAt, rec.taskId);
121
+ // json 回写带 CAS(`json = 旧值`):多进程下若并发 save 已经换了新快照,这一条不生效,
122
+ // 留给下一次真实 save 归一。旧形状的归一化会改 json,所以不能把两者合并成一条
123
+ // (合并后 WHERE json=旧值 会因“写的是新 json”而永远不命中)。
99
124
  this.db
100
- .prepare('UPDATE tasks SET status = ?, wake_at = ?, json = ? WHERE task_id = ?')
101
- .run(rec.status, wakeAt, JSON.stringify(rec), rec.taskId);
125
+ .prepare('UPDATE tasks SET json = ? WHERE task_id = ? AND json = ?')
126
+ .run(serializeTaskRecord(rec), rec.taskId, storedJson);
102
127
  }
103
128
  catch (err) {
104
129
  // 只读库 / 他进程占锁超时:读照常返回归一后的记录,只有列这一处没自愈。**响亮一次**,
@@ -117,7 +142,7 @@ export class SqliteTaskStore {
117
142
  return undefined;
118
143
  const rec = parseTaskRecord(row.json);
119
144
  if (rec)
120
- this.healRow(row.status, row.wake_at, rec);
145
+ this.healRow(row.status, row.wake_at, row.json, rec);
121
146
  return rec;
122
147
  }
123
148
  byIdempotency(key) {
@@ -129,7 +154,7 @@ export class SqliteTaskStore {
129
154
  return undefined;
130
155
  const rec = parseTaskRecord(row.json);
131
156
  if (rec)
132
- this.healRow(row.status, row.wake_at, rec);
157
+ this.healRow(row.status, row.wake_at, row.json, rec);
133
158
  return rec;
134
159
  }
135
160
  list() {
@@ -142,7 +167,7 @@ export class SqliteTaskStore {
142
167
  const rec = parseTaskRecord(r.json);
143
168
  if (!rec)
144
169
  continue;
145
- this.healRow(r.status, r.wake_at, rec);
170
+ this.healRow(r.status, r.wake_at, r.json, rec);
146
171
  out.push(rec);
147
172
  }
148
173
  return out;
@@ -162,7 +187,7 @@ export class SqliteTaskStore {
162
187
  const rec = parseTaskRecord(r.json);
163
188
  if (!rec)
164
189
  continue;
165
- this.healRow(r.status, r.wake_at, rec);
190
+ this.healRow(r.status, r.wake_at, r.json, rec);
166
191
  out.push(rec);
167
192
  }
168
193
  return out;
@@ -1 +1 @@
1
- {"version":3,"file":"sqliteStore.js","sourceRoot":"","sources":["../../src/store/sqliteStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqliteStore.js","sourceRoot":"","sources":["../../src/store/sqliteStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGnE,4DAA4D;AAC5D,yDAAyD;AACzD,2DAA2D;AAC3D,2DAA2D;AAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAEtD,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,OAAQ,cAAc,CAAC,aAAa,CAAkC,CAAC,YAAY,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,eAAe;IACT,EAAE,CAAe;IAClC,gDAAgD;IAC/B,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD,YAAY,IAAY;QACtB,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,gDAAgD;QAChD,0DAA0D;QAC1D,uDAAuD;QACvD,sDAAsD;QACtD,mCAAmC;QACnC,kCAAkC;QAClC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,gCAAgC;YAChC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC5C,CAAC;QACD,4DAA4D;QAC5D,4EAA4E;QAC5E,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;KAOZ,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QAC3F,4EAA4E;QAC5E,uCAAuC;QACvC,EAAE;QACF,2DAA2D;QAC3D,mDAAmD;QACnD,kDAAkD;QAClD,yCAAyC;QACzC,kEAAkE;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAA6B,CAAC;QAC1F,oDAAoD;QACpD,+DAA+D;QAC/D,uDAAuD;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAChC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBAC7D,IAAI,CAAC,EAAE,CAAC,IAAI,CACV,4DAA4D;oBAC1D,kDAAkD,CACrD,CAAC;gBACF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;gBAAC,MAAM,CAAC;oBACP,iBAAiB;gBACnB,CAAC;gBACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAE,CAAW,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,mDAAmD;QACnD,IAAI,CAAC,EAAE,CAAC,IAAI,CACV,4DAA4D;YAC1D,sEAAsE,CACzE,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC,GAAe;QAClB,IAAI,CAAC,EAAE;aACJ,OAAO,CACN,uGAAuG,CACxG;aACA,GAAG,CACF,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,cAAc,IAAI,IAAI,EAC1B,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,MAAM,IAAI,IAAI,EAClB,mBAAmB,CAAC,GAAG,CAAC,CACzB,CAAC;IACN,CAAC;IAED;;;;;;;;;;;OAWG;IACK,OAAO,CACb,YAA2B,EAC3B,YAA2B,EAC3B,UAAkB,EAClB,GAAe;QAEf,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;QAClC,IAAI,YAAY,KAAK,GAAG,CAAC,MAAM,IAAI,YAAY,KAAK,MAAM;YAAE,OAAO;QACnE,IAAI,CAAC;YACH,mCAAmC;YACnC,IAAI,CAAC,EAAE;iBACJ,OAAO,CAAC,4DAA4D,CAAC;iBACrE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,yDAAyD;YACzD,8CAA8C;YAC9C,2CAA2C;YAC3C,IAAI,CAAC,EAAE;iBACJ,OAAO,CAAC,0DAA0D,CAAC;iBACnE,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gDAAgD;YAChD,mDAAmD;YACnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CACV,gBAAgB,GAAG,CAAC,MAAM,gCAAgC,EAC1D,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,2DAA2D,CAAC;aACpE,GAAG,CAAC,MAAM,CAAgF,CAAC;QAC9F,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,GAAG;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,0DAA0D;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN,+FAA+F,CAChG;aACA,GAAG,CAAC,GAAG,CAAgF,CAAC;QAC3F,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,GAAG;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,wDAAwD,CAAC;aACjE,GAAG,EAIJ,CAAC;QACH,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,6CAA6C;YAC7C,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAc;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN,0CAA0C;YACxC,oFAAoF,CACvF;aACA,GAAG,CAAC,MAAM,CAIX,CAAC;QACH,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;IAED,yCAAyC;IACzC,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
@@ -18,11 +18,17 @@ export function nextTaskId() {
18
18
  * `RunInvocationOptions.fallbacks` 的序列化边界注释)。
19
19
  */
20
20
  export function cloneTaskRecord(rec) {
21
- return cloneData(rec);
21
+ return cloneData(rec, 0);
22
22
  }
23
- function cloneData(value) {
23
+ /** 记录应是浅层 JSON 数据;超过这个深度按事故级输入响亮拒绝,而不是让 V8 爆栈 */
24
+ const MAX_CLONE_DEPTH = 256;
25
+ function cloneData(value, depth) {
26
+ if (depth > MAX_CLONE_DEPTH) {
27
+ throw new TypeError(`TaskRecord 的嵌套超过 ${MAX_CLONE_DEPTH} 层 —— 记录应是浅层 JSON 数据,` +
28
+ '拒绝深拷以免 RangeError 掩盖真实问题(2026-11-07 深评)');
29
+ }
24
30
  if (Array.isArray(value))
25
- return value.map(cloneData);
31
+ return value.map((v) => cloneData(v, depth + 1));
26
32
  if (value !== null && typeof value === 'object') {
27
33
  const proto = Object.getPrototypeOf(value);
28
34
  // 类实例(AbortSignal 等)按引用保留:克隆它没有意义,也克隆不了
@@ -32,7 +38,7 @@ function cloneData(value) {
32
38
  for (const [k, v] of Object.entries(value)) {
33
39
  // 直接赋值 '__proto__' 会走原型 setter:自有键丢失且副本原型被改。
34
40
  Object.defineProperty(out, k, {
35
- value: cloneData(v),
41
+ value: cloneData(v, depth + 1),
36
42
  writable: true,
37
43
  enumerable: true,
38
44
  configurable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
@@ -355,6 +355,7 @@ export class AgentApp {
355
355
  // HITL:审批决定(tool_use_id → 决定)原样进引擎;恢复挂起任务时由
356
356
  // AsyncRunner 经它把落库的决定喂回来
357
357
  approvals: opts.approvals,
358
+ approvalEpoch: opts.approvalEpoch,
358
359
  // 事件投入口(2026-09-28 ref-run-event-input):与 approvals 同一条「契约字段必须原样透传」的规则
359
360
  // (漏掉这一行 = AsyncRunner 投递的事件在 app.run 门口静默丢掉)
360
361
  events: opts.events,
@@ -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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"}
@@ -44,9 +44,18 @@ export function collectPromptEntries(instance) {
44
44
  : {}),
45
45
  run: (input) => Reflect.apply(target[key], target, [input]),
46
46
  });
47
- // 版本表以最终菜单名(capabilityName 校验后的 name)为键;缺省无版本不进表
48
- if (spec.version !== undefined)
49
- versions[spec.name ?? name] = spec.version;
47
+ // 版本表以最终菜单名(capabilityName 校验后的 name)为键;缺省无版本不进表。
48
+ // 判定用**归一后的 version**(metadata.version 优先):此前只看 spec.version,
49
+ // 只写 metadata.version 的能力在 manifest 有版本、trace 查不到(2026-11-07 深评)。
50
+ if (version !== undefined) {
51
+ // defineProperty 而非赋值:能力名允许 `__proto__`,赋值会走原型 setter 静默丢条目。
52
+ Object.defineProperty(versions, spec.name ?? name, {
53
+ value: version,
54
+ writable: true,
55
+ enumerable: true,
56
+ configurable: true,
57
+ });
58
+ }
50
59
  };
51
60
  // 实例方法(沿原型链)
52
61
  const found = scanDecoratedMethods(instance, promptSpecs);