@migor/agentia 0.10.1 → 0.10.3

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 (135) hide show
  1. package/CHANGELOG.md +917 -34
  2. package/README.en.md +6 -4
  3. package/README.md +4 -3
  4. package/dist/AGENTS.md +106 -33
  5. package/dist/core/limits.d.ts +33 -1
  6. package/dist/core/limits.js +37 -1
  7. package/dist/core/limits.js.map +1 -1
  8. package/dist/core/run.d.ts +2 -2
  9. package/dist/core/timeout.d.ts +5 -5
  10. package/dist/core/timeout.js +5 -5
  11. package/dist/core/tool.d.ts +2 -2
  12. package/dist/core/trace.d.ts +10 -1
  13. package/dist/core/trace.js +10 -1
  14. package/dist/core/trace.js.map +1 -1
  15. package/dist/engine/concurrency.d.ts +1 -1
  16. package/dist/engine/concurrency.js +1 -1
  17. package/dist/engine/errors.d.ts +2 -2
  18. package/dist/engine/errors.js +2 -2
  19. package/dist/engine/loop-result.d.ts +2 -2
  20. package/dist/engine/loop.js +91 -56
  21. package/dist/engine/loop.js.map +1 -1
  22. package/dist/engine/mcp-server-http.js +69 -36
  23. package/dist/engine/mcp-server-http.js.map +1 -1
  24. package/dist/engine/mcp-server-stdio.d.ts +0 -13
  25. package/dist/engine/mcp-server-stdio.js +42 -25
  26. package/dist/engine/mcp-server-stdio.js.map +1 -1
  27. package/dist/engine/mcp-server.d.ts +15 -0
  28. package/dist/engine/mcp-server.js +39 -8
  29. package/dist/engine/mcp-server.js.map +1 -1
  30. package/dist/engine/resume-input.d.ts +1 -1
  31. package/dist/engine/resume-input.js +1 -1
  32. package/dist/engine/retry.d.ts +15 -0
  33. package/dist/engine/retry.js +51 -2
  34. package/dist/engine/retry.js.map +1 -1
  35. package/dist/engine/span-scope.d.ts +15 -0
  36. package/dist/engine/span-scope.js +8 -1
  37. package/dist/engine/span-scope.js.map +1 -1
  38. package/dist/engine/spec.d.ts +5 -1
  39. package/dist/engine/spec.js.map +1 -1
  40. package/dist/engine/tracer.d.ts +8 -4
  41. package/dist/engine/tracer.js +24 -17
  42. package/dist/engine/tracer.js.map +1 -1
  43. package/dist/engine/turn.d.ts +2 -2
  44. package/dist/engine/turn.js +19 -4
  45. package/dist/engine/turn.js.map +1 -1
  46. package/dist/engine/types.d.ts +8 -3
  47. package/dist/eval/export.js +2 -2
  48. package/dist/eval/export.js.map +1 -1
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.js +2 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/integrations/anthropic.d.ts +1 -1
  53. package/dist/integrations/anthropic.js +1 -1
  54. package/dist/integrations/anthropic.js.map +1 -1
  55. package/dist/integrations/file-sink.d.ts +2 -2
  56. package/dist/integrations/file-sink.js +2 -2
  57. package/dist/integrations/mcp-http.js +15 -88
  58. package/dist/integrations/mcp-http.js.map +1 -1
  59. package/dist/integrations/mcp-protocol.d.ts +86 -10
  60. package/dist/integrations/mcp-protocol.js +147 -1
  61. package/dist/integrations/mcp-protocol.js.map +1 -1
  62. package/dist/integrations/mcp-stdio.js +87 -52
  63. package/dist/integrations/mcp-stdio.js.map +1 -1
  64. package/dist/integrations/mcp.d.ts +1 -1
  65. package/dist/integrations/mcp.js +19 -3
  66. package/dist/integrations/mcp.js.map +1 -1
  67. package/dist/integrations/metrics-otlp.d.ts +1 -1
  68. package/dist/integrations/metrics-otlp.js +8 -2
  69. package/dist/integrations/metrics-otlp.js.map +1 -1
  70. package/dist/integrations/metrics-render.js +1 -1
  71. package/dist/integrations/metrics-render.js.map +1 -1
  72. package/dist/integrations/metrics-state.d.ts +2 -2
  73. package/dist/integrations/metrics-state.js +4 -4
  74. package/dist/integrations/metrics-state.js.map +1 -1
  75. package/dist/integrations/metrics.d.ts +2 -2
  76. package/dist/integrations/openai.d.ts +4 -1
  77. package/dist/integrations/openai.js +25 -6
  78. package/dist/integrations/openai.js.map +1 -1
  79. package/dist/integrations/otlp.d.ts +29 -6
  80. package/dist/integrations/otlp.js +128 -7
  81. package/dist/integrations/otlp.js.map +1 -1
  82. package/dist/integrations/report.d.ts +14 -2
  83. package/dist/integrations/report.js +39 -6
  84. package/dist/integrations/report.js.map +1 -1
  85. package/dist/runtime/memory.d.ts +5 -0
  86. package/dist/runtime/memory.js.map +1 -1
  87. package/dist/store/fsStore.js +9 -5
  88. package/dist/store/fsStore.js.map +1 -1
  89. package/dist/store/record.d.ts +2 -2
  90. package/dist/store/record.js +1 -1
  91. package/dist/store/sqliteStore.d.ts +2 -2
  92. package/dist/store/sqliteStore.js +3 -3
  93. package/dist/store/sqliteStore.js.map +1 -1
  94. package/dist/store/store.d.ts +32 -6
  95. package/dist/store/store.js +36 -5
  96. package/dist/store/store.js.map +1 -1
  97. package/dist/toolkit/collect.d.ts +11 -5
  98. package/dist/toolkit/collect.js +10 -4
  99. package/dist/toolkit/collect.js.map +1 -1
  100. package/dist/toolkit/module.js +78 -1
  101. package/dist/toolkit/module.js.map +1 -1
  102. package/dist/toolkit/prompt.d.ts +1 -1
  103. package/dist/toolkit/prompt.js +2 -2
  104. package/dist/toolkit/prompt.js.map +1 -1
  105. package/dist/toolkit/subagent.js +17 -3
  106. package/dist/toolkit/subagent.js.map +1 -1
  107. package/dist/transport/approval-policy.js +1 -1
  108. package/dist/transport/approval-policy.js.map +1 -1
  109. package/dist/transport/approval-supervisor.d.ts +8 -0
  110. package/dist/transport/approval-supervisor.js +23 -3
  111. package/dist/transport/approval-supervisor.js.map +1 -1
  112. package/dist/transport/async.d.ts +5 -4
  113. package/dist/transport/async.js +166 -145
  114. package/dist/transport/async.js.map +1 -1
  115. package/dist/transport/http-endpoints.js +1 -1
  116. package/dist/transport/http-route.js +2 -2
  117. package/dist/transport/http-route.js.map +1 -1
  118. package/dist/transport/http-shapes.d.ts +1 -1
  119. package/dist/transport/http-shapes.js +1 -1
  120. package/dist/transport/resume-scanner.d.ts +7 -0
  121. package/dist/transport/resume-scanner.js +40 -9
  122. package/dist/transport/resume-scanner.js.map +1 -1
  123. package/dist/transport/run-call-options.d.ts +77 -0
  124. package/dist/transport/run-call-options.js +76 -0
  125. package/dist/transport/run-call-options.js.map +1 -0
  126. package/dist/transport/run-outcome.d.ts +109 -0
  127. package/dist/transport/run-outcome.js +100 -0
  128. package/dist/transport/run-outcome.js.map +1 -0
  129. package/dist/transport/scheduler.js +5 -0
  130. package/dist/transport/scheduler.js.map +1 -1
  131. package/dist/transport/signal-supervisor.d.ts +10 -2
  132. package/dist/transport/signal-supervisor.js +15 -2
  133. package/dist/transport/signal-supervisor.js.map +1 -1
  134. package/dist/transport/wake-policy.d.ts +1 -1
  135. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/integrations/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqF9C,8BAA8B;AAC9B,SAAS,UAAU;IACjB,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,SAAS,UAAU,CAAC,CAAQ;IAC1B,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,mBAAmB,CAAC;AACpF,CAAC;AAED,SAAS,cAAc,CAAC,OAA0B;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACtE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE;QAC/B,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;QAC5B,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAW,EAAE,GAAU;IACvC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC;IACpC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC;IACtC,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,CAAC,mBAAmB,IAAI,GAAG,CAAC,mBAAmB,CAAC;IACpD,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI;QAAE,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;AAChG,CAAC;AAUD,0BAA0B;AAC1B,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,UAAkB,EAAiB,EAAE;QAChD,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxE,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;gBAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;gBAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7F,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBACrD,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI;oBAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAC9F,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG;gBACF,KAAK;gBACL,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,UAAU,EAAE;gBACpB,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,CAAC;gBAChB,iBAAiB,EAAE,CAAC;gBACpB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;gBAChD,SAAS,EAAE,EAAE;aACd,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,2CAA2C;QAC3C,gCAAgC;QAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;gBAAE,SAAS;YAC7C,CAAC,CAAC,iBAAiB,EAAE,CAAC;YACtB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI;gBAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;iBACvF,CAAC;gBACJ,CAAC,CAAC,aAAa,EAAE,CAAC;gBAClB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAE7F,yCAAyC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB;gBAAE,SAAS;YAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAsC,CAAC;YACtD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACjF,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK;gBAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAuB,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAC3E,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpB,UAAU;QACV,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QACvC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QACnD,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;KAC5B,CAAC,CACH,CAAC;IACF,2BAA2B;IAC3B,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE/F,MAAM,YAAY,GAAkB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC;QACJ,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QACjC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;KACxC,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;IAEpE,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,UAAU,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE;QACnC,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,iBAAiB;QAC/B,cAAc,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE;QACpC,kBAAkB,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE;QAC5C,IAAI,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,eAAe,CAAC,OAA6B;IAC3D,MAAM,KAAK,GAAc;QACvB,OAAO,EAAE,UAAU,OAAO,CAAC,MAAM,QAAQ;QACzC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAClE,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,UAAU,EAAE;QACxB,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;QAClB,kBAAkB,EAAE,EAAE;QACtB,IAAI,EAAE,OAAO,CAAC,MAAM;KACrB,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG;oBACJ,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,UAAU,EAAE;oBACpB,WAAW,EAAE,CAAC;oBACd,OAAO,EAAE,IAAI;oBACb,aAAa,EAAE,CAAC;oBAChB,iBAAiB,EAAE,CAAC;oBACpB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;oBAChD,SAAS,EAAE,EAAE;iBACd,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI;gBAAE,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACpE,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC;YACrC,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,CAAC;YAC7C,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC1E,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;YACD,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;YACvB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBACxC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI;gBAAE,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;QACtE,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,UAAU;QACV,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QACvC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QACnD,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;KAC5B,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAChG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,GAAG,CAAC;QACJ,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QACjC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;KACxC,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,KAAK,CAAC,kBAAkB,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CACR,YAAY,MAAM,CAAC,UAAU,iBAAiB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,UAAU,CAAC,CAAC,YAAY,aAAa,CAAC,CAAC,eAAe,aAAa,CAAC,CAAC,mBAAmB,GAAG;QACzK,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CACxE,CAAC;IACF,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR,aAAa,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CACrG,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CACR,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG;gBACjF,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,GAAG,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAChJ,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CACR,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG;gBAChF,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG;gBAC5E,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG;gBACjE,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/integrations/report.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,11 @@ export interface MemorySnapshot {
20
20
  * 不透明版本句柄:框架**不解释它**(不认识、也不比较),只在回写时原样递给 `saveIfRev`。
21
21
  * 内容由 store 决定:整店单调计数、逐键 hash、数据库的 row version 都行 ——
22
22
  * **粒度越细误报越少**(粗粒度会把「别人写了别的键」也报成冲突,方向是宁可多报)。
23
+ *
24
+ * ⚠️ 契约(实现方的义务):**水合成功时 rev 不得为 `undefined`** —— `undefined` 是保留值,
25
+ * 只表示「没读到 / 读失败」。`run.ts` 的 `flushMemory` 正是用 `rev === undefined` 判
26
+ * 「水合失败 ⇒ 跳过 CAS 回写」:若 store 水合**成功**却回了 undefined,那一次本可成功的
27
+ * 回写会被跳过,且收到一条归因错误的 warn(被说成「水合失败」,实际是 store 违约)。
23
28
  */
24
29
  rev: unknown;
25
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/runtime/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoDH;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;IACb,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACnD,kCAAkC;IAC1B,QAAQ,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC,IAAc;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,OAAgC;QACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,OAAgC,EAAE,GAAY;QACtD,2CAA2C;QAC3C,2CAA2C;QAC3C,IAAI,GAAG,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,8CAA8C;IACtC,IAAI,CAAC,IAAc;QACzB,4DAA4D;QAC5D,8CAA8C;QAC9C,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/runtime/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyDH;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;IACb,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACnD,kCAAkC;IAC1B,QAAQ,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC,IAAc;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,OAAgC;QACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,OAAgC,EAAE,GAAY;QACtD,2CAA2C;QAC3C,2CAA2C;QAC3C,IAAI,GAAG,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,8CAA8C;IACtC,IAAI,CAAC,IAAc;QACzB,4DAA4D;QAC5D,8CAA8C;QAC9C,MAAM,GAAG,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, truncateSync, writeFileSync, } from 'node:fs';
2
2
  import { dirname } from 'node:path';
