@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,600 @@
1
+ import { Type } from "typebox";
2
+ import { sanitizeUntrustedText } from "./untrusted-text.js";
3
+ /**
4
+ * Selective memory recall (design/65 §2.2 — port of CC `findRelevantMemories`). For a LARGE memory scope,
5
+ * instead of injecting the whole `<user_memory>` block (inject-all), we inject a compact **manifest** (one
6
+ * header line per note) + a side-query that picks the ≤K relevant note ids + only those bodies. Small
7
+ * scopes keep inject-all (the common case after consolidation) — this path is threshold-gated, so most
8
+ * tasks pay nothing.
9
+ *
10
+ * The model side-query is an injected **seam** ({@link MemorySelector}); core provides a brain-backed
11
+ * default ({@link createBrainMemorySelector}) and a deployment can override it. The pipeline here is pure +
12
+ * deterministic given a selector: it validates the returned ids against the manifest (rejects hallucinated
13
+ * ids, council #5), caps at K, applies a hard timeout (council #12), and on ANY selector failure/timeout
14
+ * DEGRADES to inject-all (council #4 — never silently drop knowledge). Output goes in the variable tail
15
+ * (manifest + selected bodies are per-user/volatile, like the current memory block).
16
+ */
17
+ /** Default max notes the side-query may select (CC `findRelevantMemories` ≤5). */
18
+ export const DEFAULT_MAX_SELECTED = 5;
19
+ /** Default max 1-hop link-followed notes appended after the selected ones (design/65 P3). */
20
+ export const DEFAULT_MAX_LINKED = 3;
21
+ /** Default side-query hard timeout (ms) — council #12; on timeout we degrade to inject-all. */
22
+ export const DEFAULT_SELECT_TIMEOUT_MS = 5_000;
23
+ /** Manifest double-cap (council #7): truncate at whichever of line/byte cap hits first. */
24
+ const MANIFEST_MAX_LINES = 200;
25
+ const MANIFEST_MAX_BYTES = 25_000;
26
+ /** B-3: byte cap on the combined SELECTED note bodies injected into the system prompt (the manifest and
27
+ * inject-all paths are already capped; this closes the one uncapped injection path). */
28
+ const SELECTED_BODY_MAX_BYTES = 50_000;
29
+ const ONE_DAY_MS = 24 * 60 * 60 * 1_000;
30
+ const ONE_WEEK_MS = 7 * ONE_DAY_MS;
31
+ /** Approx. month boundary for natural-language age: 30.44 days. (A rounded average month — the exact mean
32
+ * Gregorian month is 365.25/12 ≈ 30.4375 days; the rounded `30.44` is a hair longer and is the value the
33
+ * buckets/tests are calibrated to. The earlier `(365.25 / 12)` parenthetical was the only inconsistency —
34
+ * the comment now matches the constant exactly.) */
35
+ const ONE_MONTH_MS = 30.44 * ONE_DAY_MS;
36
+ /**
37
+ * Render a memory note's age as a natural-language phrase (CC-parity P0-1, design/65). CC's eval found
38
+ * models reason about memory age much better from natural language ("3 days ago") than from a boolean
39
+ * "older note" flag (verify-claims 0/2 → 3/3 once the age was spelled out), because the model can weigh
40
+ * staleness proportionally instead of as a single cliff. This is the relative phrase only; the
41
+ * point-in-time / verify-before-trust discipline still lives in {@link RECALL_CAVEAT} + the per-note
42
+ * "verify it's still current" hint (the age is ADDITIONAL signal, not a replacement).
43
+ *
44
+ * Buckets (each chooses the coarsest unit that's ≥1): `today` (<1 day, incl. future mtime / clock skew →
45
+ * clamped to today, never a negative age), `yesterday` (1–2 days), `N days ago` (2–7 days),
46
+ * `N weeks ago` (1 week – ~1 month), `N months ago` (≥ ~1 month). N is floored to the whole unit.
47
+ */
48
+ export function formatMemoryAge(ageMs) {
49
+ if (ageMs < ONE_DAY_MS)
50
+ return "today"; // also catches negatives (future mtime / clock skew)
51
+ if (ageMs < 2 * ONE_DAY_MS)
52
+ return "yesterday";
53
+ if (ageMs < ONE_WEEK_MS)
54
+ return `${Math.floor(ageMs / ONE_DAY_MS)} days ago`;
55
+ if (ageMs < ONE_MONTH_MS) {
56
+ const weeks = Math.floor(ageMs / ONE_WEEK_MS);
57
+ return `${weeks} ${weeks === 1 ? "week" : "weeks"} ago`;
58
+ }
59
+ const months = Math.floor(ageMs / ONE_MONTH_MS);
60
+ return `${months} ${months === 1 ? "month" : "months"} ago`;
61
+ }
62
+ /**
63
+ * Read-side recall caveat (design/65 §8#2 / §9#1 — ported from CC's MEMORY_DRIFT_CAVEAT +
64
+ * TRUSTING_RECALL_SECTION). The council found CC's two-section form is **eval-validated** (verify-claims
65
+ * 0/2→3/3) and that the structure carries the effect: the precise decision-point heading
66
+ * "## Before recommending from memory" scored 3/3 while an abstract heading or a buried bullet scored 0/3.
67
+ * So this is deliberately TWO sections — a drift bullet + a titled action section with the frame-shift
68
+ * sentence and concrete verify actions — NOT one merged paragraph (same semantics, 3× worse eval).
69
+ * MEMORY_SAFETY already carries the authority hierarchy; this adds the point-in-time / verify-before-trust
70
+ * discipline selective recall specifically needs.
71
+ */
72
+ export const RECALL_CAVEAT = "These notes were recalled as relevant, but they are point-in-time observations from when they were " +
73
+ "written — they may now be stale. Trust current tool output over memory, and update or remove a note you " +
74
+ "find is wrong.\n\n" +
75
+ "## Before recommending from memory\n" +
76
+ '- "The memory says X exists" is not the same as "X exists now" — a note is not proof the thing still exists.\n' +
77
+ "- If the user is about to act on your recommendation (not just asking about history), verify first.\n" +
78
+ "- If a note names a file, check the file exists; if it names a function or symbol, grep for it; if it names a flag or value, read the current source.\n" +
79
+ "- Memory is a snapshot from when it was written, not a live view — prefer `git log` or reading the code over recalling the snapshot.";
80
+ /**
81
+ * Resolve the `[[name]]` references in the selected notes' bodies to manifest headers — ONE hop
82
+ * (design/65 P3: "recall one note → bring its [[links]]"; linked bodies are NOT re-scanned, so a link
83
+ * chain can't pull in the whole graph). Pure-text convention: names resolve against the manifest's
84
+ * `name` field; an unresolved name is silently skipped (a `[[link]]` to a not-yet-written note is legal
85
+ * authoring, design/65 §2.1); a name collision resolves to the newest note (strict mtime `>`; on a
86
+ * tie the first-encountered header wins). Already-selected targets are excluded (they're injected
87
+ * anyway). Returns at most `max` ids, in first-mention order.
88
+ */
89
+ export function resolveLinkedIds(headers, selected, max) {
90
+ if (max <= 0 || selected.length === 0)
91
+ return [];
92
+ const byName = new Map();
93
+ for (const h of headers) {
94
+ if (!h.name)
95
+ continue;
96
+ const prev = byName.get(h.name);
97
+ if (!prev || h.mtimeMs > prev.mtimeMs)
98
+ byName.set(h.name, h); // collision → newest wins
99
+ }
100
+ const selectedIds = new Set(selected.map((r) => r.id));
101
+ const out = [];
102
+ const seen = new Set();
103
+ for (const r of selected) {
104
+ for (const m of r.text.matchAll(/\[\[([^[\]\n]{1,128})\]\]/g)) {
105
+ const target = byName.get(m[1].trim());
106
+ if (!target || selectedIds.has(target.id) || seen.has(target.id))
107
+ continue;
108
+ seen.add(target.id);
109
+ out.push(target.id);
110
+ if (out.length >= max)
111
+ return out;
112
+ }
113
+ }
114
+ return out;
115
+ }
116
+ /** One physical line, whatever the stored value contains. `type`/`description` are MODEL-AUTHORED
117
+ * (the `remember` tool and typed consolidation ADDs accept both) — an embedded newline would forge
118
+ * extra manifest lines ("- fake-id: …"). Forged ids are already rejected by `validateSelectedIds`,
119
+ * but the selector LLM still reads the forged text; collapse whitespace at the render choke point so
120
+ * every store/inlet is covered (self-review 2026-06-11, same class as the selector-fence gap). */
121
+ function manifestField(s, cap) {
122
+ const t = s.replace(/\s+/g, " ").trim();
123
+ return t.length > cap ? `${t.slice(0, cap)}…` : t;
124
+ }
125
+ /** Render the manifest as compact lines, double-capped (council #7). One line per note, guaranteed. */
126
+ export function buildManifestText(headers) {
127
+ const lines = [];
128
+ let bytes = 0;
129
+ let truncated;
130
+ for (const h of headers) {
131
+ if (lines.length >= MANIFEST_MAX_LINES) {
132
+ truncated = "lines";
133
+ break;
134
+ }
135
+ const tag = h.type ? `[${manifestField(h.type, 32)}] ` : "";
136
+ const line = `- ${h.id}: ${tag}${manifestField(h.description, 300)}`;
137
+ const lb = Buffer.byteLength(line, "utf8") + 1;
138
+ if (bytes + lb > MANIFEST_MAX_BYTES) {
139
+ truncated = "bytes";
140
+ break;
141
+ }
142
+ lines.push(line);
143
+ bytes += lb;
144
+ }
145
+ const note = truncated ? `\n<manifest truncated: ${truncated} cap reached; ${headers.length - lines.length} notes omitted — consolidation should shrink memory>` : "";
146
+ return lines.join("\n") + note;
147
+ }
148
+ /** Keep only ids present in the manifest (reject hallucinated, council #5), de-duped, capped at `max`. */
149
+ export function validateSelectedIds(headers, ids, max) {
150
+ const valid = new Set(headers.map((h) => h.id));
151
+ const out = [];
152
+ const seen = new Set();
153
+ for (const id of ids) {
154
+ if (out.length >= max)
155
+ break; // B-2 (round-2 audit): check BEFORE push so maxSelected:0 selects 0, not 1
156
+ if (valid.has(id) && !seen.has(id)) {
157
+ seen.add(id);
158
+ out.push(id);
159
+ }
160
+ }
161
+ return out;
162
+ }
163
+ /**
164
+ * Render the BODY of a selective-recall block: the optional `recall` manifest index + the selected note
165
+ * bodies (+ 1-hop linked notes), WITHOUT the outer `<user_memory>` wrapper and WITHOUT {@link RECALL_CAVEAT}.
166
+ * The wrapper + caveat are the caller's job — `composeSelectiveMemoryBlock` (single-scope) places ONE caveat
167
+ * inside ONE `<user_memory scope=… mode="selective">`, and the layered renderer places ONE caveat inside ONE
168
+ * `<user_memory mode="selective">` ahead of N `<scope>` subsections (MAJOR fix: no nested fences, no per-scope
169
+ * caveat duplication).
170
+ *
171
+ * `recallable` controls the "Memory index — call recall …" affordance (MAJOR fix): the on-demand `recall` tool
172
+ * is bound to a SINGLE scope, so the "load in full via recall" instruction is only TRUE for that scope. Pass
173
+ * `false` for non-recallable layers — the selected bodies are already rendered inline, so the index is just a
174
+ * false affordance that wastes a tool call (model searches the wrong scope → "No memory matches").
175
+ *
176
+ * Notes are tagged with their natural-language age (CC-parity P0-1, design/65; >1-day-old ones keep the
177
+ * "verify it's still current" hint, council #8). `linked` (design/65 P3) are 1-hop `[[name]]`-followed notes,
178
+ * rendered in their own clearly-labeled subsection AFTER the selected ones — expanded as DATA under the same
179
+ * fence/sanitize/byte-cap discipline (design/65 §8#9: a followed link must not become markup or escalate authority).
180
+ */
181
+ export function composeSelectiveBody(manifestText, selected, nowMs, linked = [], recallable = true) {
182
+ const renderNote = (r, label) => {
183
+ // CC-parity P0-1: spell the age out in natural language (models reason about staleness far better
184
+ // from "3 days ago" than a boolean older-note flag — CC eval 0/2 → 3/3). The >1-day "verify it's
185
+ // still current" hint is RETAINED (RECALL_CAVEAT-level discipline; age is additional signal, not a
186
+ // replacement). Future mtime / clock skew clamps to "today" (formatMemoryAge guards negatives).
187
+ const ageMs = nowMs - r.mtimeMs;
188
+ const verify = ageMs > ONE_DAY_MS ? " — verify it's still current" : "";
189
+ const stale = ` (written ${formatMemoryAge(ageMs)}${verify})`;
190
+ // A-7 (round-2 audit): note text + manifest descriptions are persisted, model-influenced content
191
+ // injected into the SYSTEM prompt — neutralize wrapper/system-reminder tags so a note can't escape
192
+ // its fence and forge system authority (same fence-escape class as composeMemoryBlock). The label
193
+ // (a [[name]]) is sanitized too: names come from appendStructured callers today, but nothing
194
+ // guarantees they stay non-model-authored forever (council backlog-3 defensive fix). renderNote owns
195
+ // the label/body SEPARATOR (a trailing space) so the call site passes the bare `[[name]]` — the
196
+ // separator is not baked into every caller (robustness fix: one source of truth for the spacing).
197
+ const prefix = label ? `${sanitizeUntrustedText(label, ["user_memory"])} ` : "";
198
+ return `- ${prefix}${sanitizeUntrustedText(r.text, ["user_memory"])}${stale}`;
199
+ };
200
+ let body = selected.map((r) => renderNote(r)).join("\n");
201
+ if (linked.length > 0) {
202
+ body +=
203
+ `\n\nLinked notes (followed one hop from [[name]] references above — same staleness caveats apply):\n` +
204
+ linked.map((r) => renderNote(r, r.name ? `[[${r.name}]]` : "")).join("\n");
205
+ }
206
+ // B-3 (round-2 audit): the manifest has a 200-line/25KB cap and inject-all has a 100KB cap, but the
207
+ // SELECTED note bodies had NO byte cap — one oversized selected note injected unbounded text into the
208
+ // system prompt. Cap the combined selected (+ linked) bodies (UTF-8 boundary safe).
209
+ if (Buffer.byteLength(body, "utf8") > SELECTED_BODY_MAX_BYTES) {
210
+ const buf = Buffer.from(body, "utf8");
211
+ let cut = SELECTED_BODY_MAX_BYTES;
212
+ while (cut > 0 && (buf[cut] & 0xc0) === 0x80)
213
+ cut--;
214
+ body = `${buf.subarray(0, cut).toString("utf8")}\n<selected notes truncated to ${SELECTED_BODY_MAX_BYTES} bytes>`;
215
+ }
216
+ const selectedSection = selected.length > 0 ? `\n\nRelevant notes:\n${body}` : "\n\n(no notes selected as relevant to this task)";
217
+ // B-4 (round-2 audit): `recall` is a LEXICAL/keyword search (searchScored), not a by-id fetch, and its
218
+ // results don't render ids — telling the model to "fetch by id" sent it down a dead path (id → "No
219
+ // memory matches"). Steer it to search by keywords from the description instead. MAJOR fix: only emit
220
+ // this affordance for the scope `recall` is actually bound to (recallable) — for any other layer the
221
+ // index is a false promise (the search would run against the wrong scope and miss).
222
+ const manifestSection = recallable
223
+ ? `Memory index — to load a note in full, call Recall with keywords from its description:\n${sanitizeUntrustedText(manifestText, ["user_memory"])}`
224
+ : "";
225
+ return `${manifestSection}${selectedSection}`;
226
+ }
227
+ /** Render the single-scope selective block: ONE `<user_memory scope=… mode="selective">` with ONE
228
+ * {@link RECALL_CAVEAT} at the top and the {@link composeSelectiveBody} (manifest + selected bodies + links).
229
+ * `recall` is bound to this single scope, so the manifest affordance is recallable. *
230
+ * @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
231
+ * longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
232
+ */
233
+ export function composeSelectiveMemoryBlock(scope, manifestText, selected, nowMs, linked = []) {
234
+ return (`<user_memory scope="${scope}" mode="selective">\n` +
235
+ `${RECALL_CAVEAT}\n\n` +
236
+ `${composeSelectiveBody(manifestText, selected, nowMs, linked)}\n` +
237
+ `</user_memory>`);
238
+ }
239
+ /**
240
+ * Run the selective-recall pipeline. Returns the composed block (+ {@link SelectiveRecallResult.surfacedIds}),
241
+ * or `{ degrade: true, surfacedIds: [] }` when the selector fails/times out (caller falls back to inject-all —
242
+ * never drops knowledge, council #4). Degrade always reports `surfacedIds: []`: inject-all is a best-effort
243
+ * full dump (head-truncated at the cap), so it cannot honestly attribute a precise per-id surface, and the
244
+ * caller already holds the prior ids — degrade does NOT advance the durable surfaced-set.
245
+ *
246
+ * CC-parity P1 (durable cross-worker de-dup): when {@link SelectiveRecallOptions.priorSurfacedIds} is given,
247
+ * those ids are dropped from the candidate headers BEFORE the manifest is built and BEFORE the selector runs,
248
+ * so an already-shown note is invisible to the selector (and therefore cannot be re-selected, re-link-followed,
249
+ * or re-rendered). `surfacedIds` reports what THIS call rendered, for the caller's durable surfaced-set.
250
+ *
251
+ * @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
252
+ * longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
253
+ */
254
+ export async function selectAndComposeMemory(opts) {
255
+ if (!opts.store.listStructuredNotes || !opts.store.getByIds)
256
+ return { degrade: true, surfacedIds: [] };
257
+ const allHeaders = await opts.store.listStructuredNotes(opts.scope);
258
+ if (allHeaders.length === 0)
259
+ return { degrade: true, surfacedIds: [] }; // nothing structured to select from
260
+ // CC-parity P1: filter out already-surfaced notes at the MANIFEST layer (CC's `alreadySurfaced`). The
261
+ // selector, the manifest text, link-following, and getByIds all operate on `headers` — so a prior-surfaced
262
+ // id is fully invisible downstream (can't be re-selected, can't be a [[link]] target, can't be re-rendered).
263
+ const headers = opts.priorSurfacedIds?.size
264
+ ? allHeaders.filter((h) => !opts.priorSurfacedIds.has(h.id))
265
+ : allHeaders;
266
+ // After filtering, if nothing new remains, EVERY selectable candidate was already surfaced earlier. This is
267
+ // a SUCCESS ("no new memory to inject"), NOT a degrade: returning `degrade` here would make the caller
268
+ // fall back to inject-all and re-dump the WHOLE scope — including the already-shown notes — which defeats
269
+ // the whole point of the de-dup (the bug this branch fixes). So return the `{ block: undefined }` no-new
270
+ // success branch: the caller injects NOTHING new (it routes this off the non-degrade path), and we report
271
+ // `[]` surfaced (no NEW note added; the prior ids are already in the caller's durable store). This is the
272
+ // CONTRAST with the empty-scope/store-incapable/selector-failure cases above + below, which ARE degrades
273
+ // (the scope had no selectable candidates AT ALL, or the selector blew up → inject-all is the safe floor).
274
+ if (headers.length === 0)
275
+ return { block: undefined, surfacedIds: [] };
276
+ const manifestText = buildManifestText(headers);
277
+ const max = opts.maxSelected ?? DEFAULT_MAX_SELECTED;
278
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_SELECT_TIMEOUT_MS;
279
+ // Internal abort controller so a TIMEOUT (or an outer abort) actually CANCELS the selector's inner work
280
+ // (a brain sub-task), not just rejects our wrapper — otherwise the sub-task keeps burning API after we've
281
+ // already degraded (council §9#2). The selector receives `ac.signal`; on timeout we abort it.
282
+ const ac = new AbortController();
283
+ // B-5 (round-2 audit): if the outer signal is ALREADY aborted, addEventListener("abort") never fires —
284
+ // pre-check so we abort the inner controller immediately instead of letting the selector burn its full
285
+ // timeout on a task that's already cancelled.
286
+ if (opts.signal?.aborted)
287
+ ac.abort();
288
+ const onOuterAbort = () => ac.abort();
289
+ opts.signal?.addEventListener("abort", onOuterAbort, { once: true });
290
+ let ids;
291
+ try {
292
+ ids = await withTimeout(opts.selector({ objective: opts.objective, manifest: headers, recentTools: opts.recentTools }, ac.signal), timeoutMs, () => ac.abort());
293
+ }
294
+ catch {
295
+ // Selector threw / timed out / aborted → caller injects-all (safe side, council #4). inject-all is a
296
+ // best-effort FULL DUMP that `composeMemoryBlock` HARD-TRUNCATES to MAX_MEMORY_BYTES (100 KiB), keeping
297
+ // only the HEAD slice — and `read()` renders oldest-first, so over-cap content silently drops the NEWEST
298
+ // (tail) notes. Returning `headers.map(h => h.id)` here would assert ALL bodies were surfaced, including
299
+ // the dropped tail; a caller that closes the durable loop would append those un-shown ids to
300
+ // `priorSurfacedIds` and they could NEVER be selected again = permanent silent knowledge loss for any
301
+ // scope whose flat content exceeds the cap (the recall gate already fires at 8 KiB). Degrade is NOT a
302
+ // precise per-id surface that can be de-duped (the caller already holds the prior ids), so we report `[]`:
303
+ // degrade does not advance the durable surfaced-set. (MAJOR review fix.)
304
+ return { degrade: true, surfacedIds: [] };
305
+ }
306
+ finally {
307
+ opts.signal?.removeEventListener("abort", onOuterAbort);
308
+ }
309
+ const chosen = validateSelectedIds(headers, ids, max);
310
+ const records = chosen.length > 0 ? await opts.store.getByIds(opts.scope, chosen) : [];
311
+ // design/65 P3: one-hop [[name]] link-following over the SELECTED notes. Deterministic + store-only
312
+ // (no extra LLM call); a failure here must not sink a recall that already succeeded → fail-open to
313
+ // the un-linked block.
314
+ let linked = [];
315
+ const maxLinked = opts.maxLinked ?? DEFAULT_MAX_LINKED;
316
+ if (records.length > 0 && maxLinked > 0) {
317
+ try {
318
+ const linkedIds = resolveLinkedIds(headers, records, maxLinked);
319
+ if (linkedIds.length > 0)
320
+ linked = await opts.store.getByIds(opts.scope, linkedIds);
321
+ }
322
+ catch {
323
+ linked = [];
324
+ }
325
+ }
326
+ // CC-parity P1: surfacedIds = the note ids whose BODIES this call actually rendered (the validated
327
+ // selection + the 1-hop linked notes). Derived from the RETURNED records, not from `chosen`/`linkedIds`,
328
+ // so a getByIds that silently skipped a vanished id is not falsely reported as surfaced. The caller
329
+ // appends these to its durable surfaced-set and feeds it back as `priorSurfacedIds` next time.
330
+ const surfacedIds = [...records.map((r) => r.id), ...linked.map((r) => r.id)];
331
+ return {
332
+ block: composeSelectiveMemoryBlock(opts.scope, manifestText, records, opts.nowMs ?? Date.now(), linked),
333
+ surfacedIds,
334
+ };
335
+ }
336
+ // ============================================================================
337
+ // design/84 Seam A — multi-scope (layered) selective recall
338
+ // ============================================================================
339
+ /** A `(scope, id)` composite key for the multi-scope durable de-dup (design/84 Seam A decision 5). Note ids
340
+ * are only unique WITHIN a scope, so the cross-scope `priorSurfacedKeys`/`surfacedKeys` set MUST be keyed on
341
+ * both. Core owns the FORMAT so a caller can't drift the wire format (decision 7) — the encoding is OPAQUE
342
+ * and length-prefixes the scope so a scope/id containing the separator cannot forge a collision.
343
+ *
344
+ * ONE-WAY by design (codex MINOR (d)): the key is only ever PRODUCED here (`surfacedKeys`) and compared by
345
+ * STRING EQUALITY against the caller's persisted set ({@link LayeredRecallOptions.priorSurfacedKeys}, applied
346
+ * at memory-recall.ts via `priorSurfacedKeys.has(encodeSurfacedKey(h.scope, h.id))`). Nothing ever needs the
347
+ * `(scope, id)` BACK out of a key, so there is intentionally NO `decodeSurfacedKey` — adding a decode would
348
+ * widen the public surface (and invite callers to parse the opaque format) for zero consumer. Treat the key
349
+ * as an opaque token: persist it, feed it back, compare for equality — never split it. */
350
+ export function encodeSurfacedKey(scope, id) {
351
+ return `${scope.length}:${scope}:${id}`;
352
+ }
353
+ /**
354
+ * Multi-scope (layered) selective recall (design/84 Seam A decision 5). Merges each scope's
355
+ * {@link MemoryStore.listStructuredNotes} into ONE manifest (each header tagged with its scope), lets the
356
+ * selector pick ids from the merged manifest, then fetches the selected bodies per-scope via
357
+ * {@link MemoryStore.getByIds} and renders ONE `<user_memory>` block with the selected notes grouped under a
358
+ * `<scope …>` subsection IN LIST ORDER (stable layers first = cacheable prefix, volatile last = tail). The
359
+ * `(scope,id)` composite de-dup ({@link LayeredRecallOptions.priorSurfacedKeys}) is applied at the manifest
360
+ * layer so an already-shown note in ANY scope is invisible to the selector.
361
+ *
362
+ * v1 (decision 6): accepts the N-small (3–4 layer) fan-out of one `listStructuredNotes`/`getByIds` per scope
363
+ * — no pre-built batch getByIds. Degrades to inject-all (the caller's job, like the single-scope path) on
364
+ * store-incapability / empty / selector failure. Threshold-gated by the caller, so a small layering pays nothing.
365
+ *
366
+ * @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
367
+ * longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
368
+ */
369
+ export async function selectAndComposeLayeredMemory(opts) {
370
+ if (!opts.store.listStructuredNotes || !opts.store.getByIds)
371
+ return { degrade: true, surfacedKeys: [] };
372
+ const listStructuredNotes = opts.store.listStructuredNotes.bind(opts.store);
373
+ const getByIds = opts.store.getByIds.bind(opts.store);
374
+ // Fan out one manifest read per scope (v1 N-small; reads are independent → parallel) and tag each header
375
+ // with its scope. Order is preserved (scopes in list order → headers grouped by scope in list order).
376
+ const perScope = await Promise.all(opts.scopes.map(async (scope) => {
377
+ const headers = await listStructuredNotes(scope);
378
+ return headers.map((h) => ({ ...h, scope }));
379
+ }));
380
+ const allScoped = perScope.flat();
381
+ if (allScoped.length === 0)
382
+ return { degrade: true, surfacedKeys: [] }; // nothing structured to select from
383
+ // CC-parity P1, composite-keyed: drop already-surfaced (scope,id) notes BEFORE the manifest/selector see them.
384
+ const scoped = opts.priorSurfacedKeys?.size
385
+ ? allScoped.filter((h) => !opts.priorSurfacedKeys.has(encodeSurfacedKey(h.scope, h.id)))
386
+ : allScoped;
387
+ if (scoped.length === 0)
388
+ return { block: undefined, surfacedKeys: [] }; // every candidate already surfaced (no-new success)
389
+ // The selector matches ids by string equality, but the SAME id can exist in two scopes. Key the selector's
390
+ // view by a manifest-LOCAL token (`s{scopeIndex}#{id}`) so a selected token unambiguously resolves back to a
391
+ // (scope,id) pair. The token is single-line + whitespace-free (the manifest-line/equality contract holds).
392
+ const scopeIndex = new Map();
393
+ opts.scopes.forEach((s, i) => scopeIndex.set(s, i));
394
+ const tokenOf = (h) => `s${scopeIndex.get(h.scope) ?? 0}#${h.id}`;
395
+ const byToken = new Map();
396
+ const manifestHeaders = scoped.map((h) => {
397
+ const token = tokenOf(h);
398
+ byToken.set(token, h);
399
+ // Re-tag the manifest header id with the local token so the selector picks tokens; prefix the description
400
+ // with the scope so the model sees layer provenance (decision 5: header carries scope attribution).
401
+ return { ...h, id: token, description: `[${h.scope}] ${h.description}` };
402
+ });
403
+ const max = opts.maxSelected ?? DEFAULT_MAX_SELECTED;
404
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_SELECT_TIMEOUT_MS;
405
+ const ac = new AbortController();
406
+ if (opts.signal?.aborted)
407
+ ac.abort();
408
+ const onOuterAbort = () => ac.abort();
409
+ opts.signal?.addEventListener("abort", onOuterAbort, { once: true });
410
+ let chosenTokens;
411
+ try {
412
+ const ids = await withTimeout(opts.selector({ objective: opts.objective, manifest: manifestHeaders, recentTools: opts.recentTools }, ac.signal), timeoutMs, () => ac.abort());
413
+ chosenTokens = validateSelectedIds(manifestHeaders, ids, max);
414
+ }
415
+ catch {
416
+ return { degrade: true, surfacedKeys: [] }; // selector failed/timed out → caller injects-all (council #4)
417
+ }
418
+ finally {
419
+ opts.signal?.removeEventListener("abort", onOuterAbort);
420
+ }
421
+ // Resolve selected tokens back to (scope,id), group by scope, and fetch bodies per scope (N-small fan-out).
422
+ const wantByScope = new Map();
423
+ for (const token of chosenTokens) {
424
+ const h = byToken.get(token);
425
+ if (!h)
426
+ continue;
427
+ const arr = wantByScope.get(h.scope) ?? [];
428
+ arr.push(h.id);
429
+ wantByScope.set(h.scope, arr);
430
+ }
431
+ // 1-hop [[name]] link-following is per-scope (a [[link]] resolves within its own scope's manifest — links
432
+ // do not cross layers in v1). Done after the initial fetch, same maxLinked budget split is per-scope.
433
+ const maxLinked = opts.maxLinked ?? DEFAULT_MAX_LINKED;
434
+ const recordsByScope = new Map();
435
+ const linkedByScope = new Map();
436
+ const scopedHeadersByScope = new Map();
437
+ for (const h of scoped) {
438
+ const arr = scopedHeadersByScope.get(h.scope) ?? [];
439
+ arr.push(h);
440
+ scopedHeadersByScope.set(h.scope, arr);
441
+ }
442
+ for (const [scope, ids] of wantByScope) {
443
+ const records = ids.length > 0 ? await getByIds(scope, ids) : [];
444
+ recordsByScope.set(scope, records);
445
+ if (records.length > 0 && maxLinked > 0) {
446
+ try {
447
+ const linkedIds = resolveLinkedIds(scopedHeadersByScope.get(scope) ?? [], records, maxLinked);
448
+ if (linkedIds.length > 0)
449
+ linkedByScope.set(scope, await getByIds(scope, linkedIds));
450
+ }
451
+ catch {
452
+ /* fail-open to the un-linked block for this scope */
453
+ }
454
+ }
455
+ }
456
+ // Render ONE block, scopes IN LIST ORDER (stable prefix first, volatile tail last — the §5 cache layout).
457
+ // MAJOR fix: ONE `<user_memory mode="selective">` wrapper with ONE RECALL_CAVEAT at the top + N raw `<scope>`
458
+ // subsections carrying only the BODY (composeSelectiveBody — no inner wrapper, no per-scope caveat). This
459
+ // mirrors the clean single-fence shape of composeLayeredMemoryBlock instead of nesting full `<user_memory>`
460
+ // blocks (which duplicated the multi-line caveat once per scope and emitted N+1 `<user_memory>` tags).
461
+ const nowMs = opts.nowMs ?? Date.now();
462
+ // MAJOR fix: the on-demand `recall` tool is bound to the BASE scope only (scopes[0], prepare-task.ts) — so the
463
+ // "load in full via recall" manifest index is only TRUE for the base layer. Other layers omit it (their
464
+ // selected bodies are already rendered inline); emitting it would send the model to search the wrong scope.
465
+ const recallableScope = opts.scopes[0];
466
+ const surfacedKeys = [];
467
+ const subsections = [];
468
+ for (const scope of opts.scopes) {
469
+ const records = recordsByScope.get(scope) ?? [];
470
+ const linked = linkedByScope.get(scope) ?? [];
471
+ if (records.length === 0 && linked.length === 0)
472
+ continue; // omit a layer with no selected notes (tight + stable)
473
+ for (const r of records)
474
+ surfacedKeys.push(encodeSurfacedKey(scope, r.id));
475
+ for (const r of linked)
476
+ surfacedKeys.push(encodeSurfacedKey(scope, r.id));
477
+ // DESIGN-1 (council, hot path): the manifest text is consumed by composeSelectiveBody ONLY for the
478
+ // recallable scope (the "load in full via recall" index is suppressed for every other layer). Building it
479
+ // for a non-recallable scope (regex `[type]` field + byte-length per header) is wasted CPU, so compute it
480
+ // only when this scope IS the recallable one; otherwise pass "" (composeSelectiveBody ignores it). No
481
+ // semantic change — the non-recallable branch already drops the manifest section.
482
+ const recallable = scope === recallableScope;
483
+ const body = composeSelectiveBody(recallable ? buildManifestText(scopedHeadersByScope.get(scope) ?? []) : "", records, nowMs, linked, recallable);
484
+ subsections.push(`<scope name="${sanitizeUntrustedText(scope, ["user_memory"])}">\n${body}\n</scope>`);
485
+ }
486
+ // MINOR (codex): the empty-selection semantic DELIBERATELY differs from the single-scope path
487
+ // (`selectAndComposeMemory`), and the difference is intentional, not an oversight:
488
+ // - single-scope: when the selector picks NO ids it still injects a manifest-only block carrying the
489
+ // "(no notes selected …)" line + the load-in-full-via-recall index, so the model keeps the affordance
490
+ // to `recall` against the one scope (pinned by cc-parity/memory-recall.test.ts:120 + core-memory-coverage:408).
491
+ // - multi-scope (HERE): when EVERY layer's subsection is empty there is nothing renderable to layer, and
492
+ // the per-layer manifests were already side-queried; injecting an empty multi-scope shell adds only
493
+ // noise (no body, no actionable index for the non-recallable layers). So inject NOTHING (`block:
494
+ // undefined`) — the `recall` tool stays mounted, so the model retains the same recall affordance the
495
+ // single-scope manifest block would have advertised. Net: both paths preserve recall-on-demand; only the
496
+ // rendered shell differs, by design.
497
+ if (subsections.length === 0)
498
+ return { block: undefined, surfacedKeys: [] }; // every layer empty → inject nothing (see note above)
499
+ return {
500
+ block: `<user_memory mode="selective">\n${RECALL_CAVEAT}\n\n${subsections.join("\n")}\n</user_memory>`,
501
+ surfacedKeys,
502
+ };
503
+ }
504
+ const SELECT_PROMPT = "You choose which long-term memory notes are relevant to the current task. You are given the task and a " +
505
+ "numbered manifest of note ids + descriptions. Return ONLY the ids that are clearly useful for this task " +
506
+ "(at most a handful). If you are unsure, leave it out — an empty list is fine. For any tool the task will " +
507
+ "use, keep notes about its gotchas/warnings/known-issues but skip pure usage/API notes (that is when " +
508
+ "gotchas matter most). Never invent an id that is not in the manifest.";
509
+ /**
510
+ * Default brain-backed {@link MemorySelector} (design/65 §6.2 / council #1: the side-query uses the MAIN
511
+ * brain — a cheap model is our unproven ABOVE assumption, not a CC port). Runs a tiny isolated sub-task
512
+ * with an `{ids}` output schema, no tools, a short budget. Returns the selected ids (validated downstream).
513
+ *
514
+ * @deprecated design/138 S4 — served ONLY the retired legacy memoryStore injection path; the Runner no
515
+ * longer calls this. Kept exported one major for direct/standalone store-level use; removal is the next major.
516
+ */
517
+ export function createBrainMemorySelector(runner, opts = {}) {
518
+ const schema = Type.Object({ ids: Type.Array(Type.String()) });
519
+ return async (req, signal) => {
520
+ // Council (backlog-3): the manifest carries persisted, model-influenced content (descriptions AND
521
+ // now model-suggested [type] tags from typed consolidation ADDs) — sanitize it here exactly like
522
+ // composeSelectiveMemoryBlock does, so a hostile type/description can't smuggle wrapper tags into
523
+ // the side-query sub-prompt either.
524
+ const manifest = sanitizeUntrustedText(buildManifestText(req.manifest), ["user_memory"]);
525
+ const tools = req.recentTools?.length ? `\n\nTools this task will use: ${req.recentTools.join(", ")}.` : "";
526
+ const objective = `TASK:\n${req.objective}${tools}\n\nMEMORY MANIFEST (id: description):\n${manifest}\n\nReturn the relevant note ids.`;
527
+ // B-6 (round-2 audit): pre-generate the isolated session's id so a runTask THROW (prepare-time
528
+ // config/env/store failures — the loop itself soft-fails into a result) still leaves us a handle
529
+ // to release. Previously `r.sessionId` was the only handle and a throw leaked the pinned session.
530
+ const selectorSessionId = `memsel-${globalThis.crypto.randomUUID()}`;
531
+ let r;
532
+ try {
533
+ r = await runner.runTask({
534
+ objective,
535
+ systemPrompt: SELECT_PROMPT,
536
+ ...(opts.model ? { model: opts.model } : {}),
537
+ sessionId: selectorSessionId,
538
+ tools: [],
539
+ outputSchema: schema,
540
+ enableBlockedReport: false,
541
+ memory: undefined, // never recurse into memory injection
542
+ limits: { timeoutSec: opts.timeoutSec ?? 20, maxTurns: 2 },
543
+ signal,
544
+ });
545
+ }
546
+ catch (e) {
547
+ // best-effort: the acquire may or may not have happened; release must not mask the real error
548
+ // (the pipeline degrades to inject-all on this throw, same as a soft-fail — §80 semantics).
549
+ try {
550
+ if (opts.release)
551
+ await opts.release(selectorSessionId);
552
+ }
553
+ catch {
554
+ /* TTL sweeper is the backstop */
555
+ }
556
+ throw e;
557
+ }
558
+ try {
559
+ // §80 (behavioral threshold-scan caught this; two council rounds missed it): runTask SOFT-FAILS without
560
+ // throwing (status="failed"/"timeout", structuredOutput undefined) on gateway 5xx / rate-limit / budget /
561
+ // no-model. Returning [] here would be indistinguishable from "the model legitimately selected nothing" —
562
+ // the pipeline would then inject a body-less manifest = SILENT knowledge loss, bypassing the
563
+ // degrade-to-inject-all guard (§8#4), which only fires on throw/timeout. So a non-completed sub-task
564
+ // THROWS → the pipeline degrades to inject-all (never drops knowledge). [] is legal ONLY when the
565
+ // sub-task COMPLETED and genuinely produced an empty selection.
566
+ if (r.status !== "completed") {
567
+ throw new Error(`memory-select sub-task did not complete (status=${r.status}) — degrading to inject-all`);
568
+ }
569
+ const out = r.structuredOutput;
570
+ if (!out || !Array.isArray(out.ids)) {
571
+ throw new Error("memory-select sub-task produced no { ids } output — degrading to inject-all");
572
+ }
573
+ return out.ids.filter((x) => typeof x === "string");
574
+ }
575
+ finally {
576
+ if (opts.release)
577
+ await opts.release(r.sessionId); // release the selector's isolated session (no leak)
578
+ }
579
+ };
580
+ }
581
+ /** Race `p` against a timeout; on timeout, fire `onTimeout` (cancels the inner work) then reject.
582
+ * Deliberately distinct from tool-policy.ts's private `withTimeout` (which RESOLVES a computed
583
+ * fallback) — the contracts differ on purpose (reject-to-degrade here vs resolve-to-deny there);
584
+ * both are module-private, so the divergence cannot leak (council backlog-3 DESIGN-1, accepted). */
585
+ function withTimeout(p, ms, onTimeout) {
586
+ return new Promise((resolve, reject) => {
587
+ const timer = setTimeout(() => {
588
+ onTimeout?.();
589
+ reject(new Error("memory-select timeout"));
590
+ }, ms);
591
+ p.then((v) => {
592
+ clearTimeout(timer);
593
+ resolve(v);
594
+ }, (e) => {
595
+ clearTimeout(timer);
596
+ reject(e);
597
+ });
598
+ });
599
+ }
600
+ //# sourceMappingURL=memory-recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-recall.js","sourceRoot":"","sources":["../../src/core/memory-recall.ts"],"names":[],"mappings":"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"}