pulseed 0.6.1 → 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 (831) hide show
  1. package/README.md +1 -1
  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/state/state-manager-goal-write.d.ts +1 -1
  5. package/dist/base/state/state-manager-goal-write.d.ts.map +1 -1
  6. package/dist/base/state/state-manager.d.ts +2 -6
  7. package/dist/base/state/state-manager.d.ts.map +1 -1
  8. package/dist/base/state/state-manager.js.map +1 -1
  9. package/dist/base/state/state-write-fence.d.ts +7 -0
  10. package/dist/base/state/state-write-fence.d.ts.map +1 -0
  11. package/dist/base/state/state-write-fence.js +2 -0
  12. package/dist/base/state/state-write-fence.js.map +1 -0
  13. package/dist/base/types/companion.d.ts +2 -0
  14. package/dist/base/types/companion.d.ts.map +1 -0
  15. package/dist/base/types/companion.js +2 -0
  16. package/dist/base/types/companion.js.map +1 -0
  17. package/dist/base/types/index.d.ts +1 -0
  18. package/dist/base/types/index.d.ts.map +1 -1
  19. package/dist/base/types/index.js +1 -0
  20. package/dist/base/types/index.js.map +1 -1
  21. package/dist/index.d.ts +4 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/interface/chat/chat-event-state.d.ts +2 -0
  26. package/dist/interface/chat/chat-event-state.d.ts.map +1 -1
  27. package/dist/interface/chat/chat-event-state.js +28 -11
  28. package/dist/interface/chat/chat-event-state.js.map +1 -1
  29. package/dist/interface/chat/chat-events.d.ts +9 -1
  30. package/dist/interface/chat/chat-events.d.ts.map +1 -1
  31. package/dist/interface/chat/chat-history.d.ts +4739 -1
  32. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  33. package/dist/interface/chat/chat-history.js +40 -2
  34. package/dist/interface/chat/chat-history.js.map +1 -1
  35. package/dist/interface/chat/chat-runner-commands.d.ts +2 -32
  36. package/dist/interface/chat/chat-runner-commands.d.ts.map +1 -1
  37. package/dist/interface/chat/chat-runner-commands.js +2 -2
  38. package/dist/interface/chat/chat-runner-commands.js.map +1 -1
  39. package/dist/interface/chat/chat-runner-contracts.d.ts +152 -0
  40. package/dist/interface/chat/chat-runner-contracts.d.ts.map +1 -0
  41. package/dist/interface/chat/chat-runner-contracts.js +2 -0
  42. package/dist/interface/chat/chat-runner-contracts.js.map +1 -0
  43. package/dist/interface/chat/chat-runner-event-bridge.d.ts +8 -2
  44. package/dist/interface/chat/chat-runner-event-bridge.d.ts.map +1 -1
  45. package/dist/interface/chat/chat-runner-event-bridge.js +76 -11
  46. package/dist/interface/chat/chat-runner-event-bridge.js.map +1 -1
  47. package/dist/interface/chat/chat-runner-routes.d.ts +66 -12
  48. package/dist/interface/chat/chat-runner-routes.d.ts.map +1 -1
  49. package/dist/interface/chat/chat-runner-routes.js +322 -30
  50. package/dist/interface/chat/chat-runner-routes.js.map +1 -1
  51. package/dist/interface/chat/chat-runner-runtime.d.ts +1 -1
  52. package/dist/interface/chat/chat-runner-runtime.d.ts.map +1 -1
  53. package/dist/interface/chat/chat-runner-runtime.js +4 -0
  54. package/dist/interface/chat/chat-runner-runtime.js.map +1 -1
  55. package/dist/interface/chat/chat-runner.d.ts +10 -71
  56. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  57. package/dist/interface/chat/chat-runner.js +403 -58
  58. package/dist/interface/chat/chat-runner.js.map +1 -1
  59. package/dist/interface/chat/chat-session-store.d.ts +2 -0
  60. package/dist/interface/chat/chat-session-store.d.ts.map +1 -1
  61. package/dist/interface/chat/chat-session-store.js +3 -6
  62. package/dist/interface/chat/chat-session-store.js.map +1 -1
  63. package/dist/interface/chat/cross-platform-session-global.d.ts +2 -1
  64. package/dist/interface/chat/cross-platform-session-global.d.ts.map +1 -1
  65. package/dist/interface/chat/cross-platform-session-global.js +4 -10
  66. package/dist/interface/chat/cross-platform-session-global.js.map +1 -1
  67. package/dist/interface/chat/cross-platform-session.d.ts +30 -1
  68. package/dist/interface/chat/cross-platform-session.d.ts.map +1 -1
  69. package/dist/interface/chat/cross-platform-session.js +413 -52
  70. package/dist/interface/chat/cross-platform-session.js.map +1 -1
  71. package/dist/interface/chat/event-subscriber.js +2 -2
  72. package/dist/interface/chat/event-subscriber.js.map +1 -1
  73. package/dist/interface/chat/failure-recovery.js +1 -1
  74. package/dist/interface/chat/failure-recovery.js.map +1 -1
  75. package/dist/interface/chat/freeform-route-classifier.d.ts +5 -5
  76. package/dist/interface/chat/freeform-route-classifier.js +3 -2
  77. package/dist/interface/chat/freeform-route-classifier.js.map +1 -1
  78. package/dist/interface/chat/gateway-setup-status.d.ts +33 -0
  79. package/dist/interface/chat/gateway-setup-status.d.ts.map +1 -0
  80. package/dist/interface/chat/gateway-setup-status.js +44 -0
  81. package/dist/interface/chat/gateway-setup-status.js.map +1 -0
  82. package/dist/interface/chat/ingress-router.d.ts +22 -0
  83. package/dist/interface/chat/ingress-router.d.ts.map +1 -1
  84. package/dist/interface/chat/ingress-router.js +148 -11
  85. package/dist/interface/chat/ingress-router.js.map +1 -1
  86. package/dist/interface/chat/operation-progress.d.ts +17 -0
  87. package/dist/interface/chat/operation-progress.d.ts.map +1 -0
  88. package/dist/interface/chat/operation-progress.js +29 -0
  89. package/dist/interface/chat/operation-progress.js.map +1 -0
  90. package/dist/interface/chat/setup-config-write.d.ts +27 -0
  91. package/dist/interface/chat/setup-config-write.d.ts.map +1 -0
  92. package/dist/interface/chat/setup-config-write.js +79 -0
  93. package/dist/interface/chat/setup-config-write.js.map +1 -0
  94. package/dist/interface/chat/setup-dialogue.d.ts +199 -0
  95. package/dist/interface/chat/setup-dialogue.d.ts.map +1 -0
  96. package/dist/interface/chat/setup-dialogue.js +97 -0
  97. package/dist/interface/chat/setup-dialogue.js.map +1 -0
  98. package/dist/interface/chat/setup-secret-intake.d.ts +68 -0
  99. package/dist/interface/chat/setup-secret-intake.d.ts.map +1 -0
  100. package/dist/interface/chat/setup-secret-intake.js +84 -0
  101. package/dist/interface/chat/setup-secret-intake.js.map +1 -0
  102. package/dist/interface/chat/turn-language.d.ts +23 -0
  103. package/dist/interface/chat/turn-language.d.ts.map +1 -0
  104. package/dist/interface/chat/turn-language.js +46 -0
  105. package/dist/interface/chat/turn-language.js.map +1 -0
  106. package/dist/interface/cli/cli-command-registry.d.ts +1 -1
  107. package/dist/interface/cli/cli-command-registry.d.ts.map +1 -1
  108. package/dist/interface/cli/cli-runner.js +1 -1
  109. package/dist/interface/cli/cli-runner.js.map +1 -1
  110. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  111. package/dist/interface/cli/commands/daemon.js +3 -0
  112. package/dist/interface/cli/commands/daemon.js.map +1 -1
  113. package/dist/interface/cli/commands/operator-binding-status.d.ts +59 -0
  114. package/dist/interface/cli/commands/operator-binding-status.d.ts.map +1 -0
  115. package/dist/interface/cli/commands/operator-binding-status.js +257 -0
  116. package/dist/interface/cli/commands/operator-binding-status.js.map +1 -0
  117. package/dist/interface/cli/commands/run.d.ts +2 -2
  118. package/dist/interface/cli/commands/run.d.ts.map +1 -1
  119. package/dist/interface/cli/commands/run.js.map +1 -1
  120. package/dist/interface/cli/commands/runtime.d.ts.map +1 -1
  121. package/dist/interface/cli/commands/runtime.js +8 -1
  122. package/dist/interface/cli/commands/runtime.js.map +1 -1
  123. package/dist/interface/cli/commands/setup/steps-gateway.js +14 -3
  124. package/dist/interface/cli/commands/setup/steps-gateway.js.map +1 -1
  125. package/dist/interface/cli/commands/setup-wizard.d.ts +31 -0
  126. package/dist/interface/cli/commands/setup-wizard.d.ts.map +1 -1
  127. package/dist/interface/cli/commands/setup-wizard.js +88 -0
  128. package/dist/interface/cli/commands/setup-wizard.js.map +1 -1
  129. package/dist/interface/cli/commands/telegram.d.ts.map +1 -1
  130. package/dist/interface/cli/commands/telegram.js +27 -3
  131. package/dist/interface/cli/commands/telegram.js.map +1 -1
  132. package/dist/interface/cli/setup.d.ts +3 -3
  133. package/dist/interface/cli/setup.d.ts.map +1 -1
  134. package/dist/interface/cli/setup.js +3 -2
  135. package/dist/interface/cli/setup.js.map +1 -1
  136. package/dist/interface/cli/utils/loop-runner.d.ts +1 -1
  137. package/dist/interface/cli/utils/loop-runner.d.ts.map +1 -1
  138. package/dist/interface/cli/utils.js +1 -1
  139. package/dist/interface/tui/actions.d.ts.map +1 -1
  140. package/dist/interface/tui/actions.js +14 -6
  141. package/dist/interface/tui/actions.js.map +1 -1
  142. package/dist/interface/tui/app.d.ts +1 -7
  143. package/dist/interface/tui/app.d.ts.map +1 -1
  144. package/dist/interface/tui/app.js +71 -120
  145. package/dist/interface/tui/app.js.map +1 -1
  146. package/dist/interface/tui/chat-surface.d.ts +1 -0
  147. package/dist/interface/tui/chat-surface.d.ts.map +1 -1
  148. package/dist/interface/tui/chat-surface.js +15 -0
  149. package/dist/interface/tui/chat-surface.js.map +1 -1
  150. package/dist/interface/tui/entry-approval.js +2 -2
  151. package/dist/interface/tui/entry-approval.js.map +1 -1
  152. package/dist/interface/tui/entry-deps.d.ts +1 -1
  153. package/dist/interface/tui/entry-deps.d.ts.map +1 -1
  154. package/dist/interface/tui/entry-deps.js +54 -8
  155. package/dist/interface/tui/entry-deps.js.map +1 -1
  156. package/dist/interface/tui/input-action.d.ts +49 -0
  157. package/dist/interface/tui/input-action.d.ts.map +1 -0
  158. package/dist/interface/tui/input-action.js +46 -0
  159. package/dist/interface/tui/input-action.js.map +1 -0
  160. package/dist/interface/tui/markdown-renderer.d.ts.map +1 -1
  161. package/dist/interface/tui/markdown-renderer.js +4 -1
  162. package/dist/interface/tui/markdown-renderer.js.map +1 -1
  163. package/dist/interface/tui/use-loop.d.ts +1 -1
  164. package/dist/interface/tui/use-loop.d.ts.map +1 -1
  165. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.d.ts.map +1 -1
  166. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js +14 -0
  167. package/dist/orchestrator/execution/agent-loop/agent-loop-default-profile.js.map +1 -1
  168. package/dist/orchestrator/execution/agent-loop/agent-loop-events.d.ts +3 -0
  169. package/dist/orchestrator/execution/agent-loop/agent-loop-events.d.ts.map +1 -1
  170. package/dist/orchestrator/execution/agent-loop/agent-loop-events.js.map +1 -1
  171. package/dist/orchestrator/execution/agent-loop/agent-loop-result.d.ts +17 -0
  172. package/dist/orchestrator/execution/agent-loop/agent-loop-result.d.ts.map +1 -1
  173. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.d.ts +3 -0
  174. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.d.ts.map +1 -1
  175. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts +1 -0
  176. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts.map +1 -1
  177. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js +20 -3
  178. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js.map +1 -1
  179. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.d.ts.map +1 -1
  180. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.js +5 -3
  181. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.js.map +1 -1
  182. package/dist/orchestrator/execution/agent-loop/agent-timeline.d.ts +3 -1
  183. package/dist/orchestrator/execution/agent-loop/agent-timeline.d.ts.map +1 -1
  184. package/dist/orchestrator/execution/agent-loop/agent-timeline.js +8 -20
  185. package/dist/orchestrator/execution/agent-loop/agent-timeline.js.map +1 -1
  186. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts.map +1 -1
  187. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js +38 -25
  188. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js.map +1 -1
  189. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts.map +1 -1
  190. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js +20 -4
  191. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js.map +1 -1
  192. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts +1 -51
  193. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts.map +1 -1
  194. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js +3 -239
  195. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js.map +1 -1
  196. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.d.ts +60 -0
  197. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.d.ts.map +1 -0
  198. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.js +244 -0
  199. package/dist/orchestrator/execution/agent-loop/durable-loop-control-tools.js.map +1 -0
  200. package/dist/orchestrator/execution/agent-loop/index.d.ts +1 -1
  201. package/dist/orchestrator/execution/agent-loop/index.d.ts.map +1 -1
  202. package/dist/orchestrator/execution/agent-loop/index.js +1 -1
  203. package/dist/orchestrator/execution/agent-loop/index.js.map +1 -1
  204. package/dist/orchestrator/execution/task/task-generation.d.ts +50 -2
  205. package/dist/orchestrator/execution/task/task-generation.d.ts.map +1 -1
  206. package/dist/orchestrator/execution/task/task-generation.js +19 -1
  207. package/dist/orchestrator/execution/task/task-generation.js.map +1 -1
  208. package/dist/orchestrator/execution/task/task-lifecycle.js +8 -11
  209. package/dist/orchestrator/execution/task/task-lifecycle.js.map +1 -1
  210. package/dist/orchestrator/execution/task/task-prompt-builder.d.ts.map +1 -1
  211. package/dist/orchestrator/execution/task/task-prompt-builder.js +9 -0
  212. package/dist/orchestrator/execution/task/task-prompt-builder.js.map +1 -1
  213. package/dist/orchestrator/execution/types/task-group.d.ts +68 -4
  214. package/dist/orchestrator/execution/types/task-group.d.ts.map +1 -1
  215. package/dist/orchestrator/execution/types/task.d.ts +100 -2
  216. package/dist/orchestrator/execution/types/task.d.ts.map +1 -1
  217. package/dist/orchestrator/execution/types/task.js +10 -0
  218. package/dist/orchestrator/execution/types/task.js.map +1 -1
  219. package/dist/orchestrator/goal/goal-decomposer.d.ts.map +1 -1
  220. package/dist/orchestrator/goal/goal-decomposer.js +2 -1
  221. package/dist/orchestrator/goal/goal-decomposer.js.map +1 -1
  222. package/dist/orchestrator/goal/goal-negotiator.d.ts.map +1 -1
  223. package/dist/orchestrator/goal/goal-negotiator.js +5 -2
  224. package/dist/orchestrator/goal/goal-negotiator.js.map +1 -1
  225. package/dist/orchestrator/goal/goal-suggest.d.ts +6 -6
  226. package/dist/orchestrator/goal/goal-validation.d.ts +4 -5
  227. package/dist/orchestrator/goal/goal-validation.d.ts.map +1 -1
  228. package/dist/orchestrator/goal/goal-validation.js +11 -17
  229. package/dist/orchestrator/goal/goal-validation.js.map +1 -1
  230. package/dist/orchestrator/goal/negotiator-prompts.d.ts.map +1 -1
  231. package/dist/orchestrator/goal/negotiator-prompts.js +8 -4
  232. package/dist/orchestrator/goal/negotiator-prompts.js.map +1 -1
  233. package/dist/orchestrator/goal/negotiator-steps.d.ts.map +1 -1
  234. package/dist/orchestrator/goal/negotiator-steps.js +7 -11
  235. package/dist/orchestrator/goal/negotiator-steps.js.map +1 -1
  236. package/dist/orchestrator/goal/types/goal-refiner.d.ts +6 -6
  237. package/dist/orchestrator/goal/types/goal.d.ts +161 -0
  238. package/dist/orchestrator/goal/types/goal.d.ts.map +1 -1
  239. package/dist/orchestrator/goal/types/goal.js +8 -0
  240. package/dist/orchestrator/goal/types/goal.js.map +1 -1
  241. package/dist/orchestrator/goal/types/negotiation.d.ts +120 -6
  242. package/dist/orchestrator/goal/types/negotiation.d.ts.map +1 -1
  243. package/dist/orchestrator/goal/types/negotiation.js +3 -0
  244. package/dist/orchestrator/goal/types/negotiation.js.map +1 -1
  245. package/dist/orchestrator/goal/types/suggest.d.ts +6 -6
  246. package/dist/orchestrator/loop/checkpoint-manager-loop.d.ts +1 -1
  247. package/dist/orchestrator/loop/checkpoint-manager-loop.d.ts.map +1 -1
  248. package/dist/orchestrator/loop/core-loop/capability.d.ts +1 -21
  249. package/dist/orchestrator/loop/core-loop/capability.d.ts.map +1 -1
  250. package/dist/orchestrator/loop/core-loop/capability.js +1 -150
  251. package/dist/orchestrator/loop/core-loop/capability.js.map +1 -1
  252. package/dist/orchestrator/loop/core-loop/contracts.d.ts +1 -318
  253. package/dist/orchestrator/loop/core-loop/contracts.d.ts.map +1 -1
  254. package/dist/orchestrator/loop/core-loop/contracts.js +1 -39
  255. package/dist/orchestrator/loop/core-loop/contracts.js.map +1 -1
  256. package/dist/orchestrator/loop/core-loop/control.d.ts +1 -26
  257. package/dist/orchestrator/loop/core-loop/control.d.ts.map +1 -1
  258. package/dist/orchestrator/loop/core-loop/control.js +1 -71
  259. package/dist/orchestrator/loop/core-loop/control.js.map +1 -1
  260. package/dist/orchestrator/loop/core-loop/decision-engine.d.ts +1 -78
  261. package/dist/orchestrator/loop/core-loop/decision-engine.d.ts.map +1 -1
  262. package/dist/orchestrator/loop/core-loop/decision-engine.js +1 -144
  263. package/dist/orchestrator/loop/core-loop/decision-engine.js.map +1 -1
  264. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.d.ts +1 -47
  265. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.d.ts.map +1 -1
  266. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.js +1 -385
  267. package/dist/orchestrator/loop/core-loop/dream-review-checkpoint.js.map +1 -1
  268. package/dist/orchestrator/loop/core-loop/evidence-ledger.d.ts +1 -21
  269. package/dist/orchestrator/loop/core-loop/evidence-ledger.d.ts.map +1 -1
  270. package/dist/orchestrator/loop/core-loop/evidence-ledger.js +1 -35
  271. package/dist/orchestrator/loop/core-loop/evidence-ledger.js.map +1 -1
  272. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts +1 -6
  273. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.d.ts.map +1 -1
  274. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js +1 -42
  275. package/dist/orchestrator/loop/core-loop/iteration-kernel-knowledge.js.map +1 -1
  276. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts +1 -13
  277. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.d.ts.map +1 -1
  278. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js +1 -40
  279. package/dist/orchestrator/loop/core-loop/iteration-kernel-wait.js.map +1 -1
  280. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts +1 -36
  281. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts.map +1 -1
  282. package/dist/orchestrator/loop/core-loop/iteration-kernel.js +1 -834
  283. package/dist/orchestrator/loop/core-loop/iteration-kernel.js.map +1 -1
  284. package/dist/orchestrator/loop/core-loop/learning.d.ts +1 -30
  285. package/dist/orchestrator/loop/core-loop/learning.d.ts.map +1 -1
  286. package/dist/orchestrator/loop/core-loop/learning.js +1 -91
  287. package/dist/orchestrator/loop/core-loop/learning.js.map +1 -1
  288. package/dist/orchestrator/loop/core-loop/phase-policy.d.ts +1 -19
  289. package/dist/orchestrator/loop/core-loop/phase-policy.d.ts.map +1 -1
  290. package/dist/orchestrator/loop/core-loop/phase-policy.js +1 -157
  291. package/dist/orchestrator/loop/core-loop/phase-policy.js.map +1 -1
  292. package/dist/orchestrator/loop/core-loop/phase-runtime.d.ts +1 -30
  293. package/dist/orchestrator/loop/core-loop/phase-runtime.d.ts.map +1 -1
  294. package/dist/orchestrator/loop/core-loop/phase-runtime.js +1 -102
  295. package/dist/orchestrator/loop/core-loop/phase-runtime.js.map +1 -1
  296. package/dist/orchestrator/loop/core-loop/phase-specs.d.ts +1 -1268
  297. package/dist/orchestrator/loop/core-loop/phase-specs.d.ts.map +1 -1
  298. package/dist/orchestrator/loop/core-loop/phase-specs.js +1 -348
  299. package/dist/orchestrator/loop/core-loop/phase-specs.js.map +1 -1
  300. package/dist/orchestrator/loop/core-loop/preparation.d.ts +1 -58
  301. package/dist/orchestrator/loop/core-loop/preparation.d.ts.map +1 -1
  302. package/dist/orchestrator/loop/core-loop/preparation.js +1 -367
  303. package/dist/orchestrator/loop/core-loop/preparation.js.map +1 -1
  304. package/dist/orchestrator/loop/core-loop/public-research.d.ts +1 -31
  305. package/dist/orchestrator/loop/core-loop/public-research.d.ts.map +1 -1
  306. package/dist/orchestrator/loop/core-loop/public-research.js +1 -111
  307. package/dist/orchestrator/loop/core-loop/public-research.js.map +1 -1
  308. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts +1 -8
  309. package/dist/orchestrator/loop/core-loop/task-cycle-stall.d.ts.map +1 -1
  310. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js +1 -432
  311. package/dist/orchestrator/loop/core-loop/task-cycle-stall.js.map +1 -1
  312. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts +1 -10
  313. package/dist/orchestrator/loop/core-loop/task-cycle-wait.d.ts.map +1 -1
  314. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js +1 -175
  315. package/dist/orchestrator/loop/core-loop/task-cycle-wait.js.map +1 -1
  316. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts +1 -40
  317. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts.map +1 -1
  318. package/dist/orchestrator/loop/core-loop/task-cycle.js +1 -429
  319. package/dist/orchestrator/loop/core-loop/task-cycle.js.map +1 -1
  320. package/dist/orchestrator/loop/core-loop.d.ts +1 -85
  321. package/dist/orchestrator/loop/core-loop.d.ts.map +1 -1
  322. package/dist/orchestrator/loop/core-loop.js +3 -625
  323. package/dist/orchestrator/loop/core-loop.js.map +1 -1
  324. package/dist/orchestrator/loop/durable-loop/capability.d.ts +22 -0
  325. package/dist/orchestrator/loop/durable-loop/capability.d.ts.map +1 -0
  326. package/dist/orchestrator/loop/durable-loop/capability.js +151 -0
  327. package/dist/orchestrator/loop/durable-loop/capability.js.map +1 -0
  328. package/dist/orchestrator/loop/durable-loop/contracts.d.ts +319 -0
  329. package/dist/orchestrator/loop/durable-loop/contracts.d.ts.map +1 -0
  330. package/dist/orchestrator/loop/durable-loop/contracts.js +40 -0
  331. package/dist/orchestrator/loop/durable-loop/contracts.js.map +1 -0
  332. package/dist/orchestrator/loop/durable-loop/control.d.ts +27 -0
  333. package/dist/orchestrator/loop/durable-loop/control.d.ts.map +1 -0
  334. package/dist/orchestrator/loop/durable-loop/control.js +72 -0
  335. package/dist/orchestrator/loop/durable-loop/control.js.map +1 -0
  336. package/dist/orchestrator/loop/durable-loop/decision-engine.d.ts +79 -0
  337. package/dist/orchestrator/loop/durable-loop/decision-engine.d.ts.map +1 -0
  338. package/dist/orchestrator/loop/durable-loop/decision-engine.js +145 -0
  339. package/dist/orchestrator/loop/durable-loop/decision-engine.js.map +1 -0
  340. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.d.ts +48 -0
  341. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.d.ts.map +1 -0
  342. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.js +386 -0
  343. package/dist/orchestrator/loop/durable-loop/dream-review-checkpoint.js.map +1 -0
  344. package/dist/orchestrator/loop/durable-loop/evidence-ledger.d.ts +22 -0
  345. package/dist/orchestrator/loop/durable-loop/evidence-ledger.d.ts.map +1 -0
  346. package/dist/orchestrator/loop/durable-loop/evidence-ledger.js +36 -0
  347. package/dist/orchestrator/loop/durable-loop/evidence-ledger.js.map +1 -0
  348. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.d.ts +7 -0
  349. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.d.ts.map +1 -0
  350. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.js +43 -0
  351. package/dist/orchestrator/loop/durable-loop/iteration-kernel-knowledge.js.map +1 -0
  352. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.d.ts +14 -0
  353. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.d.ts.map +1 -0
  354. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.js +41 -0
  355. package/dist/orchestrator/loop/durable-loop/iteration-kernel-wait.js.map +1 -0
  356. package/dist/orchestrator/loop/durable-loop/iteration-kernel.d.ts +37 -0
  357. package/dist/orchestrator/loop/durable-loop/iteration-kernel.d.ts.map +1 -0
  358. package/dist/orchestrator/loop/durable-loop/iteration-kernel.js +835 -0
  359. package/dist/orchestrator/loop/durable-loop/iteration-kernel.js.map +1 -0
  360. package/dist/orchestrator/loop/durable-loop/learning.d.ts +31 -0
  361. package/dist/orchestrator/loop/durable-loop/learning.d.ts.map +1 -0
  362. package/dist/orchestrator/loop/durable-loop/learning.js +92 -0
  363. package/dist/orchestrator/loop/durable-loop/learning.js.map +1 -0
  364. package/dist/orchestrator/loop/durable-loop/phase-policy.d.ts +20 -0
  365. package/dist/orchestrator/loop/durable-loop/phase-policy.d.ts.map +1 -0
  366. package/dist/orchestrator/loop/durable-loop/phase-policy.js +158 -0
  367. package/dist/orchestrator/loop/durable-loop/phase-policy.js.map +1 -0
  368. package/dist/orchestrator/loop/durable-loop/phase-runtime.d.ts +31 -0
  369. package/dist/orchestrator/loop/durable-loop/phase-runtime.d.ts.map +1 -0
  370. package/dist/orchestrator/loop/durable-loop/phase-runtime.js +103 -0
  371. package/dist/orchestrator/loop/durable-loop/phase-runtime.js.map +1 -0
  372. package/dist/orchestrator/loop/durable-loop/phase-specs.d.ts +1269 -0
  373. package/dist/orchestrator/loop/durable-loop/phase-specs.d.ts.map +1 -0
  374. package/dist/orchestrator/loop/durable-loop/phase-specs.js +349 -0
  375. package/dist/orchestrator/loop/durable-loop/phase-specs.js.map +1 -0
  376. package/dist/orchestrator/loop/durable-loop/preparation.d.ts +59 -0
  377. package/dist/orchestrator/loop/durable-loop/preparation.d.ts.map +1 -0
  378. package/dist/orchestrator/loop/durable-loop/preparation.js +368 -0
  379. package/dist/orchestrator/loop/durable-loop/preparation.js.map +1 -0
  380. package/dist/orchestrator/loop/durable-loop/public-research.d.ts +32 -0
  381. package/dist/orchestrator/loop/durable-loop/public-research.d.ts.map +1 -0
  382. package/dist/orchestrator/loop/durable-loop/public-research.js +112 -0
  383. package/dist/orchestrator/loop/durable-loop/public-research.js.map +1 -0
  384. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.d.ts +9 -0
  385. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.d.ts.map +1 -0
  386. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.js +464 -0
  387. package/dist/orchestrator/loop/durable-loop/task-cycle-stall.js.map +1 -0
  388. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.d.ts +11 -0
  389. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.d.ts.map +1 -0
  390. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.js +176 -0
  391. package/dist/orchestrator/loop/durable-loop/task-cycle-wait.js.map +1 -0
  392. package/dist/orchestrator/loop/durable-loop/task-cycle.d.ts +41 -0
  393. package/dist/orchestrator/loop/durable-loop/task-cycle.d.ts.map +1 -0
  394. package/dist/orchestrator/loop/durable-loop/task-cycle.js +430 -0
  395. package/dist/orchestrator/loop/durable-loop/task-cycle.js.map +1 -0
  396. package/dist/orchestrator/loop/durable-loop.d.ts +92 -0
  397. package/dist/orchestrator/loop/durable-loop.d.ts.map +1 -0
  398. package/dist/orchestrator/loop/durable-loop.js +631 -0
  399. package/dist/orchestrator/loop/durable-loop.js.map +1 -0
  400. package/dist/orchestrator/loop/loop-report-helper.d.ts +1 -1
  401. package/dist/orchestrator/loop/loop-report-helper.d.ts.map +1 -1
  402. package/dist/orchestrator/loop/loop-result-types.d.ts +1 -1
  403. package/dist/orchestrator/loop/loop-result-types.d.ts.map +1 -1
  404. package/dist/orchestrator/loop/parallel-dispatch.d.ts +2 -2
  405. package/dist/orchestrator/loop/parallel-dispatch.d.ts.map +1 -1
  406. package/dist/orchestrator/loop/post-loop-hooks.d.ts +1 -1
  407. package/dist/orchestrator/loop/post-loop-hooks.d.ts.map +1 -1
  408. package/dist/orchestrator/loop/run-policy.d.ts +1 -1
  409. package/dist/orchestrator/loop/run-policy.d.ts.map +1 -1
  410. package/dist/orchestrator/loop/tree-loop-runner.d.ts +1 -1
  411. package/dist/orchestrator/loop/tree-loop-runner.d.ts.map +1 -1
  412. package/dist/orchestrator/loop/tree-loop-runner.js +1 -1
  413. package/dist/orchestrator/loop/tree-loop-runner.js.map +1 -1
  414. package/dist/orchestrator/strategy/divergent-exploration.d.ts +2 -1
  415. package/dist/orchestrator/strategy/divergent-exploration.d.ts.map +1 -1
  416. package/dist/orchestrator/strategy/divergent-exploration.js +119 -36
  417. package/dist/orchestrator/strategy/divergent-exploration.js.map +1 -1
  418. package/dist/orchestrator/strategy/strategy-helpers.d.ts +86 -4
  419. package/dist/orchestrator/strategy/strategy-helpers.d.ts.map +1 -1
  420. package/dist/orchestrator/strategy/strategy-manager-base.d.ts +6 -2
  421. package/dist/orchestrator/strategy/strategy-manager-base.d.ts.map +1 -1
  422. package/dist/orchestrator/strategy/strategy-manager-base.js +71 -18
  423. package/dist/orchestrator/strategy/strategy-manager-base.js.map +1 -1
  424. package/dist/orchestrator/strategy/types/strategy.d.ts +450 -14
  425. package/dist/orchestrator/strategy/types/strategy.d.ts.map +1 -1
  426. package/dist/orchestrator/strategy/types/strategy.js +30 -0
  427. package/dist/orchestrator/strategy/types/strategy.js.map +1 -1
  428. package/dist/platform/code-search/contracts.d.ts +3 -0
  429. package/dist/platform/code-search/contracts.d.ts.map +1 -1
  430. package/dist/platform/code-search/contracts.js.map +1 -1
  431. package/dist/platform/code-search/indexes/indexer.d.ts.map +1 -1
  432. package/dist/platform/code-search/indexes/indexer.js +3 -0
  433. package/dist/platform/code-search/indexes/indexer.js.map +1 -1
  434. package/dist/platform/code-search/indexes/semantic-index.d.ts.map +1 -1
  435. package/dist/platform/code-search/indexes/semantic-index.js +3 -0
  436. package/dist/platform/code-search/indexes/semantic-index.js.map +1 -1
  437. package/dist/platform/code-search/orchestrator.d.ts.map +1 -1
  438. package/dist/platform/code-search/orchestrator.js +14 -3
  439. package/dist/platform/code-search/orchestrator.js.map +1 -1
  440. package/dist/platform/code-search/query-planner.d.ts.map +1 -1
  441. package/dist/platform/code-search/query-planner.js +1 -17
  442. package/dist/platform/code-search/query-planner.js.map +1 -1
  443. package/dist/platform/code-search/reranker.d.ts +5 -1
  444. package/dist/platform/code-search/reranker.d.ts.map +1 -1
  445. package/dist/platform/code-search/reranker.js +9 -5
  446. package/dist/platform/code-search/reranker.js.map +1 -1
  447. package/dist/platform/corrections/memory-correction-ledger.d.ts +30 -30
  448. package/dist/platform/dream/dream-activation.d.ts +161 -1
  449. package/dist/platform/dream/dream-activation.d.ts.map +1 -1
  450. package/dist/platform/dream/dream-activation.js +63 -14
  451. package/dist/platform/dream/dream-activation.js.map +1 -1
  452. package/dist/platform/dream/dream-event-workflows.d.ts +2 -2
  453. package/dist/platform/dream/dream-types.d.ts +52 -52
  454. package/dist/platform/dream/playbook-memory.d.ts +3 -3
  455. package/dist/platform/drive/stall-detector/repetitive.d.ts.map +1 -1
  456. package/dist/platform/drive/stall-detector/repetitive.js +50 -5
  457. package/dist/platform/drive/stall-detector/repetitive.js.map +1 -1
  458. package/dist/platform/drive/stall-detector.d.ts +19 -0
  459. package/dist/platform/drive/stall-detector.d.ts.map +1 -1
  460. package/dist/platform/drive/stall-detector.js.map +1 -1
  461. package/dist/platform/drive/types/stall.d.ts +1 -1
  462. package/dist/platform/knowledge/transfer/knowledge-transfer-apply.d.ts.map +1 -1
  463. package/dist/platform/knowledge/transfer/knowledge-transfer-apply.js +7 -3
  464. package/dist/platform/knowledge/transfer/knowledge-transfer-apply.js.map +1 -1
  465. package/dist/platform/knowledge/types/agent-memory.d.ts +46 -46
  466. package/dist/platform/knowledge/types/embedding.d.ts +4 -4
  467. package/dist/platform/knowledge/types/knowledge.d.ts +53 -0
  468. package/dist/platform/knowledge/types/knowledge.d.ts.map +1 -1
  469. package/dist/platform/knowledge/types/knowledge.js +15 -0
  470. package/dist/platform/knowledge/types/knowledge.js.map +1 -1
  471. package/dist/platform/knowledge/types/memory-lifecycle.d.ts +2 -2
  472. package/dist/platform/observation/capability-detector/types.d.ts +4 -4
  473. package/dist/platform/observation/context-provider/collector.d.ts +2 -0
  474. package/dist/platform/observation/context-provider/collector.d.ts.map +1 -1
  475. package/dist/platform/observation/context-provider/collector.js +27 -2
  476. package/dist/platform/observation/context-provider/collector.js.map +1 -1
  477. package/dist/platform/observation/context-provider.d.ts +4 -0
  478. package/dist/platform/observation/context-provider.d.ts.map +1 -1
  479. package/dist/platform/observation/context-provider.js.map +1 -1
  480. package/dist/platform/observation/engine/observe-datasource-stage.d.ts +3 -2
  481. package/dist/platform/observation/engine/observe-datasource-stage.d.ts.map +1 -1
  482. package/dist/platform/observation/engine/observe-datasource-stage.js +2 -2
  483. package/dist/platform/observation/engine/observe-datasource-stage.js.map +1 -1
  484. package/dist/platform/observation/observation-apply.d.ts +1 -1
  485. package/dist/platform/observation/observation-apply.d.ts.map +1 -1
  486. package/dist/platform/observation/observation-apply.js +3 -3
  487. package/dist/platform/observation/observation-apply.js.map +1 -1
  488. package/dist/platform/observation/observation-datasource.d.ts +2 -2
  489. package/dist/platform/observation/observation-datasource.d.ts.map +1 -1
  490. package/dist/platform/observation/observation-datasource.js +13 -7
  491. package/dist/platform/observation/observation-datasource.js.map +1 -1
  492. package/dist/platform/observation/observation-engine.d.ts +1 -1
  493. package/dist/platform/observation/observation-engine.d.ts.map +1 -1
  494. package/dist/platform/observation/observation-engine.js +8 -6
  495. package/dist/platform/observation/observation-engine.js.map +1 -1
  496. package/dist/platform/observation/types/capability.d.ts +16 -16
  497. package/dist/platform/observation/workspace-context.d.ts +8 -1
  498. package/dist/platform/observation/workspace-context.d.ts.map +1 -1
  499. package/dist/platform/observation/workspace-context.js +35 -14
  500. package/dist/platform/observation/workspace-context.js.map +1 -1
  501. package/dist/platform/profile/profile-change-proposal.d.ts +20 -20
  502. package/dist/platform/profile/relationship-profile.d.ts +6 -6
  503. package/dist/platform/profile/user-md-profile-import.d.ts +2 -2
  504. package/dist/platform/soil/contracts.d.ts +98 -98
  505. package/dist/platform/soil/types.d.ts +8 -8
  506. package/dist/platform/traits/curiosity-engine.d.ts +2 -5
  507. package/dist/platform/traits/curiosity-engine.d.ts.map +1 -1
  508. package/dist/platform/traits/curiosity-engine.js.map +1 -1
  509. package/dist/platform/traits/curiosity-proposals.d.ts +2 -0
  510. package/dist/platform/traits/curiosity-proposals.d.ts.map +1 -1
  511. package/dist/platform/traits/curiosity-proposals.js +36 -17
  512. package/dist/platform/traits/curiosity-proposals.js.map +1 -1
  513. package/dist/platform/traits/curiosity-transfer.d.ts +9 -5
  514. package/dist/platform/traits/curiosity-transfer.d.ts.map +1 -1
  515. package/dist/platform/traits/curiosity-transfer.js +4 -1
  516. package/dist/platform/traits/curiosity-transfer.js.map +1 -1
  517. package/dist/platform/traits/ethics-gate.d.ts +16 -17
  518. package/dist/platform/traits/ethics-gate.d.ts.map +1 -1
  519. package/dist/platform/traits/ethics-gate.js +83 -47
  520. package/dist/platform/traits/ethics-gate.js.map +1 -1
  521. package/dist/platform/traits/ethics-rules.d.ts +4 -6
  522. package/dist/platform/traits/ethics-rules.d.ts.map +1 -1
  523. package/dist/platform/traits/ethics-rules.js +19 -261
  524. package/dist/platform/traits/ethics-rules.js.map +1 -1
  525. package/dist/platform/traits/types/curiosity.d.ts +157 -10
  526. package/dist/platform/traits/types/curiosity.d.ts.map +1 -1
  527. package/dist/platform/traits/types/curiosity.js +10 -0
  528. package/dist/platform/traits/types/curiosity.js.map +1 -1
  529. package/dist/platform/traits/types/guardrail.d.ts +6 -6
  530. package/dist/prompt/purposes/curiosity.d.ts +4 -4
  531. package/dist/runtime/approval-broker.d.ts +33 -0
  532. package/dist/runtime/approval-broker.d.ts.map +1 -1
  533. package/dist/runtime/approval-broker.js +155 -17
  534. package/dist/runtime/approval-broker.js.map +1 -1
  535. package/dist/runtime/companion-policy.d.ts +27 -0
  536. package/dist/runtime/companion-policy.d.ts.map +1 -0
  537. package/dist/runtime/companion-policy.js +135 -0
  538. package/dist/runtime/companion-policy.js.map +1 -0
  539. package/dist/runtime/confirmation-decision.d.ts +2 -2
  540. package/dist/runtime/control/daemon-runtime-control-executor.d.ts +0 -6
  541. package/dist/runtime/control/daemon-runtime-control-executor.d.ts.map +1 -1
  542. package/dist/runtime/control/daemon-runtime-control-executor.js +1 -1
  543. package/dist/runtime/control/daemon-runtime-control-executor.js.map +1 -1
  544. package/dist/runtime/control/index.d.ts +6 -3
  545. package/dist/runtime/control/index.d.ts.map +1 -1
  546. package/dist/runtime/control/index.js +2 -1
  547. package/dist/runtime/control/index.js.map +1 -1
  548. package/dist/runtime/control/runtime-control-intent.d.ts +16 -1
  549. package/dist/runtime/control/runtime-control-intent.d.ts.map +1 -1
  550. package/dist/runtime/control/runtime-control-intent.js +26 -13
  551. package/dist/runtime/control/runtime-control-intent.js.map +1 -1
  552. package/dist/runtime/control/runtime-control-service.d.ts +1 -1
  553. package/dist/runtime/control/runtime-control-service.d.ts.map +1 -1
  554. package/dist/runtime/control/runtime-control-service.js +29 -64
  555. package/dist/runtime/control/runtime-control-service.js.map +1 -1
  556. package/dist/runtime/control/runtime-target-resolver.d.ts +39 -0
  557. package/dist/runtime/control/runtime-target-resolver.d.ts.map +1 -0
  558. package/dist/runtime/control/runtime-target-resolver.js +112 -0
  559. package/dist/runtime/control/runtime-target-resolver.js.map +1 -0
  560. package/dist/runtime/conversational-approval-decision.d.ts +29 -0
  561. package/dist/runtime/conversational-approval-decision.d.ts.map +1 -0
  562. package/dist/runtime/conversational-approval-decision.js +92 -0
  563. package/dist/runtime/conversational-approval-decision.js.map +1 -0
  564. package/dist/runtime/daemon/client.d.ts +1 -4
  565. package/dist/runtime/daemon/client.d.ts.map +1 -1
  566. package/dist/runtime/daemon/client.js +0 -3
  567. package/dist/runtime/daemon/client.js.map +1 -1
  568. package/dist/runtime/daemon/control-contracts.d.ts +7 -0
  569. package/dist/runtime/daemon/control-contracts.d.ts.map +1 -0
  570. package/dist/runtime/daemon/control-contracts.js +2 -0
  571. package/dist/runtime/daemon/control-contracts.js.map +1 -0
  572. package/dist/runtime/daemon/runner-startup.js +1 -1
  573. package/dist/runtime/daemon/runner-startup.js.map +1 -1
  574. package/dist/runtime/daemon/runner.d.ts +1 -1
  575. package/dist/runtime/daemon/runner.d.ts.map +1 -1
  576. package/dist/runtime/executor/goal-worker.d.ts +3 -3
  577. package/dist/runtime/executor/goal-worker.d.ts.map +1 -1
  578. package/dist/runtime/executor/loop-supervisor.d.ts +2 -2
  579. package/dist/runtime/executor/loop-supervisor.d.ts.map +1 -1
  580. package/dist/runtime/executor/loop-supervisor.js +2 -2
  581. package/dist/runtime/executor/loop-supervisor.js.map +1 -1
  582. package/dist/runtime/gateway/channel-adapter.d.ts +19 -0
  583. package/dist/runtime/gateway/channel-adapter.d.ts.map +1 -1
  584. package/dist/runtime/gateway/channel-policy.d.ts +1 -0
  585. package/dist/runtime/gateway/channel-policy.d.ts.map +1 -1
  586. package/dist/runtime/gateway/channel-policy.js +6 -4
  587. package/dist/runtime/gateway/channel-policy.js.map +1 -1
  588. package/dist/runtime/gateway/chat-event-rendering.d.ts +34 -0
  589. package/dist/runtime/gateway/chat-event-rendering.d.ts.map +1 -0
  590. package/dist/runtime/gateway/chat-event-rendering.js +61 -0
  591. package/dist/runtime/gateway/chat-event-rendering.js.map +1 -0
  592. package/dist/runtime/gateway/chat-session-dispatch.d.ts +2 -13
  593. package/dist/runtime/gateway/chat-session-dispatch.d.ts.map +1 -1
  594. package/dist/runtime/gateway/chat-session-dispatch.js +6 -3
  595. package/dist/runtime/gateway/chat-session-dispatch.js.map +1 -1
  596. package/dist/runtime/gateway/chat-session-port.d.ts +25 -0
  597. package/dist/runtime/gateway/chat-session-port.d.ts.map +1 -0
  598. package/dist/runtime/gateway/chat-session-port.js +20 -0
  599. package/dist/runtime/gateway/chat-session-port.js.map +1 -0
  600. package/dist/runtime/gateway/discord-gateway-adapter.d.ts +3 -1
  601. package/dist/runtime/gateway/discord-gateway-adapter.d.ts.map +1 -1
  602. package/dist/runtime/gateway/discord-gateway-adapter.js +34 -2
  603. package/dist/runtime/gateway/discord-gateway-adapter.js.map +1 -1
  604. package/dist/runtime/gateway/index.d.ts +2 -0
  605. package/dist/runtime/gateway/index.d.ts.map +1 -1
  606. package/dist/runtime/gateway/index.js +1 -0
  607. package/dist/runtime/gateway/index.js.map +1 -1
  608. package/dist/runtime/gateway/ingress-gateway.d.ts.map +1 -1
  609. package/dist/runtime/gateway/ingress-gateway.js +1 -0
  610. package/dist/runtime/gateway/ingress-gateway.js.map +1 -1
  611. package/dist/runtime/gateway/signal-gateway-adapter.d.ts +2 -1
  612. package/dist/runtime/gateway/signal-gateway-adapter.d.ts.map +1 -1
  613. package/dist/runtime/gateway/signal-gateway-adapter.js +13 -3
  614. package/dist/runtime/gateway/signal-gateway-adapter.js.map +1 -1
  615. package/dist/runtime/gateway/slack-channel-adapter.d.ts +2 -1
  616. package/dist/runtime/gateway/slack-channel-adapter.d.ts.map +1 -1
  617. package/dist/runtime/gateway/slack-channel-adapter.js +6 -2
  618. package/dist/runtime/gateway/slack-channel-adapter.js.map +1 -1
  619. package/dist/runtime/gateway/telegram-gateway-adapter.d.ts +9 -2
  620. package/dist/runtime/gateway/telegram-gateway-adapter.d.ts.map +1 -1
  621. package/dist/runtime/gateway/telegram-gateway-adapter.js +141 -13
  622. package/dist/runtime/gateway/telegram-gateway-adapter.js.map +1 -1
  623. package/dist/runtime/gateway/typing-indicator.d.ts +11 -0
  624. package/dist/runtime/gateway/typing-indicator.d.ts.map +1 -0
  625. package/dist/runtime/gateway/typing-indicator.js +68 -0
  626. package/dist/runtime/gateway/typing-indicator.js.map +1 -0
  627. package/dist/runtime/gateway/whatsapp-gateway-adapter.d.ts +2 -1
  628. package/dist/runtime/gateway/whatsapp-gateway-adapter.d.ts.map +1 -1
  629. package/dist/runtime/gateway/whatsapp-gateway-adapter.js +22 -8
  630. package/dist/runtime/gateway/whatsapp-gateway-adapter.js.map +1 -1
  631. package/dist/runtime/gateway/ws-channel-adapter.d.ts.map +1 -1
  632. package/dist/runtime/gateway/ws-channel-adapter.js +1 -0
  633. package/dist/runtime/gateway/ws-channel-adapter.js.map +1 -1
  634. package/dist/runtime/interactive-automation/failure-classifier.d.ts +0 -1
  635. package/dist/runtime/interactive-automation/failure-classifier.d.ts.map +1 -1
  636. package/dist/runtime/interactive-automation/failure-classifier.js +0 -19
  637. package/dist/runtime/interactive-automation/failure-classifier.js.map +1 -1
  638. package/dist/runtime/interactive-automation/providers/manus-browser.d.ts.map +1 -1
  639. package/dist/runtime/interactive-automation/providers/manus-browser.js +30 -1
  640. package/dist/runtime/interactive-automation/providers/manus-browser.js.map +1 -1
  641. package/dist/runtime/logger.d.ts.map +1 -1
  642. package/dist/runtime/logger.js +5 -2
  643. package/dist/runtime/logger.js.map +1 -1
  644. package/dist/runtime/plugin-loader.js +2 -2
  645. package/dist/runtime/plugin-loader.js.map +1 -1
  646. package/dist/runtime/run-spec/derive.d.ts +24 -24
  647. package/dist/runtime/run-spec/derive.d.ts.map +1 -1
  648. package/dist/runtime/run-spec/derive.js +6 -0
  649. package/dist/runtime/run-spec/derive.js.map +1 -1
  650. package/dist/runtime/run-spec/handoff.d.ts +74 -0
  651. package/dist/runtime/run-spec/handoff.d.ts.map +1 -0
  652. package/dist/runtime/run-spec/handoff.js +496 -0
  653. package/dist/runtime/run-spec/handoff.js.map +1 -0
  654. package/dist/runtime/run-spec/index.d.ts +2 -0
  655. package/dist/runtime/run-spec/index.d.ts.map +1 -1
  656. package/dist/runtime/run-spec/index.js +2 -0
  657. package/dist/runtime/run-spec/index.js.map +1 -1
  658. package/dist/runtime/run-spec/pending-dialogue-arbiter.d.ts +25 -0
  659. package/dist/runtime/run-spec/pending-dialogue-arbiter.d.ts.map +1 -0
  660. package/dist/runtime/run-spec/pending-dialogue-arbiter.js +81 -0
  661. package/dist/runtime/run-spec/pending-dialogue-arbiter.js.map +1 -0
  662. package/dist/runtime/run-spec/types.d.ts +91 -42
  663. package/dist/runtime/run-spec/types.d.ts.map +1 -1
  664. package/dist/runtime/run-spec/types.js +7 -0
  665. package/dist/runtime/run-spec/types.js.map +1 -1
  666. package/dist/runtime/schedule/engine-execution.js +2 -35
  667. package/dist/runtime/schedule/engine-execution.js.map +1 -1
  668. package/dist/runtime/schedule/history.d.ts +2 -2
  669. package/dist/runtime/schedule/presets.d.ts +4 -4
  670. package/dist/runtime/schedule/source.d.ts +1 -1
  671. package/dist/runtime/session-registry/registry.d.ts.map +1 -1
  672. package/dist/runtime/session-registry/registry.js +27 -2
  673. package/dist/runtime/session-registry/registry.js.map +1 -1
  674. package/dist/runtime/session-registry/types.d.ts +120 -112
  675. package/dist/runtime/session-registry/types.d.ts.map +1 -1
  676. package/dist/runtime/session-registry/types.js +1 -0
  677. package/dist/runtime/session-registry/types.js.map +1 -1
  678. package/dist/runtime/store/artifact-retention.d.ts +11 -6
  679. package/dist/runtime/store/artifact-retention.d.ts.map +1 -1
  680. package/dist/runtime/store/artifact-retention.js +0 -13
  681. package/dist/runtime/store/artifact-retention.js.map +1 -1
  682. package/dist/runtime/store/background-run-store.d.ts +1 -0
  683. package/dist/runtime/store/background-run-store.d.ts.map +1 -1
  684. package/dist/runtime/store/background-run-store.js +1 -0
  685. package/dist/runtime/store/background-run-store.js.map +1 -1
  686. package/dist/runtime/store/budget-store.d.ts +8 -8
  687. package/dist/runtime/store/dream-checkpoints.d.ts +1 -1
  688. package/dist/runtime/store/dream-checkpoints.d.ts.map +1 -1
  689. package/dist/runtime/store/evaluator-results.d.ts +1 -1
  690. package/dist/runtime/store/evaluator-results.d.ts.map +1 -1
  691. package/dist/runtime/store/evidence-ledger.d.ts +39 -6377
  692. package/dist/runtime/store/evidence-ledger.d.ts.map +1 -1
  693. package/dist/runtime/store/evidence-ledger.js +415 -501
  694. package/dist/runtime/store/evidence-ledger.js.map +1 -1
  695. package/dist/runtime/store/evidence-types.d.ts +6378 -0
  696. package/dist/runtime/store/evidence-types.d.ts.map +1 -0
  697. package/dist/runtime/store/evidence-types.js +459 -0
  698. package/dist/runtime/store/evidence-types.js.map +1 -0
  699. package/dist/runtime/store/experiment-queue-store.d.ts +109 -109
  700. package/dist/runtime/store/experiment-queue-store.d.ts.map +1 -1
  701. package/dist/runtime/store/experiment-queue-store.js +1 -1
  702. package/dist/runtime/store/experiment-queue-store.js.map +1 -1
  703. package/dist/runtime/store/index.d.ts +4 -4
  704. package/dist/runtime/store/index.d.ts.map +1 -1
  705. package/dist/runtime/store/index.js +2 -2
  706. package/dist/runtime/store/index.js.map +1 -1
  707. package/dist/runtime/store/metric-history.d.ts +1 -1
  708. package/dist/runtime/store/metric-history.d.ts.map +1 -1
  709. package/dist/runtime/store/operator-handoff-store.d.ts +12 -12
  710. package/dist/runtime/store/postmortem-report.d.ts +38 -38
  711. package/dist/runtime/store/postmortem-report.js.map +1 -1
  712. package/dist/runtime/store/proactive-intervention-store.d.ts +8 -8
  713. package/dist/runtime/store/reproducibility-manifest.d.ts +27 -27
  714. package/dist/runtime/store/reproducibility-manifest.d.ts.map +1 -1
  715. package/dist/runtime/store/reproducibility-manifest.js.map +1 -1
  716. package/dist/runtime/store/research-evidence.d.ts +1 -1
  717. package/dist/runtime/store/research-evidence.d.ts.map +1 -1
  718. package/dist/runtime/store/runtime-operation-schemas.d.ts +46 -46
  719. package/dist/runtime/store/runtime-schemas.d.ts +73 -12
  720. package/dist/runtime/store/runtime-schemas.d.ts.map +1 -1
  721. package/dist/runtime/store/runtime-schemas.js +9 -0
  722. package/dist/runtime/store/runtime-schemas.js.map +1 -1
  723. package/dist/runtime/types/companion.d.ts +394 -0
  724. package/dist/runtime/types/companion.d.ts.map +1 -0
  725. package/dist/runtime/types/companion.js +87 -0
  726. package/dist/runtime/types/companion.js.map +1 -0
  727. package/dist/runtime/types/daemon.d.ts +3 -3
  728. package/dist/runtime/types/hook.d.ts +12 -12
  729. package/dist/runtime/types/schedule.d.ts +32 -32
  730. package/dist/tools/builtin/exports.d.ts +2 -0
  731. package/dist/tools/builtin/exports.d.ts.map +1 -1
  732. package/dist/tools/builtin/exports.js +2 -0
  733. package/dist/tools/builtin/exports.js.map +1 -1
  734. package/dist/tools/builtin/factory.d.ts +10 -1
  735. package/dist/tools/builtin/factory.d.ts.map +1 -1
  736. package/dist/tools/builtin/factory.js +18 -1
  737. package/dist/tools/builtin/factory.js.map +1 -1
  738. package/dist/tools/executor.d.ts.map +1 -1
  739. package/dist/tools/executor.js +8 -6
  740. package/dist/tools/executor.js.map +1 -1
  741. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.d.ts.map +1 -1
  742. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.js +1 -0
  743. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.js.map +1 -1
  744. package/dist/tools/fs/FileEditTool/FileEditTool.d.ts.map +1 -1
  745. package/dist/tools/fs/FileEditTool/FileEditTool.js +1 -0
  746. package/dist/tools/fs/FileEditTool/FileEditTool.js.map +1 -1
  747. package/dist/tools/fs/FileWriteTool/FileWriteTool.d.ts.map +1 -1
  748. package/dist/tools/fs/FileWriteTool/FileWriteTool.js +1 -0
  749. package/dist/tools/fs/FileWriteTool/FileWriteTool.js.map +1 -1
  750. package/dist/tools/fs/GlobTool/GlobTool.d.ts.map +1 -1
  751. package/dist/tools/fs/GlobTool/GlobTool.js +1 -0
  752. package/dist/tools/fs/GlobTool/GlobTool.js.map +1 -1
  753. package/dist/tools/fs/GrepTool/GrepTool.d.ts.map +1 -1
  754. package/dist/tools/fs/GrepTool/GrepTool.js +1 -0
  755. package/dist/tools/fs/GrepTool/GrepTool.js.map +1 -1
  756. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.d.ts.map +1 -1
  757. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js +1 -0
  758. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js.map +1 -1
  759. package/dist/tools/fs/ListDirTool/ListDirTool.d.ts.map +1 -1
  760. package/dist/tools/fs/ListDirTool/ListDirTool.js +1 -0
  761. package/dist/tools/fs/ListDirTool/ListDirTool.js.map +1 -1
  762. package/dist/tools/fs/ReadTool/ReadTool.d.ts.map +1 -1
  763. package/dist/tools/fs/ReadTool/ReadTool.js +1 -0
  764. package/dist/tools/fs/ReadTool/ReadTool.js.map +1 -1
  765. package/dist/tools/kaggle/KaggleSubmissionTools.d.ts +4 -4
  766. package/dist/tools/kaggle/metrics.d.ts +4 -4
  767. package/dist/tools/mutation/TaskCreateTool/TaskCreateTool.d.ts +4 -4
  768. package/dist/tools/mutation/TaskUpdateTool/TaskUpdateTool.d.ts +4 -4
  769. package/dist/tools/network/GitHubCliTool/GitHubCliTool.d.ts +8 -8
  770. package/dist/tools/network/HttpFetchTool/HttpFetchTool.d.ts.map +1 -1
  771. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js +1 -0
  772. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js.map +1 -1
  773. package/dist/tools/network/WebSearchTool/WebSearchTool.d.ts.map +1 -1
  774. package/dist/tools/network/WebSearchTool/WebSearchTool.js +1 -0
  775. package/dist/tools/network/WebSearchTool/WebSearchTool.js.map +1 -1
  776. package/dist/tools/query/ArchitectureTool/ArchitectureTool.js +3 -3
  777. package/dist/tools/query/ArchitectureTool/ArchitectureTool.js.map +1 -1
  778. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.d.ts +20 -20
  779. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.d.ts.map +1 -1
  780. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.js +1 -0
  781. package/dist/tools/query/CodeReadContextTool/CodeReadContextTool.js.map +1 -1
  782. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.d.ts.map +1 -1
  783. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js +1 -0
  784. package/dist/tools/query/CodeSearchRepairTool/CodeSearchRepairTool.js.map +1 -1
  785. package/dist/tools/query/CodeSearchTool/CodeSearchTool.d.ts.map +1 -1
  786. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js +1 -0
  787. package/dist/tools/query/CodeSearchTool/CodeSearchTool.js.map +1 -1
  788. package/dist/tools/query/KnowledgeQueryTool/KnowledgeQueryTool.d.ts.map +1 -1
  789. package/dist/tools/query/KnowledgeQueryTool/KnowledgeQueryTool.js +1 -0
  790. package/dist/tools/query/KnowledgeQueryTool/KnowledgeQueryTool.js.map +1 -1
  791. package/dist/tools/query/SkillSearchTool/SkillSearchTool.d.ts.map +1 -1
  792. package/dist/tools/query/SkillSearchTool/SkillSearchTool.js +1 -0
  793. package/dist/tools/query/SkillSearchTool/SkillSearchTool.js.map +1 -1
  794. package/dist/tools/query/ToolSearchTool/ToolSearchTool.d.ts.map +1 -1
  795. package/dist/tools/query/ToolSearchTool/ToolSearchTool.js +1 -0
  796. package/dist/tools/query/ToolSearchTool/ToolSearchTool.js.map +1 -1
  797. package/dist/tools/runtime/LongRunningRuntimeTools.d.ts +32 -32
  798. package/dist/tools/runtime/RunSpecHandoffTools.d.ts +12 -0
  799. package/dist/tools/runtime/RunSpecHandoffTools.d.ts.map +1 -0
  800. package/dist/tools/runtime/RunSpecHandoffTools.js +224 -0
  801. package/dist/tools/runtime/RunSpecHandoffTools.js.map +1 -0
  802. package/dist/tools/runtime/SetupRuntimeControlTools.d.ts +11 -0
  803. package/dist/tools/runtime/SetupRuntimeControlTools.d.ts.map +1 -0
  804. package/dist/tools/runtime/SetupRuntimeControlTools.js +463 -0
  805. package/dist/tools/runtime/SetupRuntimeControlTools.js.map +1 -0
  806. package/dist/tools/schedule/CreateScheduleTool/CreateScheduleTool.d.ts +28 -28
  807. package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.d.ts +32 -32
  808. package/dist/tools/system/GitDiffTool/GitDiffTool.d.ts.map +1 -1
  809. package/dist/tools/system/GitDiffTool/GitDiffTool.js +1 -0
  810. package/dist/tools/system/GitDiffTool/GitDiffTool.js.map +1 -1
  811. package/dist/tools/system/GitLogTool/GitLogTool.d.ts.map +1 -1
  812. package/dist/tools/system/GitLogTool/GitLogTool.js +1 -0
  813. package/dist/tools/system/GitLogTool/GitLogTool.js.map +1 -1
  814. package/dist/tools/system/ShellTool/ShellTool.d.ts.map +1 -1
  815. package/dist/tools/system/ShellTool/ShellTool.js +1 -0
  816. package/dist/tools/system/ShellTool/ShellTool.js.map +1 -1
  817. package/dist/tools/system/TestRunnerTool/TestRunnerTool.d.ts.map +1 -1
  818. package/dist/tools/system/TestRunnerTool/TestRunnerTool.js +1 -0
  819. package/dist/tools/system/TestRunnerTool/TestRunnerTool.js.map +1 -1
  820. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.d.ts.map +1 -1
  821. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.js +1 -0
  822. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.js.map +1 -1
  823. package/dist/tools/types.d.ts +62 -2
  824. package/dist/tools/types.d.ts.map +1 -1
  825. package/dist/tools/types.js +25 -0
  826. package/dist/tools/types.js.map +1 -1
  827. package/package.json +1 -1
  828. package/dist/interface/tui/approval-overlay.d.ts +0 -8
  829. package/dist/interface/tui/approval-overlay.d.ts.map +0 -1
  830. package/dist/interface/tui/approval-overlay.js +0 -21
  831. package/dist/interface/tui/approval-overlay.js.map +0 -1