3
3
  import { parseTaskRecord } from './record.js';
4
+ import { cloneTaskRecord } from './store.js';
4
5
  /**
5
6
  * Agentia —— 文件宿主 TaskStore(spec §6.6:异步耐久 = 换宿主不换语义)。
6
7
  *
@@ -21,7 +22,7 @@ export class FileTaskStore {
21
22
  onLoadError;
22
23
  // 刻意**不实现** `listDue`(到期索引):记录常驻内存 Map(构造期 load 之后 `list()` 只是
23
24
  // snapshot),每轮扫描本来就便宜 —— 它真正贵的全表读在构造期,索引管不到那里
24
- // (实测读数见 spec §10 2026-09-28 ⑤)。runner 对缺失的 listDue 回退全表,语义不变。
25
+ // (实测读数见 spec §10 2026-09-28 ref-due-index-measure)。runner 对缺失的 listDue 回退全表,语义不变。
25
26
  byTask = new Map();
26
27
  byKey = new Map(); // idempotencyKey → taskId
27
28
  constructor(file, onLoadError) {
@@ -100,19 +101,22 @@ export class FileTaskStore {
100
101
  // 「已存」而磁盘没有(append-only 日志里也没这一笔),进程重启后记录静默回退,
101
102
  // 任务状态与持久层两本账。顺序反过来时抛错点在内存推进之后,丢的就是这个不变量。
102
103
  this.append(rec);
103
- this.byTask.set(rec.taskId, rec);
104
+ // 内存同样只存副本(2026-10-13 ref-retry-validation):调用方此后对 rec 的推进不得绕过 save 直接可见
105
+ this.byTask.set(rec.taskId, cloneTaskRecord(rec));
104
106
  if (rec.idempotencyKey)
105
107
  this.byKey.set(rec.idempotencyKey, rec.taskId);
106
108
  }
107
109
  get(taskId) {
108
- return this.byTask.get(taskId);
110
+ const rec = this.byTask.get(taskId);
111
+ return rec === undefined ? undefined : cloneTaskRecord(rec);
109
112
  }
110
113
  byIdempotency(key) {
111
114
  const taskId = this.byKey.get(key);
112
- return taskId ? this.byTask.get(taskId) : undefined;
115
+ const rec = taskId ? this.byTask.get(taskId) : undefined;
116
+ return rec === undefined ? undefined : cloneTaskRecord(rec);
113
117
  }
114
118
  list() {
115
- return [...this.byTask.values()];
119
+ return [...this.byTask.values()].map(cloneTaskRecord);
116
120
  }
117
121
  clear() {
118
122
  this.byTask.clear();
@@ -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":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * 为什么单独成件:**落盘的数据不受类型系统保护**。`JSON.parse(raw) as TaskRecord` 里那个 `as`
5
5
  * 是一句「我保证它是」—— TS 只检查你**写进**类型的值,不检查**盘上**的值。于是改名这类破坏性
6
- * 变更(2026-09-28 ①:`awaiting_approval` → `suspended` + `suspendedReason`、
6
+ * 变更(2026-09-28 ref-suspend-state-reason:`awaiting_approval` → `suspended` + `suspendedReason`、
7
7
  * `approvalPendingSince` → `suspendedSince`)在这条接缝上会**静默失效**:旧记录带着一个
8
8
  * `RunStatus` 里**已经不存在**的值被读回来,而每一处判断都按新语义去读它。
9
9
  *
@@ -25,7 +25,7 @@ import type { TaskRecord } from './store.js';
25
25
  /**
26
26
  * 把一条记录里的旧版本形状**就地**归一,返回「有没有动过」。
27
27
  *
28
- * 目前只认 2026-09-28 ① 那一批改名(状态值 + 挂起时刻字段)。原则:**只搬运盘上真有的东西**,
28
+ * 目前只认 2026-09-28 ref-suspend-state-reason 那一批改名(状态值 + 挂起时刻字段)。原则:**只搬运盘上真有的东西**,
29
29
  * 不凭空补造 —— 新形状的记录若缺 `suspendedReason`,本函数不动它(那是另一个缺陷,
30
30
  * 不该由垫片掩盖成「看起来正常」)。
31
31
  *
@@ -8,7 +8,7 @@ const LEGACY_SINCE_KEY = 'approvalPendingSince';
8
8
  /**
9
9
  * 把一条记录里的旧版本形状**就地**归一,返回「有没有动过」。
10
10
  *
11
- * 目前只认 2026-09-28 ① 那一批改名(状态值 + 挂起时刻字段)。原则:**只搬运盘上真有的东西**,
11
+ * 目前只认 2026-09-28 ref-suspend-state-reason 那一批改名(状态值 + 挂起时刻字段)。原则:**只搬运盘上真有的东西**,
12
12
  * 不凭空补造 —— 新形状的记录若缺 `suspendedReason`,本函数不动它(那是另一个缺陷,
13
13
  * 不该由垫片掩盖成「看起来正常」)。
14
14
  *
@@ -6,7 +6,7 @@ import type { TaskRecord, TaskStore } from './store.js';
6
6
  * - save = INSERT OR REPLACE(整行记录 JSON 存 json 列,last-wins);
7
7
  * - byIdempotency 取该键最近一次 save 的记录(按 rowid 倒序,失败重提产生的新任务胜出);
8
8
  * - list 按写入顺序返回;clear 清空整表;
9
- * - `listDue(before)`(到期索引,2026-09-28 ⑤):派生列 `wake_at` + `(status, wake_at)`
9
+ * - `listDue(before)`(到期索引,2026-09-28 ref-due-index-measure):派生列 `wake_at` + `(status, wake_at)`
10
10
  * 索引,只回「在睡且到点」的记录(存量库构造期就地迁移:ALTER + 从 json 回填);
11
11
  * - 构造即就绪(建表 + 索引,无异步),重启续跑同样交给 AsyncRunner.resumePending()。
12
12
  *
@@ -36,7 +36,7 @@ export declare class SqliteTaskStore implements TaskStore {
36
36
  byIdempotency(key: string): TaskRecord | undefined;
37
37
  list(): TaskRecord[];
38
38
  /**
39
- * 到期索引(2026-09-28 ⑤ 落地):只回「在睡且到点」的记录,走 `idx_tasks_due` 索引
39
+ * 到期索引(2026-09-28 ref-due-index-measure 落地):只回「在睡且到点」的记录,走 `idx_tasks_due` 索引
40
40
  * —— 代价是 O(到期数) 而不是 O(全表)。口径与 `wake-policy.ts` 的 `timerDue` 对齐
41
41
  * (status + wake_at 两列;`suspendedReason` 那一半由调用方复核,见 #redispatch)。
42
42
  */
