@sema-ai/core 1.275.1

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 (962) hide show
  1. package/CHANGELOG.md +5433 -0
  2. package/LICENSE +27 -0
  3. package/NOTICE.md +30 -0
  4. package/README.md +1040 -0
  5. package/dist/agents/agent-definition.d.ts +10 -0
  6. package/dist/agents/agent-definition.d.ts.map +1 -0
  7. package/dist/agents/agent-definition.js +18 -0
  8. package/dist/agents/agent-definition.js.map +1 -0
  9. package/dist/agents/builtin-agents.d.ts +69 -0
  10. package/dist/agents/builtin-agents.d.ts.map +1 -0
  11. package/dist/agents/builtin-agents.js +177 -0
  12. package/dist/agents/builtin-agents.js.map +1 -0
  13. package/dist/agents/cascade.d.ts +101 -0
  14. package/dist/agents/cascade.d.ts.map +1 -0
  15. package/dist/agents/cascade.js +189 -0
  16. package/dist/agents/cascade.js.map +1 -0
  17. package/dist/agents/observer.d.ts +209 -0
  18. package/dist/agents/observer.d.ts.map +1 -0
  19. package/dist/agents/observer.js +495 -0
  20. package/dist/agents/observer.js.map +1 -0
  21. package/dist/agents/repair-loop.d.ts +236 -0
  22. package/dist/agents/repair-loop.d.ts.map +1 -0
  23. package/dist/agents/repair-loop.js +293 -0
  24. package/dist/agents/repair-loop.js.map +1 -0
  25. package/dist/agents/session-util.d.ts +8 -0
  26. package/dist/agents/session-util.d.ts.map +1 -0
  27. package/dist/agents/session-util.js +9 -0
  28. package/dist/agents/session-util.js.map +1 -0
  29. package/dist/agents/subagent-steps.d.ts +93 -0
  30. package/dist/agents/subagent-steps.d.ts.map +1 -0
  31. package/dist/agents/subagent-steps.js +206 -0
  32. package/dist/agents/subagent-steps.js.map +1 -0
  33. package/dist/agents/subagent.d.ts +441 -0
  34. package/dist/agents/subagent.d.ts.map +1 -0
  35. package/dist/agents/subagent.js +2492 -0
  36. package/dist/agents/subagent.js.map +1 -0
  37. package/dist/agents/suspend-guard.d.ts +35 -0
  38. package/dist/agents/suspend-guard.d.ts.map +1 -0
  39. package/dist/agents/suspend-guard.js +48 -0
  40. package/dist/agents/suspend-guard.js.map +1 -0
  41. package/dist/agents/teacher.d.ts +137 -0
  42. package/dist/agents/teacher.d.ts.map +1 -0
  43. package/dist/agents/teacher.js +575 -0
  44. package/dist/agents/teacher.js.map +1 -0
  45. package/dist/agents/team.d.ts +211 -0
  46. package/dist/agents/team.d.ts.map +1 -0
  47. package/dist/agents/team.js +293 -0
  48. package/dist/agents/team.js.map +1 -0
  49. package/dist/agents/tool-filter.d.ts +29 -0
  50. package/dist/agents/tool-filter.d.ts.map +1 -0
  51. package/dist/agents/tool-filter.js +50 -0
  52. package/dist/agents/tool-filter.js.map +1 -0
  53. package/dist/agents/verify.d.ts +177 -0
  54. package/dist/agents/verify.d.ts.map +1 -0
  55. package/dist/agents/verify.js +305 -0
  56. package/dist/agents/verify.js.map +1 -0
  57. package/dist/bench/metrics.d.ts +714 -0
  58. package/dist/bench/metrics.d.ts.map +1 -0
  59. package/dist/bench/metrics.js +618 -0
  60. package/dist/bench/metrics.js.map +1 -0
  61. package/dist/bin/sema-tb.d.ts +3 -0
  62. package/dist/bin/sema-tb.d.ts.map +1 -0
  63. package/dist/bin/sema-tb.js +516 -0
  64. package/dist/bin/sema-tb.js.map +1 -0
  65. package/dist/bin/tb-env.d.ts +13 -0
  66. package/dist/bin/tb-env.d.ts.map +1 -0
  67. package/dist/bin/tb-env.js +26 -0
  68. package/dist/bin/tb-env.js.map +1 -0
  69. package/dist/brain/anthropic.d.ts +46 -0
  70. package/dist/brain/anthropic.d.ts.map +1 -0
  71. package/dist/brain/anthropic.js +830 -0
  72. package/dist/brain/anthropic.js.map +1 -0
  73. package/dist/brain/circuit-breaker.d.ts +46 -0
  74. package/dist/brain/circuit-breaker.d.ts.map +1 -0
  75. package/dist/brain/circuit-breaker.js +173 -0
  76. package/dist/brain/circuit-breaker.js.map +1 -0
  77. package/dist/brain/degrading.d.ts +98 -0
  78. package/dist/brain/degrading.d.ts.map +1 -0
  79. package/dist/brain/degrading.js +249 -0
  80. package/dist/brain/degrading.js.map +1 -0
  81. package/dist/brain/errors.d.ts +31 -0
  82. package/dist/brain/errors.d.ts.map +1 -0
  83. package/dist/brain/errors.js +58 -0
  84. package/dist/brain/errors.js.map +1 -0
  85. package/dist/brain/failover.d.ts +18 -0
  86. package/dist/brain/failover.d.ts.map +1 -0
  87. package/dist/brain/failover.js +118 -0
  88. package/dist/brain/failover.js.map +1 -0
  89. package/dist/brain/model-presets.d.ts +36 -0
  90. package/dist/brain/model-presets.d.ts.map +1 -0
  91. package/dist/brain/model-presets.js +54 -0
  92. package/dist/brain/model-presets.js.map +1 -0
  93. package/dist/brain/openai.d.ts +43 -0
  94. package/dist/brain/openai.d.ts.map +1 -0
  95. package/dist/brain/openai.js +784 -0
  96. package/dist/brain/openai.js.map +1 -0
  97. package/dist/brain/reasoning.d.ts +138 -0
  98. package/dist/brain/reasoning.d.ts.map +1 -0
  99. package/dist/brain/reasoning.js +146 -0
  100. package/dist/brain/reasoning.js.map +1 -0
  101. package/dist/brain/repetition.d.ts +60 -0
  102. package/dist/brain/repetition.d.ts.map +1 -0
  103. package/dist/brain/repetition.js +121 -0
  104. package/dist/brain/repetition.js.map +1 -0
  105. package/dist/brain/request-params.d.ts +29 -0
  106. package/dist/brain/request-params.d.ts.map +1 -0
  107. package/dist/brain/request-params.js +78 -0
  108. package/dist/brain/request-params.js.map +1 -0
  109. package/dist/brain/retry.d.ts +18 -0
  110. package/dist/brain/retry.d.ts.map +1 -0
  111. package/dist/brain/retry.js +42 -0
  112. package/dist/brain/retry.js.map +1 -0
  113. package/dist/brain/routing.d.ts +19 -0
  114. package/dist/brain/routing.d.ts.map +1 -0
  115. package/dist/brain/routing.js +44 -0
  116. package/dist/brain/routing.js.map +1 -0
  117. package/dist/brain/status-sink.d.ts +46 -0
  118. package/dist/brain/status-sink.d.ts.map +1 -0
  119. package/dist/brain/status-sink.js +36 -0
  120. package/dist/brain/status-sink.js.map +1 -0
  121. package/dist/brain/stream-engine.d.ts +85 -0
  122. package/dist/brain/stream-engine.d.ts.map +1 -0
  123. package/dist/brain/stream-engine.js +391 -0
  124. package/dist/brain/stream-engine.js.map +1 -0
  125. package/dist/brain/timeout.d.ts +44 -0
  126. package/dist/brain/timeout.d.ts.map +1 -0
  127. package/dist/brain/timeout.js +41 -0
  128. package/dist/brain/timeout.js.map +1 -0
  129. package/dist/brain/tool-call-repair.d.ts +15 -0
  130. package/dist/brain/tool-call-repair.d.ts.map +1 -0
  131. package/dist/brain/tool-call-repair.js +67 -0
  132. package/dist/brain/tool-call-repair.js.map +1 -0
  133. package/dist/brain/walltime.d.ts +14 -0
  134. package/dist/brain/walltime.d.ts.map +1 -0
  135. package/dist/brain/walltime.js +14 -0
  136. package/dist/brain/walltime.js.map +1 -0
  137. package/dist/core/arg-summary.d.ts +19 -0
  138. package/dist/core/arg-summary.d.ts.map +1 -0
  139. package/dist/core/arg-summary.js +96 -0
  140. package/dist/core/arg-summary.js.map +1 -0
  141. package/dist/core/ask-question.d.ts +113 -0
  142. package/dist/core/ask-question.d.ts.map +1 -0
  143. package/dist/core/ask-question.js +246 -0
  144. package/dist/core/ask-question.js.map +1 -0
  145. package/dist/core/auto-compaction.d.ts +341 -0
  146. package/dist/core/auto-compaction.d.ts.map +1 -0
  147. package/dist/core/auto-compaction.js +495 -0
  148. package/dist/core/auto-compaction.js.map +1 -0
  149. package/dist/core/auto-promote.d.ts +126 -0
  150. package/dist/core/auto-promote.d.ts.map +1 -0
  151. package/dist/core/auto-promote.js +171 -0
  152. package/dist/core/auto-promote.js.map +1 -0
  153. package/dist/core/background-shell.d.ts +128 -0
  154. package/dist/core/background-shell.d.ts.map +1 -0
  155. package/dist/core/background-shell.js +42 -0
  156. package/dist/core/background-shell.js.map +1 -0
  157. package/dist/core/cache-break-detector.d.ts +63 -0
  158. package/dist/core/cache-break-detector.d.ts.map +1 -0
  159. package/dist/core/cache-break-detector.js +0 -0
  160. package/dist/core/cache-break-detector.js.map +1 -0
  161. package/dist/core/canonical-json.d.ts +45 -0
  162. package/dist/core/canonical-json.d.ts.map +1 -0
  163. package/dist/core/canonical-json.js +132 -0
  164. package/dist/core/canonical-json.js.map +1 -0
  165. package/dist/core/checkpoint-store.d.ts +1101 -0
  166. package/dist/core/checkpoint-store.d.ts.map +1 -0
  167. package/dist/core/checkpoint-store.js +514 -0
  168. package/dist/core/checkpoint-store.js.map +1 -0
  169. package/dist/core/consolidate-scope.d.ts +94 -0
  170. package/dist/core/consolidate-scope.d.ts.map +1 -0
  171. package/dist/core/consolidate-scope.js +158 -0
  172. package/dist/core/consolidate-scope.js.map +1 -0
  173. package/dist/core/context-edit.d.ts +82 -0
  174. package/dist/core/context-edit.d.ts.map +1 -0
  175. package/dist/core/context-edit.js +149 -0
  176. package/dist/core/context-edit.js.map +1 -0
  177. package/dist/core/context-guard.d.ts +43 -0
  178. package/dist/core/context-guard.d.ts.map +1 -0
  179. package/dist/core/context-guard.js +171 -0
  180. package/dist/core/context-guard.js.map +1 -0
  181. package/dist/core/dynamic-recall.d.ts +100 -0
  182. package/dist/core/dynamic-recall.d.ts.map +1 -0
  183. package/dist/core/dynamic-recall.js +108 -0
  184. package/dist/core/dynamic-recall.js.map +1 -0
  185. package/dist/core/exec-gate.d.ts +74 -0
  186. package/dist/core/exec-gate.d.ts.map +1 -0
  187. package/dist/core/exec-gate.js +143 -0
  188. package/dist/core/exec-gate.js.map +1 -0
  189. package/dist/core/exec-output-tail.d.ts +37 -0
  190. package/dist/core/exec-output-tail.d.ts.map +1 -0
  191. package/dist/core/exec-output-tail.js +63 -0
  192. package/dist/core/exec-output-tail.js.map +1 -0
  193. package/dist/core/file-snapshot-store.d.ts +137 -0
  194. package/dist/core/file-snapshot-store.d.ts.map +1 -0
  195. package/dist/core/file-snapshot-store.js +319 -0
  196. package/dist/core/file-snapshot-store.js.map +1 -0
  197. package/dist/core/git-worktree-env.d.ts +41 -0
  198. package/dist/core/git-worktree-env.d.ts.map +1 -0
  199. package/dist/core/git-worktree-env.js +64 -0
  200. package/dist/core/git-worktree-env.js.map +1 -0
  201. package/dist/core/hooks.d.ts +372 -0
  202. package/dist/core/hooks.d.ts.map +1 -0
  203. package/dist/core/hooks.js +269 -0
  204. package/dist/core/hooks.js.map +1 -0
  205. package/dist/core/lsp-diagnostics.d.ts +74 -0
  206. package/dist/core/lsp-diagnostics.d.ts.map +1 -0
  207. package/dist/core/lsp-diagnostics.js +125 -0
  208. package/dist/core/lsp-diagnostics.js.map +1 -0
  209. package/dist/core/lsp-protocol.d.ts +28 -0
  210. package/dist/core/lsp-protocol.d.ts.map +1 -0
  211. package/dist/core/lsp-protocol.js +179 -0
  212. package/dist/core/lsp-protocol.js.map +1 -0
  213. package/dist/core/lsp-session.d.ts +56 -0
  214. package/dist/core/lsp-session.d.ts.map +1 -0
  215. package/dist/core/lsp-session.js +185 -0
  216. package/dist/core/lsp-session.js.map +1 -0
  217. package/dist/core/lsp.d.ts +132 -0
  218. package/dist/core/lsp.d.ts.map +1 -0
  219. package/dist/core/lsp.js +147 -0
  220. package/dist/core/lsp.js.map +1 -0
  221. package/dist/core/mcp.d.ts +294 -0
  222. package/dist/core/mcp.d.ts.map +1 -0
  223. package/dist/core/mcp.js +992 -0
  224. package/dist/core/mcp.js.map +1 -0
  225. package/dist/core/media-byte-cap.d.ts +34 -0
  226. package/dist/core/media-byte-cap.d.ts.map +1 -0
  227. package/dist/core/media-byte-cap.js +76 -0
  228. package/dist/core/media-byte-cap.js.map +1 -0
  229. package/dist/core/memory-engine/data-plane.d.ts +103 -0
  230. package/dist/core/memory-engine/data-plane.d.ts.map +1 -0
  231. package/dist/core/memory-engine/data-plane.js +272 -0
  232. package/dist/core/memory-engine/data-plane.js.map +1 -0
  233. package/dist/core/memory-engine/dual-root.d.ts +40 -0
  234. package/dist/core/memory-engine/dual-root.d.ts.map +1 -0
  235. package/dist/core/memory-engine/dual-root.js +95 -0
  236. package/dist/core/memory-engine/dual-root.js.map +1 -0
  237. package/dist/core/memory-engine/engine.d.ts +161 -0
  238. package/dist/core/memory-engine/engine.d.ts.map +1 -0
  239. package/dist/core/memory-engine/engine.js +1110 -0
  240. package/dist/core/memory-engine/engine.js.map +1 -0
  241. package/dist/core/memory-engine/file-backend.d.ts +162 -0
  242. package/dist/core/memory-engine/file-backend.d.ts.map +1 -0
  243. package/dist/core/memory-engine/file-backend.js +948 -0
  244. package/dist/core/memory-engine/file-backend.js.map +1 -0
  245. package/dist/core/memory-engine/frontmatter.d.ts +24 -0
  246. package/dist/core/memory-engine/frontmatter.d.ts.map +1 -0
  247. package/dist/core/memory-engine/frontmatter.js +135 -0
  248. package/dist/core/memory-engine/frontmatter.js.map +1 -0
  249. package/dist/core/memory-engine/index.d.ts +13 -0
  250. package/dist/core/memory-engine/index.d.ts.map +1 -0
  251. package/dist/core/memory-engine/index.js +28 -0
  252. package/dist/core/memory-engine/index.js.map +1 -0
  253. package/dist/core/memory-engine/layout.d.ts +123 -0
  254. package/dist/core/memory-engine/layout.d.ts.map +1 -0
  255. package/dist/core/memory-engine/layout.js +643 -0
  256. package/dist/core/memory-engine/layout.js.map +1 -0
  257. package/dist/core/memory-engine/memory-backend-contract.d.ts +22 -0
  258. package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -0
  259. package/dist/core/memory-engine/memory-backend-contract.js +271 -0
  260. package/dist/core/memory-engine/memory-backend-contract.js.map +1 -0
  261. package/dist/core/memory-engine/migrate.d.ts +17 -0
  262. package/dist/core/memory-engine/migrate.d.ts.map +1 -0
  263. package/dist/core/memory-engine/migrate.js +35 -0
  264. package/dist/core/memory-engine/migrate.js.map +1 -0
  265. package/dist/core/memory-engine/scan.d.ts +20 -0
  266. package/dist/core/memory-engine/scan.d.ts.map +1 -0
  267. package/dist/core/memory-engine/scan.js +84 -0
  268. package/dist/core/memory-engine/scan.js.map +1 -0
  269. package/dist/core/memory-engine/scope-contract.d.ts +104 -0
  270. package/dist/core/memory-engine/scope-contract.d.ts.map +1 -0
  271. package/dist/core/memory-engine/scope-contract.js +288 -0
  272. package/dist/core/memory-engine/scope-contract.js.map +1 -0
  273. package/dist/core/memory-engine/sync-client.d.ts +100 -0
  274. package/dist/core/memory-engine/sync-client.d.ts.map +1 -0
  275. package/dist/core/memory-engine/sync-client.js +328 -0
  276. package/dist/core/memory-engine/sync-client.js.map +1 -0
  277. package/dist/core/memory-engine/sync.d.ts +97 -0
  278. package/dist/core/memory-engine/sync.d.ts.map +1 -0
  279. package/dist/core/memory-engine/sync.js +91 -0
  280. package/dist/core/memory-engine/sync.js.map +1 -0
  281. package/dist/core/memory-engine/types.d.ts +279 -0
  282. package/dist/core/memory-engine/types.d.ts.map +1 -0
  283. package/dist/core/memory-engine/types.js +9 -0
  284. package/dist/core/memory-engine/types.js.map +1 -0
  285. package/dist/core/memory-recall.d.ts +261 -0
  286. package/dist/core/memory-recall.d.ts.map +1 -0
  287. package/dist/core/memory-recall.js +600 -0
  288. package/dist/core/memory-recall.js.map +1 -0
  289. package/dist/core/memory-vector.d.ts +24 -0
  290. package/dist/core/memory-vector.d.ts.map +1 -0
  291. package/dist/core/memory-vector.js +51 -0
  292. package/dist/core/memory-vector.js.map +1 -0
  293. package/dist/core/memory.d.ts +502 -0
  294. package/dist/core/memory.d.ts.map +1 -0
  295. package/dist/core/memory.js +881 -0
  296. package/dist/core/memory.js.map +1 -0
  297. package/dist/core/message-utils.d.ts +7 -0
  298. package/dist/core/message-utils.d.ts.map +1 -0
  299. package/dist/core/message-utils.js +10 -0
  300. package/dist/core/message-utils.js.map +1 -0
  301. package/dist/core/oracle-isolation.d.ts +85 -0
  302. package/dist/core/oracle-isolation.d.ts.map +1 -0
  303. package/dist/core/oracle-isolation.js +121 -0
  304. package/dist/core/oracle-isolation.js.map +1 -0
  305. package/dist/core/permission-rules.d.ts +102 -0
  306. package/dist/core/permission-rules.d.ts.map +1 -0
  307. package/dist/core/permission-rules.js +357 -0
  308. package/dist/core/permission-rules.js.map +1 -0
  309. package/dist/core/present-plan-tool.d.ts +28 -0
  310. package/dist/core/present-plan-tool.d.ts.map +1 -0
  311. package/dist/core/present-plan-tool.js +119 -0
  312. package/dist/core/present-plan-tool.js.map +1 -0
  313. package/dist/core/pricing.d.ts +48 -0
  314. package/dist/core/pricing.d.ts.map +1 -0
  315. package/dist/core/pricing.js +46 -0
  316. package/dist/core/pricing.js.map +1 -0
  317. package/dist/core/property-harness.d.ts +126 -0
  318. package/dist/core/property-harness.d.ts.map +1 -0
  319. package/dist/core/property-harness.js +192 -0
  320. package/dist/core/property-harness.js.map +1 -0
  321. package/dist/core/push-queue.d.ts +10 -0
  322. package/dist/core/push-queue.d.ts.map +1 -0
  323. package/dist/core/push-queue.js +42 -0
  324. package/dist/core/push-queue.js.map +1 -0
  325. package/dist/core/remote-env.d.ts +432 -0
  326. package/dist/core/remote-env.d.ts.map +1 -0
  327. package/dist/core/remote-env.js +77 -0
  328. package/dist/core/remote-env.js.map +1 -0
  329. package/dist/core/roles.d.ts +74 -0
  330. package/dist/core/roles.d.ts.map +1 -0
  331. package/dist/core/roles.js +272 -0
  332. package/dist/core/roles.js.map +1 -0
  333. package/dist/core/runner/active-skill-scope.d.ts +64 -0
  334. package/dist/core/runner/active-skill-scope.d.ts.map +1 -0
  335. package/dist/core/runner/active-skill-scope.js +197 -0
  336. package/dist/core/runner/active-skill-scope.js.map +1 -0
  337. package/dist/core/runner/assemble-result.d.ts +191 -0
  338. package/dist/core/runner/assemble-result.d.ts.map +1 -0
  339. package/dist/core/runner/assemble-result.js +250 -0
  340. package/dist/core/runner/assemble-result.js.map +1 -0
  341. package/dist/core/runner/call-cap.d.ts +130 -0
  342. package/dist/core/runner/call-cap.d.ts.map +1 -0
  343. package/dist/core/runner/call-cap.js +151 -0
  344. package/dist/core/runner/call-cap.js.map +1 -0
  345. package/dist/core/runner/grounding-signal.d.ts +12 -0
  346. package/dist/core/runner/grounding-signal.d.ts.map +1 -0
  347. package/dist/core/runner/grounding-signal.js +94 -0
  348. package/dist/core/runner/grounding-signal.js.map +1 -0
  349. package/dist/core/runner/image.d.ts +23 -0
  350. package/dist/core/runner/image.d.ts.map +1 -0
  351. package/dist/core/runner/image.js +151 -0
  352. package/dist/core/runner/image.js.map +1 -0
  353. package/dist/core/runner/memory-consolidation.d.ts +112 -0
  354. package/dist/core/runner/memory-consolidation.d.ts.map +1 -0
  355. package/dist/core/runner/memory-consolidation.js +372 -0
  356. package/dist/core/runner/memory-consolidation.js.map +1 -0
  357. package/dist/core/runner/prepare-task.d.ts +583 -0
  358. package/dist/core/runner/prepare-task.d.ts.map +1 -0
  359. package/dist/core/runner/prepare-task.js +3612 -0
  360. package/dist/core/runner/prepare-task.js.map +1 -0
  361. package/dist/core/runner/prompt-suggestions.d.ts +33 -0
  362. package/dist/core/runner/prompt-suggestions.d.ts.map +1 -0
  363. package/dist/core/runner/prompt-suggestions.js +116 -0
  364. package/dist/core/runner/prompt-suggestions.js.map +1 -0
  365. package/dist/core/runner/runtask.d.ts +274 -0
  366. package/dist/core/runner/runtask.d.ts.map +1 -0
  367. package/dist/core/runner/runtask.js +4606 -0
  368. package/dist/core/runner/runtask.js.map +1 -0
  369. package/dist/core/runner/session-rule-policy.d.ts +28 -0
  370. package/dist/core/runner/session-rule-policy.d.ts.map +1 -0
  371. package/dist/core/runner/session-rule-policy.js +110 -0
  372. package/dist/core/runner/session-rule-policy.js.map +1 -0
  373. package/dist/core/runner/strict-output-schema.d.ts +36 -0
  374. package/dist/core/runner/strict-output-schema.d.ts.map +1 -0
  375. package/dist/core/runner/strict-output-schema.js +365 -0
  376. package/dist/core/runner/strict-output-schema.js.map +1 -0
  377. package/dist/core/runner/synthetic-tools.d.ts +72 -0
  378. package/dist/core/runner/synthetic-tools.d.ts.map +1 -0
  379. package/dist/core/runner/synthetic-tools.js +203 -0
  380. package/dist/core/runner/synthetic-tools.js.map +1 -0
  381. package/dist/core/runner/tool-disclosure.d.ts +117 -0
  382. package/dist/core/runner/tool-disclosure.d.ts.map +1 -0
  383. package/dist/core/runner/tool-disclosure.js +0 -0
  384. package/dist/core/runner/tool-disclosure.js.map +1 -0
  385. package/dist/core/runner/turn-attachments.d.ts +381 -0
  386. package/dist/core/runner/turn-attachments.d.ts.map +1 -0
  387. package/dist/core/runner/turn-attachments.js +596 -0
  388. package/dist/core/runner/turn-attachments.js.map +1 -0
  389. package/dist/core/runner/usage-accounting.d.ts +35 -0
  390. package/dist/core/runner/usage-accounting.d.ts.map +1 -0
  391. package/dist/core/runner/usage-accounting.js +45 -0
  392. package/dist/core/runner/usage-accounting.js.map +1 -0
  393. package/dist/core/runtime.d.ts +9 -0
  394. package/dist/core/runtime.d.ts.map +1 -0
  395. package/dist/core/runtime.js +17 -0
  396. package/dist/core/runtime.js.map +1 -0
  397. package/dist/core/safety-axis-vocab.d.ts +33 -0
  398. package/dist/core/safety-axis-vocab.d.ts.map +1 -0
  399. package/dist/core/safety-axis-vocab.js +35 -0
  400. package/dist/core/safety-axis-vocab.js.map +1 -0
  401. package/dist/core/safety-merge-corpus.d.ts +48 -0
  402. package/dist/core/safety-merge-corpus.d.ts.map +1 -0
  403. package/dist/core/safety-merge-corpus.js +203 -0
  404. package/dist/core/safety-merge-corpus.js.map +1 -0
  405. package/dist/core/scheduler.d.ts +126 -0
  406. package/dist/core/scheduler.d.ts.map +1 -0
  407. package/dist/core/scheduler.js +54 -0
  408. package/dist/core/scheduler.js.map +1 -0
  409. package/dist/core/secret-env.d.ts +23 -0
  410. package/dist/core/secret-env.d.ts.map +1 -0
  411. package/dist/core/secret-env.js +35 -0
  412. package/dist/core/secret-env.js.map +1 -0
  413. package/dist/core/select-model.d.ts +26 -0
  414. package/dist/core/select-model.d.ts.map +1 -0
  415. package/dist/core/select-model.js +58 -0
  416. package/dist/core/select-model.js.map +1 -0
  417. package/dist/core/sensitive-path-policy.d.ts +24 -0
  418. package/dist/core/sensitive-path-policy.d.ts.map +1 -0
  419. package/dist/core/sensitive-path-policy.js +96 -0
  420. package/dist/core/sensitive-path-policy.js.map +1 -0
  421. package/dist/core/session-policy-store.d.ts +102 -0
  422. package/dist/core/session-policy-store.d.ts.map +1 -0
  423. package/dist/core/session-policy-store.js +177 -0
  424. package/dist/core/session-policy-store.js.map +1 -0
  425. package/dist/core/session-reconcile.d.ts +63 -0
  426. package/dist/core/session-reconcile.d.ts.map +1 -0
  427. package/dist/core/session-reconcile.js +71 -0
  428. package/dist/core/session-reconcile.js.map +1 -0
  429. package/dist/core/session-store.d.ts +99 -0
  430. package/dist/core/session-store.d.ts.map +1 -0
  431. package/dist/core/session-store.js +298 -0
  432. package/dist/core/session-store.js.map +1 -0
  433. package/dist/core/session.d.ts +144 -0
  434. package/dist/core/session.d.ts.map +1 -0
  435. package/dist/core/session.js +56 -0
  436. package/dist/core/session.js.map +1 -0
  437. package/dist/core/spec-contract.d.ts +147 -0
  438. package/dist/core/spec-contract.d.ts.map +1 -0
  439. package/dist/core/spec-contract.js +340 -0
  440. package/dist/core/spec-contract.js.map +1 -0
  441. package/dist/core/strategy-store.d.ts +50 -0
  442. package/dist/core/strategy-store.d.ts.map +1 -0
  443. package/dist/core/strategy-store.js +100 -0
  444. package/dist/core/strategy-store.js.map +1 -0
  445. package/dist/core/stub-env.d.ts +35 -0
  446. package/dist/core/stub-env.d.ts.map +1 -0
  447. package/dist/core/stub-env.js +69 -0
  448. package/dist/core/stub-env.js.map +1 -0
  449. package/dist/core/task-notification.d.ts +115 -0
  450. package/dist/core/task-notification.d.ts.map +1 -0
  451. package/dist/core/task-notification.js +247 -0
  452. package/dist/core/task-notification.js.map +1 -0
  453. package/dist/core/task-outcome.d.ts +80 -0
  454. package/dist/core/task-outcome.d.ts.map +1 -0
  455. package/dist/core/task-outcome.js +40 -0
  456. package/dist/core/task-outcome.js.map +1 -0
  457. package/dist/core/task-registry.d.ts +349 -0
  458. package/dist/core/task-registry.d.ts.map +1 -0
  459. package/dist/core/task-registry.js +1751 -0
  460. package/dist/core/task-registry.js.map +1 -0
  461. package/dist/core/tighten-task-spec.d.ts +27 -0
  462. package/dist/core/tighten-task-spec.d.ts.map +1 -0
  463. package/dist/core/tighten-task-spec.js +95 -0
  464. package/dist/core/tighten-task-spec.js.map +1 -0
  465. package/dist/core/tool-detach.d.ts +31 -0
  466. package/dist/core/tool-detach.d.ts.map +1 -0
  467. package/dist/core/tool-detach.js +62 -0
  468. package/dist/core/tool-detach.js.map +1 -0
  469. package/dist/core/tool-errors.d.ts +72 -0
  470. package/dist/core/tool-errors.d.ts.map +1 -0
  471. package/dist/core/tool-errors.js +194 -0
  472. package/dist/core/tool-errors.js.map +1 -0
  473. package/dist/core/tool-name-aliases.d.ts +5 -0
  474. package/dist/core/tool-name-aliases.d.ts.map +1 -0
  475. package/dist/core/tool-name-aliases.js +130 -0
  476. package/dist/core/tool-name-aliases.js.map +1 -0
  477. package/dist/core/tool-policy.d.ts +295 -0
  478. package/dist/core/tool-policy.d.ts.map +1 -0
  479. package/dist/core/tool-policy.js +567 -0
  480. package/dist/core/tool-policy.js.map +1 -0
  481. package/dist/core/tool-result-budget.d.ts +44 -0
  482. package/dist/core/tool-result-budget.d.ts.map +1 -0
  483. package/dist/core/tool-result-budget.js +140 -0
  484. package/dist/core/tool-result-budget.js.map +1 -0
  485. package/dist/core/tool-result-store.d.ts +136 -0
  486. package/dist/core/tool-result-store.d.ts.map +1 -0
  487. package/dist/core/tool-result-store.js +219 -0
  488. package/dist/core/tool-result-store.js.map +1 -0
  489. package/dist/core/tools.d.ts +14 -0
  490. package/dist/core/tools.d.ts.map +1 -0
  491. package/dist/core/tools.js +98 -0
  492. package/dist/core/tools.js.map +1 -0
  493. package/dist/core/trace.d.ts +340 -0
  494. package/dist/core/trace.d.ts.map +1 -0
  495. package/dist/core/trace.js +12 -0
  496. package/dist/core/trace.js.map +1 -0
  497. package/dist/core/types.d.ts +2828 -0
  498. package/dist/core/types.d.ts.map +1 -0
  499. package/dist/core/types.js +2 -0
  500. package/dist/core/types.js.map +1 -0
  501. package/dist/core/untrusted-egress.d.ts +32 -0
  502. package/dist/core/untrusted-egress.d.ts.map +1 -0
  503. package/dist/core/untrusted-egress.js +49 -0
  504. package/dist/core/untrusted-egress.js.map +1 -0
  505. package/dist/core/untrusted-text.d.ts +64 -0
  506. package/dist/core/untrusted-text.d.ts.map +1 -0
  507. package/dist/core/untrusted-text.js +119 -0
  508. package/dist/core/untrusted-text.js.map +1 -0
  509. package/dist/core/warm-resume.d.ts +23 -0
  510. package/dist/core/warm-resume.d.ts.map +1 -0
  511. package/dist/core/warm-resume.js +28 -0
  512. package/dist/core/warm-resume.js.map +1 -0
  513. package/dist/core/with-retry.d.ts +43 -0
  514. package/dist/core/with-retry.d.ts.map +1 -0
  515. package/dist/core/with-retry.js +59 -0
  516. package/dist/core/with-retry.js.map +1 -0
  517. package/dist/core/workflow-journal-store.d.ts +44 -0
  518. package/dist/core/workflow-journal-store.d.ts.map +1 -0
  519. package/dist/core/workflow-journal-store.js +47 -0
  520. package/dist/core/workflow-journal-store.js.map +1 -0
  521. package/dist/core/workflow-run-store-contract.d.ts +31 -0
  522. package/dist/core/workflow-run-store-contract.d.ts.map +1 -0
  523. package/dist/core/workflow-run-store-contract.js +191 -0
  524. package/dist/core/workflow-run-store-contract.js.map +1 -0
  525. package/dist/core/workflow-run-store.d.ts +149 -0
  526. package/dist/core/workflow-run-store.d.ts.map +1 -0
  527. package/dist/core/workflow-run-store.js +110 -0
  528. package/dist/core/workflow-run-store.js.map +1 -0
  529. package/dist/engine/compaction/compaction.d.ts +139 -0
  530. package/dist/engine/compaction/compaction.d.ts.map +1 -0
  531. package/dist/engine/compaction/compaction.js +1030 -0
  532. package/dist/engine/compaction/compaction.js.map +1 -0
  533. package/dist/engine/compaction/utils.d.ts +45 -0
  534. package/dist/engine/compaction/utils.d.ts.map +1 -0
  535. package/dist/engine/compaction/utils.js +203 -0
  536. package/dist/engine/compaction/utils.js.map +1 -0
  537. package/dist/engine/execution-env/kill-tree.d.ts +20 -0
  538. package/dist/engine/execution-env/kill-tree.d.ts.map +1 -0
  539. package/dist/engine/execution-env/kill-tree.js +183 -0
  540. package/dist/engine/execution-env/kill-tree.js.map +1 -0
  541. package/dist/engine/execution-env/node-execution-env.d.ts +133 -0
  542. package/dist/engine/execution-env/node-execution-env.d.ts.map +1 -0
  543. package/dist/engine/execution-env/node-execution-env.js +1031 -0
  544. package/dist/engine/execution-env/node-execution-env.js.map +1 -0
  545. package/dist/engine/harness/agent-harness.d.ts +174 -0
  546. package/dist/engine/harness/agent-harness.d.ts.map +1 -0
  547. package/dist/engine/harness/agent-harness.js +1053 -0
  548. package/dist/engine/harness/agent-harness.js.map +1 -0
  549. package/dist/engine/harness/messages.d.ts +17 -0
  550. package/dist/engine/harness/messages.d.ts.map +1 -0
  551. package/dist/engine/harness/messages.js +122 -0
  552. package/dist/engine/harness/messages.js.map +1 -0
  553. package/dist/engine/harness/types.d.ts +713 -0
  554. package/dist/engine/harness/types.d.ts.map +1 -0
  555. package/dist/engine/harness/types.js +100 -0
  556. package/dist/engine/harness/types.js.map +1 -0
  557. package/dist/engine/llm/diagnostics.d.ts +23 -0
  558. package/dist/engine/llm/diagnostics.d.ts.map +1 -0
  559. package/dist/engine/llm/diagnostics.js +32 -0
  560. package/dist/engine/llm/diagnostics.js.map +1 -0
  561. package/dist/engine/llm/event-stream.d.ts +25 -0
  562. package/dist/engine/llm/event-stream.d.ts.map +1 -0
  563. package/dist/engine/llm/event-stream.js +103 -0
  564. package/dist/engine/llm/event-stream.js.map +1 -0
  565. package/dist/engine/llm/index.d.ts +12 -0
  566. package/dist/engine/llm/index.d.ts.map +1 -0
  567. package/dist/engine/llm/index.js +12 -0
  568. package/dist/engine/llm/index.js.map +1 -0
  569. package/dist/engine/llm/types.d.ts +753 -0
  570. package/dist/engine/llm/types.d.ts.map +1 -0
  571. package/dist/engine/llm/types.js +2 -0
  572. package/dist/engine/llm/types.js.map +1 -0
  573. package/dist/engine/llm/validation.d.ts +8 -0
  574. package/dist/engine/llm/validation.d.ts.map +1 -0
  575. package/dist/engine/llm/validation.js +318 -0
  576. package/dist/engine/llm/validation.js.map +1 -0
  577. package/dist/engine/loop/agent-loop.d.ts +74 -0
  578. package/dist/engine/loop/agent-loop.d.ts.map +1 -0
  579. package/dist/engine/loop/agent-loop.js +1490 -0
  580. package/dist/engine/loop/agent-loop.js.map +1 -0
  581. package/dist/engine/loop/runtime-deps.d.ts +17 -0
  582. package/dist/engine/loop/runtime-deps.d.ts.map +1 -0
  583. package/dist/engine/loop/runtime-deps.js +21 -0
  584. package/dist/engine/loop/runtime-deps.js.map +1 -0
  585. package/dist/engine/loop/types.d.ts +609 -0
  586. package/dist/engine/loop/types.d.ts.map +1 -0
  587. package/dist/engine/loop/types.js +2 -0
  588. package/dist/engine/loop/types.js.map +1 -0
  589. package/dist/engine/lsp/frame-decoder.d.ts +16 -0
  590. package/dist/engine/lsp/frame-decoder.d.ts.map +1 -0
  591. package/dist/engine/lsp/frame-decoder.js +53 -0
  592. package/dist/engine/lsp/frame-decoder.js.map +1 -0
  593. package/dist/engine/lsp/node-lsp-manager.d.ts +105 -0
  594. package/dist/engine/lsp/node-lsp-manager.d.ts.map +1 -0
  595. package/dist/engine/lsp/node-lsp-manager.js +343 -0
  596. package/dist/engine/lsp/node-lsp-manager.js.map +1 -0
  597. package/dist/engine/lsp/stdio-lsp-transport.d.ts +37 -0
  598. package/dist/engine/lsp/stdio-lsp-transport.d.ts.map +1 -0
  599. package/dist/engine/lsp/stdio-lsp-transport.js +185 -0
  600. package/dist/engine/lsp/stdio-lsp-transport.js.map +1 -0
  601. package/dist/engine/session/import-validate.d.ts +44 -0
  602. package/dist/engine/session/import-validate.d.ts.map +1 -0
  603. package/dist/engine/session/import-validate.js +92 -0
  604. package/dist/engine/session/import-validate.js.map +1 -0
  605. package/dist/engine/session/memory-repo.d.ts +25 -0
  606. package/dist/engine/session/memory-repo.d.ts.map +1 -0
  607. package/dist/engine/session/memory-repo.js +59 -0
  608. package/dist/engine/session/memory-repo.js.map +1 -0
  609. package/dist/engine/session/memory-storage.d.ts +14 -0
  610. package/dist/engine/session/memory-storage.d.ts.map +1 -0
  611. package/dist/engine/session/memory-storage.js +17 -0
  612. package/dist/engine/session/memory-storage.js.map +1 -0
  613. package/dist/engine/session/repo-utils.d.ts +11 -0
  614. package/dist/engine/session/repo-utils.d.ts.map +1 -0
  615. package/dist/engine/session/repo-utils.js +40 -0
  616. package/dist/engine/session/repo-utils.js.map +1 -0
  617. package/dist/engine/session/session.d.ts +34 -0
  618. package/dist/engine/session/session.d.ts.map +1 -0
  619. package/dist/engine/session/session.js +227 -0
  620. package/dist/engine/session/session.js.map +1 -0
  621. package/dist/engine/session/storage-base.d.ts +38 -0
  622. package/dist/engine/session/storage-base.d.ts.map +1 -0
  623. package/dist/engine/session/storage-base.js +157 -0
  624. package/dist/engine/session/storage-base.js.map +1 -0
  625. package/dist/engine/session/timestamps.d.ts +3 -0
  626. package/dist/engine/session/timestamps.d.ts.map +1 -0
  627. package/dist/engine/session/timestamps.js +15 -0
  628. package/dist/engine/session/timestamps.js.map +1 -0
  629. package/dist/engine/session/uuid.d.ts +2 -0
  630. package/dist/engine/session/uuid.d.ts.map +1 -0
  631. package/dist/engine/session/uuid.js +50 -0
  632. package/dist/engine/session/uuid.js.map +1 -0
  633. package/dist/index.d.ts +160 -0
  634. package/dist/index.d.ts.map +1 -0
  635. package/dist/index.js +374 -0
  636. package/dist/index.js.map +1 -0
  637. package/dist/internal/harness.d.ts +26 -0
  638. package/dist/internal/harness.d.ts.map +1 -0
  639. package/dist/internal/harness.js +24 -0
  640. package/dist/internal/harness.js.map +1 -0
  641. package/dist/internal/llm.d.ts +9 -0
  642. package/dist/internal/llm.d.ts.map +1 -0
  643. package/dist/internal/llm.js +8 -0
  644. package/dist/internal/llm.js.map +1 -0
  645. package/dist/orchestration/builtin-workflows.d.ts +44 -0
  646. package/dist/orchestration/builtin-workflows.d.ts.map +1 -0
  647. package/dist/orchestration/builtin-workflows.js +165 -0
  648. package/dist/orchestration/builtin-workflows.js.map +1 -0
  649. package/dist/orchestration/dev-vm-script-runner.d.ts +24 -0
  650. package/dist/orchestration/dev-vm-script-runner.d.ts.map +1 -0
  651. package/dist/orchestration/dev-vm-script-runner.js +106 -0
  652. package/dist/orchestration/dev-vm-script-runner.js.map +1 -0
  653. package/dist/orchestration/goal.d.ts +97 -0
  654. package/dist/orchestration/goal.d.ts.map +1 -0
  655. package/dist/orchestration/goal.js +248 -0
  656. package/dist/orchestration/goal.js.map +1 -0
  657. package/dist/orchestration/run-spec.d.ts +63 -0
  658. package/dist/orchestration/run-spec.d.ts.map +1 -0
  659. package/dist/orchestration/run-spec.js +274 -0
  660. package/dist/orchestration/run-spec.js.map +1 -0
  661. package/dist/orchestration/run-workflow-tool.d.ts +187 -0
  662. package/dist/orchestration/run-workflow-tool.d.ts.map +1 -0
  663. package/dist/orchestration/run-workflow-tool.js +612 -0
  664. package/dist/orchestration/run-workflow-tool.js.map +1 -0
  665. package/dist/orchestration/workflow-governance.d.ts +70 -0
  666. package/dist/orchestration/workflow-governance.d.ts.map +1 -0
  667. package/dist/orchestration/workflow-governance.js +176 -0
  668. package/dist/orchestration/workflow-governance.js.map +1 -0
  669. package/dist/orchestration/workflow-meta.d.ts +41 -0
  670. package/dist/orchestration/workflow-meta.d.ts.map +1 -0
  671. package/dist/orchestration/workflow-meta.js +426 -0
  672. package/dist/orchestration/workflow-meta.js.map +1 -0
  673. package/dist/orchestration/workflow-observe.d.ts +77 -0
  674. package/dist/orchestration/workflow-observe.d.ts.map +1 -0
  675. package/dist/orchestration/workflow-observe.js +177 -0
  676. package/dist/orchestration/workflow-observe.js.map +1 -0
  677. package/dist/orchestration/workflow-primitives.d.ts +31 -0
  678. package/dist/orchestration/workflow-primitives.d.ts.map +1 -0
  679. package/dist/orchestration/workflow-primitives.js +104 -0
  680. package/dist/orchestration/workflow-primitives.js.map +1 -0
  681. package/dist/orchestration/workflow-sandbox-conformance.d.ts +34 -0
  682. package/dist/orchestration/workflow-sandbox-conformance.d.ts.map +1 -0
  683. package/dist/orchestration/workflow-sandbox-conformance.js +301 -0
  684. package/dist/orchestration/workflow-sandbox-conformance.js.map +1 -0
  685. package/dist/orchestration/workflow-script-runner.d.ts +127 -0
  686. package/dist/orchestration/workflow-script-runner.d.ts.map +1 -0
  687. package/dist/orchestration/workflow-script-runner.js +48 -0
  688. package/dist/orchestration/workflow-script-runner.js.map +1 -0
  689. package/dist/orchestration/workflow-script-store.d.ts +99 -0
  690. package/dist/orchestration/workflow-script-store.d.ts.map +1 -0
  691. package/dist/orchestration/workflow-script-store.js +133 -0
  692. package/dist/orchestration/workflow-script-store.js.map +1 -0
  693. package/dist/orchestration/workflow-size-guideline.d.ts +50 -0
  694. package/dist/orchestration/workflow-size-guideline.d.ts.map +1 -0
  695. package/dist/orchestration/workflow-size-guideline.js +78 -0
  696. package/dist/orchestration/workflow-size-guideline.js.map +1 -0
  697. package/dist/orchestration/workflow.d.ts +624 -0
  698. package/dist/orchestration/workflow.d.ts.map +1 -0
  699. package/dist/orchestration/workflow.js +1596 -0
  700. package/dist/orchestration/workflow.js.map +1 -0
  701. package/dist/prompts/default.d.ts +474 -0
  702. package/dist/prompts/default.d.ts.map +1 -0
  703. package/dist/prompts/default.js +676 -0
  704. package/dist/prompts/default.js.map +1 -0
  705. package/dist/prompts/supervisor.d.ts +60 -0
  706. package/dist/prompts/supervisor.d.ts.map +1 -0
  707. package/dist/prompts/supervisor.js +162 -0
  708. package/dist/prompts/supervisor.js.map +1 -0
  709. package/dist/scenarios/env.d.ts +41 -0
  710. package/dist/scenarios/env.d.ts.map +1 -0
  711. package/dist/scenarios/env.js +65 -0
  712. package/dist/scenarios/env.js.map +1 -0
  713. package/dist/scenarios/full-body.d.ts +47 -0
  714. package/dist/scenarios/full-body.d.ts.map +1 -0
  715. package/dist/scenarios/full-body.js +36 -0
  716. package/dist/scenarios/full-body.js.map +1 -0
  717. package/dist/scenarios/scenario-registry.d.ts +107 -0
  718. package/dist/scenarios/scenario-registry.d.ts.map +1 -0
  719. package/dist/scenarios/scenario-registry.js +192 -0
  720. package/dist/scenarios/scenario-registry.js.map +1 -0
  721. package/dist/scenarios/teacher-quickstart.d.ts +41 -0
  722. package/dist/scenarios/teacher-quickstart.d.ts.map +1 -0
  723. package/dist/scenarios/teacher-quickstart.js +32 -0
  724. package/dist/scenarios/teacher-quickstart.js.map +1 -0
  725. package/dist/server/http.d.ts +36 -0
  726. package/dist/server/http.d.ts.map +1 -0
  727. package/dist/server/http.js +144 -0
  728. package/dist/server/http.js.map +1 -0
  729. package/dist/stores/file/checkpoint-store.d.ts +62 -0
  730. package/dist/stores/file/checkpoint-store.d.ts.map +1 -0
  731. package/dist/stores/file/checkpoint-store.js +250 -0
  732. package/dist/stores/file/checkpoint-store.js.map +1 -0
  733. package/dist/stores/file/file-snapshot-store.d.ts +43 -0
  734. package/dist/stores/file/file-snapshot-store.d.ts.map +1 -0
  735. package/dist/stores/file/file-snapshot-store.js +374 -0
  736. package/dist/stores/file/file-snapshot-store.js.map +1 -0
  737. package/dist/stores/file/fs-atomic.d.ts +95 -0
  738. package/dist/stores/file/fs-atomic.d.ts.map +1 -0
  739. package/dist/stores/file/fs-atomic.js +415 -0
  740. package/dist/stores/file/fs-atomic.js.map +1 -0
  741. package/dist/stores/file/index.d.ts +98 -0
  742. package/dist/stores/file/index.d.ts.map +1 -0
  743. package/dist/stores/file/index.js +109 -0
  744. package/dist/stores/file/index.js.map +1 -0
  745. package/dist/stores/file/memory-store.d.ts +95 -0
  746. package/dist/stores/file/memory-store.d.ts.map +1 -0
  747. package/dist/stores/file/memory-store.js +393 -0
  748. package/dist/stores/file/memory-store.js.map +1 -0
  749. package/dist/stores/file/session-policy-store.d.ts +24 -0
  750. package/dist/stores/file/session-policy-store.d.ts.map +1 -0
  751. package/dist/stores/file/session-policy-store.js +123 -0
  752. package/dist/stores/file/session-policy-store.js.map +1 -0
  753. package/dist/stores/file/session-store.d.ts +34 -0
  754. package/dist/stores/file/session-store.d.ts.map +1 -0
  755. package/dist/stores/file/session-store.js +175 -0
  756. package/dist/stores/file/session-store.js.map +1 -0
  757. package/dist/stores/file/tool-result-store.d.ts +23 -0
  758. package/dist/stores/file/tool-result-store.d.ts.map +1 -0
  759. package/dist/stores/file/tool-result-store.js +61 -0
  760. package/dist/stores/file/tool-result-store.js.map +1 -0
  761. package/dist/stores/file/workflow-journal-store.d.ts +36 -0
  762. package/dist/stores/file/workflow-journal-store.d.ts.map +1 -0
  763. package/dist/stores/file/workflow-journal-store.js +157 -0
  764. package/dist/stores/file/workflow-journal-store.js.map +1 -0
  765. package/dist/stores/file/workflow-run-store.d.ts +58 -0
  766. package/dist/stores/file/workflow-run-store.d.ts.map +1 -0
  767. package/dist/stores/file/workflow-run-store.js +178 -0
  768. package/dist/stores/file/workflow-run-store.js.map +1 -0
  769. package/dist/stores/pg.d.ts +210 -0
  770. package/dist/stores/pg.d.ts.map +1 -0
  771. package/dist/stores/pg.js +652 -0
  772. package/dist/stores/pg.js.map +1 -0
  773. package/dist/tools/fs/encoding.d.ts +51 -0
  774. package/dist/tools/fs/encoding.d.ts.map +1 -0
  775. package/dist/tools/fs/encoding.js +74 -0
  776. package/dist/tools/fs/encoding.js.map +1 -0
  777. package/dist/tools/fs/gh-rate-limit.d.ts +19 -0
  778. package/dist/tools/fs/gh-rate-limit.d.ts.map +1 -0
  779. package/dist/tools/fs/gh-rate-limit.js +35 -0
  780. package/dist/tools/fs/gh-rate-limit.js.map +1 -0
  781. package/dist/tools/fs/index.d.ts +246 -0
  782. package/dist/tools/fs/index.d.ts.map +1 -0
  783. package/dist/tools/fs/index.js +2130 -0
  784. package/dist/tools/fs/index.js.map +1 -0
  785. package/dist/tools/fs/pdf.d.ts +106 -0
  786. package/dist/tools/fs/pdf.d.ts.map +1 -0
  787. package/dist/tools/fs/pdf.js +178 -0
  788. package/dist/tools/fs/pdf.js.map +1 -0
  789. package/dist/tools/fs/repo-map.d.ts +15 -0
  790. package/dist/tools/fs/repo-map.d.ts.map +1 -0
  791. package/dist/tools/fs/repo-map.js +251 -0
  792. package/dist/tools/fs/repo-map.js.map +1 -0
  793. package/dist/tools/fs/safety.d.ts +168 -0
  794. package/dist/tools/fs/safety.d.ts.map +1 -0
  795. package/dist/tools/fs/safety.js +479 -0
  796. package/dist/tools/fs/safety.js.map +1 -0
  797. package/dist/tools/fs/search.d.ts +118 -0
  798. package/dist/tools/fs/search.d.ts.map +1 -0
  799. package/dist/tools/fs/search.js +650 -0
  800. package/dist/tools/fs/search.js.map +1 -0
  801. package/dist/tools/gitea-issue.d.ts +39 -0
  802. package/dist/tools/gitea-issue.d.ts.map +1 -0
  803. package/dist/tools/gitea-issue.js +91 -0
  804. package/dist/tools/gitea-issue.js.map +1 -0
  805. package/dist/tools/monitor.d.ts +64 -0
  806. package/dist/tools/monitor.d.ts.map +1 -0
  807. package/dist/tools/monitor.js +135 -0
  808. package/dist/tools/monitor.js.map +1 -0
  809. package/dist/tools/scheduler-tools.d.ts +48 -0
  810. package/dist/tools/scheduler-tools.d.ts.map +1 -0
  811. package/dist/tools/scheduler-tools.js +449 -0
  812. package/dist/tools/scheduler-tools.js.map +1 -0
  813. package/dist/tools/sql-adapters.d.ts +32 -0
  814. package/dist/tools/sql-adapters.d.ts.map +1 -0
  815. package/dist/tools/sql-adapters.js +31 -0
  816. package/dist/tools/sql-adapters.js.map +1 -0
  817. package/dist/tools/sql.d.ts +36 -0
  818. package/dist/tools/sql.d.ts.map +1 -0
  819. package/dist/tools/sql.js +131 -0
  820. package/dist/tools/sql.js.map +1 -0
  821. package/dist/tools/task-list.d.ts +26 -0
  822. package/dist/tools/task-list.d.ts.map +1 -0
  823. package/dist/tools/task-list.js +352 -0
  824. package/dist/tools/task-list.js.map +1 -0
  825. package/dist/tools/todo.d.ts +11 -0
  826. package/dist/tools/todo.d.ts.map +1 -0
  827. package/dist/tools/todo.js +126 -0
  828. package/dist/tools/todo.js.map +1 -0
  829. package/dist/tools/web.d.ts +59 -0
  830. package/dist/tools/web.d.ts.map +1 -0
  831. package/dist/tools/web.js +607 -0
  832. package/dist/tools/web.js.map +1 -0
  833. package/dist/tools/worktree.d.ts +88 -0
  834. package/dist/tools/worktree.d.ts.map +1 -0
  835. package/dist/tools/worktree.js +434 -0
  836. package/dist/tools/worktree.js.map +1 -0
  837. package/docs/A1-ATTRIBUTION-ROUND1-2026-07-09.md +181 -0
  838. package/docs/AB-ORACLE-GATE-VERDICT-2026-07-10.md +100 -0
  839. package/docs/ANCHOR-GAP-INVENTORY-2026-07-09.md +143 -0
  840. package/docs/ARCHITECTURE.md +125 -0
  841. package/docs/BUGHUNT-2026-07-05-NIGHT.md +98 -0
  842. package/docs/BUILD.md +63 -0
  843. package/docs/CANCEL-ASYNC-ATTRIBUTION-2026-07-09.md +98 -0
  844. package/docs/CC-198-VS-201-DRIFT-2026-07-09.md +70 -0
  845. package/docs/CC-BASELINE-FAKE-ZERO-AUDIT-2026-07-09.md +51 -0
  846. package/docs/CC-DRIFT-198-206-AGENT-TYPES-2026-07-10.md +82 -0
  847. package/docs/CC-DRIFT-198-206-CHANGELOG-2026-07-10.md +82 -0
  848. package/docs/CC-DRIFT-198-206-REMINDERS-2026-07-10.md +96 -0
  849. package/docs/CC-DRIFT-198-206-ROADMAP-2026-07-10.md +110 -0
  850. package/docs/CC-DRIFT-198-206-TOOL-INVENTORY-2026-07-10.md +53 -0
  851. package/docs/CC-DRIFT-198-206-USAGE-CONSTANTS-2026-07-10.md +64 -0
  852. package/docs/CC-DRIFT-198-206-WORKFLOW-2026-07-10.md +83 -0
  853. package/docs/CC-PARITY-CHECKLIST.md +220 -0
  854. package/docs/CC-PARITY-DEEP-SWEEP-2026-07-07.md +149 -0
  855. package/docs/CC-SUBAGENT-PROMPT-STUDY-2026-07-09.md +219 -0
  856. package/docs/CC-TASK-REMINDER-CADENCE-STUDY-2026-07-09.md +396 -0
  857. package/docs/CC-TOOL-PARITY-SWEEP-2026-07.md +56 -0
  858. package/docs/CC-TOOL-PROMPT-DEEP-DIFF-2026-07-08.md +274 -0
  859. package/docs/CC-TOOLSURFACE-DEEP-DIVE-2026-07-07.md +197 -0
  860. package/docs/CC206-OBSERVER-ANCHORS-2026-07-11.md +463 -0
  861. package/docs/CC207-CORE-SWEEP-BACKLOG-2026-07-12.md +155 -0
  862. package/docs/CENTER-CONTROL-PLANE-SEAM.md +86 -0
  863. package/docs/CLEANUP-CONTRACT-ANCHOR-2026-07-09.md +83 -0
  864. package/docs/COLD-START-RSI-2026-07-09.md +72 -0
  865. package/docs/COMPACTION-LIVE-AUDIT-2026-07-09.md +114 -0
  866. package/docs/CONTEXT-lifecycle-extension-points-and-stop-attribution.md +71 -0
  867. package/docs/COREWARS-POLYGLOT-TRIAGE-2026-07-09.md +85 -0
  868. package/docs/DEADTARGET-OVERFULL-HBOX-2026-07-10.md +92 -0
  869. package/docs/DEADTARGET-PATH-TRACING-REVERSE-2026-07-10.md +87 -0
  870. package/docs/DEADTARGET-WINNING-AVG-COREWARS-2026-07-10.md +96 -0
  871. package/docs/DEEPSEEK-API-LIMITS-PROBE-2026-07-09.md +118 -0
  872. package/docs/DESIGN-140-MOCK-VERIFY-2026-07-11.md +79 -0
  873. package/docs/DESIGN-140-VERIFICATION-2026-07-11.md +43 -0
  874. package/docs/DESIGN-DRAFT-workflow-collab-2026-07-11.md +56 -0
  875. package/docs/DESIGN-ORACLE-GROUNDING-GATE-2026-07-10.md +167 -0
  876. package/docs/DESIGN-TFRAG-RECONCILE-SCAFFOLD-2026-07-09.md +102 -0
  877. package/docs/EXP-PA2-PE-DESIGN-2026-07-11.md +220 -0
  878. package/docs/EXT-DOGFOOD-2026-07-12.md +50 -0
  879. package/docs/FINAL-VERIFY-SURFACE-AUDIT-2026-07-09.md +44 -0
  880. package/docs/FRAG-RECON-INVESTIGATION-2026-07-09.md +183 -0
  881. package/docs/HANDOFF.md +121 -0
  882. package/docs/KNOWN-ISSUES.md +96 -0
  883. package/docs/LEGW-WINDOW-TAX-2026-07-10.md +82 -0
  884. package/docs/LIVE-PROBE-BATCH-2026-07-11.md +207 -0
  885. package/docs/M2-CERT-ATTRIBUTION-2026-07-10.md +61 -0
  886. package/docs/M25-LEG-VARIANCE-ATTRIBUTION-2026-07-10.md +81 -0
  887. package/docs/MAILMAN-TIMEOUT-ATTRIBUTION-2026-07-10.md +88 -0
  888. package/docs/MEMORY-BACKEND-DIALECT-NOTES.md +69 -0
  889. package/docs/MTEB-ESCAPE-HATCH-ATTRIBUTION-2026-07-09.md +57 -0
  890. package/docs/MTEB-LEADERBOARD-ATTRIBUTION-2026-07-10.md +134 -0
  891. package/docs/ORACLE-GATE-NEGATIVE-SAMPLE-2026-07-11.md +28 -0
  892. package/docs/PARITY-CONTEXT-TRANSACTIONS-2026-07-10.md +67 -0
  893. package/docs/PARITY-PROGRESS-MATRIX-2026-07-10.md +37 -0
  894. package/docs/PARITY-SPOT-AGENT-TYPES-2026-07-10.md +70 -0
  895. package/docs/PARITY-SPOT-REMINDERS-2026-07-10.md +144 -0
  896. package/docs/PARITY-SPOT-TOOL-INVENTORY-2026-07-10.md +61 -0
  897. package/docs/PARITY-SPOT-USAGE-CONSTANTS-2026-07-10.md +95 -0
  898. package/docs/PARITY-SPOT-WORKFLOW-2026-07-10.md +93 -0
  899. package/docs/PASSWORD-RECOVERY-PANEL-VERDICT-2026-07-10.md +62 -0
  900. package/docs/R8-R9-FINALIZE-COORDINATION-2026-07-09.md +124 -0
  901. package/docs/REPL-CODE-MODE-EVALUATION-2026-07-10.md +187 -0
  902. package/docs/REPORT-1249-TARGETED.md +48 -0
  903. package/docs/RESEARCH-3P-MEMORY-SWAP-2026-07-12.md +273 -0
  904. package/docs/ROADMAP.md +111 -0
  905. package/docs/RSI-CLOUD-DEPLOY-2026-07-06.md +289 -0
  906. package/docs/RSI-PROCESS-AI-COLDSTART-2026-07-11.md +68 -0
  907. package/docs/S18-THOROUGHNESS-AUDIT-2026-07-09.md +113 -0
  908. package/docs/SERVICE-INTEGRATION-GUIDE.md +298 -0
  909. package/docs/SUBAGENT-STREAM-RESILIENCE-PARITY-2026-07-10.md +118 -0
  910. package/docs/SWEBENCH-PRO-RECON-2026-07-11.md +31 -0
  911. package/docs/TB-EFFICIENCY-TELEMETRY-2026-07-08.md +114 -0
  912. package/docs/TB-FAILURE-AUTOPSY-2026-07-05-RERUN.md +67 -0
  913. package/docs/TB-FAIRNESS-AUDIT-2026-07-08.md +141 -0
  914. package/docs/TB-FULL-1257-2026-07-08.md +77 -0
  915. package/docs/TB-LEG-GAP-ATTRIBUTION-1261-1263-2026-07-11.md +154 -0
  916. package/docs/TB-REGRESSION-DAEMON-KILL-2026-07-08.md +58 -0
  917. package/docs/TB-RSI-CROSSCHECK-2026-07-06.md +68 -0
  918. package/docs/TB-RSI-LEDGER.md +30 -0
  919. package/docs/TB-STABLE-SET-2026-07-08.md +127 -0
  920. package/docs/TB21-RECON-2026-07-11.md +28 -0
  921. package/docs/TEST-DESIGN-BATCH-1-2-3.md +97 -0
  922. package/docs/THIRD-PARTY-INTEGRATION.md +45 -0
  923. package/docs/TOKEN-ESTIMATE-CALIBRATION-LIVE-2026-07-09.md +102 -0
  924. package/docs/audit-2026-06-10-/347/254/254/344/272/214/350/275/256-/347/251/272/347/231/275/345/214/272/344/270/216/345/277/230/346/216/245/347/272/277.md +147 -0
  925. package/docs/audit-2026-06-10-/350/256/241/347/256/227bug/346/211/253/346/217/217.md +163 -0
  926. package/docs/audit-2026-06-11-/344/277/256/345/244/215/345/244/215/345/256/241/344/270/216/345/233/236/345/275/222/344/270/223/346/211/253.md +95 -0
  927. package/docs/audit-2026-06-12-design71-P1/346/275/234/344/274/217/351/235/242/350/243/201/345/206/263/344/270/216/345/220/236/351/224/231/345/256/241/350/256/241.md +45 -0
  928. package/docs/audit-2026-06-12-/345/205/254/345/274/200/346/227/213/351/222/256/346/264/273/346/200/247/344/270/216vendored/346/255/273/350/267/257.md +63 -0
  929. package/docs/audit-2026-06-15/ADDENDUM-second-pass.md +88 -0
  930. package/docs/audit-2026-06-15/ARCHITECTURE-AND-ROADMAP.md +187 -0
  931. package/docs/audit-2026-06-15/DOC-CORRECTIONS.md +105 -0
  932. package/docs/audit-2026-06-15/INDEX.md +49 -0
  933. package/docs/audit-2026-06-15/ORCHESTRATION-STATUS.md +98 -0
  934. package/docs/audit-2026-06-15/PRODUCTION-ISSUES.md +189 -0
  935. package/docs/audit-2026-06-15/REFERENCES-literature.md +139 -0
  936. package/docs/audit-2026-06-15/VENDOR-REFACTOR-PLAN.md +96 -0
  937. package/docs/cc-probe-198/README.md +72 -0
  938. package/docs/cc-probe-198/STABILITY-AUDIT.md +118 -0
  939. package/docs/cc-probe-198/live-schema-monitor-worktree-2026-07-09.json +56 -0
  940. package/docs/cc-probe-198/mount-variants.json +536 -0
  941. package/docs/cc-probe-198/plan-mode-run.json +1 -0
  942. package/docs/cc-probe-198/probe-bash-bg.json +224 -0
  943. package/docs/cc-probe-198/probe-edit-mismatch.json +120 -0
  944. package/docs/cc-probe-198/probe-read-missing.json +62 -0
  945. package/docs/cc-probe-198/probe-search-empty.json +127 -0
  946. package/docs/cc-probe-198/probe-task-family.json +227 -0
  947. package/docs/cc-probe-198/probes.status +6 -0
  948. package/docs/cc-probe-198/raw-capture-interactive.json +948 -0
  949. package/docs/cc-probe-198/raw-capture-print.json +787 -0
  950. package/docs/cc-probe-198/raw-capture2-interactive.json +948 -0
  951. package/docs/cc-probe-198/raw-capture2-print.json +787 -0
  952. package/docs/cc-probe-198/system-prompt.txt +135 -0
  953. package/docs/cc-probe-198/tools-array.json +962 -0
  954. package/docs/durability-boundary.md +63 -0
  955. package/docs/fix-2026-06-10-/350/256/241/347/256/227bug/344/277/256/345/244/215-search/346/211/271.md +75 -0
  956. package/docs/fix-2026-06-11-/347/254/254/344/272/214/350/275/256-/344/277/256/345/244/215-search/346/211/271.md +62 -0
  957. package/docs/parity-sweep/REPORT-DYNAMIC.md +97 -0
  958. package/docs/parity-sweep/REPORT-STATIC-GGB.md +127 -0
  959. package/docs/parity-sweep/REPORT-STATIC-RWE.md +133 -0
  960. package/docs/vendor-history.md +385 -0
  961. package/docs/vendored-upstream-diff-2026-07.md +83 -0
  962. package/package.json +70 -0