@@ -1,458 +1,15 @@
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 { correctionStateForTarget, MemoryCorrectionEntrySchema, MemoryCorrectionTargetStateSchema, summarizeMemoryCorrectionState, } from "../../platform/corrections/memory-correction-ledger.js";
7
- import { MemoryProvenanceSchema, MemoryQuarantineStateSchema, MemoryVerificationStatusSchema, } from "../../platform/corrections/memory-quarantine.js";
8
- 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";
9
7
  import { summarizeEvidenceEvaluatorResults, } from "./evaluator-results.js";
10
8
  import { summarizeEvidenceResearchMemos, } from "./research-evidence.js";
11
9
  import { summarizeEvidenceDreamCheckpoints, } from "./dream-checkpoints.js";
12
- import { summarizeArtifactRetention, RuntimeArtifactRetentionClassSchema, } from "./artifact-retention.js";
13
- export const RuntimeEvidenceOutcomeSchema = z.enum([
14
- "improved",
15
- "regressed",
16
- "inconclusive",
17
- "failed",
18
- "blocked",
19
- "continued",
20
- ]);
21
- export const RuntimeEvidenceEntryKindSchema = z.enum([
22
- "observation",
23
- "strategy",
24
- "task_generation",
25
- "execution",
26
- "verification",
27
- "decision",
28
- "metric",
29
- "evaluator",
30
- "research",
31
- "dream_checkpoint",
32
- "artifact",
33
- "failure",
34
- "correction",
35
- "other",
36
- ]);
37
- export const RuntimeEvidenceArtifactRefSchema = z.object({
38
- label: z.string().min(1),
39
- path: z.string().min(1).optional(),
40
- state_relative_path: z.string().min(1).optional(),
41
- url: z.string().url().optional(),
42
- kind: z.enum(["log", "metrics", "report", "diff", "url", "other"]).default("other"),
43
- retention_class: RuntimeArtifactRetentionClassSchema.optional(),
44
- size_bytes: z.number().int().nonnegative().optional(),
45
- source: z.string().min(1).optional(),
46
- dependency_refs: z.array(z.string().min(1)).optional(),
47
- }).strict();
48
- export const RuntimeEvidenceMetricSchema = z.object({
49
- label: z.string().min(1),
50
- value: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),
51
- unit: z.string().min(1).optional(),
52
- direction: z.enum(["maximize", "minimize", "neutral"]).optional(),
53
- confidence: z.number().min(0).max(1).optional(),
54
- observed_at: z.string().datetime().optional(),
55
- source: z.string().min(1).optional(),
56
- summary: z.string().min(1).optional(),
57
- }).strict();
58
- export const RuntimeEvidenceCandidateDispositionSchema = z.enum(["retained", "promoted", "retired"]);
59
- export const RuntimeEvidenceCandidateLineageSchema = z.object({
60
- parent_candidate_id: z.string().min(1).optional(),
61
- source_candidate_id: z.string().min(1).optional(),
62
- source_strategy_id: z.string().min(1).optional(),
63
- source_strategy: z.string().min(1).optional(),
64
- strategy_family: z.string().min(1),
65
- feature_lineage: z.array(z.string().min(1)).default([]),
66
- model_lineage: z.array(z.string().min(1)).default([]),
67
- config_lineage: z.array(z.string().min(1)).default([]),
68
- seed_lineage: z.array(z.string().min(1)).default([]),
69
- fold_lineage: z.array(z.string().min(1)).default([]),
70
- postprocess_lineage: z.array(z.string().min(1)).default([]),
71
- notes: z.string().min(1).optional(),
72
- }).strict();
73
- export const RuntimeEvidenceCandidateSimilaritySchema = z.object({
74
- candidate_id: z.string().min(1),
75
- similarity: z.number().min(0).max(1),
76
- signal: z.enum(["declared", "lineage", "metric_correlation", "artifact_overlap", "other"]).default("declared"),
77
- summary: z.string().min(1).optional(),
78
- }).strict();
79
- export const RuntimeEvidenceCandidateNearMissReasonSchema = z.enum([
80
- "close_to_best",
81
- "stability",
82
- "novelty",
83
- "weak_dimension_improvement",
84
- "complementarity",
85
- "ensemble_potential",
86
- ]);
87
- export const RuntimeEvidenceCandidateNearMissSchema = z.object({
88
- status: z.enum(["retained", "promoted", "rejected"]).default("retained"),
89
- reason_to_keep: z.array(RuntimeEvidenceCandidateNearMissReasonSchema).min(1),
90
- margin_to_best: z.number().min(0).optional(),
91
- weak_dimensions: z.array(z.string().min(1)).default([]),
92
- complementary_candidate_ids: z.array(z.string().min(1)).default([]),
93
- follow_up: z.object({
94
- title: z.string().min(1),
95
- rationale: z.string().min(1),
96
- target_dimensions: z.array(z.string().min(1)).default([]),
97
- expected_evidence_gain: z.string().min(1).optional(),
98
- }).strict().optional(),
99
- evidence_refs: z.array(z.string().min(1)).default([]),
100
- summary: z.string().min(1).optional(),
101
- }).strict();
102
- export const RuntimeEvidenceCandidateRecordSchema = z.object({
103
- candidate_id: z.string().min(1),
104
- label: z.string().min(1).optional(),
105
- lineage: RuntimeEvidenceCandidateLineageSchema,
106
- metrics: z.array(RuntimeEvidenceMetricSchema).default([]),
107
- artifacts: z.array(RuntimeEvidenceArtifactRefSchema).default([]),
108
- similarity: z.array(RuntimeEvidenceCandidateSimilaritySchema).default([]),
109
- robustness: z.object({
110
- stability_score: z.number().min(0).max(1).optional(),
111
- diversity_score: z.number().min(0).max(1).optional(),
112
- risk_penalty: z.number().min(0).max(1).optional(),
113
- robust_score: z.number().min(0).max(1).optional(),
114
- evidence_confidence: z.number().min(0).max(1).optional(),
115
- repeated_evaluations: z.number().int().nonnegative().optional(),
116
- mean_score: z.number().optional(),
117
- max_score: z.number().optional(),
118
- score_stddev: z.number().min(0).optional(),
119
- fold_score_range: z.number().min(0).optional(),
120
- seed_score_range: z.number().min(0).optional(),
121
- weak_dimensions: z.array(z.string().min(1)).default([]),
122
- provenance_refs: z.array(z.string().min(1)).default([]),
123
- summary: z.string().min(1).optional(),
124
- }).strict().optional(),
125
- near_miss: RuntimeEvidenceCandidateNearMissSchema.optional(),
126
- disposition: RuntimeEvidenceCandidateDispositionSchema.default("retained"),
127
- disposition_reason: z.string().min(1).optional(),
128
- produced_at: z.string().datetime().optional(),
129
- }).strict();
130
- export const RuntimeEvidenceEvaluatorSignalSchema = z.enum(["local", "external"]);
131
- export const RuntimeEvidenceEvaluatorStatusSchema = z.enum([
132
- "pending",
133
- "ready",
134
- "approval_required",
135
- "submitted",
136
- "passed",
137
- "succeeded",
138
- "completed",
139
- "failed",
140
- "regressed",
141
- "blocked",
142
- "unknown",
143
- ]);
144
- export const RuntimeEvidenceEvaluatorPublishActionSchema = z.object({
145
- id: z.string().min(1),
146
- label: z.string().min(1),
147
- tool_name: z.string().min(1).optional(),
148
- payload_ref: z.string().min(1).optional(),
149
- approval_required: z.literal(true).default(true),
150
- status: z.enum(["approval_required", "approved", "submitted", "completed", "blocked"]).optional(),
151
- }).strict();
152
- export const RuntimeEvidenceEvaluatorValidationSchema = z.object({
153
- status: z.enum(["pending", "passed", "failed", "blocked", "unknown"]).default("unknown"),
154
- command: z.string().min(1).optional(),
155
- summary: z.string().min(1).optional(),
156
- }).strict();
157
- export const RuntimeEvidenceEvaluatorProvenanceSchema = z.object({
158
- kind: z.enum(["local_command", "external_url", "ci", "benchmark", "human_review", "other"]).default("other"),
159
- command: z.string().min(1).optional(),
160
- url: z.string().url().optional(),
161
- run_id: z.string().min(1).optional(),
162
- external_id: z.string().min(1).optional(),
163
- raw_ref: z.string().min(1).optional(),
164
- retrieved_at: z.string().datetime().optional(),
165
- }).strict();
166
- export const RuntimeEvidenceEvaluatorBudgetSchema = z.object({
167
- policy_id: z.string().min(1).optional(),
168
- max_attempts: z.number().int().positive().optional(),
169
- used_attempts: z.number().int().nonnegative().optional(),
170
- remaining_attempts: z.number().int().nonnegative(),
171
- approval_required: z.boolean().default(true),
172
- deadline_at: z.string().datetime().optional(),
173
- phase: z.enum(["exploration", "consolidation", "finalization", "other"]).optional(),
174
- portfolio_policy: z.object({
175
- diversified_portfolio_required: z.boolean().default(false),
176
- reserve_for_finalization: z.boolean().default(false),
177
- min_strategy_families: z.number().int().positive().optional(),
178
- }).strict().optional(),
179
- }).strict();
180
- export const RuntimeEvidenceEvaluatorCandidateSnapshotSchema = z.object({
181
- evidence_entry_id: z.string().min(1).optional(),
182
- primary_metric_label: z.string().min(1).optional(),
183
- local_metrics: z.array(RuntimeEvidenceMetricSchema).default([]),
184
- robust_selection: z.object({
185
- raw_rank: z.number().int().positive().optional(),
186
- robust_score: z.number().min(0).max(1).optional(),
187
- stability_score: z.number().min(0).max(1).optional(),
188
- diversity_score: z.number().min(0).max(1).optional(),
189
- risk_penalty: z.number().min(0).max(1).optional(),
190
- portfolio_role: z.enum(["raw_best", "robust_best", "safe", "aggressive", "diverse", "near_miss", "other"]).optional(),
191
- }).strict().optional(),
192
- summary: z.string().min(1).optional(),
193
- }).strict();
194
- export const RuntimeEvidenceEvaluatorCalibrationSchema = z.object({
195
- mode: z.literal("calibration_only").default("calibration_only"),
196
- use_for_selection: z.boolean().default(false),
197
- direct_optimization_allowed: z.literal(false).default(false),
198
- minimum_observations: z.number().int().positive().default(1),
199
- conclusion: z.string().min(1).optional(),
200
- }).strict();
201
- export const RuntimeEvidenceEvaluatorObservationSchema = z.object({
202
- evaluator_id: z.string().min(1),
203
- signal: RuntimeEvidenceEvaluatorSignalSchema,
204
- source: z.string().min(1),
205
- candidate_id: z.string().min(1),
206
- candidate_label: z.string().min(1).optional(),
207
- artifact_labels: z.array(z.string().min(1)).optional(),
208
- status: RuntimeEvidenceEvaluatorStatusSchema.default("unknown"),
209
- score: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),
210
- score_label: z.string().min(1).optional(),
211
- direction: z.enum(["maximize", "minimize", "neutral"]).optional(),
212
- observed_at: z.string().datetime().optional(),
213
- expected_score: z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),
214
- expected_status: RuntimeEvidenceEvaluatorStatusSchema.optional(),
215
- expectation_source: z.string().min(1).optional(),
216
- validation: RuntimeEvidenceEvaluatorValidationSchema.optional(),
217
- publish_action: RuntimeEvidenceEvaluatorPublishActionSchema.optional(),
218
- provenance: RuntimeEvidenceEvaluatorProvenanceSchema.optional(),
219
- budget: RuntimeEvidenceEvaluatorBudgetSchema.optional(),
220
- candidate_snapshot: RuntimeEvidenceEvaluatorCandidateSnapshotSchema.optional(),
221
- calibration: RuntimeEvidenceEvaluatorCalibrationSchema.optional(),
222
- summary: z.string().min(1).optional(),
223
- }).strict();
224
- export const RuntimeEvidenceResearchSourceSchema = z.object({
225
- url: z.string().url(),
226
- title: z.string().min(1).optional(),
227
- source_type: z.enum(["official_docs", "maintainer", "paper", "issue_thread", "example", "writeup", "other"]).default("other"),
228
- provenance: z.enum(["quoted", "paraphrased", "summarized"]).default("summarized"),
229
- relevance: z.string().min(1).optional(),
230
- }).strict();
231
- export const RuntimeEvidenceResearchFindingSchema = z.object({
232
- finding: z.string().min(1),
233
- source_urls: z.array(z.string().url()).min(1),
234
- applicability: z.string().min(1),
235
- risks_constraints: z.array(z.string().min(1)).default([]),
236
- proposed_experiment: z.string().min(1),
237
- expected_metric_impact: z.string().min(1),
238
- fact_vs_adaptation: z.object({
239
- facts: z.array(z.string().min(1)).default([]),
240
- adaptation: z.string().min(1),
241
- }).strict(),
242
- }).strict();
243
- export const RuntimeEvidenceResearchExternalActionSchema = z.object({
244
- label: z.string().min(1),
245
- reason: z.string().min(1),
246
- approval_required: z.literal(true).default(true),
247
- }).strict();
248
- export const RuntimeEvidenceResearchMemoSchema = z.object({
249
- trigger: z.enum(["plateau", "uncertainty", "knowledge_gap"]),
250
- query: z.string().min(1),
251
- summary: z.string().min(1),
252
- sources: z.array(RuntimeEvidenceResearchSourceSchema).min(1),
253
- findings: z.array(RuntimeEvidenceResearchFindingSchema).min(1),
254
- candidate_playbook: z.object({
255
- title: z.string().min(1),
256
- steps: z.array(z.string().min(1)).default([]),
257
- source_urls: z.array(z.string().url()).default([]),
258
- }).strict().optional(),
259
- untrusted_content_policy: z.literal("webpage_instructions_are_untrusted").default("webpage_instructions_are_untrusted"),
260
- external_actions: z.array(RuntimeEvidenceResearchExternalActionSchema).default([]),
261
- confidence: z.number().min(0).max(1).default(0.5),
262
- }).strict();
263
- export const RuntimeEvidenceDreamCheckpointTriggerSchema = z.enum([
264
- "iteration",
265
- "plateau",
266
- "breakthrough",
267
- "pre_finalization",
268
- ]);
269
- export const RuntimeEvidenceMemoryUsageStatsSchema = z.object({
270
- last_used_at: z.string().datetime().nullable().default(null),
271
- use_count: z.number().int().nonnegative().default(0),
272
- validated_count: z.number().int().nonnegative().default(0),
273
- negative_outcome_count: z.number().int().nonnegative().default(0),
274
- }).strict();
275
- export const RuntimeEvidenceDreamCheckpointMemoryRefSchema = z.object({
276
- source_type: z.enum(["soil", "playbook", "runtime_evidence", "other"]),
277
- ref: z.string().min(1).optional(),
278
- summary: z.string().min(1),
279
- authority: z.literal("advisory_only").default("advisory_only"),
280
- relevance_score: z.number().min(0).max(1).optional(),
281
- source_reliability: z.number().min(0).max(1).optional(),
282
- verification_status: MemoryVerificationStatusSchema.optional(),
283
- provenance: MemoryProvenanceSchema.optional(),
284
- quarantine_state: MemoryQuarantineStateSchema.optional(),
285
- recency_score: z.number().min(0).max(1).optional(),
286
- prior_success_contribution: z.number().min(0).max(1).optional(),
287
- retrieval: z.object({
288
- kind: z.enum(["route_hit", "fallback_hit", "checkpoint", "manual", "unknown"]).default("unknown"),
289
- score: z.number().min(0).max(1).optional(),
290
- confidence: z.number().min(0).max(1).optional(),
291
- }).strict().optional(),
292
- usage_stats: RuntimeEvidenceMemoryUsageStatsSchema.optional(),
293
- ranking_trace: z.object({
294
- score: z.number().min(0).max(1),
295
- decision: z.enum(["admitted", "rejected"]),
296
- reason: z.string().min(1),
297
- }).strict().optional(),
298
- }).strict();
299
- export const RuntimeEvidenceDreamCheckpointStrategyCandidateSchema = z.object({
300
- candidate_ref: z.string().min(1).optional(),
301
- title: z.string().min(1),
302
- rationale: z.string().min(1),
303
- target_dimensions: z.array(z.string().min(1)).default([]),
304
- expected_evidence_gain: z.string().min(1).optional(),
305
- retry_reason: z.string().min(1).optional(),
306
- failed_lineage_warning: z.object({
307
- fingerprint: z.string().min(1),
308
- count: z.number().int().positive(),
309
- reason: z.string().min(1),
310
- }).strict().optional(),
311
- }).strict();
312
- export const RuntimeEvidenceDreamCheckpointActiveHypothesisSchema = z.object({
313
- hypothesis: z.string().min(1),
314
- supporting_evidence_ref: z.string().min(1).optional(),
315
- target_metric_or_dimension: z.string().min(1),
316
- expected_next_observation: z.string().min(1),
317
- status: z.enum(["active", "testing", "supported", "weakened"]).default("active"),
318
- }).strict();
319
- export const RuntimeEvidenceDreamCheckpointRejectedApproachSchema = z.object({
320
- approach: z.string().min(1),
321
- rejection_reason: z.string().min(1),
322
- candidate_ref: z.string().min(1).optional(),
323
- evidence_ref: z.string().min(1).optional(),
324
- revisit_condition: z.string().min(1).optional(),
325
- confidence: z.number().min(0).max(1).default(0.5),
326
- }).strict();
327
- export const RuntimeEvidenceDreamRunControlRecommendationSchema = z.object({
328
- id: z.string().min(1).optional(),
329
- action: z.enum([
330
- "stay_current_mode",
331
- "widen_exploration",
332
- "consolidate_candidates",
333
- "freeze_experiment_queue",
334
- "enter_finalization",
335
- "preserve_near_miss_candidates",
336
- "retire_low_value_lineage",
337
- "request_operator_approval",
338
- ]),
339
- rationale: z.string().min(1),
340
- evidence: z.array(z.object({
341
- kind: z.enum(["metric", "artifact", "lineage", "task_history", "deadline", "external_feedback", "memory", "runtime_state"]),
342
- ref: z.string().min(1).optional(),
343
- summary: z.string().min(1),
344
- }).strict()).min(1),
345
- target_mode: z.enum(["exploration", "consolidation", "finalization"]).optional(),
346
- target_strategy_family: z.string().min(1).optional(),
347
- candidate_refs: z.array(z.string().min(1)).default([]),
348
- lineage_refs: z.array(z.string().min(1)).default([]),
349
- approval_required: z.boolean().default(false),
350
- risk: z.enum(["low", "medium", "high"]).default("medium"),
351
- confidence: z.number().min(0).max(1).default(0.5),
352
- policy_decision: z.object({
353
- disposition: z.enum(["auto_apply", "approval_required", "advisory_only"]),
354
- reason: z.string().min(1),
355
- }).strict().optional(),
356
- }).strict();
357
- export const RuntimeEvidenceDreamCheckpointSchema = z.object({
358
- trigger: RuntimeEvidenceDreamCheckpointTriggerSchema,
359
- summary: z.string().min(1),
360
- current_goal: z.string().min(1),
361
- active_dimensions: z.array(z.string().min(1)).default([]),
362
- best_evidence_so_far: z.string().min(1).optional(),
363
- recent_strategy_families: z.array(z.string().min(1)).default([]),
364
- exhausted: z.array(z.string().min(1)).default([]),
365
- promising: z.array(z.string().min(1)).default([]),
366
- relevant_memories: z.array(RuntimeEvidenceDreamCheckpointMemoryRefSchema).default([]),
367
- active_hypotheses: z.array(RuntimeEvidenceDreamCheckpointActiveHypothesisSchema).default([]),
368
- rejected_approaches: z.array(RuntimeEvidenceDreamCheckpointRejectedApproachSchema).default([]),
369
- next_strategy_candidates: z.array(RuntimeEvidenceDreamCheckpointStrategyCandidateSchema).default([]),
370
- run_control_recommendations: z.array(RuntimeEvidenceDreamRunControlRecommendationSchema).optional(),
371
- guidance: z.string().min(1),
372
- uncertainty: z.array(z.string().min(1)).default([]),
373
- context_authority: z.literal("advisory_only").default("advisory_only"),
374
- confidence: z.number().min(0).max(1).default(0.5),
375
- }).strict();
376
- export const RuntimeEvidenceDivergentHypothesisSchema = z.object({
377
- strategy_id: z.string().min(1).optional(),
378
- hypothesis: z.string().min(1),
379
- strategy_family: z.string().min(1),
380
- role: z.enum(["exploitation", "adjacent_exploration", "divergent_exploration"]),
381
- novelty_score: z.number().min(0).max(1),
382
- similarity_to_recent_failures: z.number().min(0).max(1).default(0),
383
- expected_cost: z.enum(["low", "medium", "high"]),
384
- relationship_to_lineage: z.enum([
385
- "current_best",
386
- "neighbor",
387
- "failed_lineage",
388
- "different_mechanism",
389
- "different_assumption",
390
- "unknown",
391
- ]),
392
- prior_evidence: z.string().min(1).optional(),
393
- downrank_reason: z.string().min(1).optional(),
394
- smoke_status: z.enum(["not_run", "promote", "defer", "retire"]).default("not_run"),
395
- smoke_reason: z.string().min(1).optional(),
396
- smoke_evidence_ref: z.string().min(1).optional(),
397
- evidence_authority: z.literal("speculative_hypothesis").default("speculative_hypothesis"),
398
- }).strict();
399
- export const RuntimeEvidenceEntrySchema = z.object({
400
- schema_version: z.literal("runtime-evidence-entry-v1"),
401
- id: z.string().min(1),
402
- occurred_at: z.string().datetime(),
403
- kind: RuntimeEvidenceEntryKindSchema,
404
- scope: z.object({
405
- goal_id: z.string().min(1).optional(),
406
- run_id: z.string().min(1).optional(),
407
- task_id: z.string().min(1).optional(),
408
- loop_index: z.number().int().nonnegative().optional(),
409
- phase: z.string().min(1).optional(),
410
- }).strict(),
411
- hypothesis: z.string().min(1).optional(),
412
- strategy: z.string().min(1).optional(),
413
- task: z.object({
414
- id: z.string().min(1).optional(),
415
- description: z.string().min(1).optional(),
416
- action: z.string().min(1).optional(),
417
- primary_dimension: z.string().min(1).optional(),
418
- }).strict().optional(),
419
- verification: z.object({
420
- command: z.string().min(1).optional(),
421
- verdict: z.string().min(1).optional(),
422
- confidence: z.number().min(0).max(1).optional(),
423
- summary: z.string().min(1).optional(),
424
- }).strict().optional(),
425
- metrics: z.array(RuntimeEvidenceMetricSchema).default([]),
426
- evaluators: z.array(RuntimeEvidenceEvaluatorObservationSchema).optional(),
427
- research: z.array(RuntimeEvidenceResearchMemoSchema).optional(),
428
- dream_checkpoints: z.array(RuntimeEvidenceDreamCheckpointSchema).optional(),
429
- divergent_exploration: z.array(RuntimeEvidenceDivergentHypothesisSchema).optional(),
430
- correction: MemoryCorrectionEntrySchema.optional(),
431
- correction_state: MemoryCorrectionTargetStateSchema.optional(),
432
- verification_status: MemoryVerificationStatusSchema.optional(),
433
- provenance: MemoryProvenanceSchema.optional(),
434
- quarantine_state: MemoryQuarantineStateSchema.optional(),
435
- candidates: z.array(RuntimeEvidenceCandidateRecordSchema).optional(),
436
- artifacts: z.array(RuntimeEvidenceArtifactRefSchema).default([]),
437
- result: z.object({
438
- status: z.string().min(1).optional(),
439
- summary: z.string().min(1).optional(),
440
- error: z.string().min(1).optional(),
441
- }).strict().optional(),
442
- outcome: RuntimeEvidenceOutcomeSchema.optional(),
443
- decision_reason: z.string().min(1).optional(),
444
- raw_refs: z.array(z.object({
445
- kind: z.string().min(1),
446
- id: z.string().min(1).optional(),
447
- path: z.string().min(1).optional(),
448
- state_relative_path: z.string().min(1).optional(),
449
- url: z.string().url().optional(),
450
- }).strict()).default([]),
451
- summary: z.string().min(1).optional(),
452
- }).strict().refine((entry) => entry.scope.goal_id || entry.scope.run_id, {
453
- message: "goal_id or run_id is required",
454
- path: ["scope"],
455
- });
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";
456
13
  const summaryIndexUpdateLocks = new Map();