@@ -20,7 +20,7 @@ function loadDatabaseSync() {
20
20
  * - save = INSERT OR REPLACE(整行记录 JSON 存 json 列,last-wins);
21
21
  * - byIdempotency 取该键最近一次 save 的记录(按 rowid 倒序,失败重提产生的新任务胜出);
22
22
  * - list 按写入顺序返回;clear 清空整表;
23
- * - `listDue(before)`(到期索引,2026-09-28 ⑤):派生列 `wake_at` + `(status, wake_at)`
23
+ * - `listDue(before)`(到期索引,2026-09-28 ref-due-index-measure):派生列 `wake_at` + `(status, wake_at)`
24
24
  * 索引,只回「在睡且到点」的记录(存量库构造期就地迁移:ALTER + 从 json 回填);
25
25
  * - 构造即就绪(建表 + 索引,无异步),重启续跑同样交给 AsyncRunner.resumePending()。
26
26
  *
@@ -56,7 +56,7 @@ export class SqliteTaskStore {
56
56
  )
57
57
  `);
58
58
  this.db.exec('CREATE INDEX IF NOT EXISTS idx_tasks_idempotency ON tasks(idempotency_key)');
59
- // wake_at 派生列(2026-09-28 ⑤,到期索引):json 内 wakeAt 的反规范化副本,
59
+ // wake_at 派生列(2026-09-28 ref-due-index-measure,到期索引):json 内 wakeAt 的反规范化副本,
60
60
  // 专供 `listDue` 的索引过滤(status, wake_at)。
61
61
  //
62
62
  // 为什么是派生列而不是查询时 `json_extract`:json_extract 要对**扫到的每一行**解析
@@ -148,7 +148,7 @@ export class SqliteTaskStore {
148
148
  return out;
149
149
  }
150
150
  /**
151
- * 到期索引(2026-09-28 ⑤ 落地):只回「在睡且到点」的记录,走 `idx_tasks_due` 索引
151
+ * 到期索引(2026-09-28 ref-due-index-measure 落地):只回「在睡且到点」的记录,走 `idx_tasks_due` 索引
152
152
  * —— 代价是 O(到期数) 而不是 O(全表)。口径与 `wake-policy.ts` 的 `timerDue` 对齐
153
153
  * (status + wake_at 两列;`suspendedReason` 那一半由调用方复核,见 #redispatch)。
154
154
  */
@@ -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":"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"}
@@ -55,13 +55,13 @@ export interface TaskRecord {
55
55
  */
56
56
  suspendedSince?: number | undefined;
57
57
  /**
58
- * 挂起原因(2026-09-28 ①):`approval` = 等人工决定、`timer` = 等一个时刻。
58
+ * 挂起原因(2026-09-28 ref-suspend-state-reason):`approval` = 等人工决定、`timer` = 等一个时刻。
59
59
  * **随记录落库**(与 `suspendedSince` 同批):进程重启后靠它决定用哪条闸 ——
60
60
  * 审批超时只对 `approval` 成立,到期唤醒只对 `timer` 成立。
61
61
  */
62
62
  suspendedReason?: SuspendedReason | undefined;
63
63
  /**
64
- * 时间挂起的目标时刻(epoch ms,2026-09-28 ① 的 timer 侧):到点由到期扫描唤醒
64
+ * 时间挂起的目标时刻(epoch ms,2026-09-28 ref-suspend-state-reason 的 timer 侧):到点由到期扫描唤醒
65
65
  * (`resumePending` / `poll` 的惰性路径,判据见 `transport/wake-policy.ts`)。
66
66
  * **随记录落库** —— 「睡到后天下午三点接着跑」这件事只有它活得比进程久。
67
67
  *
@@ -70,7 +70,7 @@ export interface TaskRecord {
70
70
  */
71
71
  wakeAt?: number | undefined;
72
72
  /**
73
- * 挂起期间投递、**尚未注入消息历史**的事件(2026-09-28 ⑥,run 事件投入口)。
73
+ * 挂起期间投递、**尚未注入消息历史**的事件(2026-09-28 ref-run-event-input,run 事件投入口)。
74
74
  * **随记录落库**(重启不丢;先落库再派发那条纪律的载体)。续跑段由引擎在未决
75
75
  * tool_use 解决之后渲染成 user 文本消息注入(见 `engine/loop.ts` 的注入点纪律),
76
76
  * 跑通(不再挂起)后由宿主清掉 —— 它们已进历史;再次挂起则**保留**(那次续跑
@@ -86,17 +86,32 @@ export interface TaskRecord {
86
86
  deliveredEventIds?: string[] | undefined;
87
87
  }
88
88
  export interface TaskStore {
89
+ /**
90
+ * 落库。存进去的必须是**副本**而不是调用方的活引用(2026-10-13 ref-retry-validation)——
91
+ * 调用方的纪律是「改 rec → save → 继续改 rec → 再 save」,存活引用会让
92
+ * 「两次 save 之间的中间态」对其他读者可见,且某次 save 失败时污染已留在库里。
93
+ */
89
94
  save(rec: TaskRecord): MaybePromise<void>;
95
+ /**
96
+ * 取任务记录。返回的必须是**反序列化副本 / 快照,不是内部活引用** ——
97
+ * engine/transport 的纪律是「先变异 rec、再 `await save` 落库」(如 resume-scanner /
98
+ * approval-supervisor 的「重读 → 改 status → 先落库再派发」):若 `get` 交出活引用,
99
+ * 变异会在 `save` 之前就被其他读者看见,「未落库的中间态」直接对外可见;
100
+ * save 失败时那些变异就**留在库里**(落不了库的决定却改了记录)。
101
+ * `byIdempotency` / `list` / `listDue` 同一纪律(2026-10-13 ref-retry-validation 坐实:内建实现
102
+ * 统一走 `cloneTaskRecord`,下方)。
103
+ */
90
104
  get(taskId: string): MaybePromise<TaskRecord | undefined>;
91
- /** 幂等键 → 最近一次任务(last-wins) */
105
+ /** 幂等键 → 最近一次任务(last-wins)。返回副本,纪律同 `get` */
92
106
  byIdempotency(key: string): MaybePromise<TaskRecord | undefined>;
107
+ /** 全表快照。每条都是副本,纪律同 `get` */
93
108
  list(): MaybePromise<TaskRecord[]>;
94
109
  /**
95
- * **可选**:到期索引(2026-09-28 ⑤ 落地)—— 只回「`suspended` 且 `wakeAt <= before`」
110
+ * **可选**:到期索引(2026-09-28 ref-due-index-measure 落地)—— 只回「`suspended` 且 `wakeAt <= before`」
96
111
  * 的记录(`wakeAt` 缺失的不回)。`AsyncRunner` 的扫描在**到期唤醒那一半**用它替代全表
97
112
  * 过滤(`listDue?.(now) ?? list()` 的输入),没有实现的 store 回退全表,语义不变。
98
113
  *
99
- * 实现与否的分判(spec §10 2026-09-28 ⑤ 的实测):`list()` 是**真查询**的 store
114
+ * 实现与否的分判(spec §10 2026-09-28 ref-due-index-measure 的实测):`list()` 是**真查询**的 store
100
115
  * (sqlite:10k 记录一轮 ~105ms 线性增长)值得实现;记录本就在内存的(InMemory /
101
116
  * File —— list 只是返回 Map snapshot)**不实现**,回退路径就是它们的现状。
102
117
  *
@@ -124,6 +139,17 @@ export interface TaskStore {
124
139
  */
125
140
  close?(): MaybePromise<void>;
126
141
  }
142
+ /**
143
+ * TaskRecord 的深拷贝(2026-10-13 ref-retry-validation,副本契约的唯一落点:`save` 入库与
144
+ * `get` / `byIdempotency` / `list` 出站都走它)。
145
+ *
146
+ * 递归克隆数组与**纯对象**(原型为 `Object.prototype` 或 null);函数与类实例
147
+ * 按引用保留 —— `spec.options` 里合法地装着 `AbortSignal` / `ModelClient` /
148
+ * 工具的 `run` 等进程内对象,它们不是「会被调用方变异的数据」,而 `structuredClone`
149
+ * 遇上它们直接抛 `DataCloneError`(sqlite/redis 序列化时本来也会丢它们,见
150
+ * `RunInvocationOptions.fallbacks` 的序列化边界注释)。
151
+ */
152
+ export declare function cloneTaskRecord(rec: TaskRecord): TaskRecord;
127
153
  export declare class InMemoryTaskStore implements TaskStore {
128
154
  private readonly byTask;
129
155
  private readonly byKey;
@@ -7,9 +7,37 @@ export function isThenable(x) {
7
7
  export function nextTaskId() {
8
8
  return `task_${randomUUID()}`;
9
9
  }
10
+ /**
11
+ * TaskRecord 的深拷贝(2026-10-13 ref-retry-validation,副本契约的唯一落点:`save` 入库与
12
+ * `get` / `byIdempotency` / `list` 出站都走它)。
13
+ *
14
+ * 递归克隆数组与**纯对象**(原型为 `Object.prototype` 或 null);函数与类实例
15
+ * 按引用保留 —— `spec.options` 里合法地装着 `AbortSignal` / `ModelClient` /
16
+ * 工具的 `run` 等进程内对象,它们不是「会被调用方变异的数据」,而 `structuredClone`
17
+ * 遇上它们直接抛 `DataCloneError`(sqlite/redis 序列化时本来也会丢它们,见
18
+ * `RunInvocationOptions.fallbacks` 的序列化边界注释)。
19
+ */
20
+ export function cloneTaskRecord(rec) {
21
+ return cloneData(rec);
22
+ }
23
+ function cloneData(value) {
24
+ if (Array.isArray(value))
25
+ return value.map(cloneData);
26
+ if (value !== null && typeof value === 'object') {
27
+ const proto = Object.getPrototypeOf(value);
28
+ // 类实例(AbortSignal 等)按引用保留:克隆它没有意义,也克隆不了
29
+ if (proto !== Object.prototype && proto !== null)
30
+ return value;
31
+ const out = {};
32
+ for (const [k, v] of Object.entries(value))
33
+ out[k] = cloneData(v);
34
+ return out;
35
+ }
36
+ return value;
37
+ }
10
38
  export class InMemoryTaskStore {
11
39
  // 刻意**不实现** `listDue`(到期索引):记录本就在内存 Map 里,`list()` 只是返回 snapshot ——
12
- // 到期过滤的成本与全表相同,索引无利可省(实测与触发条件见 spec §10 2026-09-28 ⑤)。
40
+ // 到期过滤的成本与全表相同,索引无利可省(实测与触发条件见 spec §10 2026-09-28 ref-due-index-measure)。
13
41
  // AsyncRunner 的扫描对缺失的 listDue 回退全表过滤,语义不变。
14
42
  byTask = new Map();
15
43
  byKey = new Map(); // idempotencyKey → taskId
@@ -29,7 +57,8 @@ export class InMemoryTaskStore {
29
57
  this.maxRecords = max;
30
58
  }
31
59
  save(rec) {
32
- this.byTask.set(rec.taskId, rec);
60
+ // 存副本(契约见 TaskStore.save):调用方此后对 rec 的推进不得绕过 save 直接可见
61
+ this.byTask.set(rec.taskId, cloneTaskRecord(rec));
33
62
  if (rec.idempotencyKey)
34
63
  this.byKey.set(rec.idempotencyKey, rec.taskId);
35
64
  if (this.byTask.size > this.maxRecords)
@@ -50,14 +79,16 @@ export class InMemoryTaskStore {
50
79
  }
51
80
  }
52
81
  get(taskId) {
53
- return this.byTask.get(taskId);
82
+ const rec = this.byTask.get(taskId);
83
+ return rec === undefined ? undefined : cloneTaskRecord(rec);
54
84
  }
55
85
  byIdempotency(key) {
56
86
  const taskId = this.byKey.get(key);
57
- return taskId ? this.byTask.get(taskId) : undefined;
87
+ const rec = taskId ? this.byTask.get(taskId) : undefined;
88
+ return rec === undefined ? undefined : cloneTaskRecord(rec);
58
89
  }
59
90
  list() {
60
- return [...this.byTask.values()];
91
+ return [...this.byTask.values()].map(cloneTaskRecord);
61
92
  }
62
93
  clear() {
63
94
  this.byTask.clear();
@@ -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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"}
@@ -22,20 +22,26 @@ export declare function isScannableInstance(instance: unknown): instance is obje
22
22
  * 父类的 spec(spec 沿原型链继承,调用仍走实例上的子类实现)。
23
23
  */
24
24
  export declare function scanDecoratedMethods<S>(instance: object, registry: WeakMap<Function, S>): DecoratedMethod<S>[];
25
- /** 装饰器收到的标准 context 子集(本框架只用到这三个字段) */
25
+ /** 装饰器收到的标准 context 子集(本框架只用到这四个字段) */
26
26
  export interface CapabilityDecoratorContext {
27
27
  kind: string;
28
28
  name: string | symbol;
29
29
  /** 标准装饰器 context 的私有方法标记(`#method` 的 kind 同样是 'method') */
30
30
  private?: boolean;
31
+ /** 标准装饰器 context 的静态方法标记 */
32
+ static?: boolean;
31
33
  }
