pulseed 0.6.0 → 0.6.2

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 (1051) hide show
  1. package/README.md +19 -17
  2. package/dist/adapters/types/a2a.d.ts +24 -24
  3. package/dist/base/config/global-config.d.ts +4 -4
  4. package/dist/base/config/identity-loader.d.ts +12 -3
  5. package/dist/base/config/identity-loader.d.ts.map +1 -1
  6. package/dist/base/config/identity-loader.js +15 -7
  7. package/dist/base/config/identity-loader.js.map +1 -1
  8. package/dist/base/state/state-manager-goal-write.d.ts +1 -1
  9. package/dist/base/state/state-manager-goal-write.d.ts.map +1 -1
  10. package/dist/base/state/state-manager.d.ts +2 -6
  11. package/dist/base/state/state-manager.d.ts.map +1 -1
  12. package/dist/base/state/state-manager.js.map +1 -1
  13. package/dist/base/state/state-write-fence.d.ts +7 -0
  14. package/dist/base/state/state-write-fence.d.ts.map +1 -0
  15. package/dist/base/state/state-write-fence.js +2 -0
  16. package/dist/base/state/state-write-fence.js.map +1 -0
  17. package/dist/base/types/companion.d.ts +2 -0
  18. package/dist/base/types/companion.d.ts.map +1 -0
  19. package/dist/base/types/companion.js +2 -0
  20. package/dist/base/types/companion.js.map +1 -0
  21. package/dist/base/types/index.d.ts +1 -0
  22. package/dist/base/types/index.d.ts.map +1 -1
  23. package/dist/base/types/index.js +1 -0
  24. package/dist/base/types/index.js.map +1 -1
  25. package/dist/grounding/contracts.d.ts +13 -0
  26. package/dist/grounding/contracts.d.ts.map +1 -1
  27. package/dist/grounding/providers/knowledge-provider.d.ts.map +1 -1
  28. package/dist/grounding/providers/knowledge-provider.js +25 -3
  29. package/dist/grounding/providers/knowledge-provider.js.map +1 -1
  30. package/dist/grounding/providers/soil-provider.d.ts.map +1 -1
  31. package/dist/grounding/providers/soil-provider.js +28 -3
  32. package/dist/grounding/providers/soil-provider.js.map +1 -1
  33. package/dist/grounding/providers/static-policy-provider.d.ts +3 -1
  34. package/dist/grounding/providers/static-policy-provider.d.ts.map +1 -1
  35. package/dist/grounding/providers/static-policy-provider.js +4 -3
  36. package/dist/grounding/providers/static-policy-provider.js.map +1 -1
  37. package/dist/index.d.ts +12 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +6 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/interface/chat/chat-event-state.d.ts +2 -0
  42. package/dist/interface/chat/chat-event-state.d.ts.map +1 -1
  43. package/dist/interface/chat/chat-event-state.js +110 -10
  44. package/dist/interface/chat/chat-event-state.js.map +1 -1
  45. package/dist/interface/chat/chat-events.d.ts +23 -1
  46. package/dist/interface/chat/chat-events.d.ts.map +1 -1
  47. package/dist/interface/chat/chat-history.d.ts +4739 -1
  48. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  49. package/dist/interface/chat/chat-history.js +40 -2
  50. package/dist/interface/chat/chat-history.js.map +1 -1
  51. package/dist/interface/chat/chat-runner-commands.d.ts +2 -32
  52. package/dist/interface/chat/chat-runner-commands.d.ts.map +1 -1
  53. package/dist/interface/chat/chat-runner-commands.js +2 -2
  54. package/dist/interface/chat/chat-runner-commands.js.map +1 -1
  55. package/dist/interface/chat/chat-runner-contracts.d.ts +152 -0
  56. package/dist/interface/chat/chat-runner-contracts.d.ts.map +1 -0
  57. package/dist/interface/chat/chat-runner-contracts.js +2 -0
  58. package/dist/interface/chat/chat-runner-contracts.js.map +1 -0
  59. package/dist/interface/chat/chat-runner-event-bridge.d.ts +11 -2
  60. package/dist/interface/chat/chat-runner-event-bridge.d.ts.map +1 -1
  61. package/dist/interface/chat/chat-runner-event-bridge.js +127 -16
  62. package/dist/interface/chat/chat-runner-event-bridge.js.map +1 -1
  63. package/dist/interface/chat/chat-runner-routes.d.ts +86 -12
  64. package/dist/interface/chat/chat-runner-routes.d.ts.map +1 -1
  65. package/dist/interface/chat/chat-runner-routes.js +385 -17
  66. package/dist/interface/chat/chat-runner-routes.js.map +1 -1
  67. package/dist/interface/chat/chat-runner-runtime.d.ts +1 -1
  68. package/dist/interface/chat/chat-runner-runtime.d.ts.map +1 -1
  69. package/dist/interface/chat/chat-runner-runtime.js +4 -0
  70. package/dist/interface/chat/chat-runner-runtime.js.map +1 -1
  71. package/dist/interface/chat/chat-runner.d.ts +10 -71
  72. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  73. package/dist/interface/chat/chat-runner.js +425 -56
  74. package/dist/interface/chat/chat-runner.js.map +1 -1
  75. package/dist/interface/chat/chat-session-store.d.ts +2 -0
  76. package/dist/interface/chat/chat-session-store.d.ts.map +1 -1
  77. package/dist/interface/chat/chat-session-store.js +3 -6
  78. package/dist/interface/chat/chat-session-store.js.map +1 -1
  79. package/dist/interface/chat/cross-platform-session-global.d.ts +2 -1
  80. package/dist/interface/chat/cross-platform-session-global.d.ts.map +1 -1
  81. package/dist/interface/chat/cross-platform-session-global.js +4 -10
  82. package/dist/interface/chat/cross-platform-session-global.js.map +1 -1
  83. package/dist/interface/chat/cross-platform-session.d.ts +30 -1
  84. package/dist/interface/chat/cross-platform-session.d.ts.map +1 -1
  85. package/dist/interface/chat/cross-platform-session.js +418 -51
  86. package/dist/interface/chat/cross-platform-session.js.map +1 -1
  87. package/dist/interface/chat/event-subscriber.js +2 -2
  88. package/dist/interface/chat/event-subscriber.js.map +1 -1
  89. package/dist/interface/chat/failure-recovery.js +1 -1
  90. package/dist/interface/chat/failure-recovery.js.map +1 -1
  91. package/dist/interface/chat/freeform-route-classifier.d.ts +21 -0
  92. package/dist/interface/chat/freeform-route-classifier.d.ts.map +1 -0
  93. package/dist/interface/chat/freeform-route-classifier.js +43 -0
  94. package/dist/interface/chat/freeform-route-classifier.js.map +1 -0
  95. package/dist/interface/chat/gateway-setup-status.d.ts +33 -0
  96. package/dist/interface/chat/gateway-setup-status.d.ts.map +1 -0
  97. package/dist/interface/chat/gateway-setup-status.js +44 -0
  98. package/dist/interface/chat/gateway-setup-status.js.map +1 -0
  99. package/dist/interface/chat/grounding.js +1 -1
  100. package/dist/interface/chat/grounding.js.map +1 -1
  101. package/dist/interface/chat/ingress-router.d.ts +31 -0
  102. package/dist/interface/chat/ingress-router.d.ts.map +1 -1
  103. package/dist/interface/chat/ingress-router.js +163 -7
  104. package/dist/interface/chat/ingress-router.js.map +1 -1
  105. package/dist/interface/chat/operation-progress.d.ts +17 -0
  106. package/dist/interface/chat/operation-progress.d.ts.map +1 -0
  107. package/dist/interface/chat/operation-progress.js +29 -0
  108. package/dist/interface/chat/operation-progress.js.map +1 -0
  109. package/dist/interface/chat/setup-config-write.d.ts +27 -0
  110. package/dist/interface/chat/setup-config-write.d.ts.map +1 -0
  111. package/dist/interface/chat/setup-config-write.js +79 -0
  112. package/dist/interface/chat/setup-config-write.js.map +1 -0
  113. package/dist/interface/chat/setup-dialogue.d.ts +199 -0
  114. package/dist/interface/chat/setup-dialogue.d.ts.map +1 -0
  115. package/dist/interface/chat/setup-dialogue.js +97 -0
  116. package/dist/interface/chat/setup-dialogue.js.map +1 -0
  117. package/dist/interface/chat/setup-secret-intake.d.ts +68 -0
  118. package/dist/interface/chat/setup-secret-intake.d.ts.map +1 -0
  119. package/dist/interface/chat/setup-secret-intake.js +84 -0
  120. package/dist/interface/chat/setup-secret-intake.js.map +1 -0
  121. package/dist/interface/chat/turn-language.d.ts +23 -0
  122. package/dist/interface/chat/turn-language.d.ts.map +1 -0
  123. package/dist/interface/chat/turn-language.js +46 -0
  124. package/dist/interface/chat/turn-language.js.map +1 -0
  125. package/dist/interface/cli/cli-command-registry.d.ts +1 -1
  126. package/dist/interface/cli/cli-command-registry.d.ts.map +1 -1
  127. package/dist/interface/cli/cli-command-registry.js +9 -1
  128. package/dist/interface/cli/cli-command-registry.js.map +1 -1
  129. package/dist/interface/cli/cli-runner.d.ts.map +1 -1
  130. package/dist/interface/cli/cli-runner.js +5 -2
  131. package/dist/interface/cli/cli-runner.js.map +1 -1
  132. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  133. package/dist/interface/cli/commands/daemon.js +20 -1
  134. package/dist/interface/cli/commands/daemon.js.map +1 -1
  135. package/dist/interface/cli/commands/goal-read.d.ts.map +1 -1
  136. package/dist/interface/cli/commands/goal-read.js +4 -0
  137. package/dist/interface/cli/commands/goal-read.js.map +1 -1
  138. package/dist/interface/cli/commands/memory.d.ts +3 -0
  139. package/dist/interface/cli/commands/memory.d.ts.map +1 -0
  140. package/dist/interface/cli/commands/memory.js +78 -0
  141. package/dist/interface/cli/commands/memory.js.map +1 -0
  142. package/dist/interface/cli/commands/operator-binding-status.d.ts +59 -0
  143. package/dist/interface/cli/commands/operator-binding-status.d.ts.map +1 -0
  144. package/dist/interface/cli/commands/operator-binding-status.js +257 -0
  145. package/dist/interface/cli/commands/operator-binding-status.js.map +1 -0
  146. package/dist/interface/cli/commands/plugin.d.ts.map +1 -1
  147. package/dist/interface/cli/commands/plugin.js +134 -12
  148. package/dist/interface/cli/commands/plugin.js.map +1 -1
  149. package/dist/interface/cli/commands/profile.d.ts +3 -0
  150. package/dist/interface/cli/commands/profile.d.ts.map +1 -0
  151. package/dist/interface/cli/commands/profile.js +459 -0
  152. package/dist/interface/cli/commands/profile.js.map +1 -0
  153. package/dist/interface/cli/commands/run.d.ts +2 -2
  154. package/dist/interface/cli/commands/run.d.ts.map +1 -1
  155. package/dist/interface/cli/commands/run.js.map +1 -1
  156. package/dist/interface/cli/commands/runtime.d.ts.map +1 -1
  157. package/dist/interface/cli/commands/runtime.js +108 -2
  158. package/dist/interface/cli/commands/runtime.js.map +1 -1
  159. package/dist/interface/cli/commands/setup/steps-gateway.js +14 -3
  160. package/dist/interface/cli/commands/setup/steps-gateway.js.map +1 -1
  161. package/dist/interface/cli/commands/setup-wizard.d.ts +31 -0
  162. package/dist/interface/cli/commands/setup-wizard.d.ts.map +1 -1
  163. package/dist/interface/cli/commands/setup-wizard.js +118 -0
  164. package/dist/interface/cli/commands/setup-wizard.js.map +1 -1
  165. package/dist/interface/cli/commands/telegram.d.ts.map +1 -1
  166. package/dist/interface/cli/commands/telegram.js +27 -3
  167. package/dist/interface/cli/commands/telegram.js.map +1 -1
  168. package/dist/interface/cli/setup.d.ts +3 -3
  169. package/dist/interface/cli/setup.d.ts.map +1 -1
  170. package/dist/interface/cli/setup.js +3 -2
  171. package/dist/interface/cli/setup.js.map +1 -1
  172. package/dist/interface/cli/utils/loop-runner.d.ts +1 -1
  173. package/dist/interface/cli/utils/loop-runner.d.ts.map +1 -1
  174. package/dist/interface/cli/utils.d.ts.map +1 -1
  175. package/dist/interface/cli/utils.js +5 -3
  176. package/dist/interface/cli/utils.js.map +1 -1
  177. package/dist/interface/tui/actions.d.ts.map +1 -1
  178. package/dist/interface/tui/actions.js +14 -6
  179. package/dist/interface/tui/actions.js.map +1 -1
  180. package/dist/interface/tui/app.d.ts +1 -7
  181. package/dist/interface/tui/app.d.ts.map +1 -1
  182. package/dist/interface/tui/app.js +71 -120
  183. package/dist/interface/tui/app.js.map +1 -1
  184. package/dist/interface/tui/chat-surface.d.ts +1 -0
  185. package/dist/interface/tui/chat-surface.d.ts.map +1 -1
  186. package/dist/interface/tui/chat-surface.js +15 -0
  187. package/dist/interface/tui/chat-surface.js.map +1 -1
  188. package/dist/interface/tui/entry-approval.js +2 -2
  189. package/dist/interface/tui/entry-approval.js.map +1 -1
  190. package/dist/interface/tui/entry-deps.d.ts +1 -1
  191. package/dist/interface/tui/entry-deps.d.ts.map +1 -1
  192. package/dist/interface/tui/entry-deps.js +54 -8
  193. package/dist/interface/tui/entry-deps.js.map +1 -1
  194. package/dist/interface/tui/input-action.d.ts +49 -0
  195. package/dist/interface/tui/input-action.d.ts.map +1 -0
  196. package/dist/interface/tui/input-action.js +46 -0
  197. package/dist/interface/tui/input-action.js.map +1 -0
  198. package/dist/interface/tui/intent-recognizer.js +1 -1
  199. package/dist/interface/tui/markdown-renderer.d.ts.map +1 -1
  200. package/dist/interface/tui/markdown-renderer.js +4 -1
  201. package/dist/interface/tui/markdown-renderer.js.map +1 -1
  202. package/dist/interface/tui/use-loop.d.ts +1 -1
  203. package/dist/interface/tui/use-loop.d.ts.map +1 -1
  204. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.d.ts +2 -0
  205. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.d.ts.map +1 -1
  206. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js +1 -0
  207. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js.map +1 -1
  208. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.d.ts.map +1 -1
  209. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js +15 -0
  210. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js.map +1 -1
  211. package/dist/orchestrator/execution/agent-loop/agent-loop-events.d.ts +4 -0
  212. package/dist/orchestrator/execution/agent-loop/agent-loop-events.d.ts.map +1 -1
  213. package/dist/orchestrator/execution/agent-loop/agent-loop-events.js.map +1 -1
  214. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.d.ts.map +1 -1
  215. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.js +3 -0
  216. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.js.map +1 -1
  217. package/dist/orchestrator/execution/agent-loop/agent-loop-result.d.ts +17 -0
  218. package/dist/orchestrator/execution/agent-loop/agent-loop-result.d.ts.map +1 -1
  219. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.d.ts +3 -0
  220. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.d.ts.map +1 -1
  221. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts +1 -0
  222. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts.map +1 -1
  223. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js +20 -3
  224. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js.map +1 -1
  225. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.d.ts.map +1 -1
  226. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.js +5 -3
  227. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.js.map +1 -1
  228. package/dist/orchestrator/execution/agent-loop/agent-timeline.d.ts +111 -0
  229. package/dist/orchestrator/execution/agent-loop/agent-timeline.d.ts.map +1 -0
  230. package/dist/orchestrator/execution/agent-loop/agent-timeline.js +249 -0
  231. package/dist/orchestrator/execution/agent-loop/agent-timeline.js.map +1 -0
  232. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts.map +1 -1
  233. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js +39 -25
  234. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js.map +1 -1
  235. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts.map +1 -1
  236. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js +20 -4
  237. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js.map +1 -1
  238. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts +1 -51
  239. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts.map +1 -1
  240. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js +3 -239
  241. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js.map +1 -1
  242. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.d.ts +60 -0
  243. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.d.ts.map +1 -0
  244. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.js +244 -0
  245. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.js.map +1 -0
  246. package/dist/orchestrator/execution/agent-loop/execution-policy.d.ts +2 -0
  247. package/dist/orchestrator/execution/agent-loop/execution-policy.d.ts.map +1 -1
  248. package/dist/orchestrator/execution/agent-loop/execution-policy.js +9 -3
  249. package/dist/orchestrator/execution/agent-loop/execution-policy.js.map +1 -1
  250. package/dist/orchestrator/execution/agent-loop/index.d.ts +1 -1
  251. package/dist/orchestrator/execution/agent-loop/index.d.ts.map +1 -1
  252. package/dist/orchestrator/execution/agent-loop/index.js +1 -1
  253. package/dist/orchestrator/execution/agent-loop/index.js.map +1 -1
  254. package/dist/orchestrator/execution/agent-loop/self-protection.d.ts +9 -0
  255. package/dist/orchestrator/execution/agent-loop/self-protection.d.ts.map +1 -0
  256. package/dist/orchestrator/execution/agent-loop/self-protection.js +74 -0
  257. package/dist/orchestrator/execution/agent-loop/self-protection.js.map +1 -0
  258. package/dist/orchestrator/execution/task/task-generation.d.ts +50 -2
  259. package/dist/orchestrator/execution/task/task-generation.d.ts.map +1 -1
  260. package/dist/orchestrator/execution/task/task-generation.js +19 -1
  261. package/dist/orchestrator/execution/task/task-generation.js.map +1 -1
  262. package/dist/orchestrator/execution/task/task-lifecycle.js +8 -11
  263. package/dist/orchestrator/execution/task/task-lifecycle.js.map +1 -1
  264. package/dist/orchestrator/execution/task/task-prompt-builder.d.ts.map +1 -1
  265. package/dist/orchestrator/execution/task/task-prompt-builder.js +9 -0
  266. package/dist/orchestrator/execution/task/task-prompt-builder.js.map +1 -1
  267. package/dist/orchestrator/execution/types/task-group.d.ts +68 -4
  268. package/dist/orchestrator/execution/types/task-group.d.ts.map +1 -1
  269. package/dist/orchestrator/execution/types/task.d.ts +100 -2
  270. package/dist/orchestrator/execution/types/task.d.ts.map +1 -1
  271. package/dist/orchestrator/execution/types/task.js +10 -0
  272. package/dist/orchestrator/execution/types/task.js.map +1 -1
  273. package/dist/orchestrator/goal/goal-decomposer.d.ts.map +1 -1
  274. package/dist/orchestrator/goal/goal-decomposer.js +2 -1
  275. package/dist/orchestrator/goal/goal-decomposer.js.map +1 -1
  276. package/dist/orchestrator/goal/goal-negotiator.d.ts.map +1 -1
  277. package/dist/orchestrator/goal/goal-negotiator.js +5 -2
  278. package/dist/orchestrator/goal/goal-negotiator.js.map +1 -1
  279. package/dist/orchestrator/goal/goal-suggest.d.ts +6 -6
  280. package/dist/orchestrator/goal/goal-validation.d.ts +4 -5
  281. package/dist/orchestrator/goal/goal-validation.d.ts.map +1 -1
  282. package/dist/orchestrator/goal/goal-validation.js +11 -17
  283. package/dist/orchestrator/goal/goal-validation.js.map +1 -1
  284. package/dist/orchestrator/goal/negotiator-prompts.d.ts.map +1 -1
  285. package/dist/orchestrator/goal/negotiator-prompts.js +8 -4
  286. package/dist/orchestrator/goal/negotiator-prompts.js.map +1 -1
  287. package/dist/orchestrator/goal/negotiator-steps.d.ts.map +1 -1
  288. package/dist/orchestrator/goal/negotiator-steps.js +7 -11
  289. package/dist/orchestrator/goal/negotiator-steps.js.map +1 -1
  290. package/dist/orchestrator/goal/types/goal-refiner.d.ts +6 -6
  291. package/dist/orchestrator/goal/types/goal.d.ts +161 -0
  292. package/dist/orchestrator/goal/types/goal.d.ts.map +1 -1
  293. package/dist/orchestrator/goal/types/goal.js +8 -0
  294. package/dist/orchestrator/goal/types/goal.js.map +1 -1
  295. package/dist/orchestrator/goal/types/negotiation.d.ts +120 -6
  296. package/dist/orchestrator/goal/types/negotiation.d.ts.map +1 -1
  297. package/dist/orchestrator/goal/types/negotiation.js +3 -0
  298. package/dist/orchestrator/goal/types/negotiation.js.map +1 -1
  299. package/dist/orchestrator/goal/types/suggest.d.ts +6 -6
  300. package/dist/orchestrator/loop/checkpoint-manager-loop.d.ts +1 -1
  301. package/dist/orchestrator/loop/checkpoint-manager-loop.d.ts.map +1 -1
  302. package/dist/orchestrator/loop/core-loop/capability.d.ts +1 -21
  303. package/dist/orchestrator/loop/core-loop/capability.d.ts.map +1 -1
  304. package/dist/orchestrator/loop/core-loop/capability.js +1 -150
  305. package/dist/orchestrator/loop/core-loop/capability.js.map +1 -1
  306. package/dist/orchestrator/loop/core-loop/contracts.d.ts +1 -318
  307. package/dist/orchestrator/loop/core-loop/contracts.d.ts.map +1 -1
  308. package/dist/orchestrator/loop/core-loop/contracts.js +1 -39
  309. package/dist/orchestrator/loop/core-loop/contracts.js.map +1 -1
  310. package/dist/orchestrator/loop/core-loop/control.d.ts +1 -26
  311. package/dist/orchestrator/loop/core-loop/control.d.ts.map +1 -1
  312. package/dist/orchestrator/loop/core-loop/control.js +1 -71
  313. package/dist/orchestrator/loop/core-loop/control.js.map +1 -1
  314. package/dist/orchestrator/loop/core-loop/decision-engine.d.ts +1 -78
  315. package/dist/orchestrator/loop/core-loop/decision-engine.d.ts.map +1 -1
  316. package/dist/orchestrator/loop/core-loop/decision-engine.js +1 -144
  317. package/dist/orchestrator/loop/core-loop/decision-engine.js.map +1 -1
  318. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.d.ts +1 -47
  319. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.d.ts.map +1 -1
  320. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.js +1 -376
  321. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.js.map +1 -1
  322. package/dist/orchestrator/loop/core-loop/evidence-ledger.d.ts +1 -21
  323. package/dist/orchestrator/loop/core-loop/evidence-ledger.d.ts.map +1 -1
  324. package/dist/orchestrator/loop/core-loop/evidence-ledger.js +1 -35
  325. package/dist/orchestrator/loop/core-loop/evidence-ledger.js.map +1 -1
  326. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts +1 -6
  327. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts.map +1 -1
  328. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js +1 -42
  329. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js.map +1 -1
  330. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts +1 -13
  331. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts.map +1 -1
  332. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js +1 -40
  333. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js.map +1 -1
  334. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts +1 -36
  335. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts.map +1 -1
  336. package/dist/orchestrator/loop/core-loop/iteration-kernel.js +1 -834
  337. package/dist/orchestrator/loop/core-loop/iteration-kernel.js.map +1 -1
  338. package/dist/orchestrator/loop/core-loop/learning.d.ts +1 -30
  339. package/dist/orchestrator/loop/core-loop/learning.d.ts.map +1 -1
  340. package/dist/orchestrator/loop/core-loop/learning.js +1 -91
  341. package/dist/orchestrator/loop/core-loop/learning.js.map +1 -1
  342. package/dist/orchestrator/loop/core-loop/phase-policy.d.ts +1 -19
  343. package/dist/orchestrator/loop/core-loop/phase-policy.d.ts.map +1 -1
  344. package/dist/orchestrator/loop/core-loop/phase-policy.js +1 -157
  345. package/dist/orchestrator/loop/core-loop/phase-policy.js.map +1 -1
  346. package/dist/orchestrator/loop/core-loop/phase-runtime.d.ts +1 -30
  347. package/dist/orchestrator/loop/core-loop/phase-runtime.d.ts.map +1 -1
  348. package/dist/orchestrator/loop/core-loop/phase-runtime.js +1 -102
  349. package/dist/orchestrator/loop/core-loop/phase-runtime.js.map +1 -1
  350. package/dist/orchestrator/loop/core-loop/phase-specs.d.ts +1 -1183
  351. package/dist/orchestrator/loop/core-loop/phase-specs.d.ts.map +1 -1
  352. package/dist/orchestrator/loop/core-loop/phase-specs.js +1 -341
  353. package/dist/orchestrator/loop/core-loop/phase-specs.js.map +1 -1
  354. package/dist/orchestrator/loop/core-loop/preparation.d.ts +1 -58
  355. package/dist/orchestrator/loop/core-loop/preparation.d.ts.map +1 -1
  356. package/dist/orchestrator/loop/core-loop/preparation.js +1 -367
  357. package/dist/orchestrator/loop/core-loop/preparation.js.map +1 -1
  358. package/dist/orchestrator/loop/core-loop/public-research.d.ts +1 -31
  359. package/dist/orchestrator/loop/core-loop/public-research.d.ts.map +1 -1
  360. package/dist/orchestrator/loop/core-loop/public-research.js +1 -111
  361. package/dist/orchestrator/loop/core-loop/public-research.js.map +1 -1
  362. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts +1 -8
  363. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts.map +1 -1
  364. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js +1 -432
  365. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js.map +1 -1
  366. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts +1 -10
  367. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts.map +1 -1
  368. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js +1 -175
  369. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js.map +1 -1
  370. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts +1 -40
  371. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts.map +1 -1
  372. package/dist/orchestrator/loop/core-loop/task-cycle.js +1 -407
  373. package/dist/orchestrator/loop/core-loop/task-cycle.js.map +1 -1
  374. package/dist/orchestrator/loop/core-loop.d.ts +1 -85
  375. package/dist/orchestrator/loop/core-loop.d.ts.map +1 -1
  376. package/dist/orchestrator/loop/core-loop.js +3 -625
  377. package/dist/orchestrator/loop/core-loop.js.map +1 -1
  378. package/dist/orchestrator/loop/durable-loop/capability.d.ts +22 -0
  379. package/dist/orchestrator/loop/durable-loop/capability.d.ts.map +1 -0
  380. package/dist/orchestrator/loop/durable-loop/capability.js +151 -0
  381. package/dist/orchestrator/loop/durable-loop/capability.js.map +1 -0
  382. package/dist/orchestrator/loop/durable-loop/contracts.d.ts +319 -0
  383. package/dist/orchestrator/loop/durable-loop/contracts.d.ts.map +1 -0
  384. package/dist/orchestrator/loop/durable-loop/contracts.js +40 -0
  385. package/dist/orchestrator/loop/durable-loop/contracts.js.map +1 -0
  386. package/dist/orchestrator/loop/durable-loop/control.d.ts +27 -0
  387. package/dist/orchestrator/loop/durable-loop/control.d.ts.map +1 -0
  388. package/dist/orchestrator/loop/durable-loop/control.js +72 -0
  389. package/dist/orchestrator/loop/durable-loop/control.js.map +1 -0
  390. package/dist/orchestrator/loop/durable-loop/decision-engine.d.ts +79 -0
  391. package/dist/orchestrator/loop/durable-loop/decision-engine.d.ts.map +1 -0
  392. package/dist/orchestrator/loop/durable-loop/decision-engine.js +145 -0
  393. package/dist/orchestrator/loop/durable-loop/decision-engine.js.map +1 -0
  394. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.d.ts +48 -0
  395. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.d.ts.map +1 -0
  396. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.js +386 -0
  397. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.js.map +1 -0
  398. package/dist/orchestrator/loop/durable-loop/evidence-ledger.d.ts +22 -0
  399. package/dist/orchestrator/loop/durable-loop/evidence-ledger.d.ts.map +1 -0
  400. package/dist/orchestrator/loop/durable-loop/evidence-ledger.js +36 -0
  401. package/dist/orchestrator/loop/durable-loop/evidence-ledger.js.map +1 -0
  402. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.d.ts +7 -0
  403. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.d.ts.map +1 -0
  404. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.js +43 -0
  405. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.js.map +1 -0
  406. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.d.ts +14 -0
  407. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.d.ts.map +1 -0
  408. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.js +41 -0
  409. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.js.map +1 -0
  410. package/dist/orchestrator/loop/durable-loop/iteration-kernel.d.ts +37 -0
  411. package/dist/orchestrator/loop/durable-loop/iteration-kernel.d.ts.map +1 -0
  412. package/dist/orchestrator/loop/durable-loop/iteration-kernel.js +835 -0
  413. package/dist/orchestrator/loop/durable-loop/iteration-kernel.js.map +1 -0
  414. package/dist/orchestrator/loop/durable-loop/learning.d.ts +31 -0
  415. package/dist/orchestrator/loop/durable-loop/learning.d.ts.map +1 -0
  416. package/dist/orchestrator/loop/durable-loop/learning.js +92 -0
  417. package/dist/orchestrator/loop/durable-loop/learning.js.map +1 -0
  418. package/dist/orchestrator/loop/durable-loop/phase-policy.d.ts +20 -0
  419. package/dist/orchestrator/loop/durable-loop/phase-policy.d.ts.map +1 -0
  420. package/dist/orchestrator/loop/durable-loop/phase-policy.js +158 -0
  421. package/dist/orchestrator/loop/durable-loop/phase-policy.js.map +1 -0
  422. package/dist/orchestrator/loop/durable-loop/phase-runtime.d.ts +31 -0
  423. package/dist/orchestrator/loop/durable-loop/phase-runtime.d.ts.map +1 -0
  424. package/dist/orchestrator/loop/durable-loop/phase-runtime.js +103 -0
  425. package/dist/orchestrator/loop/durable-loop/phase-runtime.js.map +1 -0
  426. package/dist/orchestrator/loop/durable-loop/phase-specs.d.ts +1269 -0
  427. package/dist/orchestrator/loop/durable-loop/phase-specs.d.ts.map +1 -0
  428. package/dist/orchestrator/loop/durable-loop/phase-specs.js +349 -0
  429. package/dist/orchestrator/loop/durable-loop/phase-specs.js.map +1 -0
  430. package/dist/orchestrator/loop/durable-loop/preparation.d.ts +59 -0
  431. package/dist/orchestrator/loop/durable-loop/preparation.d.ts.map +1 -0
  432. package/dist/orchestrator/loop/durable-loop/preparation.js +368 -0
  433. package/dist/orchestrator/loop/durable-loop/preparation.js.map +1 -0
  434. package/dist/orchestrator/loop/durable-loop/public-research.d.ts +32 -0
  435. package/dist/orchestrator/loop/durable-loop/public-research.d.ts.map +1 -0
  436. package/dist/orchestrator/loop/durable-loop/public-research.js +112 -0
  437. package/dist/orchestrator/loop/durable-loop/public-research.js.map +1 -0
  438. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.d.ts +9 -0
  439. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.d.ts.map +1 -0
  440. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.js +464 -0
  441. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.js.map +1 -0
  442. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.d.ts +11 -0
  443. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.d.ts.map +1 -0
  444. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.js +176 -0
  445. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.js.map +1 -0
  446. package/dist/orchestrator/loop/durable-loop/task-cycle.d.ts +41 -0
  447. package/dist/orchestrator/loop/durable-loop/task-cycle.d.ts.map +1 -0
  448. package/dist/orchestrator/loop/durable-loop/task-cycle.js +430 -0
  449. package/dist/orchestrator/loop/durable-loop/task-cycle.js.map +1 -0
  450. package/dist/orchestrator/loop/durable-loop.d.ts +92 -0
  451. package/dist/orchestrator/loop/durable-loop.d.ts.map +1 -0
  452. package/dist/orchestrator/loop/durable-loop.js +631 -0
  453. package/dist/orchestrator/loop/durable-loop.js.map +1 -0
  454. package/dist/orchestrator/loop/loop-report-helper.d.ts +1 -1
  455. package/dist/orchestrator/loop/loop-report-helper.d.ts.map +1 -1
  456. package/dist/orchestrator/loop/loop-result-types.d.ts +1 -1
  457. package/dist/orchestrator/loop/loop-result-types.d.ts.map +1 -1
  458. package/dist/orchestrator/loop/parallel-dispatch.d.ts +2 -2
  459. package/dist/orchestrator/loop/parallel-dispatch.d.ts.map +1 -1
  460. package/dist/orchestrator/loop/post-loop-hooks.d.ts +1 -1
  461. package/dist/orchestrator/loop/post-loop-hooks.d.ts.map +1 -1
  462. package/dist/orchestrator/loop/run-policy.d.ts +1 -1
  463. package/dist/orchestrator/loop/run-policy.d.ts.map +1 -1
  464. package/dist/orchestrator/loop/tree-loop-runner.d.ts +1 -1
  465. package/dist/orchestrator/loop/tree-loop-runner.d.ts.map +1 -1
  466. package/dist/orchestrator/loop/tree-loop-runner.js +1 -1
  467. package/dist/orchestrator/loop/tree-loop-runner.js.map +1 -1
  468. package/dist/orchestrator/strategy/divergent-exploration.d.ts +2 -1
  469. package/dist/orchestrator/strategy/divergent-exploration.d.ts.map +1 -1
  470. package/dist/orchestrator/strategy/divergent-exploration.js +119 -36
  471. package/dist/orchestrator/strategy/divergent-exploration.js.map +1 -1
  472. package/dist/orchestrator/strategy/strategy-helpers.d.ts +86 -4
  473. package/dist/orchestrator/strategy/strategy-helpers.d.ts.map +1 -1
  474. package/dist/orchestrator/strategy/strategy-manager-base.d.ts +6 -2
  475. package/dist/orchestrator/strategy/strategy-manager-base.d.ts.map +1 -1
  476. package/dist/orchestrator/strategy/strategy-manager-base.js +71 -18
  477. package/dist/orchestrator/strategy/strategy-manager-base.js.map +1 -1
  478. package/dist/orchestrator/strategy/types/strategy.d.ts +450 -14
  479. package/dist/orchestrator/strategy/types/strategy.d.ts.map +1 -1
  480. package/dist/orchestrator/strategy/types/strategy.js +30 -0
  481. package/dist/orchestrator/strategy/types/strategy.js.map +1 -1
  482. package/dist/platform/code-search/contracts.d.ts +3 -0
  483. package/dist/platform/code-search/contracts.d.ts.map +1 -1
  484. package/dist/platform/code-search/contracts.js.map +1 -1
  485. package/dist/platform/code-search/indexes/indexer.d.ts.map +1 -1
  486. package/dist/platform/code-search/indexes/indexer.js +3 -0
  487. package/dist/platform/code-search/indexes/indexer.js.map +1 -1
  488. package/dist/platform/code-search/indexes/semantic-index.d.ts.map +1 -1
  489. package/dist/platform/code-search/indexes/semantic-index.js +3 -0
  490. package/dist/platform/code-search/indexes/semantic-index.js.map +1 -1
  491. package/dist/platform/code-search/orchestrator.d.ts.map +1 -1
  492. package/dist/platform/code-search/orchestrator.js +14 -3
  493. package/dist/platform/code-search/orchestrator.js.map +1 -1
  494. package/dist/platform/code-search/query-planner.d.ts.map +1 -1
  495. package/dist/platform/code-search/query-planner.js +1 -17
  496. package/dist/platform/code-search/query-planner.js.map +1 -1
  497. package/dist/platform/code-search/reranker.d.ts +5 -1
  498. package/dist/platform/code-search/reranker.d.ts.map +1 -1
  499. package/dist/platform/code-search/reranker.js +9 -5
  500. package/dist/platform/code-search/reranker.js.map +1 -1
  501. package/dist/platform/corrections/index.d.ts +2 -0
  502. package/dist/platform/corrections/index.d.ts.map +1 -0
  503. package/dist/platform/corrections/index.js +2 -0
  504. package/dist/platform/corrections/index.js.map +1 -0
  505. package/dist/platform/corrections/memory-correction-ledger.d.ts +656 -0
  506. package/dist/platform/corrections/memory-correction-ledger.d.ts.map +1 -0
  507. package/dist/platform/corrections/memory-correction-ledger.js +120 -0
  508. package/dist/platform/corrections/memory-correction-ledger.js.map +1 -0
  509. package/dist/platform/corrections/memory-governance.d.ts +118 -0
  510. package/dist/platform/corrections/memory-governance.d.ts.map +1 -0
  511. package/dist/platform/corrections/memory-governance.js +32 -0
  512. package/dist/platform/corrections/memory-governance.js.map +1 -0
  513. package/dist/platform/corrections/memory-quarantine.d.ts +57 -0
  514. package/dist/platform/corrections/memory-quarantine.d.ts.map +1 -0
  515. package/dist/platform/corrections/memory-quarantine.js +42 -0
  516. package/dist/platform/corrections/memory-quarantine.js.map +1 -0
  517. package/dist/platform/corrections/user-memory-operations.d.ts +31 -0
  518. package/dist/platform/corrections/user-memory-operations.d.ts.map +1 -0
  519. package/dist/platform/corrections/user-memory-operations.js +139 -0
  520. package/dist/platform/corrections/user-memory-operations.js.map +1 -0
  521. package/dist/platform/dream/dream-activation.d.ts +161 -1
  522. package/dist/platform/dream/dream-activation.d.ts.map +1 -1
  523. package/dist/platform/dream/dream-activation.js +63 -14
  524. package/dist/platform/dream/dream-activation.js.map +1 -1
  525. package/dist/platform/dream/dream-consolidator.d.ts +5 -0
  526. package/dist/platform/dream/dream-consolidator.d.ts.map +1 -1
  527. package/dist/platform/dream/dream-consolidator.js +235 -13
  528. package/dist/platform/dream/dream-consolidator.js.map +1 -1
  529. package/dist/platform/dream/dream-event-workflows.d.ts +2 -2
  530. package/dist/platform/dream/dream-soil-mutation.d.ts.map +1 -1
  531. package/dist/platform/dream/dream-soil-mutation.js +10 -0
  532. package/dist/platform/dream/dream-soil-mutation.js.map +1 -1
  533. package/dist/platform/dream/dream-types.d.ts +430 -18
  534. package/dist/platform/dream/dream-types.d.ts.map +1 -1
  535. package/dist/platform/dream/dream-types.js +3 -0
  536. package/dist/platform/dream/dream-types.js.map +1 -1
  537. package/dist/platform/dream/playbook-memory.d.ts +17 -17
  538. package/dist/platform/drive/stall-detector/repetitive.d.ts.map +1 -1
  539. package/dist/platform/drive/stall-detector/repetitive.js +50 -5
  540. package/dist/platform/drive/stall-detector/repetitive.js.map +1 -1
  541. package/dist/platform/drive/stall-detector.d.ts +19 -0
  542. package/dist/platform/drive/stall-detector.d.ts.map +1 -1
  543. package/dist/platform/drive/stall-detector.js.map +1 -1
  544. package/dist/platform/drive/types/stall.d.ts +1 -1
  545. package/dist/platform/knowledge/knowledge-manager-agent-memory.d.ts +48 -0
  546. package/dist/platform/knowledge/knowledge-manager-agent-memory.d.ts.map +1 -1
  547. package/dist/platform/knowledge/knowledge-manager-agent-memory.js +154 -4
  548. package/dist/platform/knowledge/knowledge-manager-agent-memory.js.map +1 -1
  549. package/dist/platform/knowledge/knowledge-manager-lint.d.ts.map +1 -1
  550. package/dist/platform/knowledge/knowledge-manager-lint.js +98 -4
  551. package/dist/platform/knowledge/knowledge-manager-lint.js.map +1 -1
  552. package/dist/platform/knowledge/knowledge-manager.d.ts +41 -2
  553. package/dist/platform/knowledge/knowledge-manager.d.ts.map +1 -1
  554. package/dist/platform/knowledge/knowledge-manager.js +45 -5
  555. package/dist/platform/knowledge/knowledge-manager.js.map +1 -1
  556. package/dist/platform/knowledge/transfer/knowledge-transfer-apply.d.ts.map +1 -1
  557. package/dist/platform/knowledge/transfer/knowledge-transfer-apply.js +7 -3
  558. package/dist/platform/knowledge/transfer/knowledge-transfer-apply.js.map +1 -1
  559. package/dist/platform/knowledge/types/agent-memory.d.ts +1176 -48
  560. package/dist/platform/knowledge/types/agent-memory.d.ts.map +1 -1
  561. package/dist/platform/knowledge/types/agent-memory.js +13 -3
  562. package/dist/platform/knowledge/types/agent-memory.js.map +1 -1
  563. package/dist/platform/knowledge/types/embedding.d.ts +4 -4
  564. package/dist/platform/knowledge/types/knowledge.d.ts +53 -0
  565. package/dist/platform/knowledge/types/knowledge.d.ts.map +1 -1
  566. package/dist/platform/knowledge/types/knowledge.js +15 -0
  567. package/dist/platform/knowledge/types/knowledge.js.map +1 -1
  568. package/dist/platform/knowledge/types/memory-lifecycle.d.ts +2 -2
  569. package/dist/platform/observation/capability-detector/types.d.ts +4 -4
  570. package/dist/platform/observation/context-provider/collector.d.ts +2 -0
  571. package/dist/platform/observation/context-provider/collector.d.ts.map +1 -1
  572. package/dist/platform/observation/context-provider/collector.js +27 -2
  573. package/dist/platform/observation/context-provider/collector.js.map +1 -1
  574. package/dist/platform/observation/context-provider.d.ts +4 -0
  575. package/dist/platform/observation/context-provider.d.ts.map +1 -1
  576. package/dist/platform/observation/context-provider.js.map +1 -1
  577. package/dist/platform/observation/engine/observe-datasource-stage.d.ts +3 -2
  578. package/dist/platform/observation/engine/observe-datasource-stage.d.ts.map +1 -1
  579. package/dist/platform/observation/engine/observe-datasource-stage.js +2 -2
  580. package/dist/platform/observation/engine/observe-datasource-stage.js.map +1 -1
  581. package/dist/platform/observation/observation-apply.d.ts +1 -1
  582. package/dist/platform/observation/observation-apply.d.ts.map +1 -1
  583. package/dist/platform/observation/observation-apply.js +3 -3
  584. package/dist/platform/observation/observation-apply.js.map +1 -1
  585. package/dist/platform/observation/observation-datasource.d.ts +2 -2
  586. package/dist/platform/observation/observation-datasource.d.ts.map +1 -1
  587. package/dist/platform/observation/observation-datasource.js +13 -7
  588. package/dist/platform/observation/observation-datasource.js.map +1 -1
  589. package/dist/platform/observation/observation-engine.d.ts +1 -1
  590. package/dist/platform/observation/observation-engine.d.ts.map +1 -1
  591. package/dist/platform/observation/observation-engine.js +8 -6
  592. package/dist/platform/observation/observation-engine.js.map +1 -1
  593. package/dist/platform/observation/types/capability.d.ts +16 -16
  594. package/dist/platform/observation/workspace-context.d.ts +8 -1
  595. package/dist/platform/observation/workspace-context.d.ts.map +1 -1
  596. package/dist/platform/observation/workspace-context.js +35 -14
  597. package/dist/platform/observation/workspace-context.js.map +1 -1
  598. package/dist/platform/profile/proactive-feedback-proposals.d.ts +11 -0
  599. package/dist/platform/profile/proactive-feedback-proposals.d.ts.map +1 -0
  600. package/dist/platform/profile/proactive-feedback-proposals.js +106 -0
  601. package/dist/platform/profile/proactive-feedback-proposals.js.map +1 -0
  602. package/dist/platform/profile/profile-change-proposal.d.ts +464 -0
  603. package/dist/platform/profile/profile-change-proposal.d.ts.map +1 -0
  604. package/dist/platform/profile/profile-change-proposal.js +352 -0
  605. package/dist/platform/profile/profile-change-proposal.js.map +1 -0
  606. package/dist/platform/profile/relationship-profile.d.ts +351 -0
  607. package/dist/platform/profile/relationship-profile.d.ts.map +1 -0
  608. package/dist/platform/profile/relationship-profile.js +351 -0
  609. package/dist/platform/profile/relationship-profile.js.map +1 -0
  610. package/dist/platform/profile/retrieval-context.d.ts +12 -0
  611. package/dist/platform/profile/retrieval-context.d.ts.map +1 -0
  612. package/dist/platform/profile/retrieval-context.js +21 -0
  613. package/dist/platform/profile/retrieval-context.js.map +1 -0
  614. package/dist/platform/profile/user-md-profile-import.d.ts +73 -0
  615. package/dist/platform/profile/user-md-profile-import.d.ts.map +1 -0
  616. package/dist/platform/profile/user-md-profile-import.js +179 -0
  617. package/dist/platform/profile/user-md-profile-import.js.map +1 -0
  618. package/dist/platform/soil/content-projections.d.ts.map +1 -1
  619. package/dist/platform/soil/content-projections.js +17 -7
  620. package/dist/platform/soil/content-projections.js.map +1 -1
  621. package/dist/platform/soil/context-compiler.d.ts +16 -1
  622. package/dist/platform/soil/context-compiler.d.ts.map +1 -1
  623. package/dist/platform/soil/context-compiler.js +142 -4
  624. package/dist/platform/soil/context-compiler.js.map +1 -1
  625. package/dist/platform/soil/contracts.d.ts +766 -106
  626. package/dist/platform/soil/contracts.d.ts.map +1 -1
  627. package/dist/platform/soil/contracts.js +22 -0
  628. package/dist/platform/soil/contracts.js.map +1 -1
  629. package/dist/platform/soil/ddl.d.ts.map +1 -1
  630. package/dist/platform/soil/ddl.js +19 -0
  631. package/dist/platform/soil/ddl.js.map +1 -1
  632. package/dist/platform/soil/display/materialize.d.ts.map +1 -1
  633. package/dist/platform/soil/display/materialize.js.map +1 -1
  634. package/dist/platform/soil/importer.d.ts +6 -6
  635. package/dist/platform/soil/sqlite-repository-helpers.d.ts +4 -0
  636. package/dist/platform/soil/sqlite-repository-helpers.d.ts.map +1 -1
  637. package/dist/platform/soil/sqlite-repository-helpers.js.map +1 -1
  638. package/dist/platform/soil/sqlite-repository-search.d.ts.map +1 -1
  639. package/dist/platform/soil/sqlite-repository-search.js +48 -3
  640. package/dist/platform/soil/sqlite-repository-search.js.map +1 -1
  641. package/dist/platform/soil/sqlite-repository-storage.d.ts +3 -1
  642. package/dist/platform/soil/sqlite-repository-storage.d.ts.map +1 -1
  643. package/dist/platform/soil/sqlite-repository-storage.js +124 -3
  644. package/dist/platform/soil/sqlite-repository-storage.js.map +1 -1
  645. package/dist/platform/soil/sqlite-repository.d.ts +10 -1
  646. package/dist/platform/soil/sqlite-repository.d.ts.map +1 -1
  647. package/dist/platform/soil/sqlite-repository.js +46 -4
  648. package/dist/platform/soil/sqlite-repository.js.map +1 -1
  649. package/dist/platform/soil/types.d.ts +16 -16
  650. package/dist/platform/traits/curiosity-engine.d.ts +5 -6
  651. package/dist/platform/traits/curiosity-engine.d.ts.map +1 -1
  652. package/dist/platform/traits/curiosity-engine.js +3 -1
  653. package/dist/platform/traits/curiosity-engine.js.map +1 -1
  654. package/dist/platform/traits/curiosity-proposals.d.ts +8 -2
  655. package/dist/platform/traits/curiosity-proposals.d.ts.map +1 -1
  656. package/dist/platform/traits/curiosity-proposals.js +45 -20
  657. package/dist/platform/traits/curiosity-proposals.js.map +1 -1
  658. package/dist/platform/traits/curiosity-transfer.d.ts +9 -5
  659. package/dist/platform/traits/curiosity-transfer.d.ts.map +1 -1
  660. package/dist/platform/traits/curiosity-transfer.js +4 -1
  661. package/dist/platform/traits/curiosity-transfer.js.map +1 -1
  662. package/dist/platform/traits/ethics-gate.d.ts +16 -17
  663. package/dist/platform/traits/ethics-gate.d.ts.map +1 -1
  664. package/dist/platform/traits/ethics-gate.js +83 -47
  665. package/dist/platform/traits/ethics-gate.js.map +1 -1
  666. package/dist/platform/traits/ethics-rules.d.ts +4 -6
  667. package/dist/platform/traits/ethics-rules.d.ts.map +1 -1
  668. package/dist/platform/traits/ethics-rules.js +19 -261
  669. package/dist/platform/traits/ethics-rules.js.map +1 -1
  670. package/dist/platform/traits/types/curiosity.d.ts +157 -10
  671. package/dist/platform/traits/types/curiosity.d.ts.map +1 -1
  672. package/dist/platform/traits/types/curiosity.js +10 -0
  673. package/dist/platform/traits/types/curiosity.js.map +1 -1
  674. package/dist/platform/traits/types/guardrail.d.ts +6 -6
  675. package/dist/prompt/purposes/curiosity.d.ts +4 -4
  676. package/dist/reflection/evening-catchup.d.ts.map +1 -1
  677. package/dist/reflection/evening-catchup.js +4 -1
  678. package/dist/reflection/evening-catchup.js.map +1 -1
  679. package/dist/reflection/morning-planning.d.ts.map +1 -1
  680. package/dist/reflection/morning-planning.js +4 -1
  681. package/dist/reflection/morning-planning.js.map +1 -1
  682. package/dist/reflection/weekly-review.d.ts.map +1 -1
  683. package/dist/reflection/weekly-review.js +4 -1
  684. package/dist/reflection/weekly-review.js.map +1 -1
  685. package/dist/runtime/approval-broker.d.ts +33 -0
  686. package/dist/runtime/approval-broker.d.ts.map +1 -1
  687. package/dist/runtime/approval-broker.js +155 -17
  688. package/dist/runtime/approval-broker.js.map +1 -1
  689. package/dist/runtime/companion-policy.d.ts +27 -0
  690. package/dist/runtime/companion-policy.d.ts.map +1 -0
  691. package/dist/runtime/companion-policy.js +135 -0
  692. package/dist/runtime/companion-policy.js.map +1 -0
  693. package/dist/runtime/confirmation-decision.d.ts +2 -2
  694. package/dist/runtime/control/daemon-runtime-control-executor.d.ts +0 -6
  695. package/dist/runtime/control/daemon-runtime-control-executor.d.ts.map +1 -1
  696. package/dist/runtime/control/daemon-runtime-control-executor.js +1 -1
  697. package/dist/runtime/control/daemon-runtime-control-executor.js.map +1 -1
  698. package/dist/runtime/control/index.d.ts +6 -3
  699. package/dist/runtime/control/index.d.ts.map +1 -1
  700. package/dist/runtime/control/index.js +2 -1
  701. package/dist/runtime/control/index.js.map +1 -1
  702. package/dist/runtime/control/runtime-control-intent.d.ts +16 -1
  703. package/dist/runtime/control/runtime-control-intent.d.ts.map +1 -1
  704. package/dist/runtime/control/runtime-control-intent.js +26 -13
  705. package/dist/runtime/control/runtime-control-intent.js.map +1 -1
  706. package/dist/runtime/control/runtime-control-service.d.ts +1 -1
  707. package/dist/runtime/control/runtime-control-service.d.ts.map +1 -1
  708. package/dist/runtime/control/runtime-control-service.js +29 -64
  709. package/dist/runtime/control/runtime-control-service.js.map +1 -1
  710. package/dist/runtime/control/runtime-target-resolver.d.ts +39 -0
  711. package/dist/runtime/control/runtime-target-resolver.d.ts.map +1 -0
  712. package/dist/runtime/control/runtime-target-resolver.js +112 -0
  713. package/dist/runtime/control/runtime-target-resolver.js.map +1 -0
  714. package/dist/runtime/conversational-approval-decision.d.ts +29 -0
  715. package/dist/runtime/conversational-approval-decision.d.ts.map +1 -0
  716. package/dist/runtime/conversational-approval-decision.js +92 -0
  717. package/dist/runtime/conversational-approval-decision.js.map +1 -0
  718. package/dist/runtime/daemon/client.d.ts +1 -4
  719. package/dist/runtime/daemon/client.d.ts.map +1 -1
  720. package/dist/runtime/daemon/client.js +0 -3
  721. package/dist/runtime/daemon/client.js.map +1 -1
  722. package/dist/runtime/daemon/control-contracts.d.ts +7 -0
  723. package/dist/runtime/daemon/control-contracts.d.ts.map +1 -0
  724. package/dist/runtime/daemon/control-contracts.js +2 -0
  725. package/dist/runtime/daemon/control-contracts.js.map +1 -0
  726. package/dist/runtime/daemon/maintenance.d.ts.map +1 -1
  727. package/dist/runtime/daemon/maintenance.js +21 -2
  728. package/dist/runtime/daemon/maintenance.js.map +1 -1
  729. package/dist/runtime/daemon/runner-resident-curiosity.d.ts.map +1 -1
  730. package/dist/runtime/daemon/runner-resident-curiosity.js +5 -1
  731. package/dist/runtime/daemon/runner-resident-curiosity.js.map +1 -1
  732. package/dist/runtime/daemon/runner-resident-shared.d.ts +1 -1
  733. package/dist/runtime/daemon/runner-resident-shared.d.ts.map +1 -1
  734. package/dist/runtime/daemon/runner-resident-shared.js +16 -0
  735. package/dist/runtime/daemon/runner-resident-shared.js.map +1 -1
  736. package/dist/runtime/daemon/runner-startup.js +1 -1
  737. package/dist/runtime/daemon/runner-startup.js.map +1 -1
  738. package/dist/runtime/daemon/runner.d.ts +1 -1
  739. package/dist/runtime/daemon/runner.d.ts.map +1 -1
  740. package/dist/runtime/daemon/runtime-ownership.d.ts.map +1 -1
  741. package/dist/runtime/daemon/runtime-ownership.js +2 -0
  742. package/dist/runtime/daemon/runtime-ownership.js.map +1 -1
  743. package/dist/runtime/dream-sidecar-review.d.ts +2 -1
  744. package/dist/runtime/dream-sidecar-review.d.ts.map +1 -1
  745. package/dist/runtime/dream-sidecar-review.js +49 -55
  746. package/dist/runtime/dream-sidecar-review.js.map +1 -1
  747. package/dist/runtime/executor/goal-worker.d.ts +3 -3
  748. package/dist/runtime/executor/goal-worker.d.ts.map +1 -1
  749. package/dist/runtime/executor/loop-supervisor.d.ts +2 -2
  750. package/dist/runtime/executor/loop-supervisor.d.ts.map +1 -1
  751. package/dist/runtime/executor/loop-supervisor.js +2 -2
  752. package/dist/runtime/executor/loop-supervisor.js.map +1 -1
  753. package/dist/runtime/gateway/channel-adapter.d.ts +19 -0
  754. package/dist/runtime/gateway/channel-adapter.d.ts.map +1 -1
  755. package/dist/runtime/gateway/channel-policy.d.ts +1 -0
  756. package/dist/runtime/gateway/channel-policy.d.ts.map +1 -1
  757. package/dist/runtime/gateway/channel-policy.js +6 -4
  758. package/dist/runtime/gateway/channel-policy.js.map +1 -1
  759. package/dist/runtime/gateway/chat-event-rendering.d.ts +34 -0
  760. package/dist/runtime/gateway/chat-event-rendering.d.ts.map +1 -0
  761. package/dist/runtime/gateway/chat-event-rendering.js +61 -0
  762. package/dist/runtime/gateway/chat-event-rendering.js.map +1 -0
  763. package/dist/runtime/gateway/chat-session-dispatch.d.ts +2 -13
  764. package/dist/runtime/gateway/chat-session-dispatch.d.ts.map +1 -1
  765. package/dist/runtime/gateway/chat-session-dispatch.js +6 -3
  766. package/dist/runtime/gateway/chat-session-dispatch.js.map +1 -1
  767. package/dist/runtime/gateway/chat-session-port.d.ts +25 -0
  768. package/dist/runtime/gateway/chat-session-port.d.ts.map +1 -0
  769. package/dist/runtime/gateway/chat-session-port.js +20 -0
  770. package/dist/runtime/gateway/chat-session-port.js.map +1 -0
  771. package/dist/runtime/gateway/discord-gateway-adapter.d.ts +3 -1
  772. package/dist/runtime/gateway/discord-gateway-adapter.d.ts.map +1 -1
  773. package/dist/runtime/gateway/discord-gateway-adapter.js +34 -2
  774. package/dist/runtime/gateway/discord-gateway-adapter.js.map +1 -1
  775. package/dist/runtime/gateway/index.d.ts +2 -0
  776. package/dist/runtime/gateway/index.d.ts.map +1 -1
  777. package/dist/runtime/gateway/index.js +1 -0
  778. package/dist/runtime/gateway/index.js.map +1 -1
  779. package/dist/runtime/gateway/ingress-gateway.d.ts.map +1 -1
  780. package/dist/runtime/gateway/ingress-gateway.js +1 -0
  781. package/dist/runtime/gateway/ingress-gateway.js.map +1 -1
  782. package/dist/runtime/gateway/signal-gateway-adapter.d.ts +2 -1
  783. package/dist/runtime/gateway/signal-gateway-adapter.d.ts.map +1 -1
  784. package/dist/runtime/gateway/signal-gateway-adapter.js +13 -3
  785. package/dist/runtime/gateway/signal-gateway-adapter.js.map +1 -1
  786. package/dist/runtime/gateway/slack-channel-adapter.d.ts +2 -1
  787. package/dist/runtime/gateway/slack-channel-adapter.d.ts.map +1 -1
  788. package/dist/runtime/gateway/slack-channel-adapter.js +6 -2
  789. package/dist/runtime/gateway/slack-channel-adapter.js.map +1 -1
  790. package/dist/runtime/gateway/telegram-gateway-adapter.d.ts +9 -2
  791. package/dist/runtime/gateway/telegram-gateway-adapter.d.ts.map +1 -1
  792. package/dist/runtime/gateway/telegram-gateway-adapter.js +142 -13
  793. package/dist/runtime/gateway/telegram-gateway-adapter.js.map +1 -1
  794. package/dist/runtime/gateway/typing-indicator.d.ts +11 -0
  795. package/dist/runtime/gateway/typing-indicator.d.ts.map +1 -0
  796. package/dist/runtime/gateway/typing-indicator.js +68 -0
  797. package/dist/runtime/gateway/typing-indicator.js.map +1 -0
  798. package/dist/runtime/gateway/whatsapp-gateway-adapter.d.ts +2 -1
  799. package/dist/runtime/gateway/whatsapp-gateway-adapter.d.ts.map +1 -1
  800. package/dist/runtime/gateway/whatsapp-gateway-adapter.js +22 -8
  801. package/dist/runtime/gateway/whatsapp-gateway-adapter.js.map +1 -1
  802. package/dist/runtime/gateway/ws-channel-adapter.d.ts.map +1 -1
  803. package/dist/runtime/gateway/ws-channel-adapter.js +1 -0
  804. package/dist/runtime/gateway/ws-channel-adapter.js.map +1 -1
  805. package/dist/runtime/interactive-automation/failure-classifier.d.ts +0 -1
  806. package/dist/runtime/interactive-automation/failure-classifier.d.ts.map +1 -1
  807. package/dist/runtime/interactive-automation/failure-classifier.js +0 -19
  808. package/dist/runtime/interactive-automation/failure-classifier.js.map +1 -1
  809. package/dist/runtime/interactive-automation/providers/manus-browser.d.ts.map +1 -1
  810. package/dist/runtime/interactive-automation/providers/manus-browser.js +30 -1
  811. package/dist/runtime/interactive-automation/providers/manus-browser.js.map +1 -1
  812. package/dist/runtime/logger.d.ts.map +1 -1
  813. package/dist/runtime/logger.js +5 -2
  814. package/dist/runtime/logger.js.map +1 -1
  815. package/dist/runtime/plugin-loader.d.ts +1 -0
  816. package/dist/runtime/plugin-loader.d.ts.map +1 -1
  817. package/dist/runtime/plugin-loader.js +9 -4
  818. package/dist/runtime/plugin-loader.js.map +1 -1
  819. package/dist/runtime/run-spec/derive.d.ts +24 -24
  820. package/dist/runtime/run-spec/derive.d.ts.map +1 -1
  821. package/dist/runtime/run-spec/derive.js +6 -0
  822. package/dist/runtime/run-spec/derive.js.map +1 -1
  823. package/dist/runtime/run-spec/handoff.d.ts +74 -0
  824. package/dist/runtime/run-spec/handoff.d.ts.map +1 -0
  825. package/dist/runtime/run-spec/handoff.js +496 -0
  826. package/dist/runtime/run-spec/handoff.js.map +1 -0
  827. package/dist/runtime/run-spec/index.d.ts +2 -0
  828. package/dist/runtime/run-spec/index.d.ts.map +1 -1
  829. package/dist/runtime/run-spec/index.js +2 -0
  830. package/dist/runtime/run-spec/index.js.map +1 -1
  831. package/dist/runtime/run-spec/pending-dialogue-arbiter.d.ts +25 -0
  832. package/dist/runtime/run-spec/pending-dialogue-arbiter.d.ts.map +1 -0
  833. package/dist/runtime/run-spec/pending-dialogue-arbiter.js +81 -0
  834. package/dist/runtime/run-spec/pending-dialogue-arbiter.js.map +1 -0
  835. package/dist/runtime/run-spec/types.d.ts +91 -42
  836. package/dist/runtime/run-spec/types.d.ts.map +1 -1
  837. package/dist/runtime/run-spec/types.js +7 -0
  838. package/dist/runtime/run-spec/types.js.map +1 -1
  839. package/dist/runtime/schedule/engine-execution.js +2 -35
  840. package/dist/runtime/schedule/engine-execution.js.map +1 -1
  841. package/dist/runtime/schedule/history.d.ts +2 -2
  842. package/dist/runtime/schedule/presets.d.ts +4 -4
  843. package/dist/runtime/schedule/source.d.ts +1 -1
  844. package/dist/runtime/session-registry/registry.d.ts.map +1 -1
  845. package/dist/runtime/session-registry/registry.js +27 -2
  846. package/dist/runtime/session-registry/registry.js.map +1 -1
  847. package/dist/runtime/session-registry/types.d.ts +120 -112
  848. package/dist/runtime/session-registry/types.d.ts.map +1 -1
  849. package/dist/runtime/session-registry/types.js +1 -0
  850. package/dist/runtime/session-registry/types.js.map +1 -1
  851. package/dist/runtime/store/artifact-retention.d.ts +11 -6
  852. package/dist/runtime/store/artifact-retention.d.ts.map +1 -1
  853. package/dist/runtime/store/artifact-retention.js +0 -13
  854. package/dist/runtime/store/artifact-retention.js.map +1 -1
  855. package/dist/runtime/store/background-run-store.d.ts +1 -0
  856. package/dist/runtime/store/background-run-store.d.ts.map +1 -1
  857. package/dist/runtime/store/background-run-store.js +1 -0
  858. package/dist/runtime/store/background-run-store.js.map +1 -1
  859. package/dist/runtime/store/budget-store.d.ts +8 -8
  860. package/dist/runtime/store/dream-checkpoints.d.ts +4 -1
  861. package/dist/runtime/store/dream-checkpoints.d.ts.map +1 -1
  862. package/dist/runtime/store/dream-checkpoints.js +2 -0
  863. package/dist/runtime/store/dream-checkpoints.js.map +1 -1
  864. package/dist/runtime/store/evaluator-results.d.ts +1 -1
  865. package/dist/runtime/store/evaluator-results.d.ts.map +1 -1
  866. package/dist/runtime/store/evidence-ledger.d.ts +57 -5118
  867. package/dist/runtime/store/evidence-ledger.d.ts.map +1 -1
  868. package/dist/runtime/store/evidence-ledger.js +676 -497
  869. package/dist/runtime/store/evidence-ledger.js.map +1 -1
  870. package/dist/runtime/store/evidence-types.d.ts +6378 -0
  871. package/dist/runtime/store/evidence-types.d.ts.map +1 -0
  872. package/dist/runtime/store/evidence-types.js +459 -0
  873. package/dist/runtime/store/evidence-types.js.map +1 -0
  874. package/dist/runtime/store/experiment-queue-store.d.ts +109 -109
  875. package/dist/runtime/store/experiment-queue-store.d.ts.map +1 -1
  876. package/dist/runtime/store/experiment-queue-store.js +1 -1
  877. package/dist/runtime/store/experiment-queue-store.js.map +1 -1
  878. package/dist/runtime/store/index.d.ts +6 -4
  879. package/dist/runtime/store/index.d.ts.map +1 -1
  880. package/dist/runtime/store/index.js +3 -2
  881. package/dist/runtime/store/index.js.map +1 -1
  882. package/dist/runtime/store/metric-history.d.ts +1 -1
  883. package/dist/runtime/store/metric-history.d.ts.map +1 -1
  884. package/dist/runtime/store/operator-handoff-store.d.ts +12 -12
  885. package/dist/runtime/store/postmortem-report.d.ts +38 -38
  886. package/dist/runtime/store/postmortem-report.js.map +1 -1
  887. package/dist/runtime/store/proactive-intervention-store.d.ts +360 -0
  888. package/dist/runtime/store/proactive-intervention-store.d.ts.map +1 -0
  889. package/dist/runtime/store/proactive-intervention-store.js +252 -0
  890. package/dist/runtime/store/proactive-intervention-store.js.map +1 -0
  891. package/dist/runtime/store/reproducibility-manifest.d.ts +27 -27
  892. package/dist/runtime/store/reproducibility-manifest.d.ts.map +1 -1
  893. package/dist/runtime/store/reproducibility-manifest.js.map +1 -1
  894. package/dist/runtime/store/research-evidence.d.ts +1 -1
  895. package/dist/runtime/store/research-evidence.d.ts.map +1 -1
  896. package/dist/runtime/store/runtime-operation-schemas.d.ts +46 -46
  897. package/dist/runtime/store/runtime-paths.d.ts +2 -0
  898. package/dist/runtime/store/runtime-paths.d.ts.map +1 -1
  899. package/dist/runtime/store/runtime-paths.js +4 -0
  900. package/dist/runtime/store/runtime-paths.js.map +1 -1
  901. package/dist/runtime/store/runtime-schemas.d.ts +73 -12
  902. package/dist/runtime/store/runtime-schemas.d.ts.map +1 -1
  903. package/dist/runtime/store/runtime-schemas.js +9 -0
  904. package/dist/runtime/store/runtime-schemas.js.map +1 -1
  905. package/dist/runtime/types/companion.d.ts +394 -0
  906. package/dist/runtime/types/companion.d.ts.map +1 -0
  907. package/dist/runtime/types/companion.js +87 -0
  908. package/dist/runtime/types/companion.js.map +1 -0
  909. package/dist/runtime/types/daemon.d.ts +11 -3
  910. package/dist/runtime/types/daemon.d.ts.map +1 -1
  911. package/dist/runtime/types/daemon.js +1 -0
  912. package/dist/runtime/types/daemon.js.map +1 -1
  913. package/dist/runtime/types/hook.d.ts +12 -12
  914. package/dist/runtime/types/plugin.d.ts.map +1 -1
  915. package/dist/runtime/types/plugin.js +1 -1
  916. package/dist/runtime/types/plugin.js.map +1 -1
  917. package/dist/runtime/types/schedule.d.ts +42 -42
  918. package/dist/tools/builtin/exports.d.ts +3 -0
  919. package/dist/tools/builtin/exports.d.ts.map +1 -1
  920. package/dist/tools/builtin/exports.js +3 -0
  921. package/dist/tools/builtin/exports.js.map +1 -1
  922. package/dist/tools/builtin/factory.d.ts +10 -1
  923. package/dist/tools/builtin/factory.d.ts.map +1 -1
  924. package/dist/tools/builtin/factory.js +20 -2
  925. package/dist/tools/builtin/factory.js.map +1 -1
  926. package/dist/tools/execution/MemoryConsolidateTool/MemoryConsolidateTool.d.ts +4 -4
  927. package/dist/tools/execution/MemoryCorrectionTool/MemoryCorrectionTool.d.ts +76 -0
  928. package/dist/tools/execution/MemoryCorrectionTool/MemoryCorrectionTool.d.ts.map +1 -0
  929. package/dist/tools/execution/MemoryCorrectionTool/MemoryCorrectionTool.js +79 -0
  930. package/dist/tools/execution/MemoryCorrectionTool/MemoryCorrectionTool.js.map +1 -0
  931. package/dist/tools/execution/MemoryCorrectionTool/constants.d.ts +6 -0
  932. package/dist/tools/execution/MemoryCorrectionTool/constants.d.ts.map +1 -0
  933. package/dist/tools/execution/MemoryCorrectionTool/constants.js +6 -0
  934. package/dist/tools/execution/MemoryCorrectionTool/constants.js.map +1 -0
  935. package/dist/tools/execution/MemoryCorrectionTool/prompt.d.ts +2 -0
  936. package/dist/tools/execution/MemoryCorrectionTool/prompt.d.ts.map +1 -0
  937. package/dist/tools/execution/MemoryCorrectionTool/prompt.js +2 -0
  938. package/dist/tools/execution/MemoryCorrectionTool/prompt.js.map +1 -0
  939. package/dist/tools/execution/MemorySaveTool/MemorySaveTool.d.ts +306 -4
  940. package/dist/tools/execution/MemorySaveTool/MemorySaveTool.d.ts.map +1 -1
  941. package/dist/tools/execution/MemorySaveTool/MemorySaveTool.js +8 -0
  942. package/dist/tools/execution/MemorySaveTool/MemorySaveTool.js.map +1 -1
  943. package/dist/tools/executor.d.ts.map +1 -1
  944. package/dist/tools/executor.js +8 -6
  945. package/dist/tools/executor.js.map +1 -1
  946. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.d.ts.map +1 -1
  947. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.js +38 -4
  948. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.js.map +1 -1
  949. package/dist/tools/fs/FileEditTool/FileEditTool.d.ts.map +1 -1
  950. package/dist/tools/fs/FileEditTool/FileEditTool.js +1 -0
  951. package/dist/tools/fs/FileEditTool/FileEditTool.js.map +1 -1
  952. package/dist/tools/fs/FileValidationTool/protected-path-policy.d.ts.map +1 -1
  953. package/dist/tools/fs/FileValidationTool/protected-path-policy.js +12 -0
  954. package/dist/tools/fs/FileValidationTool/protected-path-policy.js.map +1 -1
  955. package/dist/tools/fs/FileWriteTool/FileWriteTool.d.ts.map +1 -1
  956. package/dist/tools/fs/FileWriteTool/FileWriteTool.js +1 -0
  957. package/dist/tools/fs/FileWriteTool/FileWriteTool.js.map +1 -1
  958. package/dist/tools/fs/GlobTool/GlobTool.d.ts.map +1 -1
  959. package/dist/tools/fs/GlobTool/GlobTool.js +1 -0
  960. package/dist/tools/fs/GlobTool/GlobTool.js.map +1 -1
  961. package/dist/tools/fs/GrepTool/GrepTool.d.ts.map +1 -1
  962. package/dist/tools/fs/GrepTool/GrepTool.js +1 -0
  963. package/dist/tools/fs/GrepTool/GrepTool.js.map +1 -1
  964. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.d.ts.map +1 -1
  965. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js +1 -0
  966. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js.map +1 -1
  967. package/dist/tools/fs/ListDirTool/ListDirTool.d.ts.map +1 -1
  968. package/dist/tools/fs/ListDirTool/ListDirTool.js +1 -0
  969. package/dist/tools/fs/ListDirTool/ListDirTool.js.map +1 -1
  970. package/dist/tools/fs/ReadTool/ReadTool.d.ts.map +1 -1
  971. package/dist/tools/fs/ReadTool/ReadTool.js +1 -0
  972. package/dist/tools/fs/ReadTool/ReadTool.js.map +1 -1
  973. package/dist/tools/kaggle/KaggleSubmissionTools.d.ts +4 -4
  974. package/dist/tools/kaggle/metrics.d.ts +4 -4
  975. package/dist/tools/mutation/TaskCreateTool/TaskCreateTool.d.ts +4 -4
  976. package/dist/tools/mutation/TaskUpdateTool/TaskUpdateTool.d.ts +4 -4
  977. package/dist/tools/network/GitHubCliTool/GitHubCliTool.d.ts +8 -8
  978. package/dist/tools/network/HttpFetchTool/HttpFetchTool.d.ts.map +1 -1
  979. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js +1 -0
  980. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js.map +1 -1
  981. package/dist/tools/network/WebSearchTool/WebSearchTool.d.ts.map +1 -1
  982. package/dist/tools/network/WebSearchTool/WebSearchTool.js +1 -0
  983. package/dist/tools/network/WebSearchTool/WebSearchTool.js.map +1 -1
  984. package/dist/tools/query/ArchitectureTool/ArchitectureTool.js +3 -3
  985. package/dist/tools/query/ArchitectureTool/ArchitectureTool.js.map +1 -1
  986. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.d.ts +20 -20
  987. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.d.ts.map +1 -1
  988. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.js +1 -0
  989. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.js.map +1 -1
  990. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.d.ts.map +1 -1
  991. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js +1 -0
  992. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js.map +1 -1
  993. package/dist/tools/query/CodeSearchTool/CodeSearchTool.d.ts.map +1 -1
  994. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js +1 -0
  995. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js.map +1 -1
  996. package/dist/tools/query/KnowledgeQueryTool/KnowledgeQueryTool.d.ts.map +1 -1
  997. package/dist/tools/query/KnowledgeQueryTool/KnowledgeQueryTool.js +1 -0
  998. package/dist/tools/query/KnowledgeQueryTool/KnowledgeQueryTool.js.map +1 -1
  999. package/dist/tools/query/MemoryRecallTool/MemoryRecallTool.d.ts +16 -4
  1000. package/dist/tools/query/MemoryRecallTool/MemoryRecallTool.d.ts.map +1 -1
  1001. package/dist/tools/query/MemoryRecallTool/MemoryRecallTool.js +12 -0
  1002. package/dist/tools/query/MemoryRecallTool/MemoryRecallTool.js.map +1 -1
  1003. package/dist/tools/query/SkillSearchTool/SkillSearchTool.d.ts.map +1 -1
  1004. package/dist/tools/query/SkillSearchTool/SkillSearchTool.js +1 -0
  1005. package/dist/tools/query/SkillSearchTool/SkillSearchTool.js.map +1 -1
  1006. package/dist/tools/query/SoilQueryTool/SoilQueryTool.d.ts +7 -0
  1007. package/dist/tools/query/SoilQueryTool/SoilQueryTool.d.ts.map +1 -1
  1008. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js +20 -0
  1009. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js.map +1 -1
  1010. package/dist/tools/query/ToolSearchTool/ToolSearchTool.d.ts.map +1 -1
  1011. package/dist/tools/query/ToolSearchTool/ToolSearchTool.js +1 -0
  1012. package/dist/tools/query/ToolSearchTool/ToolSearchTool.js.map +1 -1
  1013. package/dist/tools/runtime/LongRunningRuntimeTools.d.ts +32 -32
  1014. package/dist/tools/runtime/RunSpecHandoffTools.d.ts +12 -0
  1015. package/dist/tools/runtime/RunSpecHandoffTools.d.ts.map +1 -0
  1016. package/dist/tools/runtime/RunSpecHandoffTools.js +224 -0
  1017. package/dist/tools/runtime/RunSpecHandoffTools.js.map +1 -0
  1018. package/dist/tools/runtime/SetupRuntimeControlTools.d.ts +11 -0
  1019. package/dist/tools/runtime/SetupRuntimeControlTools.d.ts.map +1 -0
  1020. package/dist/tools/runtime/SetupRuntimeControlTools.js +463 -0
  1021. package/dist/tools/runtime/SetupRuntimeControlTools.js.map +1 -0
  1022. package/dist/tools/schedule/CreateScheduleTool/CreateScheduleTool.d.ts +28 -28
  1023. package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.d.ts +32 -32
  1024. package/dist/tools/system/GitDiffTool/GitDiffTool.d.ts.map +1 -1
  1025. package/dist/tools/system/GitDiffTool/GitDiffTool.js +1 -0
  1026. package/dist/tools/system/GitDiffTool/GitDiffTool.js.map +1 -1
  1027. package/dist/tools/system/GitLogTool/GitLogTool.d.ts.map +1 -1
  1028. package/dist/tools/system/GitLogTool/GitLogTool.js +1 -0
  1029. package/dist/tools/system/GitLogTool/GitLogTool.js.map +1 -1
  1030. package/dist/tools/system/ShellTool/ShellTool.d.ts.map +1 -1
  1031. package/dist/tools/system/ShellTool/ShellTool.js +2 -1
  1032. package/dist/tools/system/ShellTool/ShellTool.js.map +1 -1
  1033. package/dist/tools/system/ShellTool/command-policy.d.ts +1 -1
  1034. package/dist/tools/system/ShellTool/command-policy.d.ts.map +1 -1
  1035. package/dist/tools/system/ShellTool/command-policy.js +25 -1
  1036. package/dist/tools/system/ShellTool/command-policy.js.map +1 -1
  1037. package/dist/tools/system/TestRunnerTool/TestRunnerTool.d.ts.map +1 -1
  1038. package/dist/tools/system/TestRunnerTool/TestRunnerTool.js +1 -0
  1039. package/dist/tools/system/TestRunnerTool/TestRunnerTool.js.map +1 -1
  1040. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.d.ts.map +1 -1
  1041. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.js +1 -0
  1042. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.js.map +1 -1
  1043. package/dist/tools/types.d.ts +62 -2
  1044. package/dist/tools/types.d.ts.map +1 -1
  1045. package/dist/tools/types.js +25 -0
  1046. package/dist/tools/types.js.map +1 -1
  1047. package/package.json +4 -2
  1048. package/dist/interface/tui/approval-overlay.d.ts +0 -8
  1049. package/dist/interface/tui/approval-overlay.d.ts.map +0 -1
  1050. package/dist/interface/tui/approval-overlay.js +0 -21
  1051. package/dist/interface/tui/approval-overlay.js.map +0 -1