457
14
  export class RuntimeEvidenceLedger {
458
15
  paths;
@@ -495,9 +52,9 @@ export class RuntimeEvidenceLedger {
495
52
  await Promise.all([...targets].map(async (target) => {
496
53
  await withSummaryIndexUpdateLock(target, async () => {
497
54
  await fsp.mkdir(path.dirname(target), { recursive: true });
498
- const preAppendCheckpoint = await readPreAppendCheckpoint(target);
55
+ const preAppendIndex = await readPreAppendSummaryIndex(target);
499
56
  await fsp.appendFile(target, `${JSON.stringify(entry)}\n`, "utf8");
500
- await updateSummaryIndexAfterAppend(target, this.paths, [entry], preAppendCheckpoint);
57
+ await updateSummaryIndexAfterAppend(target, this.paths, [entry], preAppendIndex);
501
58
  });
502
59
  }));
503
60
  return [entry];
@@ -559,7 +116,14 @@ async function rebuildSummaryIndex(canonicalPath, paths) {
559
116
  const read = await readEvidenceFile(canonicalPath);
560
117
  const manifests = await readReproducibilityManifests(paths, scope);
561
118
  const summary = summarizeEvidence(scope, read, manifests);
562
- await writeSummaryIndex(canonicalPath, summary, manifests.length === 0 ? read : undefined);
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);
563
127
  return summary;
564
128
  }
565
129
  async function withSummaryIndexUpdateLock(canonicalPath, action) {
@@ -581,21 +145,28 @@ async function withSummaryIndexUpdateLock(canonicalPath, action) {
581
145
  }
582
146
  }
583
147
  }