32
34
  /**
33
- * 四类能力装饰器共用的目标守卫:只接类方法,且**拒绝私有方法**。
35
+ * 四类能力装饰器共用的目标守卫:只接类方法,且**拒绝私有方法**;
36
+ * 除 @Prompt 外(纯文本资产,静态收集是显式支持形态,见 prompt.ts)同时**拒绝静态方法**。
34
37
  *
35
- * 收集走 `Reflect.ownKeys`,私有名(#method)在其中不可见 —— 不拦的话能力会
36
- * 静默从菜单里消失,作者只能靠「模型说没有这个工具」反推。
38
+ * 收集走 `Reflect.ownKeys`,私有名(#method)在其中不可见;静态方法挂在**构造函数**上,
39
+ * 而 `scanDecoratedMethods` 只扫实例原型链 —— 不拦的话能力会静默从菜单里消失,
40
+ * 作者只能靠「模型说没有这个工具」反推。
37
41
  */
38
- export declare function assertMethodTarget(context: CapabilityDecoratorContext, kind: string): void;
42
+ export declare function assertMethodTarget(context: CapabilityDecoratorContext, kind: string, opts?: {
43
+ allowStatic?: boolean;
44
+ }): void;
39
45
  /** 能力名解析:spec.name 缺省取方法名;私有符号方法名必须显式给 name。 */