@@ -1,438 +1,16 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import * as fsp from "node:fs/promises";
3
3
  import * as path from "node:path";
4
- import { z } from "zod";
5
4
  import { createRuntimeStorePaths, ensureRuntimeStorePaths, } from "./runtime-paths.js";
6
- import { summarizeEvidenceMetricTrends } from "./metric-history.js";
5
+ import { correctionStateForTarget, MemoryCorrectionEntrySchema, summarizeMemoryCorrectionState, } from "../../platform/corrections/memory-correction-ledger.js";
6
+ import { extractMetricObservationsFromEvidence, summarizeEvidenceMetricTrends, } from "./metric-history.js";
7
7
  import { summarizeEvidenceEvaluatorResults, } from "./evaluator-results.js";
8
8
  import { summarizeEvidenceResearchMemos, } from "./research-evidence.js";
9
9
  import { summarizeEvidenceDreamCheckpoints, } from "./dream-checkpoints.js";
10
- import { summarizeArtifactRetention, RuntimeArtifactRetentionClassSchema, } from "./artifact-retention.js";
11
- export const RuntimeEvidenceOutcomeSchema = z.enum([
12
- "improved",
13
- "regressed",
14
- "inconclusive",
15
- "failed",
16
- "blocked",
17
- "continued",
18
- ]);
19
- export const RuntimeEvidenceEntryKindSchema = z.enum([
20
- "observation",
21
- "strategy",
22
- "task_generation",
23
- "execution",
24
- "verification",
25
- "decision",
26
- "metric",
27
- "evaluator",
28
- "research",
29
- "dream_checkpoint",
30
- "artifact",
31
- "failure",
32
- "other",
33
- ]);
34
- export const RuntimeEvidenceArtifactRefSchema = z.object({
35
- label: z.string().min(1),
36
- path: z.string().min(1).optional(),
37
- state_relative_path: z.string().min(1).optional(),
38
- url: z.string().url().optional(),
39
- kind: z.enum(["log", "metrics", "report", "diff", "url", "other"]).default("other"),
40
- retention_class: RuntimeArtifactRetentionClassSchema.optional(),
41
- size_bytes: z.number().int().nonnegative().optional(),
42
- source: z.string().min(1).optional(),
43
- dependency_refs: z.array(z.string().min(1)).optional(),
44
- }).strict();
45
- export const RuntimeEvidenceMetricSchema = z.object({
46
- label: z.string().min(1),
47
- value: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),
48
- unit: z.string().min(1).optional(),
49
- direction: z.enum(["maximize", "minimize", "neutral"]).optional(),
50
- confidence: z.number().min(0).max(1).optional(),
51
- observed_at: z.string().datetime().optional(),
52
- source: z.string().min(1).optional(),
53
- summary: z.string().min(1).optional(),
54
- }).strict();
55
- export const RuntimeEvidenceCandidateDispositionSchema = z.enum(["retained", "promoted", "retired"]);
56
- export const RuntimeEvidenceCandidateLineageSchema = z.object({
57
- parent_candidate_id: z.string().min(1).optional(),
58
- source_candidate_id: z.string().min(1).optional(),
59
- source_strategy_id: z.string().min(1).optional(),
60
- source_strategy: z.string().min(1).optional(),
61
- strategy_family: z.string().min(1),
62
- feature_lineage: z.array(z.string().min(1)).default([]),
63
- model_lineage: z.array(z.string().min(1)).default([]),
64
- config_lineage: z.array(z.string().min(1)).default([]),
65
- seed_lineage: z.array(z.string().min(1)).default([]),
66
- fold_lineage: z.array(z.string().min(1)).default([]),
67
- postprocess_lineage: z.array(z.string().min(1)).default([]),
68
- notes: z.string().min(1).optional(),
69
- }).strict();
70
- export const RuntimeEvidenceCandidateSimilaritySchema = z.object({
71
- candidate_id: z.string().min(1),
72
- similarity: z.number().min(0).max(1),
73
- signal: z.enum(["declared", "lineage", "metric_correlation", "artifact_overlap", "other"]).default("declared"),
74
- summary: z.string().min(1).optional(),
75
- }).strict();
76
- export const RuntimeEvidenceCandidateNearMissReasonSchema = z.enum([
77
- "close_to_best",
78
- "stability",
79
- "novelty",
80
- "weak_dimension_improvement",
81
- "complementarity",
82
- "ensemble_potential",
83
- ]);
84
- export const RuntimeEvidenceCandidateNearMissSchema = z.object({
85
- status: z.enum(["retained", "promoted", "rejected"]).default("retained"),
86
- reason_to_keep: z.array(RuntimeEvidenceCandidateNearMissReasonSchema).min(1),
87
- margin_to_best: z.number().min(0).optional(),
88
- weak_dimensions: z.array(z.string().min(1)).default([]),
89
- complementary_candidate_ids: z.array(z.string().min(1)).default([]),
90
- follow_up: z.object({
91
- title: z.string().min(1),
92
- rationale: z.string().min(1),
93
- target_dimensions: z.array(z.string().min(1)).default([]),
94
- expected_evidence_gain: z.string().min(1).optional(),
95
- }).strict().optional(),
96
- evidence_refs: z.array(z.string().min(1)).default([]),
97
- summary: z.string().min(1).optional(),
98
- }).strict();
99
- export const RuntimeEvidenceCandidateRecordSchema = z.object({
100
- candidate_id: z.string().min(1),
101
- label: z.string().min(1).optional(),
102
- lineage: RuntimeEvidenceCandidateLineageSchema,
103
- metrics: z.array(RuntimeEvidenceMetricSchema).default([]),
104
- artifacts: z.array(RuntimeEvidenceArtifactRefSchema).default([]),
105
- similarity: z.array(RuntimeEvidenceCandidateSimilaritySchema).default([]),
106
- robustness: z.object({
107
- stability_score: z.number().min(0).max(1).optional(),
108
- diversity_score: z.number().min(0).max(1).optional(),
109
- risk_penalty: z.number().min(0).max(1).optional(),
110
- robust_score: z.number().min(0).max(1).optional(),
111
- evidence_confidence: z.number().min(0).max(1).optional(),
112
- repeated_evaluations: z.number().int().nonnegative().optional(),
113
- mean_score: z.number().optional(),
114
- max_score: z.number().optional(),
115
- score_stddev: z.number().min(0).optional(),
116
- fold_score_range: z.number().min(0).optional(),
117
- seed_score_range: z.number().min(0).optional(),
118
- weak_dimensions: z.array(z.string().min(1)).default([]),
119
- provenance_refs: z.array(z.string().min(1)).default([]),
120
- summary: z.string().min(1).optional(),
121
- }).strict().optional(),
122
- near_miss: RuntimeEvidenceCandidateNearMissSchema.optional(),
123
- disposition: RuntimeEvidenceCandidateDispositionSchema.default("retained"),
124
- disposition_reason: z.string().min(1).optional(),
125
- produced_at: z.string().datetime().optional(),
126
- }).strict();
127
- export const RuntimeEvidenceEvaluatorSignalSchema = z.enum(["local", "external"]);
128
- export const RuntimeEvidenceEvaluatorStatusSchema = z.enum([
129
- "pending",
130
- "ready",
131
- "approval_required",
132
- "submitted",
133
- "passed",
134
- "succeeded",
135
- "completed",
136
- "failed",
137
- "regressed",
138
- "blocked",
139
- "unknown",
140
- ]);
141
- export const RuntimeEvidenceEvaluatorPublishActionSchema = z.object({
142
- id: z.string().min(1),
143
- label: z.string().min(1),
144
- tool_name: z.string().min(1).optional(),
145
- payload_ref: z.string().min(1).optional(),
146
- approval_required: z.literal(true).default(true),
147
- status: z.enum(["approval_required", "approved", "submitted", "completed", "blocked"]).optional(),
148
- }).strict();
149
- export const RuntimeEvidenceEvaluatorValidationSchema = z.object({
150
- status: z.enum(["pending", "passed", "failed", "blocked", "unknown"]).default("unknown"),
151
- command: z.string().min(1).optional(),
152
- summary: z.string().min(1).optional(),
153
- }).strict();
154
- export const RuntimeEvidenceEvaluatorProvenanceSchema = z.object({
155
- kind: z.enum(["local_command", "external_url", "ci", "benchmark", "human_review", "other"]).default("other"),
156
- command: z.string().min(1).optional(),
157
- url: z.string().url().optional(),
158
- run_id: z.string().min(1).optional(),
159
- external_id: z.string().min(1).optional(),
160
- raw_ref: z.string().min(1).optional(),
161
- retrieved_at: z.string().datetime().optional(),
162
- }).strict();
163
- export const RuntimeEvidenceEvaluatorBudgetSchema = z.object({
164
- policy_id: z.string().min(1).optional(),
165
- max_attempts: z.number().int().positive().optional(),
166
- used_attempts: z.number().int().nonnegative().optional(),
167
- remaining_attempts: z.number().int().nonnegative(),
168
- approval_required: z.boolean().default(true),
169
- deadline_at: z.string().datetime().optional(),
170
- phase: z.enum(["exploration", "consolidation", "finalization", "other"]).optional(),
171
- portfolio_policy: z.object({
172
- diversified_portfolio_required: z.boolean().default(false),
173
- reserve_for_finalization: z.boolean().default(false),
174
- min_strategy_families: z.number().int().positive().optional(),
175
- }).strict().optional(),
176
- }).strict();
177
- export const RuntimeEvidenceEvaluatorCandidateSnapshotSchema = z.object({
178
- evidence_entry_id: z.string().min(1).optional(),
179
- primary_metric_label: z.string().min(1).optional(),
180
- local_metrics: z.array(RuntimeEvidenceMetricSchema).default([]),
181
- robust_selection: z.object({
182
- raw_rank: z.number().int().positive().optional(),
183
- robust_score: z.number().min(0).max(1).optional(),
184
- stability_score: z.number().min(0).max(1).optional(),
185
- diversity_score: z.number().min(0).max(1).optional(),
186
- risk_penalty: z.number().min(0).max(1).optional(),
187
- portfolio_role: z.enum(["raw_best", "robust_best", "safe", "aggressive", "diverse", "near_miss", "other"]).optional(),
188
- }).strict().optional(),
189
- summary: z.string().min(1).optional(),
190
- }).strict();
191
- export const RuntimeEvidenceEvaluatorCalibrationSchema = z.object({
192
- mode: z.literal("calibration_only").default("calibration_only"),
193
- use_for_selection: z.boolean().default(false),
194
- direct_optimization_allowed: z.literal(false).default(false),
195
- minimum_observations: z.number().int().positive().default(1),
196
- conclusion: z.string().min(1).optional(),
197
- }).strict();
198
- export const RuntimeEvidenceEvaluatorObservationSchema = z.object({
199
- evaluator_id: z.string().min(1),
200
- signal: RuntimeEvidenceEvaluatorSignalSchema,
201
- source: z.string().min(1),
202
- candidate_id: z.string().min(1),
203
- candidate_label: z.string().min(1).optional(),
204
- artifact_labels: z.array(z.string().min(1)).optional(),
205
- status: RuntimeEvidenceEvaluatorStatusSchema.default("unknown"),
206
- score: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),
207
- score_label: z.string().min(1).optional(),
208
- direction: z.enum(["maximize", "minimize", "neutral"]).optional(),
209
- observed_at: z.string().datetime().optional(),
210
- expected_score: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),
211
- expected_status: RuntimeEvidenceEvaluatorStatusSchema.optional(),
212
- expectation_source: z.string().min(1).optional(),
213
- validation: RuntimeEvidenceEvaluatorValidationSchema.optional(),
214
- publish_action: RuntimeEvidenceEvaluatorPublishActionSchema.optional(),
215
- provenance: RuntimeEvidenceEvaluatorProvenanceSchema.optional(),
216
- budget: RuntimeEvidenceEvaluatorBudgetSchema.optional(),
217
- candidate_snapshot: RuntimeEvidenceEvaluatorCandidateSnapshotSchema.optional(),
218
- calibration: RuntimeEvidenceEvaluatorCalibrationSchema.optional(),
219
- summary: z.string().min(1).optional(),
220
- }).strict();
221
- export const RuntimeEvidenceResearchSourceSchema = z.object({
222
- url: z.string().url(),
223
- title: z.string().min(1).optional(),
224
- source_type: z.enum(["official_docs", "maintainer", "paper", "issue_thread", "example", "writeup", "other"]).default("other"),
225
- provenance: z.enum(["quoted", "paraphrased", "summarized"]).default("summarized"),
226
- relevance: z.string().min(1).optional(),
227
- }).strict();
228
- export const RuntimeEvidenceResearchFindingSchema = z.object({
229
- finding: z.string().min(1),
230
- source_urls: z.array(z.string().url()).min(1),
231
- applicability: z.string().min(1),
232
- risks_constraints: z.array(z.string().min(1)).default([]),
233
- proposed_experiment: z.string().min(1),
234
- expected_metric_impact: z.string().min(1),
235
- fact_vs_adaptation: z.object({
236
- facts: z.array(z.string().min(1)).default([]),
237
- adaptation: z.string().min(1),
238
- }).strict(),
239
- }).strict();
240
- export const RuntimeEvidenceResearchExternalActionSchema = z.object({
241
- label: z.string().min(1),
242
- reason: z.string().min(1),
243
- approval_required: z.literal(true).default(true),
244
- }).strict();
245
- export const RuntimeEvidenceResearchMemoSchema = z.object({
246
- trigger: z.enum(["plateau", "uncertainty", "knowledge_gap"]),
247
- query: z.string().min(1),
248
- summary: z.string().min(1),
249
- sources: z.array(RuntimeEvidenceResearchSourceSchema).min(1),
250
- findings: z.array(RuntimeEvidenceResearchFindingSchema).min(1),
251
- candidate_playbook: z.object({
252
- title: z.string().min(1),
253
- steps: z.array(z.string().min(1)).default([]),
254
- source_urls: z.array(z.string().url()).default([]),
255
- }).strict().optional(),
256
- untrusted_content_policy: z.literal("webpage_instructions_are_untrusted").default("webpage_instructions_are_untrusted"),
257
- external_actions: z.array(RuntimeEvidenceResearchExternalActionSchema).default([]),
258
- confidence: z.number().min(0).max(1).default(0.5),
259
- }).strict();
260
- export const RuntimeEvidenceDreamCheckpointTriggerSchema = z.enum([
261
- "iteration",
262
- "plateau",
263
- "breakthrough",
264
- "pre_finalization",
265
- ]);
266
- export const RuntimeEvidenceDreamCheckpointMemoryRefSchema = z.object({
267
- source_type: z.enum(["soil", "playbook", "runtime_evidence", "other"]),
268
- ref: z.string().min(1).optional(),
269
- summary: z.string().min(1),
270
- authority: z.literal("advisory_only").default("advisory_only"),
271
- relevance_score: z.number().min(0).max(1).optional(),
272
- source_reliability: z.number().min(0).max(1).optional(),
273
- recency_score: z.number().min(0).max(1).optional(),
274
- prior_success_contribution: z.number().min(0).max(1).optional(),
275
- retrieval: z.object({
276
- kind: z.enum(["route_hit", "fallback_hit", "checkpoint", "manual", "unknown"]).default("unknown"),
277
- score: z.number().min(0).max(1).optional(),
278
- confidence: z.number().min(0).max(1).optional(),
279
- }).strict().optional(),
280
- ranking_trace: z.object({
281
- score: z.number().min(0).max(1),
282
- decision: z.enum(["admitted", "rejected"]),
283
- reason: z.string().min(1),
284
- }).strict().optional(),
285
- }).strict();
286
- export const RuntimeEvidenceDreamCheckpointStrategyCandidateSchema = z.object({
287
- title: z.string().min(1),
288
- rationale: z.string().min(1),
289
- target_dimensions: z.array(z.string().min(1)).default([]),
290
- expected_evidence_gain: z.string().min(1).optional(),
291
- retry_reason: z.string().min(1).optional(),
292
- failed_lineage_warning: z.object({
293
- fingerprint: z.string().min(1),
294
- count: z.number().int().positive(),
295
- reason: z.string().min(1),
296
- }).strict().optional(),
297
- }).strict();
298
- export const RuntimeEvidenceDreamCheckpointActiveHypothesisSchema = z.object({
299
- hypothesis: z.string().min(1),
300
- supporting_evidence_ref: z.string().min(1).optional(),
301
- target_metric_or_dimension: z.string().min(1),
302
- expected_next_observation: z.string().min(1),
303
- status: z.enum(["active", "testing", "supported", "weakened"]).default("active"),
304
- }).strict();
305
- export const RuntimeEvidenceDreamCheckpointRejectedApproachSchema = z.object({
306
- approach: z.string().min(1),
307
- rejection_reason: z.string().min(1),
308
- evidence_ref: z.string().min(1).optional(),
309
- revisit_condition: z.string().min(1).optional(),
310
- confidence: z.number().min(0).max(1).default(0.5),
311
- }).strict();
312
- export const RuntimeEvidenceDreamRunControlRecommendationSchema = z.object({
313
- id: z.string().min(1).optional(),
314
- action: z.enum([
315
- "stay_current_mode",
316
- "widen_exploration",
317
- "consolidate_candidates",
318
- "freeze_experiment_queue",
319
- "enter_finalization",
320
- "preserve_near_miss_candidates",
321
- "retire_low_value_lineage",
322
- "request_operator_approval",
323
- ]),
324
- rationale: z.string().min(1),
325
- evidence: z.array(z.object({
326
- kind: z.enum(["metric", "artifact", "lineage", "task_history", "deadline", "external_feedback", "memory", "runtime_state"]),
327
- ref: z.string().min(1).optional(),
328
- summary: z.string().min(1),
329
- }).strict()).min(1),
330
- target_mode: z.enum(["exploration", "consolidation", "finalization"]).optional(),
331
- target_strategy_family: z.string().min(1).optional(),
332
- candidate_refs: z.array(z.string().min(1)).default([]),
333
- lineage_refs: z.array(z.string().min(1)).default([]),
334
- approval_required: z.boolean().default(false),
335
- risk: z.enum(["low", "medium", "high"]).default("medium"),
336
- confidence: z.number().min(0).max(1).default(0.5),
337
- policy_decision: z.object({
338
- disposition: z.enum(["auto_apply", "approval_required", "advisory_only"]),
339
- reason: z.string().min(1),
340
- }).strict().optional(),
341
- }).strict();
342
- export const RuntimeEvidenceDreamCheckpointSchema = z.object({
343
- trigger: RuntimeEvidenceDreamCheckpointTriggerSchema,
344
- summary: z.string().min(1),
345
- current_goal: z.string().min(1),
346
- active_dimensions: z.array(z.string().min(1)).default([]),
347
- best_evidence_so_far: z.string().min(1).optional(),
348
- recent_strategy_families: z.array(z.string().min(1)).default([]),
349
- exhausted: z.array(z.string().min(1)).default([]),
350
- promising: z.array(z.string().min(1)).default([]),
351
- relevant_memories: z.array(RuntimeEvidenceDreamCheckpointMemoryRefSchema).default([]),
352
- active_hypotheses: z.array(RuntimeEvidenceDreamCheckpointActiveHypothesisSchema).default([]),
353
- rejected_approaches: z.array(RuntimeEvidenceDreamCheckpointRejectedApproachSchema).default([]),
354
- next_strategy_candidates: z.array(RuntimeEvidenceDreamCheckpointStrategyCandidateSchema).default([]),
355
- run_control_recommendations: z.array(RuntimeEvidenceDreamRunControlRecommendationSchema).optional(),
356
- guidance: z.string().min(1),
357
- uncertainty: z.array(z.string().min(1)).default([]),
358
- context_authority: z.literal("advisory_only").default("advisory_only"),
359
- confidence: z.number().min(0).max(1).default(0.5),
360
- }).strict();
361
- export const RuntimeEvidenceDivergentHypothesisSchema = z.object({
362
- strategy_id: z.string().min(1).optional(),
363
- hypothesis: z.string().min(1),
364
- strategy_family: z.string().min(1),
365
- role: z.enum(["exploitation", "adjacent_exploration", "divergent_exploration"]),
366
- novelty_score: z.number().min(0).max(1),
367
- similarity_to_recent_failures: z.number().min(0).max(1).default(0),
368
- expected_cost: z.enum(["low", "medium", "high"]),
369
- relationship_to_lineage: z.enum([
370
- "current_best",
371
- "neighbor",
372
- "failed_lineage",
373
- "different_mechanism",
374
- "different_assumption",
375
- "unknown",
376
- ]),
377
- prior_evidence: z.string().min(1).optional(),
378
- downrank_reason: z.string().min(1).optional(),
379
- smoke_status: z.enum(["not_run", "promote", "defer", "retire"]).default("not_run"),
380
- smoke_reason: z.string().min(1).optional(),
381
- smoke_evidence_ref: z.string().min(1).optional(),
382
- evidence_authority: z.literal("speculative_hypothesis").default("speculative_hypothesis"),
383
- }).strict();
384
- export const RuntimeEvidenceEntrySchema = z.object({
385
- schema_version: z.literal("runtime-evidence-entry-v1"),
386
- id: z.string().min(1),
387
- occurred_at: z.string().datetime(),
388
- kind: RuntimeEvidenceEntryKindSchema,
389
- scope: z.object({
390
- goal_id: z.string().min(1).optional(),
391
- run_id: z.string().min(1).optional(),
392
- task_id: z.string().min(1).optional(),
393
- loop_index: z.number().int().nonnegative().optional(),
394
- phase: z.string().min(1).optional(),
395
- }).strict(),
396
- hypothesis: z.string().min(1).optional(),
397
- strategy: z.string().min(1).optional(),
398
- task: z.object({
399
- id: z.string().min(1).optional(),
400
- description: z.string().min(1).optional(),
401
- action: z.string().min(1).optional(),
402
- primary_dimension: z.string().min(1).optional(),
403
- }).strict().optional(),
404
- verification: z.object({
405
- command: z.string().min(1).optional(),
406
- verdict: z.string().min(1).optional(),
407
- confidence: z.number().min(0).max(1).optional(),
408
- summary: z.string().min(1).optional(),
409
- }).strict().optional(),
410
- metrics: z.array(RuntimeEvidenceMetricSchema).default([]),
411
- evaluators: z.array(RuntimeEvidenceEvaluatorObservationSchema).optional(),
412
- research: z.array(RuntimeEvidenceResearchMemoSchema).optional(),
413
- dream_checkpoints: z.array(RuntimeEvidenceDreamCheckpointSchema).optional(),
414
- divergent_exploration: z.array(RuntimeEvidenceDivergentHypothesisSchema).optional(),
415
- candidates: z.array(RuntimeEvidenceCandidateRecordSchema).optional(),
416
- artifacts: z.array(RuntimeEvidenceArtifactRefSchema).default([]),
417
- result: z.object({
418
- status: z.string().min(1).optional(),
419
- summary: z.string().min(1).optional(),
420
- error: z.string().min(1).optional(),
421
- }).strict().optional(),
422
- outcome: RuntimeEvidenceOutcomeSchema.optional(),
423
- decision_reason: z.string().min(1).optional(),
424
- raw_refs: z.array(z.object({
425
- kind: z.string().min(1),
426
- id: z.string().min(1).optional(),
427
- path: z.string().min(1).optional(),
428
- state_relative_path: z.string().min(1).optional(),
429
- url: z.string().url().optional(),
430
- }).strict()).default([]),
431
- summary: z.string().min(1).optional(),
432
- }).strict().refine((entry) => entry.scope.goal_id || entry.scope.run_id, {
433
- message: "goal_id or run_id is required",
434
- path: ["scope"],
435
- });
10
+ import { summarizeArtifactRetention, } from "./artifact-retention.js";
11
+ import { RuntimeEvidenceEntrySchema, } from "./evidence-types.js";
12
+ export { RuntimeArtifactRetentionClassSchema, RuntimeEvidenceArtifactRefSchema, RuntimeEvidenceCandidateDispositionSchema, RuntimeEvidenceCandidateLineageSchema, RuntimeEvidenceCandidateNearMissReasonSchema, RuntimeEvidenceCandidateNearMissSchema, RuntimeEvidenceCandidateRecordSchema, RuntimeEvidenceCandidateSimilaritySchema, RuntimeEvidenceDivergentHypothesisSchema, RuntimeEvidenceDreamCheckpointSchema, RuntimeEvidenceDreamCheckpointActiveHypothesisSchema, RuntimeEvidenceDreamCheckpointMemoryRefSchema, RuntimeEvidenceDreamCheckpointRejectedApproachSchema, RuntimeEvidenceDreamCheckpointStrategyCandidateSchema, RuntimeEvidenceDreamCheckpointTriggerSchema, RuntimeEvidenceDreamRunControlRecommendationSchema, RuntimeEvidenceEntryKindSchema, RuntimeEvidenceEntrySchema, RuntimeEvidenceEvaluatorBudgetSchema, RuntimeEvidenceEvaluatorCalibrationSchema, RuntimeEvidenceEvaluatorCandidateSnapshotSchema, RuntimeEvidenceEvaluatorObservationSchema, RuntimeEvidenceEvaluatorProvenanceSchema, RuntimeEvidenceEvaluatorPublishActionSchema, RuntimeEvidenceEvaluatorSignalSchema, RuntimeEvidenceEvaluatorStatusSchema, RuntimeEvidenceEvaluatorValidationSchema, RuntimeEvidenceMetricSchema, RuntimeEvidenceMemoryUsageStatsSchema, RuntimeEvidenceOutcomeSchema, RuntimeEvidenceResearchExternalActionSchema, RuntimeEvidenceResearchFindingSchema, RuntimeEvidenceResearchMemoSchema, RuntimeEvidenceResearchSourceSchema, } from "./evidence-types.js";
13
+ const summaryIndexUpdateLocks = new Map();
436
14
  export class RuntimeEvidenceLedger {
437
15
  paths;
438
16
  constructor(runtimeRootOrPaths) {
@@ -472,14 +50,32 @@ export class RuntimeEvidenceLedger {
472
50
  if (entry.scope.run_id)
473
51
  targets.add(this.paths.evidenceRunPath(entry.scope.run_id));
474
52
  await Promise.all([...targets].map(async (target) => {
475
- await fsp.mkdir(path.dirname(target), { recursive: true });
476
- await fsp.appendFile(target, `${JSON.stringify(entry)}\n`, "utf8");
477
- }));
478
- await Promise.all([...targets].map(async (target) => {
479
- await rebuildSummaryIndex(target, this.paths);
53
+ await withSummaryIndexUpdateLock(target, async () => {
54
+ await fsp.mkdir(path.dirname(target), { recursive: true });
55
+ const preAppendIndex = await readPreAppendSummaryIndex(target);
56
+ await fsp.appendFile(target, `${JSON.stringify(entry)}\n`, "utf8");
57
+ await updateSummaryIndexAfterAppend(target, this.paths, [entry], preAppendIndex);
58
+ });
480
59
  }));
481
60
  return [entry];
482
61
  }
62
+ async appendCorrection(input) {
63
+ const { scope, evidence_id, ...correctionInput } = input;
64
+ const correction = MemoryCorrectionEntrySchema.parse(correctionInput);
65
+ await this.append({
66
+ id: evidence_id ?? correction.correction_id,
67
+ occurred_at: correction.created_at,
68
+ kind: "correction",
69
+ scope,
70
+ correction,
71
+ summary: correction.reason,
72
+ raw_refs: [{
73
+ kind: correction.target_ref.kind,
74
+ id: correction.target_ref.id,
75
+ }],
76
+ });
77
+ return correction;
78
+ }
483
79
  async readByGoal(goalId) {
484
80
  return readEvidenceFile(this.paths.evidenceGoalPath(goalId));
485
81
  }
@@ -520,7 +116,57 @@ async function rebuildSummaryIndex(canonicalPath, paths) {
520
116
  const read = await readEvidenceFile(canonicalPath);
521
117
  const manifests = await readReproducibilityManifests(paths, scope);
522
118
  const summary = summarizeEvidence(scope, read, manifests);
523
- await writeSummaryIndex(canonicalPath, summary);
119
+ const activeRead = manifests.length === 0 ? activeEvidenceRead(read) : null;
120
+ await writeSummaryIndex(canonicalPath, summary, activeRead
121
+ ? {
122
+ warnings: read.warnings,
123
+ primaryMetric: resolvePrimaryMetricKey([...activeRead.entries].reverse()) ?? undefined,
124
+ metricObservationState: buildMetricObservationState(activeRead.entries),
125
+ }
126
+ : undefined);
127
+ return summary;
128
+ }
129
+ async function withSummaryIndexUpdateLock(canonicalPath, action) {
130
+ const previous = summaryIndexUpdateLocks.get(canonicalPath) ?? Promise.resolve();
131
+ let release = () => undefined;
132
+ const current = new Promise((resolve) => {
133
+ release = resolve;
134
+ });
135
+ const next = previous.then(() => current, () => current);
136
+ summaryIndexUpdateLocks.set(canonicalPath, next);
137
+ await previous;
138
+ try {
139
+ return await action();
140
+ }
141
+ finally {
142
+ release();
143
+ if (summaryIndexUpdateLocks.get(canonicalPath) === next) {
144
+ summaryIndexUpdateLocks.delete(canonicalPath);
145
+ }
146
+ }
147
+ }
148
+ async function updateSummaryIndexAfterAppend(canonicalPath, paths, appendedEntries, preAppendIndex) {
149
+ const scope = summaryScopeFromPath(canonicalPath);
150
+ const manifests = await readReproducibilityManifests(paths, scope);
151
+ if (manifests.length > 0) {
152
+ return rebuildSummaryIndex(canonicalPath, paths);
153
+ }
154
+ if (!preAppendIndex) {
155
+ return rebuildSummaryIndex(canonicalPath, paths);
156
+ }
157
+ const warnings = readWarningsFromSummaryIndex(preAppendIndex);
158
+ if (!warnings)
159
+ return rebuildSummaryIndex(canonicalPath, paths);
160
+ const metricState = readMetricObservationStateFromSummaryIndex(preAppendIndex);
161
+ const primaryMetric = preAppendIndex.append_state?.primary_metric;
162
+ const summary = updateSummaryFromAppend(scope, preAppendIndex.summary, appendedEntries, warnings, metricState, primaryMetric);
163
+ if (!summary)
164
+ return rebuildSummaryIndex(canonicalPath, paths);
165
+ await writeSummaryIndex(canonicalPath, summary, {
166
+ warnings,
167
+ primaryMetric,
168
+ metricObservationState: updateMetricObservationState(metricState, appendedEntries),
169
+ });
524
170
  return summary;
525
171
  }
526
172
  function summaryIndexPath(canonicalPath) {
@@ -570,6 +216,41 @@ function isManifestArtifactRef(value) {
570
216
  && typeof value.label === "string";
571
217
  }
572
218
  async function readSummaryIndex(canonicalPath, expectedScope) {
219
+ return readSummaryIndexWithStat(canonicalPath, expectedScope);
220
+ }
221
+ async function readPreAppendSummaryIndex(canonicalPath) {
222
+ try {
223
+ const stat = await fsp.stat(canonicalPath);
224
+ if (stat.size === 0)
225
+ return emptySummaryIndex(canonicalPath);
226
+ }
227
+ catch (err) {
228
+ if (err.code === "ENOENT")
229
+ return emptySummaryIndex(canonicalPath);
230
+ throw err;
231
+ }
232
+ const scope = summaryScopeFromPath(canonicalPath);
233
+ return readSummaryIndexWithStat(canonicalPath, scope);
234
+ }
235
+ async function emptySummaryIndex(canonicalPath) {
236
+ const scope = summaryScopeFromPath(canonicalPath);
237
+ const summary = summarizeEvidence(scope, { entries: [], warnings: [] });
238
+ return {
239
+ schema_version: "runtime-evidence-summary-index-v1",
240
+ generated_at: new Date().toISOString(),
241
+ canonical_log_path: canonicalPath,
242
+ canonical_log_size: 0,
243
+ canonical_log_mtime_ms: 0,
244
+ summary,
245
+ append_state: {
246
+ schema_version: "runtime-evidence-summary-append-state-v1",
247
+ warnings: [],
248
+ primary_metric: undefined,
249
+ metric_observations: [],
250
+ },
251
+ };
252
+ }
253
+ async function readSummaryIndexWithStat(canonicalPath, expectedScope) {
573
254
  let text;
574
255
  try {
575
256
  text = await fsp.readFile(summaryIndexPath(canonicalPath), "utf8");
@@ -602,8 +283,78 @@ async function readSummaryIndex(canonicalPath, expectedScope) {
602
283
  return null;
603
284
  }
604
285
  }
286
+ function readCheckpointFromSummaryIndex(index) {
287
+ const checkpoint = index.checkpoint;
288
+ if (!checkpoint || checkpoint.schema_version !== "runtime-evidence-summary-checkpoint-v1")
289
+ return null;
290
+ if (!Array.isArray(checkpoint.entries) || !Array.isArray(checkpoint.warnings))
291
+ return null;
292
+ const entries = [];
293
+ for (const entry of checkpoint.entries) {
294
+ const parsed = RuntimeEvidenceEntrySchema.safeParse(entry);
295
+ if (!parsed.success)
296
+ return null;
297
+ entries.push(parsed.data);
298
+ }
299
+ const warnings = [];
300
+ for (const warning of checkpoint.warnings) {
301
+ if (typeof warning !== "object"
302
+ || warning === null
303
+ || typeof warning.file !== "string"
304
+ || typeof warning.line !== "number"
305
+ || typeof warning.message !== "string") {
306
+ return null;
307
+ }
308
+ warnings.push(warning);
309
+ }
310
+ return { entries, warnings };
311
+ }
312
+ function readWarningsFromSummaryIndex(index) {
313
+ if (index.append_state?.schema_version === "runtime-evidence-summary-append-state-v1") {
314
+ return validateRuntimeEvidenceWarnings(index.append_state.warnings);
315
+ }
316
+ return readCheckpointFromSummaryIndex(index)?.warnings ?? null;
317
+ }
318
+ function readMetricObservationStateFromSummaryIndex(index) {
319
+ const state = index.append_state?.metric_observations;
320
+ if (!state)
321
+ return null;
322
+ if (!Array.isArray(state))
323
+ return null;
324
+ for (const group of state) {
325
+ if (typeof group !== "object"
326
+ || group === null
327
+ || typeof group.metric_key !== "string"
328
+ || (group.direction !== "maximize" && group.direction !== "minimize")
329
+ || typeof group.count !== "number"
330
+ || !Array.isArray(group.recent)) {
331
+ return null;
332
+ }
333
+ }
334
+ return state;
335
+ }
336
+ function validateRuntimeEvidenceWarnings(value) {
337
+ if (!Array.isArray(value))
338
+ return null;
339
+ const warnings = [];
340
+ for (const warning of value) {
341
+ if (typeof warning !== "object"
342
+ || warning === null
343
+ || typeof warning.file !== "string"
344
+ || typeof warning.line !== "number"
345
+ || typeof warning.message !== "string") {
346
+ return null;
347
+ }
348
+ warnings.push(warning);
349
+ }
350
+ return warnings;
351
+ }
605
352
  function isCurrentEvidenceSummaryShape(summary) {
606
- return Array.isArray(summary.candidate_lineages)
353
+ return summary.context_policy_version === "quarantine-filtered-planning-context-v2"
354
+ && Array.isArray(summary.candidate_lineages)
355
+ && Array.isArray(summary.corrections)
356
+ && typeof summary.correction_state === "object"
357
+ && summary.correction_state !== null
607
358
  && Array.isArray(summary.recommended_candidate_portfolio)
608
359
  && Array.isArray(summary.near_miss_candidates)
609
360
  && typeof summary.artifact_retention === "object"
@@ -613,8 +364,316 @@ function isCurrentEvidenceSummaryShape(summary) {
613
364
  && typeof summary.candidate_selection_summary === "object"
614
365
  && summary.candidate_selection_summary !== null;
615
366
  }
616
- async function writeSummaryIndex(canonicalPath, summary) {
367
+ function updateSummaryFromAppend(scope, previous, appendedEntries, warnings, metricState, primaryMetric) {
368
+ if (appendedEntries.length === 0) {
369
+ return {
370
+ ...previous,
371
+ generated_at: new Date().toISOString(),
372
+ warnings,
373
+ };
374
+ }
375
+ if (!canIncrementSummaryWithEntries(appendedEntries))
376
+ return null;
377
+ if (previous.total_entries > 0 && !primaryMetric)
378
+ return null;
379
+ if (!canPreservePrimaryMetric(appendedEntries, primaryMetric))
380
+ return null;
381
+ const combinedRecent = [...appendedEntries, ...previous.recent_entries]
382
+ .sort((a, b) => b.occurred_at.localeCompare(a.occurred_at));
383
+ const recentEntries = dedupeEvidenceEntriesById(combinedRecent).slice(0, 10);
384
+ const recentFailedAttempts = dedupeEvidenceEntriesById([
385
+ ...appendedEntries.filter(isFailedEvidenceEntry),
386
+ ...previous.recent_failed_attempts,
387
+ ].sort((a, b) => b.occurred_at.localeCompare(a.occurred_at))).slice(0, 5);
388
+ const latestStrategyCandidates = appendedEntries.filter((entry) => entry.kind === "strategy" || Boolean(entry.strategy) || Boolean(entry.decision_reason));
389
+ const latestStrategy = [...latestStrategyCandidates, previous.latest_strategy].filter((entry) => Boolean(entry))
390
+ .sort((a, b) => b.occurred_at.localeCompare(a.occurred_at))[0] ?? null;
391
+ const bestEvidence = updateBestEvidenceFromAppend(previous.best_evidence, appendedEntries, primaryMetric);
392
+ if (bestEvidence === undefined)
393
+ return null;
394
+ if (!metricState)
395
+ return null;
396
+ const metricTrends = summarizeMetricState(updateMetricObservationState(metricState, appendedEntries));
397
+ return {
398
+ ...previous,
399
+ generated_at: new Date().toISOString(),
400
+ scope,
401
+ total_entries: previous.total_entries + appendedEntries.length,
402
+ latest_strategy: latestStrategy,
403
+ best_evidence: bestEvidence,
404
+ metric_trends: metricTrends.length > 0 ? metricTrends : previous.metric_trends,
405
+ recent_failed_attempts: recentFailedAttempts,
406
+ recent_entries: recentEntries,
407
+ warnings,
408
+ };
409
+ }
410
+ function activeEvidenceRead(read) {
411
+ const entries = [...read.entries].sort((a, b) => a.occurred_at.localeCompare(b.occurred_at));
412
+ const corrections = entries.flatMap((entry) => entry.correction ? [entry.correction] : []);
413
+ const correctionState = summarizeMemoryCorrectionState(corrections);
414
+ return {
415
+ entries: entries.filter((entry) => isRuntimeEvidenceEntryActive(entry, correctionState)),
416
+ warnings: read.warnings,
417
+ };
418
+ }
419
+ function updateBestEvidenceFromAppend(previousBest, appendedEntries, primaryMetric) {
420
+ if (!primaryMetric) {
421
+ return chooseBestEvidence(dedupeEvidenceEntriesById([
422
+ ...appendedEntries,
423
+ ...(previousBest ? [previousBest] : []),
424
+ ].sort((a, b) => b.occurred_at.localeCompare(a.occurred_at))));
425
+ }
426
+ let best = previousBest;
427
+ for (const entry of appendedEntries) {
428
+ const metric = findComparableMetric([entry], primaryMetric);
429
+ if (!metric)
430
+ continue;
431
+ if (!best) {
432
+ best = entry;
433
+ continue;
434
+ }
435
+ const current = chooseBestEvidence([entry, best].sort((a, b) => b.occurred_at.localeCompare(a.occurred_at)));
436
+ if (!current)
437
+ return undefined;
438
+ best = current;
439
+ }
440
+ return best;
441
+ }
442
+ function canPreservePrimaryMetric(appendedEntries, primaryMetric) {
443
+ if (!primaryMetric)
444
+ return appendedEntries.every((entry) => entry.metrics.length === 0);
445
+ return appendedEntries.every((entry) => entry.metrics.every((metric) => metric.direction === undefined
446
+ || metric.direction === "neutral"
447
+ || (metric.label === primaryMetric.label && metric.direction === primaryMetric.direction))
448
+ && (!entry.task?.primary_dimension || entry.task.primary_dimension === primaryMetric.label));
449
+ }
450
+ function buildMetricObservationState(entries) {
451
+ return updateMetricObservationState([], entries);
452
+ }
453
+ function updateMetricObservationState(previous, appendedEntries) {
454
+ const groups = new Map();
455
+ for (const group of previous ?? []) {
456
+ groups.set(`${group.metric_key}\0${group.direction}`, {
457
+ ...group,
458
+ recent: [...group.recent],
459
+ });
460
+ }
461
+ for (const observation of extractMetricObservationsFromEvidence(appendedEntries).sort((a, b) => a.observed_at.localeCompare(b.observed_at))) {
462
+ const key = `${observation.metric_key}\0${observation.direction}`;
463
+ const next = updateMetricState(groups.get(key), observation);
464
+ groups.set(key, next);
465
+ }
466
+ return [...groups.values()];
467
+ }
468
+ function updateMetricState(previous, observation) {
469
+ const normalized = observation.direction === "maximize" ? observation.value : -observation.value;
470
+ if (!previous) {
471
+ return {
472
+ metric_key: observation.metric_key,
473
+ direction: observation.direction,
474
+ count: 1,
475
+ confidence_sum: observation.confidence,
476
+ first_value: observation.value,
477
+ first_normalized: normalized,
478
+ first_observed_at: observation.observed_at,
479
+ latest_value: observation.value,
480
+ latest_normalized: normalized,
481
+ latest_observed_at: observation.observed_at,
482
+ best_value: observation.value,
483
+ best_normalized: normalized,
484
+ best_observed_at: observation.observed_at,
485
+ previous_best_normalized: normalized,
486
+ last_meaningful_improvement_delta: null,
487
+ last_meaningful_improvement_observed_at: null,
488
+ last_meaningful_improvement_index: null,
489
+ last_breakthrough_delta: null,
490
+ post_improvement_min_normalized: normalized,
491
+ post_improvement_max_normalized: normalized,
492
+ recent: [{ value: observation.value, normalized, observed_at: observation.observed_at, source: observation.source }],
493
+ };
494
+ }
495
+ const improvementThreshold = 0.01;
496
+ const breakthroughThreshold = 0.05;
497
+ const delta = normalized - previous.latest_normalized;
498
+ const meaningful = delta >= improvementThreshold;
499
+ const breakthrough = delta >= breakthroughThreshold;
500
+ const count = previous.count + 1;
501
+ const bestImproved = normalized > previous.best_normalized;
502
+ const postMin = meaningful ? normalized : Math.min(previous.post_improvement_min_normalized, normalized);
503
+ const postMax = meaningful ? normalized : Math.max(previous.post_improvement_max_normalized, normalized);
504
+ return {
505
+ ...previous,
506
+ count,
507
+ confidence_sum: previous.confidence_sum + observation.confidence,
508
+ latest_value: observation.value,
509
+ latest_normalized: normalized,
510
+ latest_observed_at: observation.observed_at,
511
+ best_value: bestImproved ? observation.value : previous.best_value,
512
+ best_normalized: bestImproved ? normalized : previous.best_normalized,
513
+ best_observed_at: bestImproved ? observation.observed_at : previous.best_observed_at,
514
+ previous_best_normalized: previous.best_normalized,
515
+ last_meaningful_improvement_delta: meaningful ? delta : previous.last_meaningful_improvement_delta,
516
+ last_meaningful_improvement_observed_at: meaningful
517
+ ? observation.observed_at
518
+ : previous.last_meaningful_improvement_observed_at,
519
+ last_meaningful_improvement_index: meaningful ? count - 1 : previous.last_meaningful_improvement_index,
520
+ last_breakthrough_delta: breakthrough ? delta : previous.last_breakthrough_delta,
521
+ post_improvement_min_normalized: postMin,
522
+ post_improvement_max_normalized: postMax,
523
+ recent: [
524
+ ...previous.recent,
525
+ { value: observation.value, normalized, observed_at: observation.observed_at, source: observation.source },
526
+ ].slice(-5),
527
+ };
528
+ }
529
+ function summarizeMetricState(states) {
530
+ return states.map(metricTrendFromState);
531
+ }
532
+ function metricTrendFromState(state) {
533
+ const improvementThreshold = 0.01;
534
+ const breakthroughThreshold = 0.05;
535
+ const noiseBand = 0.005;
536
+ const recentValues = state.recent.map((entry) => entry.normalized);
537
+ const recentSlope = linearSlope(recentValues);
538
+ const minRecent = Math.min(...recentValues);
539
+ const maxRecent = Math.max(...recentValues);
540
+ const recentRange = maxRecent - minRecent;
541
+ const latestBestDelta = state.latest_normalized - state.previous_best_normalized;
542
+ const latestDeltaFromBest = state.latest_normalized - state.best_normalized;
543
+ const latestDeltaFromFirst = state.latest_normalized - state.first_normalized;
544
+ const bestDelta = state.best_normalized - state.first_normalized;
545
+ const postImprovementRange = state.post_improvement_max_normalized - state.post_improvement_min_normalized;
546
+ const observationsSinceLastMeaningfulImprovement = state.last_meaningful_improvement_index === null
547
+ ? null
548
+ : (state.count - 1) - state.last_meaningful_improvement_index;
549
+ const trend = classifyCompactMetricTrend({
550
+ count: state.count,
551
+ latestBestDelta,
552
+ latestDeltaFromBest,
553
+ latestDeltaFromFirst,
554
+ bestDelta,
555
+ recentSlope,
556
+ recentRange,
557
+ postImprovementRange,
558
+ observationsSinceLastMeaningfulImprovement,
559
+ improvementThreshold,
560
+ breakthroughThreshold,
561
+ noiseBand,
562
+ });
563
+ const meanConfidence = state.confidence_sum / state.count;
564
+ const sampleConfidence = Math.min(1, state.count / 5);
565
+ const trendConfidence = trend === "noisy"
566
+ ? Math.max(0.35, Math.min(0.75, noiseBand / Math.max(recentRange, Number.EPSILON)))
567
+ : 1;
568
+ const confidence = clamp01(meanConfidence * sampleConfidence * trendConfidence);
569
+ return {
570
+ metric_key: state.metric_key,
571
+ direction: state.direction,
572
+ trend,
573
+ latest_value: state.latest_value,
574
+ latest_observed_at: state.latest_observed_at,
575
+ best_value: state.best_value,
576
+ best_observed_at: state.best_observed_at,
577
+ observation_count: state.count,
578
+ recent_slope_per_observation: denormalizeMetricDelta(recentSlope, state.direction),
579
+ best_delta: denormalizeMetricDelta(bestDelta, state.direction),
580
+ last_meaningful_improvement_delta: state.last_meaningful_improvement_delta === null
581
+ ? null
582
+ : denormalizeMetricDelta(state.last_meaningful_improvement_delta, state.direction),
583
+ last_breakthrough_delta: state.last_breakthrough_delta === null
584
+ ? null
585
+ : denormalizeMetricDelta(state.last_breakthrough_delta, state.direction),
586
+ time_since_last_meaningful_improvement_ms: state.last_meaningful_improvement_observed_at
587
+ ? Math.max(0, Date.now() - Date.parse(state.last_meaningful_improvement_observed_at))
588
+ : null,
589
+ improvement_threshold: denormalizeMetricDelta(improvementThreshold, state.direction),
590
+ breakthrough_threshold: denormalizeMetricDelta(breakthroughThreshold, state.direction),
591
+ noise_band: denormalizeMetricDelta(noiseBand, state.direction),
592
+ confidence,
593
+ source_refs: state.recent.map((entry) => entry.source),
594
+ summary: `${state.metric_key} trend is ${trend} from ${state.count} observation(s); latest=${state.latest_value}, best=${state.best_value}`,
595
+ };
596
+ }
597
+ function classifyCompactMetricTrend(input) {
598
+ if (input.count < 2)
599
+ return "noisy";
600
+ if (input.latestBestDelta >= input.breakthroughThreshold)
601
+ return "breakthrough";
602
+ if (input.latestBestDelta >= input.improvementThreshold)
603
+ return "improving";
604
+ if (input.latestDeltaFromBest <= -input.improvementThreshold)
605
+ return "regressing";
606
+ if (input.observationsSinceLastMeaningfulImprovement !== null
607
+ && input.observationsSinceLastMeaningfulImprovement >= 2
608
+ && input.postImprovementRange <= input.noiseBand) {
609
+ return "stalled";
610
+ }
611
+ if (input.latestDeltaFromFirst <= -input.improvementThreshold || input.recentSlope <= -input.improvementThreshold) {
612
+ return "regressing";
613
+ }
614
+ if (input.recentSlope >= input.improvementThreshold)
615
+ return "improving";
616
+ if (input.recentRange === 0 || input.recentRange <= Number.EPSILON)
617
+ return "stalled";
618
+ if (input.recentRange <= input.noiseBand || Math.abs(input.recentSlope) < input.noiseBand) {
619
+ return input.bestDelta >= input.improvementThreshold ? "stalled" : "noisy";
620
+ }
621
+ if (input.bestDelta < input.improvementThreshold)
622
+ return "stalled";
623
+ return "noisy";
624
+ }
625
+ function linearSlope(values) {
626
+ if (values.length < 2)
627
+ return 0;
628
+ const n = values.length;
629
+ const meanX = (n - 1) / 2;
630
+ const meanY = values.reduce((sum, value) => sum + value, 0) / n;
631
+ let numerator = 0;
632
+ let denominator = 0;
633
+ for (let index = 0; index < n; index += 1) {
634
+ const dx = index - meanX;
635
+ numerator += dx * (values[index] - meanY);
636
+ denominator += dx * dx;
637
+ }
638
+ return denominator === 0 ? 0 : numerator / denominator;
639
+ }
640
+ function denormalizeMetricDelta(delta, direction) {
641
+ return direction === "maximize" ? delta : -delta;
642
+ }
643
+ function canIncrementSummaryWithEntries(entries) {
644
+ return entries.every((entry) => entry.kind !== "correction"
645
+ && entry.kind !== "failure"
646
+ && entry.outcome !== "failed"
647
+ && entry.outcome !== "regressed"
648
+ && entry.result?.status !== "failed"
649
+ && entry.verification?.verdict !== "fail"
650
+ && !entry.correction
651
+ && !entry.correction_state
652
+ && !entry.evaluators?.length
653
+ && !entry.research?.length
654
+ && !entry.dream_checkpoints?.length
655
+ && !entry.divergent_exploration?.length
656
+ && !entry.candidates?.length
657
+ && !entry.artifacts.length
658
+ && !entry.quarantine_state
659
+ && entry.verification_status !== "suspicious"
660
+ && entry.verification_status !== "contradicted"
661
+ && !isSuspiciousProvenance(entry.provenance));
662
+ }
663
+ function dedupeEvidenceEntriesById(entries) {
664
+ const seen = new Set();
665
+ const unique = [];
666
+ for (const entry of entries) {
667
+ if (seen.has(entry.id))
668
+ continue;
669
+ seen.add(entry.id);
670
+ unique.push(entry);
671
+ }
672
+ return unique;
673
+ }
674
+ async function writeSummaryIndex(canonicalPath, summary, checkpointRead) {
617
675
  const stat = await fsp.stat(canonicalPath);
676
+ const warnings = checkpointRead ? checkpointRead.warnings : [];
618
677
  const index = {
619
678
  schema_version: "runtime-evidence-summary-index-v1",
620
679
  generated_at: new Date().toISOString(),
@@ -622,6 +681,25 @@ async function writeSummaryIndex(canonicalPath, summary) {
622
681
  canonical_log_size: stat.size,
623
682
  canonical_log_mtime_ms: stat.mtimeMs,
624
683
  summary,
684
+ append_state: {
685
+ schema_version: "runtime-evidence-summary-append-state-v1",
686
+ warnings,
687
+ ...(checkpointRead && "primaryMetric" in checkpointRead && checkpointRead.primaryMetric
688
+ ? { primary_metric: checkpointRead.primaryMetric }
689
+ : {}),
690
+ metric_observations: checkpointRead && "metricObservationState" in checkpointRead
691
+ ? checkpointRead.metricObservationState
692
+ : buildMetricObservationState(summary.recent_entries),
693
+ },
694
+ ...(checkpointRead && "entries" in checkpointRead
695
+ ? {
696
+ checkpoint: {
697
+ schema_version: "runtime-evidence-summary-checkpoint-v1",
698
+ entries: checkpointRead.entries,
699
+ warnings,
700
+ },
701
+ }
702
+ : {}),
625
703
  };
626
704
  await fsp.mkdir(path.dirname(canonicalPath), { recursive: true });
627
705
  await fsp.writeFile(summaryIndexPath(canonicalPath), `${JSON.stringify(index)}\n`, "utf8");
@@ -669,28 +747,35 @@ async function readEvidenceFile(filePath) {
669
747
  }
670
748
  function summarizeEvidence(scope, read, manifests = []) {
671
749
  const entries = [...read.entries].sort((a, b) => a.occurred_at.localeCompare(b.occurred_at));
672
- const newestFirst = [...entries].reverse();
673
- const evaluatorSummary = summarizeEvidenceEvaluatorResults(entries);
750
+ const corrections = entries.flatMap((entry) => entry.correction ? [entry.correction] : []);
751
+ const correctionState = summarizeMemoryCorrectionState(corrections);
752
+ const activeEntries = entries.filter((entry) => isRuntimeEvidenceEntryActive(entry, correctionState));
753
+ const newestFirst = [...activeEntries].reverse();
754
+ const evaluatorSummary = summarizeEvidenceEvaluatorResults(activeEntries);
755
+ const activeDreamCheckpoints = filterRetractedDreamCheckpointMemories(summarizeEvidenceDreamCheckpoints(activeEntries), correctionState, scope);
674
756
  return {
675
757
  schema_version: "runtime-evidence-summary-v1",
758
+ context_policy_version: "quarantine-filtered-planning-context-v2",
676
759
  generated_at: new Date().toISOString(),
677
760
  scope,
678
761
  total_entries: entries.length,
679
762
  latest_strategy: newestFirst.find((entry) => entry.kind === "strategy" || Boolean(entry.strategy) || Boolean(entry.decision_reason)) ?? null,
680
763
  best_evidence: chooseBestEvidence(newestFirst),
681
- metric_trends: summarizeEvidenceMetricTrends(entries),
764
+ metric_trends: summarizeEvidenceMetricTrends(activeEntries),
682
765
  evaluator_summary: evaluatorSummary,
683
- research_memos: summarizeEvidenceResearchMemos(entries),
684
- dream_checkpoints: summarizeEvidenceDreamCheckpoints(entries),
685
- divergent_exploration: entries
766
+ research_memos: summarizeEvidenceResearchMemos(activeEntries),
767
+ dream_checkpoints: activeDreamCheckpoints,
768
+ divergent_exploration: activeEntries
686
769
  .flatMap((entry) => entry.divergent_exploration ?? [])
687
770
  .slice(-10)
688
771
  .reverse(),
689
- candidate_lineages: summarizeCandidateLineages(entries),
690
- recommended_candidate_portfolio: selectDiversifiedCandidatePortfolio(entries),
691
- candidate_selection_summary: summarizeCandidateSelection(entries, evaluatorSummary),
692
- near_miss_candidates: summarizeNearMissCandidates(entries),
693
- artifact_retention: summarizeArtifactRetention(entries, { manifests }),
772
+ corrections,
773
+ correction_state: correctionState,
774
+ candidate_lineages: summarizeCandidateLineages(activeEntries),
775
+ recommended_candidate_portfolio: selectDiversifiedCandidatePortfolio(activeEntries),
776
+ candidate_selection_summary: summarizeCandidateSelection(activeEntries, evaluatorSummary),
777
+ near_miss_candidates: summarizeNearMissCandidates(activeEntries),
778
+ artifact_retention: summarizeArtifactRetention(activeEntries, { manifests }),
694
779
  recent_failed_attempts: newestFirst
695
780
  .filter((entry) => entry.outcome === "failed"
696
781
  || entry.outcome === "regressed"
@@ -698,11 +783,105 @@ function summarizeEvidence(scope, read, manifests = []) {
698
783
  || entry.result?.status === "failed"
699
784
  || entry.verification?.verdict === "fail")
700
785
  .slice(0, 5),
701
- failed_lineages: summarizeFailedLineages(entries),
786
+ failed_lineages: summarizeFailedLineages(activeEntries),
702
787
  recent_entries: newestFirst.slice(0, 10),
703
788
  warnings: read.warnings,
704
789
  };
705
790
  }
791
+ function isRuntimeEvidenceEntryActive(entry, correctionState) {
792
+ if (entry.kind === "correction")
793
+ return false;
794
+ if (entry.quarantine_state?.status === "quarantined")
795
+ return false;
796
+ if (entry.verification_status === "suspicious" || entry.verification_status === "contradicted")
797
+ return false;
798
+ if (isSuspiciousProvenance(entry.provenance))
799
+ return false;
800
+ return runtimeEvidenceCorrectionRefs(entry).every((ref) => correctionStateForTarget(correctionState, ref).active);
801
+ }
802
+ function runtimeEvidenceCorrectionRefs(entry) {
803
+ const refs = [
804
+ { kind: "runtime_evidence", id: entry.id },
805
+ ];
806
+ if (entry.scope.run_id) {
807
+ refs.push({ kind: "runtime_evidence", id: entry.id, scope: { run_id: entry.scope.run_id } });
808
+ }
809
+ if (entry.scope.goal_id) {
810
+ refs.push({ kind: "runtime_evidence", id: entry.id, scope: { goal_id: entry.scope.goal_id } });
811
+ }
812
+ if (entry.scope.goal_id || entry.scope.run_id || entry.scope.task_id) {
813
+ refs.push({
814
+ kind: "runtime_evidence",
815
+ id: entry.id,
816
+ scope: {
817
+ ...(entry.scope.goal_id ? { goal_id: entry.scope.goal_id } : {}),
818
+ ...(entry.scope.run_id ? { run_id: entry.scope.run_id } : {}),
819
+ ...(entry.scope.task_id ? { task_id: entry.scope.task_id } : {}),
820
+ },
821
+ });
822
+ }
823
+ return refs;
824
+ }
825
+ function filterRetractedDreamCheckpointMemories(checkpoints, correctionState, scope) {
826
+ return checkpoints
827
+ .map((checkpoint) => {
828
+ const relevant_memories = checkpoint.relevant_memories.filter((memory) => isDreamCheckpointMemoryRefAdmissible(memory)
829
+ && (!memory.ref || dreamMemoryCorrectionRefs(memory.ref, checkpoint, scope).every((ref) => correctionStateForTarget(correctionState, ref).active)));
830
+ return {
831
+ checkpoint,
832
+ relevant_memories,
833
+ planning_context_status: relevant_memories.length === checkpoint.relevant_memories.length
834
+ ? "active"
835
+ : "partially_retracted",
836
+ };
837
+ })
838
+ .filter(({ checkpoint, relevant_memories }) => checkpoint.relevant_memories.length === 0 || relevant_memories.length > 0)
839
+ .map(({ checkpoint, relevant_memories, planning_context_status }) => ({
840
+ ...checkpoint,
841
+ relevant_memories,
842
+ planning_context_status,
843
+ }));
844
+ }
845
+ function isDreamCheckpointMemoryRefAdmissible(memory) {
846
+ if (memory.quarantine_state?.status === "quarantined")
847
+ return false;
848
+ if (memory.verification_status === "suspicious" || memory.verification_status === "contradicted")
849
+ return false;
850
+ if (isSuspiciousProvenance(memory.provenance))
851
+ return false;
852
+ if (memory.provenance
853
+ && (memory.provenance.source_type === "web" || memory.provenance.source_type === "external")
854
+ && memory.provenance.reliability !== undefined
855
+ && memory.provenance.reliability < 0.5) {
856
+ return false;
857
+ }
858
+ return true;
859
+ }
860
+ function isSuspiciousProvenance(provenance) {
861
+ if (!provenance)
862
+ return false;
863
+ if (provenance.verification_status === "suspicious" || provenance.verification_status === "contradicted") {
864
+ return true;
865
+ }
866
+ const riskSignals = new Set(provenance.risk_signals);
867
+ return riskSignals.has("hallucinated")
868
+ || riskSignals.has("low_provenance")
869
+ || riskSignals.has("contradiction")
870
+ || riskSignals.has("prompt_injection_like")
871
+ || riskSignals.has("unverified_external");
872
+ }
873
+ function dreamMemoryCorrectionRefs(ref, checkpoint, scope) {
874
+ const refs = [{ kind: "dream_checkpoint", id: ref }];
875
+ if (checkpoint.run_id)
876
+ refs.push({ kind: "dream_checkpoint", id: ref, scope: { run_id: checkpoint.run_id } });
877
+ if (checkpoint.goal_id)
878
+ refs.push({ kind: "dream_checkpoint", id: ref, scope: { goal_id: checkpoint.goal_id } });
879
+ if (scope.run_id)
880
+ refs.push({ kind: "dream_checkpoint", id: ref, scope: { run_id: scope.run_id } });
881
+ if (scope.goal_id)
882
+ refs.push({ kind: "dream_checkpoint", id: ref, scope: { goal_id: scope.goal_id } });
883
+ return refs;
884
+ }
706
885
  export function selectDiversifiedCandidatePortfolio(entriesOldestFirst, options = {}) {
707
886
  const limit = options.limit ?? 3;
708
887
  if (limit <= 0)
@@ -775,7 +954,7 @@ function scoreCandidateSelectionContexts(rawRanked, calibration = []) {
775
954
  const diversityScore = clamp01(candidate.robustness?.diversity_score === undefined
776
955
  ? inferredDiversity
777
956
  : Math.min(candidate.robustness.diversity_score, inferredDiversity));
778
- const riskPenalty = clamp01(candidate.robustness?.risk_penalty ?? inferredCandidateRiskPenalty(candidate));
957
+ const riskPenalty = clamp01(candidate.robustness?.risk_penalty ?? 0);
779
958
  const evidenceConfidence = clamp01(candidate.robustness?.evidence_confidence ?? context.metric?.confidence ?? 0.5);
780
959
  const calibrationAdjustment = evaluatorCalibrationAdjustment(candidate.candidate_id, calibration);
781
960
  const robustScore = clamp01(candidate.robustness?.robust_score
@@ -848,19 +1027,6 @@ function highestKnownSimilarity(candidate, allCandidates) {
848
1027
  }
849
1028
  return highest;
850
1029
  }
851
- function inferredCandidateRiskPenalty(candidate) {
852
- const lineageText = [
853
- ...candidate.lineage.config_lineage,
854
- ...candidate.lineage.postprocess_lineage,
855
- ].map(normalizeLineageText).join(" ");
856
- if (lineageText.includes("manual") || lineageText.includes("threshold") || lineageText.includes("postprocess")) {
857
- return 0.15;
858
- }
859
- if (lineageText.includes("calibration") || lineageText.includes("weight")) {
860
- return 0.08;
861
- }
862
- return 0;
863
- }
864
1030
  function candidateSelectionReasons(candidate, scores) {
865
1031
  const reasons = [];
866
1032
  if (scores.stabilityScore >= 0.8)
@@ -939,6 +1105,8 @@ function summarizeNearMissCandidates(entriesOldestFirst) {
939
1105
  }
940
1106
  function nearMissReasonsForCandidate(context, rawBest, scored) {
941
1107
  const explicit = context.candidate.near_miss?.reason_to_keep ?? [];
1108
+ if (explicit.length > 0)
1109
+ return [...explicit];
942
1110
  const reasons = new Set(explicit);
943
1111
  if (context.candidate.near_miss?.status === "retained" || context.candidate.near_miss?.status === "promoted") {
944
1112
  for (const reason of inferredNearMissReasons(context, rawBest, scored))
@@ -971,14 +1139,6 @@ function inferredNearMissReasons(context, rawBest, scored) {
971
1139
  if (complementaryCandidateIds(context.candidate).length > 0 || highestKnownSimilarity(context.candidate, [context.candidate, rawBest.candidate]) <= 0.5) {
972
1140
  reasons.push("complementarity");
973
1141
  }
974
- const lineageText = [
975
- ...context.candidate.lineage.model_lineage,
976
- ...context.candidate.lineage.config_lineage,
977
- ...(context.candidate.near_miss?.summary ? [context.candidate.near_miss.summary] : []),
978
- ].map(normalizeLineageText).join(" ");
979
- if (lineageText.includes("stack") || lineageText.includes("ensemble") || lineageText.includes("blend")) {
980
- reasons.push("ensemble_potential");
981
- }
982
1142
  return reasons;
983
1143
  }
984
1144
  function isImplicitNearMiss(context, rawBest, scored) {
@@ -1136,25 +1296,12 @@ function resolvePrimaryCandidateMetricKey(entriesOldestFirst) {
1136
1296
  const coverageDelta = b.candidate_count - a.candidate_count;
1137
1297
  if (coverageDelta !== 0)
1138
1298
  return coverageDelta;
1139
- const localityDelta = Number(isLocalValidationMetricLabel(b.key.label)) - Number(isLocalValidationMetricLabel(a.key.label));
1140
- if (localityDelta !== 0)
1141
- return localityDelta;
1142
1299
  const positionDelta = a.position_sum / a.candidate_count - b.position_sum / b.candidate_count;
1143
1300
  if (positionDelta !== 0)
1144
1301
  return positionDelta;
1145
1302
  return b.latest_index - a.latest_index;
1146
1303
  })[0]?.key ?? null;
1147
1304
  }
1148
- function isLocalValidationMetricLabel(label) {
1149
- const normalized = normalizeLineageText(label);
1150
- const externalHints = ["public", "private", "leaderboard", "external", "lb", "submission"];
1151
- for (const hint of externalHints) {
1152
- if (normalized === hint || normalized.includes(hint)) {
1153
- return false;
1154
- }
1155
- }
1156
- return true;
1157
- }
1158
1305
  function candidateComparableMetric(candidate, primaryMetric) {
1159
1306
  for (const metric of candidate.metrics) {
1160
1307
  if (primaryMetric && (metric.label !== primaryMetric.label || metric.direction !== primaryMetric.direction))
@@ -1392,13 +1539,52 @@ function chooseBestMetricEvidence(entriesNewestFirst) {
1392
1539
  return candidates.sort(compareComparableEvidenceMetrics)[0]?.entry ?? null;
1393
1540
  }
1394
1541
  function resolvePrimaryMetricKey(entriesNewestFirst) {
1395
- for (const entry of entriesNewestFirst) {
1396
- const metric = findFirstDirectedNumericMetric(entry);
1397
- if (metric?.direction === "maximize" || metric?.direction === "minimize") {
1398
- return { label: metric.label, direction: metric.direction };
1399
- }
1400
- }
1401
- return null;
1542
+ const oldestFirst = [...entriesNewestFirst].reverse();
1543
+ const byMetric = new Map();
1544
+ oldestFirst.forEach((entry, entryIndex) => {
1545
+ const seenForEntry = new Set();
1546
+ entry.metrics.forEach((metric, metricIndex) => {
1547
+ const comparable = toComparableMetric(metric);
1548
+ if (!comparable)
1549
+ return;
1550
+ const key = { label: metric.label, direction: comparable.direction };
1551
+ const mapKey = `${key.label}:${key.direction}`;
1552
+ if (seenForEntry.has(mapKey))
1553
+ return;
1554
+ seenForEntry.add(mapKey);
1555
+ const existing = byMetric.get(mapKey);
1556
+ const explicitPrimary = entry.task?.primary_dimension === metric.label ? 1 : 0;
1557
+ if (!existing) {
1558
+ byMetric.set(mapKey, {
1559
+ key,
1560
+ entry_count: 1,
1561
+ explicit_primary_count: explicitPrimary,
1562
+ position_sum: metricIndex,
1563
+ latest_index: entryIndex,
1564
+ });
1565
+ return;
1566
+ }
1567
+ existing.entry_count += 1;
1568
+ existing.explicit_primary_count += explicitPrimary;
1569
+ existing.position_sum += metricIndex;
1570
+ existing.latest_index = entryIndex;
1571
+ });
1572
+ });
1573
+ // Primary evidence metric inference is intentionally structural: exact
1574
+ // task.primary_dimension matches win, then broadest repeated metric coverage,
1575
+ // then stable first-position metric ordering, then recency as the final tie.
1576
+ return [...byMetric.values()].sort((a, b) => {
1577
+ const explicitDelta = b.explicit_primary_count - a.explicit_primary_count;
1578
+ if (explicitDelta !== 0)
1579
+ return explicitDelta;
1580
+ const coverageDelta = b.entry_count - a.entry_count;
1581
+ if (coverageDelta !== 0)
1582
+ return coverageDelta;
1583
+ const positionDelta = a.position_sum / a.entry_count - b.position_sum / b.entry_count;
1584
+ if (positionDelta !== 0)
1585
+ return positionDelta;
1586
+ return b.latest_index - a.latest_index;
1587
+ })[0]?.key ?? null;
1402
1588
  }
1403
1589
  function findComparableMetric(entries, key) {
1404
1590
  for (const entry of entries) {
@@ -1412,13 +1598,6 @@ function findComparableMetric(entries, key) {
1412
1598
  }
1413
1599
  return null;
1414
1600
  }
1415
- function findFirstDirectedNumericMetric(entry) {
1416
- for (const metric of entry.metrics) {
1417
- if (toComparableMetric(metric))
1418
- return metric;
1419
- }
1420
- return null;
1421
- }
1422
1601
  function toComparableMetric(metric) {
1423
1602
  if (typeof metric.value !== "number" || !Number.isFinite(metric.value))
1424
1603
  return null;