584
- async function updateSummaryIndexAfterAppend(canonicalPath, paths, appendedEntries, preAppendCheckpoint) {
148
+ async function updateSummaryIndexAfterAppend(canonicalPath, paths, appendedEntries, preAppendIndex) {
585
149
  const scope = summaryScopeFromPath(canonicalPath);
586
150
  const manifests = await readReproducibilityManifests(paths, scope);
587
151
  if (manifests.length > 0) {
588
152
  return rebuildSummaryIndex(canonicalPath, paths);
589
153
  }
590
- if (!preAppendCheckpoint) {
154
+ if (!preAppendIndex) {
591
155
  return rebuildSummaryIndex(canonicalPath, paths);
592
156
  }
593
- const read = {
594
- entries: [...preAppendCheckpoint.entries, ...appendedEntries],
595
- warnings: preAppendCheckpoint.warnings,
596
- };
597
- const summary = summarizeEvidence(scope, read);
598
- await writeSummaryIndex(canonicalPath, summary, read);
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
+ });
599
170
  return summary;
600
171
  }
601
172
  function summaryIndexPath(canonicalPath) {
@@ -647,20 +218,37 @@ function isManifestArtifactRef(value) {
647
218
  async function readSummaryIndex(canonicalPath, expectedScope) {
648
219
  return readSummaryIndexWithStat(canonicalPath, expectedScope);
649
220
  }
650
- async function readPreAppendCheckpoint(canonicalPath) {
221
+ async function readPreAppendSummaryIndex(canonicalPath) {
651
222
  try {
652
223
  const stat = await fsp.stat(canonicalPath);
653
224
  if (stat.size === 0)
654
- return { entries: [], warnings: [] };
225
+ return emptySummaryIndex(canonicalPath);
655
226
  }
656
227
  catch (err) {
657
228
  if (err.code === "ENOENT")
658
- return { entries: [], warnings: [] };
229
+ return emptySummaryIndex(canonicalPath);
659
230
  throw err;
660
231
  }
661
232
  const scope = summaryScopeFromPath(canonicalPath);
662
- const index = await readSummaryIndexWithStat(canonicalPath, scope);
663
- return index ? readCheckpointFromSummaryIndex(index) : null;
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
+ };
664
252
  }
665
253
  async function readSummaryIndexWithStat(canonicalPath, expectedScope) {
666
254
  let text;
@@ -721,6 +309,46 @@ function readCheckpointFromSummaryIndex(index) {
721
309
  }
722
310
  return { entries, warnings };
723
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
+ }
724
352
  function isCurrentEvidenceSummaryShape(summary) {
725
353
  return summary.context_policy_version === "quarantine-filtered-planning-context-v2"
726
354
  && Array.isArray(summary.candidate_lineages)
@@ -736,8 +364,316 @@ function isCurrentEvidenceSummaryShape(summary) {
736
364
  && typeof summary.candidate_selection_summary === "object"
737
365
  && summary.candidate_selection_summary !== null;
738
366
  }
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
+ }
739
674
  async function writeSummaryIndex(canonicalPath, summary, checkpointRead) {
740
675
  const stat = await fsp.stat(canonicalPath);
676
+ const warnings = checkpointRead ? checkpointRead.warnings : [];
741
677
  const index = {
742
678
  schema_version: "runtime-evidence-summary-index-v1",
743
679
  generated_at: new Date().toISOString(),
@@ -745,12 +681,22 @@ async function writeSummaryIndex(canonicalPath, summary, checkpointRead) {
745
681
  canonical_log_size: stat.size,
746
682
  canonical_log_mtime_ms: stat.mtimeMs,
747
683
  summary,
748
- ...(checkpointRead
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
749
695
  ? {
750
696
  checkpoint: {
751
697
  schema_version: "runtime-evidence-summary-checkpoint-v1",
752
698
  entries: checkpointRead.entries,
753
- warnings: checkpointRead.warnings,
699
+ warnings,
754
700
  },
755
701
  }
756
702
  : {}),
@@ -1008,7 +954,7 @@ function scoreCandidateSelectionContexts(rawRanked, calibration = []) {
1008
954
  const diversityScore = clamp01(candidate.robustness?.diversity_score === undefined
1009
955
  ? inferredDiversity
1010
956
  : Math.min(candidate.robustness.diversity_score, inferredDiversity));
1011
- const riskPenalty = clamp01(candidate.robustness?.risk_penalty ?? inferredCandidateRiskPenalty(candidate));
957
+ const riskPenalty = clamp01(candidate.robustness?.risk_penalty ?? 0);
1012
958
  const evidenceConfidence = clamp01(candidate.robustness?.evidence_confidence ?? context.metric?.confidence ?? 0.5);
1013
959
  const calibrationAdjustment = evaluatorCalibrationAdjustment(candidate.candidate_id, calibration);
1014
960
  const robustScore = clamp01(candidate.robustness?.robust_score
@@ -1081,19 +1027,6 @@ function highestKnownSimilarity(candidate, allCandidates) {
1081
1027
  }
1082
1028
  return highest;
1083
1029
  }
1084
- function inferredCandidateRiskPenalty(candidate) {
1085
- const lineageText = [
1086
- ...candidate.lineage.config_lineage,
1087
- ...candidate.lineage.postprocess_lineage,
1088
- ].map(normalizeLineageText).join(" ");
1089
- if (lineageText.includes("manual") || lineageText.includes("threshold") || lineageText.includes("postprocess")) {
1090
- return 0.15;
1091
- }
1092
- if (lineageText.includes("calibration") || lineageText.includes("weight")) {
1093
- return 0.08;
1094
- }
1095
- return 0;
1096
- }
1097
1030
  function candidateSelectionReasons(candidate, scores) {
1098
1031
  const reasons = [];
1099
1032
  if (scores.stabilityScore >= 0.8)
@@ -1172,6 +1105,8 @@ function summarizeNearMissCandidates(entriesOldestFirst) {
1172
1105
  }
1173
1106
  function nearMissReasonsForCandidate(context, rawBest, scored) {
1174
1107
  const explicit = context.candidate.near_miss?.reason_to_keep ?? [];
1108
+ if (explicit.length > 0)
1109
+ return [...explicit];
1175
1110
  const reasons = new Set(explicit);
1176
1111
  if (context.candidate.near_miss?.status === "retained" || context.candidate.near_miss?.status === "promoted") {
1177
1112
  for (const reason of inferredNearMissReasons(context, rawBest, scored))
@@ -1204,14 +1139,6 @@ function inferredNearMissReasons(context, rawBest, scored) {
1204
1139
  if (complementaryCandidateIds(context.candidate).length > 0 || highestKnownSimilarity(context.candidate, [context.candidate, rawBest.candidate]) <= 0.5) {
1205
1140
  reasons.push("complementarity");
1206
1141
  }
1207
- const lineageText = [
1208
- ...context.candidate.lineage.model_lineage,
1209
- ...context.candidate.lineage.config_lineage,
1210
- ...(context.candidate.near_miss?.summary ? [context.candidate.near_miss.summary] : []),
1211
- ].map(normalizeLineageText).join(" ");
1212
- if (lineageText.includes("stack") || lineageText.includes("ensemble") || lineageText.includes("blend")) {
1213
- reasons.push("ensemble_potential");
1214
- }
1215
1142
  return reasons;
1216
1143
  }
1217
1144
  function isImplicitNearMiss(context, rawBest, scored) {
@@ -1369,25 +1296,12 @@ function resolvePrimaryCandidateMetricKey(entriesOldestFirst) {
1369
1296
  const coverageDelta = b.candidate_count - a.candidate_count;
1370
1297
  if (coverageDelta !== 0)
1371
1298
  return coverageDelta;
1372
- const localityDelta = Number(isLocalValidationMetricLabel(b.key.label)) - Number(isLocalValidationMetricLabel(a.key.label));
1373
- if (localityDelta !== 0)
1374
- return localityDelta;
1375
1299
  const positionDelta = a.position_sum / a.candidate_count - b.position_sum / b.candidate_count;
1376
1300
  if (positionDelta !== 0)
1377
1301
  return positionDelta;
1378
1302
  return b.latest_index - a.latest_index;
1379
1303
  })[0]?.key ?? null;
1380
1304
  }
1381
- function isLocalValidationMetricLabel(label) {
1382
- const normalized = normalizeLineageText(label);
1383
- const externalHints = ["public", "private", "leaderboard", "external", "lb", "submission"];
1384
- for (const hint of externalHints) {
1385
- if (normalized === hint || normalized.includes(hint)) {
1386
- return false;
1387
- }
1388
- }
1389
- return true;
1390
- }
1391
1305
  function candidateComparableMetric(candidate, primaryMetric) {
1392
1306
  for (const metric of candidate.metrics) {
1393
1307
  if (primaryMetric && (metric.label !== primaryMetric.label || metric.direction !== primaryMetric.direction))