@@ -0,0 +1,95 @@
1
+ # 修复复审 + 回归专扫 — 2026-06-11
2
+
3
+ > **【状态 2026-06-11 当日晚】R-1~R-6 + Minor#1 已全部修复并发布于 1.93.1**(code-ready council 审过、各配测试,见 CHANGELOG 1.93.1)。下方"处置建议"是修复**前**写的,仅留作历史记录——别按它再排修复(已有一次后续 sweep 被它误导以为 R 系列仍 open,恰好踩中 R-1 自述的"陈旧注释让下轮审计漏过"形态)。
4
+
5
+ - **背景**:两轮 bug 扫描(`audit-2026-06-10-*.md`)的 ~27 处修复已发 1.92.0。本轮做两件事:(1) 逐条复审已 ship 的修复实际代码是否修对/修全;(2) 专扫这批修复**自身是否引入回归或修不彻底**(历史上 commit eae0f09 的 A-2 空准备短路曾引入 F8 回归后才修,证明 fix-引入-bug 在本仓真实发生)。
6
+ - **基线**:commit `2cc618e`(1.92.0 已发布),960 测试全绿。
7
+ - **方法**:主会话逐条读 ship 代码核对 + 1 个 fable subagent 回归专扫(带 tsx 行为 probe,实测输出佐证)。
8
+
9
+ 结论:**27 处修复主线全部正确**(主会话核实,见末尾清单)。回归专扫抓到 **2 条 A 级"修不彻底/新开面"** + 4 条 B + 2 条 minor,全部是**修复的边界遗漏**,不是全新区域。
10
+
11
+ ---
12
+
13
+ ## 复审:已 ship 修复全部正确(逐条核实)
14
+
15
+ 主会话亲自读了 ship 代码并核对:
16
+ - **S-1** edit_file → `content.replace(old, () => new)` 函数式替换,`$` 不再解释 ✅
17
+ - **A-1 interrupt**(最高风险)两层:agent-loop.ts:242 loop-top `if(signal.aborted) return`(不再 doomed re-stream)+ agent-harness.ts:608 `!isEmptyFailureAssistant` 不持久化空 failure 消息(但仍 emit 给 live 订阅者,有 partial content 的仍持久化)✅ 彻底消除非法序列
18
+ - **A-2 cut-point** 回落改「≤i 最大切点」+ 注释完整 ✅(**回落本体正确**,但空守卫漏一角 → 见 R-2)
19
+ - **A-3** anthropic `totalTokens` 含 cacheRead/cacheWrite ✅
20
+ - **A-4** pricing 缓存缺价落回全价 ✅
21
+ - **A-6** untrusted 正则 `system-reminder(?:\s[^>]*)?>` 容忍属性 ✅
22
+ - **A-7/A-8** 记忆/subagent 内容过 `delimitUntrusted` ✅
23
+ - **combinePolicies / hooks** rewrite 级联 + ask 携带 updatedInput 主线 ✅(**主线正确**,边界遗漏 → R-1/R-3/R-4)
24
+ - **exec signal→128+signum** nodejs.ts:395 close(code,signal) ✅
25
+ - **shell-output** fullOutputRequested 同步标志 + 任务内重解析 path ✅
26
+ - **property-harness** re-probe 区分 impl-throw vs 结构错输出 ✅
27
+ - **memory-recall** cap 先查后 push / UTF-8 回退 / pre-abort / release 进 finally ✅
28
+
29
+ ---
30
+
31
+ ## 回归发现(需再处置)
32
+
33
+ ### R-1 ✅核实【A,条件性 S — 安全】durable suspend/resume 路径丢失 policy rewrite,且豁免注释依据是假的
34
+
35
+ - **位置**:`src/core/hooks.ts:190-191`(错误豁免注释)+ `src/core/runner/prepare-task.ts:127-129,938`(resume bypass gate + 存 postHookArgs)+ `runtask.ts:1330-1333`(resume 执行不重跑 gate)
36
+ - **事实链**(主会话读码核实):
37
+ - hooks.ts:190-191 注释:`policyRewrite is intentionally NOT applied on the suspend path: resume re-runs the whole gate (prepare-task), which re-captures the rewrite`。
38
+ - 但 prepare-task.ts:127-129 明写 resume engine `bypasses the gate — the human already adjudicated it`;checkpoint 存的 `pendingAction.args = postHookArgs`(:938),**postHookArgs 是 hook 重写后但不含 policy rewrite 的 args**;runtask.ts:1333 resume 执行 `outcome.updatedInput ?? pendingAction.args`,gate 不重跑。
39
+ - 即注释声称的"resume 重跑 gate 重新捕获 rewrite"**不成立**——resume 明确 bypass。
40
+ - **触发**(专扫 probe 实测行为分叉):`durableApproval` + checkpointStore + policy 返回 `ask{updatedInput: 脱敏}`(或 combinePolicies 把 redactor-allow 折进 ask)→ suspendAsk checkpoint 的是**未脱敏** args;同输入走同步 onAsk 路径则正确执行脱敏 args。人批准后 resume 执行未脱敏/未钳制 args = 正是 A-1/B-1 修的那类 bug 在 durable 臂没修。
41
+ - **这是 1.92.0 修复新开的面**:A-1 把 `PermissionResult` ask arm 拓宽成可带 `updatedInput` 之后,durable 臂没跟上。拓宽前 ask 不能带 rewrite、此 bug 不存在。
42
+ - **可达性**:今天 core 内置 policy 不发 `ask{updatedInput}` → 不可达;但类型已公开导出,下游脱敏 policy + durable approval 即触发。
43
+ - **后果双重**:① 安全(批准后跑未脱敏 args);② 错误豁免注释是 trap——会让下一轮审计再次放过(专扫原话)。
44
+ - **修法**:suspend 路径把 `policyRewrite` 应用进传给 `suspendAsk` 的 args(即 checkpoint 存含 rewrite 的 args)。不会 double-apply,因为 resume 根本不重跑 gate。同时改正注释。
45
+ - **置信度**:高(机制读码 + probe 实证)。
46
+
47
+ ### R-2 ✅核实【A】compaction 空守卫漏 split-empty 角 — A-2 修不彻底,F8 同族幻觉 summary 残留
48
+
49
+ - **位置**:`src/vendor/agent-core/src/harness/compaction/compaction.ts:734`(prepareCompaction 守卫 `messagesToSummarize.length===0 && !cutPoint.isSplitTurn`)+ `:810`(compact 守卫 `!isSplitTurn && messagesToSummarize.length===0`)+ `:818`(split 分支要求 `turnPrefixMessages.length>0`)
50
+ - **问题**:两处空守卫都只防 `!isSplitTurn` 那半。当 `isSplitTurn===true && turnPrefixMessages.length===0 && messagesToSummarize.length===0` 时::734 不短路、:810 不报错、:818 条件 false → 落进 else 分支对**空** messagesToSummarize 调 `generateSummary([])` = 空 `<conversation>` 幻觉 summary。
51
+ - **触发**(专扫 probe 实测 `isSplitTurn:true | messagesToSummarize:0 | turnPrefixMessages:0`):boundary 以 `custom_message` 开头(合法 cut point,且 findCutPoint backward 累计只数 `type==="message"` entry)、message-mass < keepRecentTokens 而总量超阈 → prepareCompaction 产出该形态。
52
+ - **后果**:比 throw 更糟——**成功** append 幻觉 summary、firstKept=第一条什么都没移走、context 纯增、breaker 不计数、每 boundary 烧一次真 LLM call(F8 同族)。
53
+ - **可达性**:中(需 mass 集中在 custom_message 或 usage 锚高/结构 mass 低的会话)。
54
+ - **修法**:把空守卫条件统一为 `messagesToSummarize.length===0 && (!isSplitTurn || turnPrefixMessages.length===0)`(:734 prepareCompaction 处放宽即可,:810 同步)。
55
+ - **置信度**:机制高(probe 输出佐证);可达性中。
56
+
57
+ ### R-3【B】combinePolicies ask+updatedInput 的三个边界(A-1 类型拓宽新开面)
58
+
59
+ - **位置**:`src/core/tool-policy.ts:199-213`
60
+ - 专扫 probe 三条:① ask 的 updatedInput 不级联进 `current` → 后续 policy 审 pre-rewrite args;② `merged = asked.updatedInput ?? rewrite?.updatedInput` 优先取 ask 自带 → ask 在前、redactor-allow 在后时 redaction 被丢;③ 第二个 ask 的 updatedInput 完全丢弃。
61
+ - 现实影响中(core 内置不发 ask{updatedInput},类型已导出)。与 R-1 同源(都是 ask-rewrite 新面)。
62
+ - **置信度**:行为高(probe)。
63
+
64
+ ### R-4【B】hook 的 ask{updatedInput} 批准后被静默丢弃
65
+
66
+ - **位置**:`src/core/hooks.ts:158-159`(`hookAsk=r` 其 updatedInput 从不应用)+ `:179-182`(policyRewrite 捕获在 promotion 前、只看 policy decision,hookAsk 的 rewrite 永进不了 policyRewrite)
67
+ - A-1 拓宽后 `PreToolUseResult` 也合法携带 ask{updatedInput} = 新静默丢弃面。probe S5:hook `ask{updatedInput:{cmd:clamped}}` 批准后执行原始 args。
68
+ - **置信度**:行为高(probe)。
69
+
70
+ ### R-5【B】cascade B-5 两个残留不一致
71
+
72
+ - **位置**:`src/agents/cascade.ts:164,214`
73
+ - ① spread 保留 `base.stats.nested`(末 rung 的)而 tokens/turns/costMicroUsd 已含全部 rung 的 nested → 按 types.ts:495-497 公式消费会把末 rung nested 重复计一次(与 teacher A-7 的 disjoint 约定相反);② promptTokens/cachedTokens/outputTokens/cacheHitRate 仍是末 rung 值而 tokens 已累计 — B-5 自称修的"同对象不同 scope",teacher 全字段累计而 cascade 只做了 4 个字段。
74
+ - **置信度**:高。
75
+
76
+ ### R-6【B】teacher A-7 spendCap ratio 修不彻底
77
+
78
+ - **位置**:`src/agents/teacher.ts:517`(`teacherTokens / studentTokens > spendCap`)
79
+ - 分子含 nested(addTeacher 折入),分母不含 `studentNestedTokens`(累计了但 :517 没用)。注释 :345-347 声称 delegated cost 之前从 ratio + final stats 都 dropped——final stats 修了,ratio 没修。委派多的 student 显便宜 → 提前停 escalation(方向保守不烧钱)。
80
+ - **置信度**:高。
81
+
82
+ ### Minor(记录不阻塞)
83
+ - `AskRequest.args` 文档说"post-rewrite args",但 prepare-task.ts:808 传 pre-policy-rewrite 的 `req.args` → ask{updatedInput} 时 approver 看到本应 redact 的 secret(与 R-1 同源)。
84
+ - property-harness:roundtrip pair(fn 非 function)时 re-probe 被 typeof 守卫跳过,impl-throw 记为 `evaluationThrew:true` 与 JSDoc 矛盾(无 FP,仅标注不准)。
85
+
86
+ ---
87
+
88
+ ## 处置建议
89
+
90
+ - **R-1(A/安全)+ R-2(A/vendored)应再修一轮**,但都涉及安全门 + vendored compaction → 按仓库纪律走一次 code-ready council(比照 design/37 两轮),不宜在已发布工作树直接拍改。R-3/R-4/R-5/R-6 随这轮 council 顺带(同源:ask-rewrite 面 + stats 一致性)。
91
+ - **不阻塞当前主线**:R-1 今天 core 内置不可达(无 ask{updatedInput});R-2 可达性中。单兵 app-dev 主线不触发。但 R-1 的**错误豁免注释建议立即改正**(哪怕代码改随 council)——它会让下一轮审计再次漏过。
92
+ - 主题归并:R-1/R-3/R-4 + Minor#1 = "ask{updatedInput} 在 durable/hook/combine 三处的新开面",一个 council 一起审最经济(都是 A-1 类型拓宽的尾巴)。R-2 独立(vendored compaction)。R-5/R-6 = stats 一致性(A-7/B-5 的尾巴)。
93
+
94
+ ## 确认无回归的修复(专扫 probe + 主会话核实,避免重复挖)
95
+ nodejs.ts A-3(128+signum,验 3 场景)/ shell-output A-4(双快 chunk 单文件、在飞 append 落同文件、创建失败链 err)/ memory-recall B-2/3/5/6 / property-harness A-5 re-probe(纯 fn 正确区分)/ team.ts·verify.ts B-5(无 nested 字段不产生不一致)/ findCutPoint A-2 回落本体(!found ⇒ cutIndex≥startIndex 不可能越界)/ combinePolicies·runToolGate 主线(sync 批准后 redaction 存活 probe S4 实证)。
@@ -0,0 +1,45 @@
1
+ # design/71 P1 — 潜伏面裁决记录 + 吞错路径审计清单(2026-06-12)
2
+
3
+ > 执行者:core AI。方法论 = 1.96.3(每个 catch/fallback 问"静默了什么、调用方知道吗")。
4
+ > P1 范围出自 design/71 §2:C 类潜伏面逐文件裁决 + agent-loop/event-stream/session 错误路径审计。
5
+
6
+ ## 1. C 类潜伏面裁决(逐文件,design/71 验收件)
7
+
8
+ | 文件 | LOC | 裁决 | 理由 |
9
+ |---|---|---|---|
10
+ | `harness/prompt-templates.ts` | 199 | **删** | 上游交互式 slash-command 加载/格式化;`resources.promptTemplates` 全仓从未喂过、`harness.promptFromTemplate()` 零调用(src/+test/) |
11
+ | `harness/prompt-template-arguments.ts` | 78 | **删** | 仅被 prompt-templates.ts 消费 |
12
+ | `harness/file-loader-utils.ts` | 106 | **删** | 仅被 skills.ts + prompt-templates.ts 消费,二者均删 |
13
+ | `harness/skills.ts` | 383 | **删(整文件,比 design/71 预案"收窄"更深)** | design/71 记"我们只用 formatSkillInvocation"——实查其唯一调用方 `harness.skill()` 在 core 层零调用、零测试 ⇒ 整面死。连带卸 `ignore`/`yaml` 两个 npm dep(仅此两文件拉取) |
14
+ | 类型面(`Skill`/`PromptTemplate`/`Jsonl*`/`NavigateTreeResult`/`BranchSummaryError`/`session_before_tree` 等,types.ts) | — | **留** | `Skill` 仍被 core `toSkill` 使用;其余为纯类型表面,删除需重构 `AgentHarness<TSkill,TPromptTemplate,TTool>` 泛型贯穿 = 冷路径大 diff,违背 P2 C 案"冷路径保持与上游可 diff"。P2 naturalize 对应件时随件清 |
15
+
16
+ ### 🔴 黑盒实例 #5(本裁决挖出):`TaskSpec.skills` 公开 API 全链 inert
17
+
18
+ 链路:`TaskSpec.skills` → `toSkill` → `resources.skills` → 唯一读者 `harness.skill()`(零调用)。
19
+ 模型**从未见过** skills——上游让 skills 模型可见的另一半(`formatSkillsForSystemPrompt`)在本仓
20
+ 也是零消费者(P0 已删)。即:用户设置 `spec.skills` 完全无效果、无报错、无测试覆盖 = 与
21
+ A-2/A-4/§80/fileOps 同族(静默失配,"维护者误信其行为已被验证")。
22
+
23
+ 处置(本次):vendored 死面删除;**公开 API 保形** + `TaskSpec.skills` JSDoc 加 ⚠️INERT 诚实标注。
24
+ 最终处置(核心层接 skills 块进 system prompt + 内容投递 vs 废弃字段)上报 channel 待 search/clay 裁。
25
+
26
+ ## 2. 吞错路径审计清单(agent-loop / event-stream / session + harness 加扫)
27
+
28
+ | # | 位置 | 行为 | 判定 |
29
+ |---|---|---|---|
30
+ | 1 | `agent-loop.ts:66/:111` `.catch(pushLoopFailure)` | loop 异常 → failure assistant(`stopReason:error/aborted` + `errorMessage`)→ `agent_end` | ✅诚实(下游 A-1 layer③ 空失败 assistant 不落 session 已硬化) |
31
+ | 2 | `agent-loop.ts:744` prepareToolCall catch | 参数校验/hook 异常 → `isError` 工具结果带原 message,模型可见可重试 | ✅诚实 |
32
+ | 3 | `agent-loop.ts:781` executePreparedToolCall catch | 工具执行异常 → `isError` 工具结果;update 事件先 settle | ✅诚实 |
33
+ | 4 | `agent-loop.ts:822` afterToolCall hook catch | hook 异常 → **成功的工具结果被替换**为 error 结果 | ✅可接受(fail-closed:hook 可能是安全门,宁可把已发生副作用报为错也不可让 hook 失败放行未审输出)。语义记录于此 |
34
+ | 5 | `event-stream.ts push()` | 终态后 push 静默丢弃 | ✅已收口(清尾② c2521a6):丢弃=正确流语义(abort 竞态合法)非吞错,升级为**已决定契约**——C7 测试钉死 first-wins 终态+尾随丢弃,push() 注释明示 |
35
+ | 6 | `event-stream.ts end(result?)` | 无参 `end()` 且无终态事件 ⇒ `result()` 永不 resolve | ✅已修(清尾② c2521a6):bare end() 改 reject typed error(红证:旧代码 C8 测试 3s 超时);构造期预挂 catch 防纯迭代消费者撞 unhandled rejection |
36
+ | 7 | `agent-loop.ts:175` createAgentStream extractResult `: []` 臂 | 非 agent_end 取结果 → `[]` | ✅不可达(isComplete 先行守卫);纯防御臂非静默降级路径(与 §80 区别:无任何 caller 能走到) |
37
+ | 8 | `agent-harness.ts:611` turn_end eventError 暂存 | subscriber 异常先暂存 → **先 flush session 写**(不丢会话数据)→ 再抛 | ✅诚实且顺序正确 |
38
+ | 9 | `agent-harness.ts:693-708` emitRunFailure 嵌套 catch | 失败上报又失败 → `AggregateError` 双错并报 | ✅诚实 |
39
+ | 10 | `agent-harness.ts` 其余 17 处 catch | 全部 `normalize*Error` 后 **rethrow**(或 steer/followUp 回滚 unshift 后 rethrow) | ✅诚实 |
40
+ | 11 | `agent-harness.ts:995-1005` abort 路径 | 逐步收集 errors[] → 非空抛 AggregateError | ✅诚实 |
41
+ | 12 | `session/session.ts` + session 族(storage-base/memory-storage/memory-repo/repo-utils/uuid) | **零 catch**,错误全透传;`??`/`||` 均为参数默认/空名归一,非吞错 | ✅诚实 |
42
+
43
+ **结论**:错误路径无新增静默吞错;#5/#6 为冷路径潜伏锐边(零触发路径),记录在案、P2 naturalize
44
+ 对应件时处理;#4 的 fail-closed 语义本文档即为记录。1.96.3 同族("派生视图算完整性旗")在本扫
45
+ 未再现新实例。
@@ -0,0 +1,63 @@
1
+ # 审计 2026-06-12 — 公开旋钮活性 + vendored 死路(黑盒#5 触发的系统化扫描)
2
+
3
+ > 触发:clay「不断有致命 BUG(指 #5 skills inert)出现,扫核心层」。方法=把 #5 这类
4
+ > "公开 API 旋钮静默不发火" 系统化:①逐 TaskSpec/RunnerDeps 字段追到可观察效果(追不到=inert)
5
+ > ②"本地 CLI/单机假设" 镜头扫 vendored。只读扫描(core 在并发改 src)。
6
+
7
+ ## 结论速览
8
+ - **公开旋钮活性:除已知 #5(skills) 外,抽查未发现新 inert**。63 个字段(TaskSpec 38 + RunnerDeps 25)
9
+ 中,所有单消费者字段(最易 inert)逐个追到真实效果,链条完整。
10
+ - **新确认 1 条 vendored 死路(非致命,但属 design/71 该清的债)**:`branchSummary` 全路径——
11
+ core P0 删了入口(navigateTree/branch-summarization)却留了尾巴三件,零生产者。
12
+ - **澄清 clay 的担忧**:MCP **不是只本地**——core seam 支持 stdio + StreamableHTTP 双 transport
13
+ (`src/core/mcp.ts:1-3`),fail-open + 21 测试,端到端活。"skills/mcp 全是本地" 是 service
14
+ **部署选择**(它的 skills 是镜像内建、MCP 配的本地 stdio),不是 core 机制的限制。
15
+
16
+ ## A. 逐旋钮活性审计(抽样:所有单消费者字段 + 高风险面)
17
+ 单消费者 = 最像 #5 的形态(#5 当时也只有 1 个消费者,链条断在第二跳)。逐个追到效果:
18
+
19
+ | 字段 | 链条终点(可观察效果) | 活 |
20
+ |---|---|---|
21
+ | spec.skills | resources.skills→harness.skill() **零调用** | ❌ #5(已拍修复) |
22
+ | spec.lspManager | prepare:569→createLspTool 注入工具 | ✅ |
23
+ | spec.systemPrompt | prepare:656→provider.system()→harness | ✅ |
24
+ | spec.promptProvider | prepare:637→provider 注入 | ✅ |
25
+ | spec.onAsk / onQuestion | prepare:841/564→门/问答闭包 | ✅ |
26
+ | spec.handsReadOnly | prepare:553→只读手带 | ✅ |
27
+ | spec.memoryConsolidation | prepare:607→consolidation cfg | ✅ |
28
+ | spec.enableBlockedReport | prepare:504→report_blocked 工具 | ✅ |
29
+ | spec.budgetStreamCancel / maxCostUsd | runtask:501/492→预算流取消 | ✅ |
30
+ | spec.outputRetries / tracer / modelRole | runtask/roles→真实分支 | ✅ |
31
+ | spec.toolResultThresholdChars | prepare:402→offload 阈值 | ✅ |
32
+ | deps.allowImageUrl / cacheBreakDetection / deferMode / toolResultStore | 各 1 消费者,均到真实效果 | ✅ |
33
+ | spec.mcp | prepare:530→materializeMcpTools→stdio/HTTP 连接 | ✅ |
34
+
35
+ **没有发现第二个 #5**。审计方法本身(字段→效果可达性)就是治本件,见 §D。
36
+
37
+ ## B. 新确认 vendored 死路:branchSummary 三件(零生产者)
38
+ core P0 删了 navigateTree() + branch-summarization.ts(分支导航/摘要生成),但 `branchSummary`
39
+ 消息类型的**消费侧三件还在,且无任何生产者**:
40
+ 1. `session/session.ts:267 moveTo(entryId, summary?)` 的 summary 分支(appendTypedEntry branch_summary)
41
+ ——`.moveTo()` 在 src/core + src/agents **零调用**(仅 moveTo 无 summary 的导航语义被用,但本仓也没调)。
42
+ 2. `harness/messages.ts:147 case "branchSummary"`(渲染 BRANCH_SUMMARY_PREFIX)——无 entry 可渲染。
43
+ 3. `harness/compaction/compaction.ts:99 createBranchSummaryMessage`(重放路径)——同源死。
44
+ **判定**:非致命(死路不会错误执行,只是占面+误导"已支持分支摘要")。**归 design/71 P2 session 件
45
+ 收编时清**(与 branch_summary 类型一起从 types.ts 删)。已记此处供 core P2。
46
+
47
+ > **✅ 状态更新(core,2026-06-12,清尾① a940500)**:已提前全清——三件消费侧 + `moveTo()` 整方法
48
+ > + types.ts 全类型族(Entry/Error/Message/NavigateTreeResult/session_before_tree+session_tree 事件/
49
+ > TreePreparation/phase)+ core context-guard。别再按"待 P2"行动。
50
+
51
+ ## C. 非问题(排除,留痕防重复怀疑)
52
+ - `env/nodejs.ts` 的 `/bin/bash`/`process.env` 注入/win32 Git-bash 探测 = **NodeExecutionEnv 本地实现**
53
+ (design/48 本地档);远端任务走 RemoteExecutionEnv adapter(E2B/k8s),分层正确,非 bug。
54
+ - `agent-harness.ts:392 "You are a helpful assistant"` 默认 prompt = 仅 systemPrompt 全缺时兜底;
55
+ 我们的层在 prepare:701/795 恒传 provider 渲染的 prompt,默认不可达,非 inert。
56
+ - `promptTemplates`(resources 另一半)= P1 已知死(skills.ts 同批),P2 随件清。
57
+
58
+ ## D. 🔴 给 core 的 actionable:活性审计应进 P0 契约组(治本件升级)
59
+ #5 暴露的不是"又一个 bug",是**契约组缺一类断言**:现在 vendor-contracts.test.ts 钉的是"vendored 内部
60
+ 行为不变",缺的是**"公开旋钮→可观察效果可达"**。建议加一组 `public-knob-liveness.test.ts`:
61
+ 每个 TaskSpec/RunnerDeps 字段一条最小断言(设它→观察到它该有的效果)。这样第 6 个"卖出去却不发火"
62
+ 的旋钮在 CI 红,不靠审计撞。**这比逐个事后扫更值**——审计是一次性的,测试是常驻的。
63
+ (skills 修复落地时,它的"真发火 e2e" 就是这组的第一条。)
@@ -0,0 +1,88 @@
1
+ # 二轮复查补遗 — 2026-06-15(晚些)
2
+
3
+ > clay 命的第二遍:补漏第一遍未深读的 15 个文件 + 反查 8 篇交付的准确性(19-agent workflow + search AI 亲核)。
4
+ > 结论:**+3 新 bug(含 1 HIGH)、design/74 状态在审计中变了、6 处文档不准已修、~25 条功能/契约缺口补录**。
5
+
6
+ ---
7
+
8
+ ## A. design/74 状态变更(审计中被另一谱系推进)⚠️
9
+
10
+ **第一遍快照(HEAD=`d7724ff`/Slice 2)**:suspend trigger 未建、`requestStopAfterTurn()` 零调用者、Slice 3c 红测试。
11
+ **第二遍真相(HEAD=`3e5c52d`/Slice 3c,亲核 + 另一谱系 memory 确认)**:**suspend 触发器已建成并提交、Slice 3c 测试现在绿(31 passed)**。
12
+ - `3e5c52d` "design/74 Slice 3c: resource-slice suspend trigger (turn/budget cap → suspended, not failed)"。
13
+ - `prepare-task.ts:1072` 现调 `harness.requestStopAfterTurn()`;`suspendForResource(reason)` 闭包(:1012)+ `commitSuspendSaga`(:970);trigger 在 `runtask.ts:836-841`(onTurnBoundary,被 loop `prepareNextTurn` await,在 `shouldStopAfterTurn` 前)。
14
+ - `TaskSpec.resourceSuspend?:{scope}` opt-in(缺省仍 FAILS=向后兼容);触发器清 turnsExceeded/budgetHit(assemble 互斥:budgetHit slot3 > suspendRef slot8.5)。
15
+ - **仍未建**:Slice 4 账本机制(put debit / resume re-seed / 跨 slice 聚合 / slice maxCostUsd 从 ledger 切)+ Slice 6 service 半边 + Slice 7 minors。全完一起 codex+council(clay 令)。
16
+
17
+ **教训(PS2 印证)**:design/74 是**分钟级移动的目标**。本审计所有"design/74 半边未建/requestStopAfterTurn 零调用者/Slice 3c 红"的表述**已被 `3e5c52d` 推翻**。**design/74 的活真相源 = `git log --oneline` + memory `[[project-engine-resilience-fixes]]` 第 19 行**(另一谱系实时维护),不是本审计任何冻结的行号。受影响段落已就地加 banner(见 §C)。
18
+
19
+ ---
20
+
21
+ ## B. +3 新确认 bug(第一遍未覆盖文件,接 PRODUCTION-ISSUES 编号)
22
+
23
+ ### P-20 🔴 HIGH · `isPrivateHost` SSRF guard 被 IPv4-mapped/IPv6 字面量绕过 ✅亲验
24
+ **文件**:`src/core/runner/image.ts:5-11`(正则 :8),经 `defaultImageUrlGuard:30` 触达
25
+ 正则 `^(127\.|10\.|192\.168\.|169\.254\.|fe80:|fc|fd)` + `172.16-31` + `localhost/::1/0.0.0.0` 字面量,**无 IPv4-mapped(`::ffff:`)/NAT64(`64:ff9b::`)/site-local(`fec0::`)分支**。`new URL("https://[::ffff:127.0.0.1]/").hostname` = `"[::ffff:7f00:1]"`(点分前缀永不出现)→ `isPrivateHost` 返回 **false = 放行**。验证器实测:`fetch("http://[::ffff:127.0.0.1]:PORT/",{redirect:"manual"})` 返回 200 + body(Node 把 mapped 字面量连到 IPv4 目标)。`fetchImageCapped` 的 `redirect:"manual"` 救不了(绕过在**初始** host,它信任已校验)。
26
+ **亲验**:我读 image.ts:5-11,对 `h="::ffff:169.254.169.254"` 逐分支推导=不匹配→放行。**确认**。
27
+ **影响**:`allowImageUrl` 未设(默认)时,用户给的 `images[].url` 可让 worker 访问任意内网 HTTPS(RFC1918 管理面/内部 API/loopback HTTPS/支持 HTTPS 的云 metadata 变体)。`https:` only 限制使 HTTP IMDS(169.254.169.254)非最简,但 host-allowlist 绕过是无条件的。
28
+ **🔴 连带修正**:第一遍 P-6 + SERVICE-GUIDE 建议"web_fetch 复用 `image.ts isPrivateHost`"——**该建议需收回/限定**:`isPrivateHost` 本身有此绕过,复用会传播。**正确修法**:先**硬化** `isPrivateHost`(用 `net.isIP()`,family 6 且 IPv4-mapped 则抽内嵌 v4 重跑 v4 检查 + 拦 NAT64/site-local/ULA;或用 ipaddr.js 解析成 CIDR 比对),**再**在 image + web_fetch 共用硬化版。
29
+ **测试**:断言 `defaultImageUrlGuard` 对 `https://[::ffff:127.0.0.1]/`、`https://[::ffff:169.254.169.254]/`、`https://[64:ff9b::7f00:1]/`、`https://[fec0::1]/` **全 throw**(今天全不 throw)。
30
+
31
+ ### P-18 🟡 LOW · `reservedFor()` 用 `api==="anthropic"` 但真 Anthropic 模型是 `"anthropic-messages"`
32
+ **文件**:`src/brain/request-params.ts:47-48`
33
+ `reservedFor(api)` 只在 `api==="anthropic"` 时返回 `ANTHROPIC_RESERVED`,否则 `OPENAI_RESERVED`。但 canonical Anthropic api 值是 `"anthropic-messages"`(vendor/llm-core/types.ts:10 KnownApi;所有真模型用它;同仓 `usage-accounting.ts:19` 正确比 `"anthropic-messages"`)。`prepare-task.ts:394` 传 `model.api` 未归一。
34
+ **影响**:仅 design/40 **load-time 警告**(stripping 本身正确,因 `anthropic.ts:270` 硬编码 ANTHROPIC_RESERVED)。真 Anthropic 部署:(a) `extraBody.system`(Anthropic-reserved 非 OpenAI)→ **无警告**但被静默 strip(正是 design/40 加警告要防的静默丢);(b) `extraBody.reasoning_effort`(OpenAI-reserved 非 Anthropic)→ **虚假警告**。测试用虚构 `api:"anthropic"` 掩盖了它。
35
+ **测试**:用真值 `api:"anthropic-messages"` 跑 prepareTask 警告路径,断言 `extraBody:{system}` 触发 `onError(phase:'config')`、`{reasoning_effort}` 不触发(今天反了)。修=`reservedFor` 匹配 canonical api(镜像 usage-accounting.ts:19)。
36
+
37
+ ### P-19 🟡 LOW · `formatZodValidationError` 对嵌套属性失败命名父参数 + 错误的 expected 类型(且从不产出 docstring 承诺的 path)
38
+ **文件**:`src/core/tool-errors.ts:89-93`
39
+ 属性循环只遍历**顶层** `Object.entries(s.properties)` 且 `Value.Check(sub, obj[name])` 是**深检查**。schema `{questions:Array(Object({options:Array()}))}` + 值 `{questions:[{options:'x'}]}`:`questions` 在场→missing 循环不触发;`Value.Check(<questions数组schema>,[{options:'x'}])` 因**内层** `options` 是 string 而 false → 发 `The parameter \`questions\` is invalid: expected array.`——但 `questions` **本就是合法数组**(双重误导),真错是 `questions[0].options`。docstring(:77)承诺的 `questions[0].options` 路径**永不产出**(`formatValidationPath` :62-70 定义但 `formatZodValidationError` 从不调它)。
40
+ **真实可达**:`ask-question.ts:125-138` 的 schema 正是此嵌套形;弱模型传错→拿到误导消息,且 `tools.ts:58-66` 在跑 `execute`(:70)**前**返校验消息→工具体更好的诊断("must have 2-4 options")被遮蔽。flat schema 措辞相同但**准确**——故嵌套 case 阴险(同措辞、反真值)。
41
+ **测试**:嵌套 schema + 断言消息引**嵌套** accessor(`/questions\[0\]\.options/`)而非父参数。修=递归进违规属性 / 用 `Value.Errors().path` 驱动(经现有 `formatValidationPath`)。
42
+
43
+ > **8 refuted 中 2 条新候选证伪**:①"compactionSummary 可拆开 kept tool_use/tool_result 对"(从 trimToBudget 局部 + 合成 fixture 推断,非真上游路径);②"keptTail identity-Set 重 keep 重复消息引用"(需同一对象引用出现在两索引,无当前生产者)。
44
+
45
+ ---
46
+
47
+ ## C. 已就地修正的文档不准(6 处,doc fact-check 抓)
48
+
49
+ | 文档 | 原表述(已修)| 真相 |
50
+ |------|------|------|
51
+ | ARCHITECTURE §2 | "first-party ~18k LOC" | **~24.2k LOC**(`find src -not vendor -not .test | wc -l`=24,182),低估 25% |
52
+ | ARCHITECTURE §5 | "远端 ExecutionEnv seam(…/reopen/…)" | `reopen` 是 **CheckpointStore** 方法(resolved→pending CAS),**非** RemoteExecutionEnv;已挪正 |
53
+ | ARCHITECTURE §6.2 / ORCH §8 / SERVICE §4 / VENDOR §1,3,4 / CORRECTIONS C-2 | "design/74 suspend trigger 未建 / requestStopAfterTurn 零调用者 / Slice 3c 红" | **已被 `3e5c52d` 推翻**(见 §A);各段加 banner 指向 git log + memory |
54
+ | ORCH §9 | "mapNestedSuspend = 全**五**编排单一不变量" | 实为**四**个(cascade/team/teacher/verify import 它);**subagent 内联**等价逻辑于 `subagent.ts:198-206`,不 import suspend-guard。已改"四 + subagent 内联" |
55
+ | VENDOR §1 | "P0 死代码 −1,593 LOC" | 应为 **−1,562**(611+450+323+137+39+2=1562;**VENDOR.md 自己的 −1,593 也错**,连带修)|
56
+ | VENDOR §1 | "vendor-contracts 6 契约 C1-C6" | 该文件实含 **C1/C2/C4/C7/C8/C9**;C3 在 exec-shell.test、C5 在 compaction.test、C6 在 steering.test(CHANGELOG 已注,我表述把"分布在三处"误为"都在一个文件")|
57
+
58
+ ---
59
+
60
+ ## D. 第一遍漏录的功能/契约(补给 ARCHITECTURE/ORCH/SERVICE)
61
+
62
+ **已覆盖文件但功能没在交付文档点出的**:
63
+ - **`resolveToolSubset`(tool-filter.ts,design/38 1A)**:装配期把工具池**静态收窄**到子 agent/成员可用子集(pool→∩allowTools→−denyTools;`'*'`/undefined=全池;`[]`=全禁;denyTools 永赢;不在池的名**静默忽略**=拼错 denyTools 静默失效的 footgun)。子 agent 被选名时其 allow/deny **REPLACE** 工具级(非合并/交集)——subagent.ts:148,154。**与 design/37 执行期 policy 拦截不同**。
64
+ - **`selectModel`(select-model.ts,design/11 Layer 2)**:静态成本感知选模——按 `ModelCriteria`(needs vision/reasoning、minContext=`contextTokens ?? contextWindow`、exact `tier`)过滤,按 input+output 成本排(默认 cheapest / premium=最贵作能力代理)。**tier 是精确匹配 opt-in 非阈值**;无 cost 对象的模型排 +Infinity(永不当最便宜);成本代理**排除** cacheRead/cacheWrite;tiebreak first-seen-wins。`selectModel/selectModelOrThrow/ModelCriteria/ModelTier` 从 index.ts:58 导出。
65
+ - **`request-params`(design/40)**:`extraBody` 透传长尾 provider 旋钮(frequency_penalty/seed/top_p…),core-wins(reserved key 永不被 clobber,passthrough 在前 core 在后);未设时返同一 body 引用(前缀缓存 byte-identical)。**header 透传**(Model/config/options.headers)augment-only、auth/content-type/version 锁后置**永不可覆盖**——但 header **无碰撞警告**(不像 body 有)。ANTHROPIC_RESERVED 故意省 stop/stop_sequences → 同 extraBody key 跨 provider 行为不同。
66
+ - **`trimToBudget`(context-guard.ts)**:请求级最后兜底——drop 最旧非摘要消息使单任务工具循环膨胀不顶爆窗口,**绝不 orphan toolResult**,保全摘要 + 最近尾;非破坏(从原数组重建)。是 context-edit/任务内压缩**之下的地板**(prepare-task.ts:1318 管线:dropEmptyFailureAssistants→capAggregateToolResults→clearStaleToolResults→trimToBudget)。窗用 `contextTokens ?? contextWindow`,fraction 0.85(vs edit 0.7)。
67
+ - **`InMemoryStrategyStore`(strategy-store.ts,design/14)**:teacher 策略仓的 **public 契约**(service 做 PG/durable 后端必守):`scope` 是**强制隔离边界**;`find()` 高精度非对称 token-match(`significant(query) ⊆ tokens(problem)`);排序=confidence×recency **无 usage 计数器**(故意,避反馈环);`save()` 须 dedup-merge 归一化 (problem,strategy) 对 + per-scope 容量上限;`prune()` 可选。任何偏离静默改变检索行为。
68
+ - **tool-error 格式层(tool-errors.ts)**:`formatToolError/formatZodValidationError/formatValidationPath/truncateError` 全 index.ts:16 导出,service adapter 依赖其**模型可见错误文本** + **无泄漏保证**(无路径/栈/fs)。校验失败返**工具结果非抛错**;抛错工具在 tools.ts:61/76 自动格式化。(注:`formatValidationPath` 导出但错误路径**未用它**=P-19。)
69
+ - **`brainToRuntime`(runtime.ts)**:`completeSimple` fallback(无显式 `brain.complete` 时消费 stream 派生非流式)= **压缩/总结路径**;故无 `complete` 的 Brain **每次压缩/总结产生整次 stream 消费**,且派生路径**不受 abort signal 守护**。
70
+ - **成本权威**:core 从注入定价(`RunnerDeps.pricing`/`Model.cost`)**重新定价**成整数 micro-USD=**计费权威**;brain 自己的 `cost.total`(stats.costUsd)单独记、**不进预算闸**;压缩-总结 LLM 调用(audit B-9)的 token/成本**计入同一账 + 预算闸**。
71
+
72
+ **重要 by-design 但文档没说的边界**:
73
+ - **team 模式静默丢 durable-resume**:成员 suspend 时 `mapNestedSuspend(res)` 算了但 `TeamResult` **无 checkpoint 字段**(team.ts:123-127)→ checkpointToken 被丢,suspended 成员 session 正确不 release 但 checkpoint **永不可经 team API resume**(只能 store TTL reaper 清)。v1 by-design("team 成员应跑非-durable policy",team.ts:234)→ **调用方须让 team 成员跑非-durable 审批 policy 避免孤儿 checkpoint**。
74
+ - **`allowImageUrl` REPLACE 不 augment**:caller 给 CDN allowlist 也**静默禁用** https-only + private-host 块——自定义 policy 须**自己重实现** SSRF 防护,别假设叠加。
75
+ - **`InMemorySessionRepo` 重复 id 静默覆盖**(memory-repo.ts:15,47 无条件 set)= last-write-wins,不像 durable 后端会 conflict/AlreadyExists。pin/unpin/sweep 概念**只在 SessionStore 层**,repo.delete() 绕过 checkpoint-pin 守卫——durable repo 实现者别假设 repo 强制它。
76
+ - **SSRF 姿态跨 fetch 点不一致**:image 有 isPrivateHost(但有 P-20 绕过),`web_fetch` **完全没有** private-host 检查(见 P-6)。
77
+ - **prompt-cache family**:从 `model.api` 自动推、`model.params.promptCacheFamily`(别名 'anthropic'/'openai')可覆盖;按 provider 路由的通用 api 部署**必须**设覆盖否则误判 family(design/18 1090% 命中率)+ `cachedTokens>promptTokens` 时运行时警告。
78
+ - **`ToolSpec.label` INERT**:映射到工具对象但无运行时路径/事件读它(只 `name` 到模型/TaskStream)——承诺 per-tool 显示 label 的 UI 文档夸大。
79
+ - **公开面边界**:`isPrivateHost/defaultImageUrlGuard/fetchImageCapped/toImageContent/cacheFamilyOf/usageCostMicroUsd` **不从 index.ts 导出**(内部 runner helper,只经 RunnerDeps 配);vendored `AgentHarness` 类 + `err` Result 构造器也不导出(facade 内部);durable 后端实现者无需 vendor import。
80
+ - **`PushQueue` 无 cancel/error channel**,close() 后 push 静默丢(push-queue.ts:7-9);eager fire-and-forget(消费方 break early 不通知生产者停=与 P-2 SSE 同源)。
81
+ - **naturalize(design/71 P2)造成跨 vendor/engine 边界重复类型定义**(`CompactionSettings`/`CompactionPreparation` 在 vendor types.ts 和 engine/compaction 都有);facade 把 vendor TYPE 配 engine VALUE——维护者改 vendor 副本不会知道 engine 副本是活值源。
82
+
83
+ ---
84
+
85
+ ## E. 给修复者:新 bug 优先级
86
+ - **P-20(HIGH)先修**:硬化 `isPrivateHost`(net.isIP + IPv4-mapped 抽取 + NAT64/site-local/ULA),image + web_fetch 共用硬化版(同时解 P-6 的"复用什么")。SAFE 文件(image.ts/web.ts,非 design/74)。
87
+ - **P-18/P-19(LOW)随手**:`reservedFor` 匹配 canonical api;`formatZodValidationError` 递归进违规嵌套属性(用 formatValidationPath)。SAFE 文件。
88
+ - 三者皆**不**在 design/74 在飞文件集,可独立修 + 补 pin 测试(`test/known-issues-2026-06-15.test.ts` 同款)。
@@ -0,0 +1,187 @@
1
+ # 整体架构 + 设计路线 + 后续 Roadmap — 2026-06-15(审计核实版)
2
+
3
+ > 从**真实代码**反推(48-agent 子系统验证 + search AI 亲读),非从旧设计文档照抄。状态标注:✅shipped / 🟡in-flight / 🔵proposed / ⏸deferred / ❓dangling。
4
+
5
+ ---
6
+
7
+ ## 1. 一句话定位
8
+
9
+ **`@sema-ai/core`** = 一个**无状态、任务化**的 AI agent 内核:从 openclaw vendored 一个 provider 无关的 harness 推理循环(`src/vendor/`),在其上蒸馏出一层 first-party 的任务装配/编排/durable/安全/记忆能力(`src/`)。一个"任务"自带全套配置(model/tools/mcp/skill/limits/policy),跑完返回机器可读结果(completed/blocked/failed/timeout/**suspended**)。**大脑在外**(注入 `Brain.stream`)、**手在外**(`ExecutionEnv` 本地/远端)、**记忆可外**(`SessionStore`/`MemoryStore`/`CheckpointStore` durable seam)。
10
+
11
+ 宪法(design/43):**机制少而通用(primitive),场景=配置(profile)**。core 只给原语;leader 编排、E2B/Kata 沙箱、TiDB 后端等都在 service 仓的 profile 层。
12
+
13
+ ---
14
+
15
+ ## 2. 分层架构图
16
+
17
+ ```
18
+ ┌──────────────────────────────────────────────────────────────────────────────┐
19
+ │ 集成方 / service-AI 仓(profile 层,不在本仓) │
20
+ │ leader 编排 · config-center 发布 · E2B/Kata 沙箱 · TiDB 后端 · 多租户 · 部署 │
21
+ └───────────────▲──────────────────────────────────────────────▲────────────────┘
22
+ │ import @sema-ai/core │ 注入实现
23
+ ┌───────────────┴──────────────────────────────────────────────┴────────────────┐
24
+ │ src/ —— 蒸馏层(first-party,~24.2k LOC 非 vendor 非 test,MIT) │
25
+ │ │
26
+ │ ┌── 入口 ────────────────────────────────────────────────────────────────┐ │
27
+ │ │ Runner.runTask / runTaskStream / resume / resumeStream (core/runner) │ │
28
+ │ │ ├ prepare-task.ts 装配:model/session/tools/harness/gate/hooks/env │ │
29
+ │ │ ├ runtask.ts run 循环:订阅 harness 事件 · 预算/轮次/超时 · │ │
30
+ │ │ │ 任务内压缩 · durable suspend · resume CAS │ │
31
+ │ │ ├ assemble-result 终态→TaskResult(errorCode 优先级链=公开契约) │ │
32
+ │ │ ├ tool-disclosure design/36 延迟工具披露(tool_search) │ │
33
+ │ │ └ synthetic-tools submit_output / report_blocked / skill │ │
34
+ │ └──────────────┬──────────────────────────────────────────────────────────┘ │
35
+ │ │ │
36
+ │ ┌─ Brain(脑)─┴────────┐ ┌─ Tools(手/工具)──────┐ ┌─ Agents(编排)────────┐ │
37
+ │ │ openai / anthropic │ │ fs/{index,safety, │ │ subagent(委派) │ │
38
+ │ │ failover / routing │ │ search,repo-map} │ │ team(讨论/council) │ │
39
+ │ │ degrading / breaker │ │ sql / sql-adapters │ │ cascade(质量门级联) │ │
40
+ │ │ stream-engine │ │ web / gitea-issue │ │ teacher(escalation) │ │
41
+ │ │ repetition / repair │ │ + core: mcp / lsp │ │ verify(L3 去相关判) │ │
42
+ │ │ timeout / retry/errors │ │ ask-question │ │ agent-definition(1B) │ │
43
+ │ └───────────────────────┘ └───────────────────────┘ └───────────────────────┘ │
44
+ │ │
45
+ │ ┌─ Durable seams(可插拔后端)──────┐ ┌─ 安全/门 ──────────┐ ┌─ 记忆 ───────┐ │
46
+ │ │ SessionStore/Repo + CAS(F2) │ │ tool-policy(3态) │ │ memory(L2) │ │
47
+ │ │ CheckpointStore(design/45 suspend)│ │ hooks(design/37) │ │ memory-recall │ │
48
+ │ │ ToolResultStore(offload) │ │ exec-gate(L2 MECH) │ │ (design/65) │ │
49
+ │ │ RemoteExecutionEnv(design/48 远端)│ │ property-harness │ │ consolidation │ │
50
+ │ │ session-reconcile(wake 对账) │ │ sensitive-path │ │ (design/41) │ │
51
+ │ │ + PG 参照适配(src/stores/pg.ts) │ │ untrusted-text │ │ + PgMemory │ │
52
+ │ └───────────────────────────────────┘ └────────────────────┘ └───────────────┘ │
53
+ │ │
54
+ │ observability: trace(OTel seam) · pricing(整数 micro-USD) · cache-break-detect │
55
+ │ context mgmt: auto-compaction(任务间+任务内 turn-boundary) · context-edit │
56
+ │ prompts: default(DEFAULT_SYSTEM_PROMPT/CODE_AGENT_PROMPT) · roles · select-model │
57
+ │ server: createTaskServer(HTTP + SSE) │
58
+ └───────────────────────────────────┬────────────────────────────────────────────┘
59
+ │ 依赖(VENDORED EDIT 受控,见 VENDOR.md)
60
+ ┌────────────────────────────────────┴───────────────────────────────────────────┐
61
+ │ src/vendor/ —— openclaw 内核(~6k LOC,MIT,baseline e3a6da0f51) │
62
+ │ agent-core: agent-loop.ts(run 循环原语) · harness/agent-harness.ts(harness) │
63
+ │ · harness/types.ts · harness/env/nodejs.ts(NodeExecutionEnv) · │
64
+ │ harness/messages.ts · utils/{truncate,shell-output} │
65
+ │ llm-core: types.ts(Model/Usage/事件) · validation.ts · event-stream.ts │
66
+ │ (热路径 compaction+session 已 naturalize 进 src/engine/,design/71 P2) │
67
+ └──────────────────────────────────────────────────────────────────────────────┘
68
+ ```
69
+
70
+ ## 3. 核心数据流(单任务)
71
+
72
+ ```
73
+ TaskSpec ──▶ Runner.runTaskStream(spec)
74
+ │ eager:run = (async()=>{ await runLocked(...) })() ← 立即开跑
75
+
76
+ prepareTask(spec, deps, sessions, resume?)
77
+ │ 解析 model/role/thinking · acquire+reconcile session
78
+ │ 装配工具带:caller tools + offload-wrap + report_blocked +
79
+ │ submit_output + MCP + memory(remember/recall) + hands band
80
+ │ (read/edit/write/grep/glob/repo_map/bash) + lsp + ask_user_question + skill
81
+ │ 建 system prompt(stable→variable,memory 在尾) · 建 harness
82
+ │ 接两阶段工具门:PreToolUse hook → policy → resolveAsk → durable suspendAsk
83
+
84
+ runLocked:订阅 harness 事件,驱动 harness.prompt(objective)
85
+ │ onTurnEnd:轮次/预算闸(abort) onTurnBoundary:任务内压缩(maybeCompact)
86
+ │ 工具结果 >阈值 → offload(<persisted-output> ref)
87
+ │ 命中 durable ask 门 → 铸 checkpoint + suspend(status:suspended)
88
+
89
+ assembleResult(final, stats, flags) ──▶ TaskResult
90
+ errorCode 优先级链:output.invalid → degenerate → budget →
91
+ suspend.loop → threw(timeout/turns/conflict) → blocked →
92
+ suspended(checkpointToken) → abortedLive → no-final → stopReason error → completed
93
+ ```
94
+
95
+ resume 流:`Runner.resume(token, outcome, taskConfig)` → pre-CAS 守卫(gate-match/version/workspaceHandle)→ `store.resolve` 原子 CAS(exactly-once)→ 重入 runLocked 应用 pending 决策。
96
+
97
+ ---
98
+
99
+ ## 4. 设计路线(已发版的演进脉络,从 CHANGELOG/design 反推)
100
+
101
+ | 阶段 | 版本 | 主题 | 关键 design |
102
+ |------|------|------|-------------|
103
+ | MVP | 0.2.0 | 库(进程内)+ 基本任务循环 + Gitea npm 发布 | design/01 |
104
+ | 1.0 | 1.1.0 | 抽象层 seam 总表(Brain/Hands/Session 三平面) | design/06 |
105
+ | 记忆/prompt | 0.4.0 | memory tool + prompt harness(harvest CodeWhale/Anthropic) | design/05 |
106
+ | 缓存友好 | 1.19/1.22 | 前缀缓存纪律 STABLE→VARIABLE + stableSystem + cacheHitRate | design/09 |
107
+ | 持久化 seam | 1.21 | SessionStore/Repo + CAS 乐观锁(F2) | design/10,07 |
108
+ | 模型路由 | 1.24/1.25 | roles 回退链 + selectModel + @-model 安全解析 | design/11 |
109
+ | 老师模式 | 1.29–1.35 | escalation cascade + 老师 JSON + 接管 + 策略仓库 | design/12-15 |
110
+ | 可观测/韧性 | 1.37/1.38 | trace seam + 定价表 + 预算闸 + 断路器 + 分级超时 | design/17 |
111
+ | CC parity | 1.80–1.87.x | 单兵 floor ≥ Claude Code(召回/压缩 anti-drift/委派) | design/64,65,66 |
112
+ | **四原语** | 1.61–1.67 | 委派(1B)/手(44)/steering(47)/远端 seam(48)/checkpoint(45) | design/44-48 |
113
+ | v1.5 远端 | 1.69 | 远端 suspend/resume 运行时集成(45×48) | design/49 |
114
+ | fan-out/cancel | 1.71 | runTaskStream fan-out + suspended-cancel | design/50,51 |
115
+ | PG 适配 | 1.94 | 四 durable seam 全 PG 化 + pgvector 三档 | (stores/pg) |
116
+ | vendored 清剿 | 1.98.0 | 死代码清除 + skills 第一方化(黑盒#5)+ 契约组测试 + 月度上游 diff | design/71 |
117
+ | **Unreleased** | (待发) | design/72:repo_map(OPT-1)/suspend-loop cap/sensitive-path policy | design/72 |
118
+
119
+ > **断点**:`package.json=1.99.0` 是一次**未完成的发版**(见 DOC-CORRECTIONS C-1);Unreleased 段=design/72 的代码已合但未 tag。
120
+
121
+ ---
122
+
123
+ ## 5. 当前能力矩阵(代码核实)
124
+
125
+ | 能力 | 状态 | 证据 |
126
+ |------|------|------|
127
+ | 单任务循环 + native 工具 + 并行工具批 | ✅ | runtask.ts / agent-loop |
128
+ | OpenAI + Anthropic 双脑(流式/工具/图片/reasoning 回灌/前缀缓存) | ✅ | brain/{openai,anthropic} |
129
+ | failover / routing / degrading / circuit-breaker / 分级超时 | ✅ | brain/* |
130
+ | 思考兼容层(design/46,thinkingFormat 分发) | ✅ | brain/openai.ts compat |
131
+ | 手原语(fs 工具带 + bash/bash_readonly + repo_map) | ✅ | tools/fs/* |
132
+ | 延迟工具披露(tool_search) | ✅ | runner/tool-disclosure |
133
+ | 结构化输出(submit_output) / report_blocked / skill | ✅ | runner/synthetic-tools |
134
+ | 三态权限 + hooks(design/37) + sensitive-path policy(72) | ✅ | tool-policy/hooks/sensitive-path-policy |
135
+ | durable suspend/resume(F4 人审门,exactly-once CAS,跨副本) | ✅ | checkpoint-store + runner resume |
136
+ | suspend-loop cap(design/72 §2.2B) | ✅ | checkpoint suspendCount + assemble suspend.loop |
137
+ | 远端 ExecutionEnv seam(suspendVM/resumeVM/execStream/connect/destroy) | ✅ | core/remote-env |
138
+ | checkpoint `reopen`(resolved→pending CAS,post-CAS env-restore 失败补偿,d1c2750) | ✅ | core/checkpoint-store(注:`reopen` 是 **CheckpointStore** 方法,非 RemoteExecutionEnv) |
139
+ | session 持久化 + CAS + wake 对账 + 分支地板(F3) | ✅ | session/session-store/session-reconcile |
140
+ | 自动压缩(任务间 + 任务内 turn-boundary,1.88+)+ context-edit | ✅ | engine/compaction + auto-compaction |
141
+ | L2 记忆 + 选择性召回(65)+ 写侧整合(41) | ✅ | core/memory* |
142
+ | 编排:subagent / team / cascade / teacher / verify / agent-definition | ✅ | agents/*(详见 ORCHESTRATION-STATUS) |
143
+ | 验证栈:exec-gate(L2 MECH)+ verify(L3 去相关判)+ property-harness | ✅ | exec-gate/verify/property-harness |
144
+ | 可观测:trace(OTel)+ pricing(整数 micro-USD)+ cache-break-detect | ✅ | core/{trace,pricing,cache-break-detector} |
145
+ | MCP 真连 + 命名空间 + allowTools + resources | ✅ | core/mcp(⚠️ isError 丢=P-1) |
146
+ | HTTP/SSE 服务(createTaskServer) | ✅ | server/http(⚠️ 断连不取消=P-2) |
147
+ | egress 受控(design/70,ToolSpec.egress + gate tighten) | ✅ | prepare-task egress 收集 |
148
+ | PG 参照适配(session/checkpoint/toolresult/memory) | ✅ | stores/pg(⚠️ 缺 reopen=P-9) |
149
+ | **资源切片 suspend/resume(长自治跑)** | 🟡 | design/74:slices 1/2/3a/3b/3c 已提交(**suspend 触发器现已建成+绿**,`3e5c52d`);**剩** Slice 4 账本机制 + Slice 6 service 半边 + Slice 7 minors(见 §6.2,快速移动)|
150
+
151
+ ---
152
+
153
+ ## 6. 后续 Roadmap(从代码 + design + memory 反推,带状态)
154
+
155
+ ### 6.1 立即(bookkeeping + 止血)
156
+ - **release-cut + CHANGELOG**:把 Unreleased(design/72)tag 成正式版,补 1.99.0 处置(降回或正名);加 CI 版本一致性 guard(已 pin)。✅可立即做
157
+ - **生产 bug 修复**:见 `PRODUCTION-ISSUES.md` P-1/P-3/P-4/P-6(SAFE 文件,高杠杆)。
158
+
159
+ ### 6.2 在飞(另一谱系,design/74)🟡 ⚠️ 快速移动——活真相源=git log + memory `project-engine-resilience-fixes`
160
+ **资源切片 suspend/resume**——leader 持总预算,每次 run=一个 slice(`maxCostUsd=min(窗口,账本剩余)`),撞边界在 turn_boundary 干净 suspend、账本累加、resume 拨下一 slice。
161
+ - **已建(审计中从 Slice 2 推进到 3c)**:resource_limit checkpoint 类型臂 + ResourceLedger + version 2 + resume/read 半边 + `shouldStopAfterTurn`(VENDOR.md #16)+ `serializeCheckpointState`(3a)+ `commitSuspendSaga`(3b)+ **suspend 触发器(3c `3e5c52d`,绿)**:`TaskSpec.resourceSuspend?:{scope}` opt-in + `suspendForResource(reason)` 闭包(prepare-task.ts:1012)+ `requestStopAfterTurn` 干净停(:1072)+ turn/budget cap→suspended(runtask.ts:836-841)。
162
+ - **未建**:Slice 4 账本机制(put debit / resume re-seed / 跨 slice stats 聚合 / slice maxCostUsd 从 ledger 切——类型在、机制未接)+ 整个 service 半边(resumeCheckpoint 资源臂 / durable-inject relax / WorkerReport gate 字段 / belt→diff-patch / RESOURCE_SUSPEND_TTL reaper)+ Slice 7 minors。
163
+ > 第一遍(HEAD=`d7724ff`)记的"suspend 触发器未建 / requestStopAfterTurn 零调用者"**已被 `3e5c52d` 推翻**(见 `ADDENDUM-second-pass.md` §A)。
164
+
165
+ ### 6.3 v2 编排(proposed,主要在 service profile)🔵
166
+ - **design/68 LLM-Planner**:Router(难度路由,默认 single,fail-closed)+ 有界 Decomposer(2-4 不相交文件子任务)+ 反应式 replan-lite。spec 定稿。**设计为 all-profile / zero-new-core**——core 依赖项(fan-out + suspended-cancel + exec-gate + property-harness + checkpoint + steering + cost stats)**全 shipped**;planner 本体在 service。
167
+ - **design/73 §1 反馈自进化(grounded outcome ledger)**:每任务发 TaskOutcome(task-signature/model/cost + 机械 oracle 结果),service 聚合调 router/budget/repair/model。**红线**:只有机械信号(exec-gate/property-harness)驱动自动改动,LLM-assisted 仅看板。core 部分=薄 seam(emit TaskOutcome,像 Tracer)。**未建**(grep TaskOutcome=0);门控在 service 机械-outcome 数据量 + 离线回测。
168
+ - **design/73 §2 per-user 记忆 + 时间硬化**:v1=现有原语 + per-user 部署(memory.scope=user-id);v1.5=temporal 硬化(MemoryStore 加 validAt/invalidAt/supersededBy + recall 机械过滤过期 + RECALL_CAVEAT 从警告升级为机械门);service 跑 Graphiti 后端。**未建**(grep validAt=0);门控真实企业 per-user 需求。
169
+
170
+ ### 6.4 评估优先(proposed)🔵
171
+ - **design/72 §3 / OPT-3 CI 异步验证**:agent git push(egress 门)→ `wait_for_ci` 工具返回 suspend 指令(durable-ask 变体,approver=异步 webhook)→ service webhook 收 CI 结果 → `resumeWithVerification(token, {ci_result})`。**evaluate-first**:先判现有 durable-suspend 是否已承载(很可能零/薄 core)。
172
+
173
+ ### 6.5 已确认延迟(非偷懒)⏸
174
+ - **adaptive DAG planner**:价值判决 FIRM 不建(campaign 证 single 主导,fan-out 仅为 speed/cost,must-decompose 在可负担规模不出现);精确门控在 task#2b 数据 + 真巨型仓。design/68 明禁建 DynTaskMAS 4-组件运行时图。
175
+ - **L4 静态分析**(design/57):probe-12 显示集成-judge + property-harness 已覆盖显式契约/枚举/单位,无新证据翻案。
176
+ - **property-harness 类扩展**(交换律/逆/metamorphic/多实现):数据门控,等 service 结构-mutant 分布。
177
+ - **resume 语义指纹**("是否同一动作?"):真但更大的版本;design/72 的 count-cap 是更便宜的真修法、已 ship。
178
+ - **repo_map v1.5(检索/embedding)/ v2(tree-sitter)**:v1.5 门控 service code-embedder(复用 MemoryStore seam);v2 经注入的 ExecutionEnv 能力(core 保持 dep-light)。
179
+ - RouteLLM 动态难度路由 / 物理拆包 / design/25,29 backlog:低价值延迟。
180
+
181
+ ### 6.6 悬空/未写❓
182
+ - **design/69**(design/00 称"下一阶段主线 GitHub+CI/CD")——**文件不存在**,真 roadmap 在 design/72 + memory project-coding-roadmap-next。应补写或重定向(见 DOC-CORRECTIONS C-6)。
183
+
184
+ ---
185
+
186
+ ## 7. 真实考场(场景驱动,memory project-mission-2026-06-14)
187
+ 当前主线 = **Beatsep Kotlin 迁移真考场**(service AI 跑 campaign:task#2a-2d 全 PASS、独立验证引擎质量过硬、ledger 起账)。目标=证全闭环(task→plan→实现→对真 oracle 验→merge→编译+测试过,可重复,引擎自恢复,**无人在正确性回路**)+ 修一切 break。🔴 头号缺口=oracle 失败无自修复(service 仓 ROBUSTNESS-BACKLOG)。