40
46
  export declare function capabilityName(spec: {
41
47
  name?: string;
@@ -44,18 +44,24 @@ export function scanDecoratedMethods(instance, registry) {
44
44
  return found;
45
45
  }
46
46
  /**
47
- * 四类能力装饰器共用的目标守卫:只接类方法,且**拒绝私有方法**。
47
+ * 四类能力装饰器共用的目标守卫:只接类方法,且**拒绝私有方法**;
48
+ * 除 @Prompt 外(纯文本资产,静态收集是显式支持形态,见 prompt.ts)同时**拒绝静态方法**。
48
49
  *
49
- * 收集走 `Reflect.ownKeys`,私有名(#method)在其中不可见 —— 不拦的话能力会
50
- * 静默从菜单里消失,作者只能靠「模型说没有这个工具」反推。
50
+ * 收集走 `Reflect.ownKeys`,私有名(#method)在其中不可见;静态方法挂在**构造函数**上,
51
+ * 而 `scanDecoratedMethods` 只扫实例原型链 —— 不拦的话能力会静默从菜单里消失,
52
+ * 作者只能靠「模型说没有这个工具」反推。
51
53
  */
52
- export function assertMethodTarget(context, kind) {
54
+ export function assertMethodTarget(context, kind, opts) {
53
55
  if (context.kind !== 'method') {
54
56
  throw new Error(`${kind} 只能修饰类方法,收到 kind=${String(context.kind)}`);
55
57
  }
56
58
  if (context.private) {
57
59
  throw new Error(`${kind} 不支持私有方法(#method):收集用 Reflect.ownKeys,私有名不可见`);
58
60
  }
61
+ if (context.static === true && opts?.allowStatic !== true) {
62
+ throw new Error(`${kind} 不支持静态方法(static):收集只扫实例原型链,静态方法挂在构造函数上不会被收进菜单` +
63
+ `(@Tool/@SubAgent/@Skill 的能力调用需要实例 this;@Prompt 是唯一支持静态的能力类)`);
64
+ }
59
65
  }
60
66
  /**
61
67
  * 能力名合法性:与 MCP 桥(integrations/mcp.ts)同口径 `^[A-Za-z0-9_-]{1,64}$`。
@@ -1 +1 @@
1
- {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/toolkit/collect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,OAAO,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC;AAC/F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAA8B;IAE9B,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IAExC,IAAI,KAAK,GAAkB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,oDAAoD;QACpD,0CAA0C;QAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;gBAAE,SAAS;YACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAiB,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI;gBAAE,SAAS,CAAC,qCAAqC;YAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmC,EAAE,IAAY;IAClF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAEnD,gDAAgD;AAChD,MAAM,UAAU,cAAc,CAC5B,IAAuB,EACvB,GAAoB,EACpB,IAAY;IAEZ,IAAI,IAAY,CAAC;IACjB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B;YAChE,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/toolkit/collect.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,64 @@ const defaultSinks = [];
16
16
  export function registerDefaultTraceSink(sink) {
17
17
  defaultSinks.push(sink);
18
18
  }
19
+ /**
20
+ * 子菜单重名查重(2026-10-13,装配期纯件,与 capability-cycles.ts 同款纪律):
21
+ * @SubAgent / @Skill 的 `tools` 引用展开结果与主菜单受同一条「模型 API 要求工具名唯一」
22
+ * 约束 —— 主菜单查重只管 sources 合并后的主菜单,子菜单是运行期展开的,两个 provider
23
+ * 各有同名能力被同一能力整片引用时,不在这里拦就会以 API 400 在运行期显形。
24
+ *
25
+ * 逐引用片展开(不调 resolveRefTools 的整体 thunk):报错要带**引用片**来源,
26
+ * 整体展开会把来源信息丢掉。同一 provider 内部的重名(两个方法同显式 name、且该
27
+ * provider 被 toolSources 收窄逃过主菜单查重)同样被网住(报成「来自 "p" + "p"」)。
28
+ *
29
+ * `sliceOf` = 「token → 中间件包装后的该 provider 菜单」(wrappedByToken 的读法)。
30
+ */
31
+ function assertNoSubmenuDuplicate(providers, collectedByToken, sliceOf) {
32
+ for (const p of providers) {
33
+ const collected = collectedByToken.get(p.provide);
34
+ if (collected === undefined)
35
+ continue;
36
+ const nestedOwners = [
37
+ ...collected.subagent.map((c) => ({
38
+ label: `@SubAgent "${c.name}"`,
39
+ refs: c.spec.tools ?? [],
40
+ })),
41
+ ...collected.skill.map((c) => ({
42
+ label: `@Skill "${c.name}"`,
43
+ refs: c.spec.tools ?? [],
44
+ })),
45
+ ];
46
+ for (const { label, refs } of nestedOwners) {
47
+ if (refs.length === 0)
48
+ continue;
49
+ // 能力名 → 提供它的引用片(同一 ref 写重也算,那同样是重名进菜单)
50
+ const originsByName = new Map();
51
+ for (const ref of refs) {
52
+ const slash = ref.indexOf('/');
53
+ const token = slash === -1 ? ref : ref.slice(0, slash);
54
+ const refName = slash === -1 ? undefined : ref.slice(slash + 1);
55
+ const wrapped = sliceOf(token);
56
+ const slice = refName === undefined ? wrapped : wrapped.filter((t) => t.name === refName);
57
+ for (const t of slice) {
58
+ const origins = originsByName.get(t.name);
59
+ if (origins === undefined)
60
+ originsByName.set(t.name, [ref]);
61
+ else
62
+ origins.push(ref);
63
+ }
64
+ }
65
+ const dups = [...originsByName.entries()].filter(([, origins]) => origins.length > 1);
66
+ if (dups.length > 0) {
67
+ const detail = dups
68
+ .map(([n, origins]) => `"${n}"(来自 ${origins.map((r) => `"${r}"`).join(' + ')})`)
69
+ .join(', ');
70
+ throw new Error(`子菜单能力重名:${label} 的 tools 引用展开后 ${detail} —— ` +
71
+ '子 agent / skill 的菜单与主菜单受同一条「模型 API 要求工具名唯一」约束;' +
72
+ '请改用能力级路径(<token>/<能力名>)收窄引用,或给能力改名');
73
+ }
74
+ }
75
+ }
76
+ }
19
77
  /**
20
78
  * Agentia —— 应用装配(spec §4/§6:主 agent + 可调工具菜单)。
21
79
  *
@@ -155,6 +213,12 @@ export class AgentApp {
155
213
  for (const p of providerList) {
156
214
  wrappedByToken.set(p.provide, wrap(buildSlice(p.provide)));
157
215
  }
216
+ // ── 子菜单重名查重(2026-10-13)──────────────────────────────────────────────
217
+ // @SubAgent / @Skill 的 tools 引用是**运行期**展开的(resolveTools thunk):两个 provider
218
+ // 各有同名能力被同一能力整片引用时,主菜单查重(下方)看不见它 —— 装配全绿,
219
+ // 第一次模型调用才由 API 400(tool names must be unique)暴露。
220
+ // 实现是模块级纯件 assertNoSubmenuDuplicate(与成环检测同款的装配期纯件纪律)。
221
+ assertNoSubmenuDuplicate(providerList, collectedByToken, (token) => wrappedByToken.get(token) ?? []);
158
222
  // ── 能力引用图成环检测(2026-09-28)────────────────────────────────────────────
159
223
  // 上面那次切片已经把**引用存在性**校验完了(未注册 provider / 不存在的能力名都在
160
224
  // `resolveRefTools` 里抛过),所以这里可以放心按 token 扇出。
@@ -256,6 +320,19 @@ export class AgentApp {
256
320
  * 传 `resultSchema: fromZod<T>(...)` 时返回值 `result.typed` 为 `T | undefined`。
257
321
  */
258
322
  run(messages, opts = {}) {
323
+ // 会话引用的出声闸(2026-10-12 ref-session-id-warn):sessionId 是**异步宿主**的可序列化会话引用
324
+ //(AsyncRunner 配 sessionStore 时由它在执行前换成 session 注入,见 spec.ts 该字段注释),
325
+ // 本入口不消费它 —— 此前直传它被**静默丢弃**(run 根没有 session.id、会话历史接不上、
326
+ // 零信号),与 0.9.5 那批「把静默换成有声」同口径,改为每条 run 告警一次。
327
+ // 内部链路踩不到它:AsyncRunner 在 buildRunCallOptions 里已把它消费掉、不再透传
328
+ //(见 transport/run-call-options.ts —— 续跑段不注入 session,若不剥掉会在这里误报)。
329
+ if (opts.sessionId !== undefined && opts.session === undefined) {
330
+ console.warn('[agentia] app.run 收到了 sessionId,但它在这个入口不生效:sessionId 是给异步宿主' +
331
+ '(AsyncRunner + sessionStore)的可序列化会话引用,程序内的 app.run 不消费它 —— ' +
332
+ '本次 run 不会带 session.id(OTLP 的 gen_ai.conversation.id),也不接会话历史。' +
333
+ '要会话维度 + 历史请用 session: { store, id }(见 usage-guide §4 `app.run` 选项表);' +
334
+ '只要 trace 标记不要历史,直连 executeRun / runAgent 的引擎级 sessionId。');
335
+ }
259
336
  const sys = opts.system ?? this.system;
260
337
  const system = sys instanceof SystemPrompt ? sys.build({ cache: true }) : sys;
261
338
  const seed = opts.blackboard;
@@ -301,7 +378,7 @@ export class AgentApp {
301
378
  // HITL:审批决定(tool_use_id → 决定)原样进引擎;恢复挂起任务时由
302
379
  // AsyncRunner 经它把落库的决定喂回来
303
380
  approvals: opts.approvals,
304
- // 事件投入口(2026-09-28 ⑥):与 approvals 同一条「契约字段必须原样透传」的规则
381
+ // 事件投入口(2026-09-28 ref-run-event-input):与 approvals 同一条「契约字段必须原样透传」的规则
305
382
  // (漏掉这一行 = AsyncRunner 投递的事件在 app.run 门口静默丢掉)
306
383
  events: opts.events,
307
384
  contextPolicy: opts.contextPolicy ?? this.base.contextPolicy,