@sema-agent/core 7.51.1 → 7.52.0

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 (372) hide show
  1. package/CHANGELOG.md +550 -2
  2. package/dist/agents/agent-transcript-tool.d.ts +1 -1
  3. package/dist/agents/cascade.js +4 -0
  4. package/dist/agents/cumulative-stats.d.ts +3 -0
  5. package/dist/agents/cumulative-stats.js +3 -0
  6. package/dist/agents/list-agents-tool.d.ts +1 -1
  7. package/dist/agents/read-inbox-tool.d.ts +1 -1
  8. package/dist/agents/repair-loop.js +4 -0
  9. package/dist/agents/send-message-tool.d.ts +11 -16
  10. package/dist/agents/send-message-tool.js +11 -13
  11. package/dist/agents/subagent.d.ts +5 -0
  12. package/dist/agents/subagent.js +7 -4
  13. package/dist/agents/tool-filter.d.ts +40 -13
  14. package/dist/agents/tool-filter.js +28 -14
  15. package/dist/bench/metrics.d.ts +1 -0
  16. package/dist/brain/anthropic.js +16 -12
  17. package/dist/brain/model-presets.d.ts +4 -5
  18. package/dist/brain/model-presets.js +4 -4
  19. package/dist/brain/open-responses.js +16 -12
  20. package/dist/brain/openai.js +16 -12
  21. package/dist/brain/request-params.d.ts +12 -33
  22. package/dist/brain/request-params.js +5 -2
  23. package/dist/brain/request-route.d.ts +9 -8
  24. package/dist/brain/request-route.js +1 -0
  25. package/dist/brain/route-adjudicator.d.ts +117 -47
  26. package/dist/brain/route-adjudicator.js +171 -42
  27. package/dist/brain/route-conformance.js +2 -2
  28. package/dist/brain/status-sink.d.ts +18 -0
  29. package/dist/brain/status-sink.js +7 -0
  30. package/dist/core/allow-entry.d.ts +42 -8
  31. package/dist/core/allow-entry.js +24 -17
  32. package/dist/core/auto-compaction.d.ts +23 -20
  33. package/dist/core/auto-compaction.js +37 -16
  34. package/dist/core/auto-promote.d.ts +2 -1
  35. package/dist/core/auto-promote.js +2 -2
  36. package/dist/core/caller-tool-name.d.ts +9 -0
  37. package/dist/core/caller-tool-name.js +13 -0
  38. package/dist/core/checkpoint-requirements.d.ts +7 -1
  39. package/dist/core/checkpoint-requirements.js +2 -0
  40. package/dist/core/checkpoint-store.d.ts +36 -12
  41. package/dist/core/checkpoint-store.js +1 -1
  42. package/dist/core/child-clamp-seats.d.ts +6 -0
  43. package/dist/core/child-clamp-seats.js +2 -1
  44. package/dist/core/credential-vocabulary.d.ts +33 -8
  45. package/dist/core/credential-vocabulary.js +32 -7
  46. package/dist/core/decision-receipt.d.ts +2 -2
  47. package/dist/core/delegation-frames.d.ts +9 -2
  48. package/dist/core/delegation-name.d.ts +18 -0
  49. package/dist/core/delegation-name.js +47 -0
  50. package/dist/core/engine-capabilities.d.ts +8 -1
  51. package/dist/core/engine-capabilities.js +1 -1
  52. package/dist/core/engine-notice.d.ts +36 -19
  53. package/dist/core/frontmatter-fence.d.ts +10 -0
  54. package/dist/core/frontmatter-fence.js +6 -0
  55. package/dist/core/gate-fold.js +5 -23
  56. package/dist/core/gate-lanes.js +356 -270
  57. package/dist/core/governance-codes.d.ts +9 -4
  58. package/dist/core/governance-codes.js +9 -3
  59. package/dist/core/hooks.d.ts +276 -734
  60. package/dist/core/hooks.js +97 -192
  61. package/dist/{tools/fs → core}/image-admission.d.ts +21 -3
  62. package/dist/{tools/fs → core}/image-admission.js +24 -6
  63. package/dist/core/locked-config.d.ts +26 -5
  64. package/dist/core/locked-config.js +31 -6
  65. package/dist/core/mcp-connection-pool.d.ts +4 -1
  66. package/dist/core/mcp-connection-pool.js +7 -2
  67. package/dist/core/mcp-probe.d.ts +12 -9
  68. package/dist/core/mcp-probe.js +2 -2
  69. package/dist/core/mcp-server-spec.d.ts +53 -7
  70. package/dist/core/mcp-server-spec.js +84 -1
  71. package/dist/core/mcp.d.ts +11 -7
  72. package/dist/core/mcp.js +27 -9
  73. package/dist/core/memory-engine/data-plane.js +5 -1
  74. package/dist/core/memory-engine/distiller.js +16 -2
  75. package/dist/core/memory-engine/engine.d.ts +8 -11
  76. package/dist/core/memory-engine/engine.js +9 -5
  77. package/dist/core/memory-engine/frontmatter.d.ts +6 -0
  78. package/dist/core/memory-engine/frontmatter.js +19 -16
  79. package/dist/core/memory.d.ts +2 -2
  80. package/dist/core/mode-policy.d.ts +4 -0
  81. package/dist/core/mode-policy.js +7 -5
  82. package/dist/core/model-seat.d.ts +4 -1
  83. package/dist/core/mods/dollar.d.ts +109 -0
  84. package/dist/core/mods/dollar.js +154 -0
  85. package/dist/core/mods/host.d.ts +23 -0
  86. package/dist/core/mods/host.js +21 -0
  87. package/dist/core/mods/kernel/budget.d.ts +43 -0
  88. package/dist/core/mods/kernel/budget.js +83 -0
  89. package/dist/core/mods/kernel/dispatch.d.ts +100 -0
  90. package/dist/core/mods/kernel/dispatch.js +701 -0
  91. package/dist/core/mods/kernel/events.d.ts +242 -0
  92. package/dist/core/mods/kernel/events.js +210 -0
  93. package/dist/core/mods/kernel/index.d.ts +6 -0
  94. package/dist/core/mods/kernel/index.js +5 -0
  95. package/dist/core/mods/kernel/receive.d.ts +65 -0
  96. package/dist/core/mods/kernel/receive.js +123 -0
  97. package/dist/core/mods/kernel/registration.d.ts +131 -0
  98. package/dist/core/mods/kernel/registration.js +102 -0
  99. package/dist/core/mods/kernel/site-rules.d.ts +84 -0
  100. package/dist/core/mods/kernel/site-rules.js +104 -0
  101. package/dist/core/mods/stations.d.ts +350 -0
  102. package/dist/core/mods/stations.js +444 -0
  103. package/dist/core/own-property-receipt.js +11 -23
  104. package/dist/core/parent-spec-seat.d.ts +18 -7
  105. package/dist/core/parent-spec-seat.js +6 -2
  106. package/dist/core/path-identity.js +2 -1
  107. package/dist/core/permission-rule-syntax.d.ts +15 -0
  108. package/dist/core/permission-rule-syntax.js +24 -16
  109. package/dist/core/permission-rules.d.ts +7 -1
  110. package/dist/core/permission-rules.js +26 -15
  111. package/dist/core/prompt-section-seat.d.ts +15 -27
  112. package/dist/core/prompt-section-seat.js +73 -40
  113. package/dist/core/protocol-http-auth.d.ts +3 -1
  114. package/dist/core/protocol-http-auth.js +2 -0
  115. package/dist/core/reminder-mint.d.ts +2 -2
  116. package/dist/core/remote-env.d.ts +24 -12
  117. package/dist/core/remote-env.js +1 -0
  118. package/dist/core/resume-startup-cause.d.ts +16 -1
  119. package/dist/core/resume-startup-cause.js +4 -1
  120. package/dist/core/retired-keys.d.ts +4 -0
  121. package/dist/core/retired-keys.js +3 -0
  122. package/dist/core/runner/announce-once-ledger.d.ts +31 -1
  123. package/dist/core/runner/announce-once-ledger.js +22 -0
  124. package/dist/core/runner/assemble-result.d.ts +9 -0
  125. package/dist/core/runner/assemble-result.js +3 -1
  126. package/dist/core/runner/call-hook-stations.d.ts +23 -27
  127. package/dist/core/runner/call-hook-stations.js +58 -42
  128. package/dist/core/runner/caller-stop-gate.d.ts +25 -0
  129. package/dist/core/runner/caller-stop-gate.js +7 -0
  130. package/dist/core/runner/compaction-seams.d.ts +8 -22
  131. package/dist/core/runner/compaction-seams.js +28 -53
  132. package/dist/core/runner/construction-doors.js +11 -1
  133. package/dist/core/runner/contracts.d.ts +85 -83
  134. package/dist/core/runner/credential-origin-seat.d.ts +2 -0
  135. package/dist/core/runner/credential-origin-seat.js +19 -0
  136. package/dist/core/runner/extra-body-dropped-seat.d.ts +2 -6
  137. package/dist/core/runner/gate-exit.d.ts +47 -36
  138. package/dist/core/runner/gate-exit.js +8 -2
  139. package/dist/core/runner/image.js +1 -2
  140. package/dist/core/runner/inline-image.js +1 -1
  141. package/dist/core/runner/notice-seat-input.d.ts +11 -0
  142. package/dist/core/runner/notice-seat-input.js +1 -0
  143. package/dist/core/runner/person-path-rows.js +1 -0
  144. package/dist/core/runner/prepare-acquire-reconcile.js +5 -1
  145. package/dist/core/runner/prepare-ask-lane.d.ts +5 -7
  146. package/dist/core/runner/prepare-ask-lane.js +6 -15
  147. package/dist/core/runner/prepare-caps-and-workflow.d.ts +4 -2
  148. package/dist/core/runner/prepare-caps-and-workflow.js +25 -8
  149. package/dist/core/runner/prepare-config-doors.d.ts +5 -0
  150. package/dist/core/runner/prepare-config-doors.js +9 -0
  151. package/dist/core/runner/prepare-defer-classify.js +3 -4
  152. package/dist/core/runner/prepare-gate-stations.d.ts +8 -11
  153. package/dist/core/runner/prepare-gate-stations.js +11 -10
  154. package/dist/core/runner/prepare-inherited-gate.d.ts +8 -12
  155. package/dist/core/runner/prepare-inherited-gate.js +8 -21
  156. package/dist/core/runner/prepare-memory-engine-session.js +1 -1
  157. package/dist/core/runner/prepare-park-ask.js +10 -14
  158. package/dist/core/runner/prepare-policy-chain.d.ts +18 -16
  159. package/dist/core/runner/prepare-policy-chain.js +98 -101
  160. package/dist/core/runner/prepare-project-context.js +7 -10
  161. package/dist/core/runner/prepare-prompt-assembly.d.ts +45 -40
  162. package/dist/core/runner/prepare-prompt-assembly.js +134 -101
  163. package/dist/core/runner/prepare-prompt-inputs.d.ts +18 -19
  164. package/dist/core/runner/prepare-prompt-inputs.js +5 -7
  165. package/dist/core/runner/prepare-protocol-tools.d.ts +6 -4
  166. package/dist/core/runner/prepare-protocol-tools.js +2 -2
  167. package/dist/core/runner/prepare-safety-scan.js +6 -10
  168. package/dist/core/runner/prepare-suspend-saga.d.ts +6 -0
  169. package/dist/core/runner/prepare-suspend-saga.js +7 -5
  170. package/dist/core/runner/prepare-task.js +33 -15
  171. package/dist/core/runner/prepare-turn-wiring.d.ts +13 -15
  172. package/dist/core/runner/prepare-turn-wiring.js +29 -27
  173. package/dist/core/runner/prepare-wiring-manifest.d.ts +5 -6
  174. package/dist/core/runner/prepare-wiring-manifest.js +7 -7
  175. package/dist/core/runner/resume-apply.d.ts +5 -2
  176. package/dist/core/runner/resume-apply.js +24 -42
  177. package/dist/core/runner/resume-checkpoint-screen.d.ts +1 -0
  178. package/dist/core/runner/resume-checkpoint-screen.js +9 -1
  179. package/dist/core/runner/resume-preflight.js +38 -16
  180. package/dist/core/runner/retired-runner-deps.js +3 -1
  181. package/dist/core/runner/run-brain-sinks.d.ts +3 -2
  182. package/dist/core/runner/run-brain-sinks.js +5 -1
  183. package/dist/core/runner/run-compaction-machinery.d.ts +7 -1
  184. package/dist/core/runner/run-compaction-machinery.js +7 -33
  185. package/dist/core/runner/run-harness-handlers.js +4 -2
  186. package/dist/core/runner/run-identity-wiring.d.ts +3 -1
  187. package/dist/core/runner/run-identity-wiring.js +3 -2
  188. package/dist/core/runner/run-leg.js +62 -84
  189. package/dist/core/runner/run-notification-lane.js +1 -0
  190. package/dist/core/runner/run-recovery-lanes.d.ts +3 -0
  191. package/dist/core/runner/run-recovery-lanes.js +11 -10
  192. package/dist/core/runner/run-settle-and-teardown.js +9 -28
  193. package/dist/core/runner/run-stop-and-final-verify.js +18 -25
  194. package/dist/core/runner/run-terminal-adoption.d.ts +3 -0
  195. package/dist/core/runner/run-terminal-adoption.js +33 -22
  196. package/dist/core/runner/run-tool-mount-facts.js +5 -3
  197. package/dist/core/runner/run-turn-boundary.js +23 -34
  198. package/dist/core/runner/runtask.d.ts +6 -7
  199. package/dist/core/runner/runtask.js +14 -72
  200. package/dist/core/runner/session-rule-policy.d.ts +6 -4
  201. package/dist/core/runner/session-rule-policy.js +17 -10
  202. package/dist/core/runner/side-call-account.d.ts +68 -0
  203. package/dist/core/runner/side-call-account.js +61 -0
  204. package/dist/core/runner/stream-halt-verbs.js +12 -17
  205. package/dist/core/runner/stream-lifecycle-verbs.js +8 -5
  206. package/dist/core/runner/stream-steer-verb.d.ts +1 -1
  207. package/dist/core/runner/stream-steer-verb.js +20 -38
  208. package/dist/core/runner/sub-agent-deny-lists.d.ts +121 -22
  209. package/dist/core/runner/sub-agent-deny-lists.js +228 -71
  210. package/dist/core/runner/tool-end-body.d.ts +5 -6
  211. package/dist/core/runner/tool-end-body.js +6 -4
  212. package/dist/core/runner/tool-not-executed.d.ts +15 -0
  213. package/dist/core/runner/tool-not-executed.js +30 -0
  214. package/dist/core/runner/tool-occurrence.d.ts +8 -7
  215. package/dist/core/runner/tool-occurrence.js +5 -5
  216. package/dist/core/runner/tool-result-media-seat.d.ts +1 -1
  217. package/dist/core/runner-deps.d.ts +20 -28
  218. package/dist/core/safety-merge-corpus.js +18 -2
  219. package/dist/core/secret-env.d.ts +93 -20
  220. package/dist/core/secret-env.js +192 -38
  221. package/dist/core/session-policy-store.d.ts +93 -17
  222. package/dist/core/session-policy-store.js +178 -25
  223. package/dist/core/session-reconcile.d.ts +4 -0
  224. package/dist/core/session-reconcile.js +2 -1
  225. package/dist/core/shell-read-silence.js +3 -32
  226. package/dist/core/side-query.d.ts +5 -3
  227. package/dist/core/skill-grant.d.ts +3 -2
  228. package/dist/core/skill-grant.js +17 -9
  229. package/dist/core/skills-directory.d.ts +31 -11
  230. package/dist/core/skills-directory.js +655 -104
  231. package/dist/core/task-event.d.ts +13 -3
  232. package/dist/core/task-result.d.ts +8 -0
  233. package/dist/core/task-spec.d.ts +20 -19
  234. package/dist/core/task-stream.d.ts +14 -4
  235. package/dist/core/tighten-task-spec.d.ts +4 -3
  236. package/dist/core/tighten-task-spec.js +2 -4
  237. package/dist/core/tool-check-reading.d.ts +74 -0
  238. package/dist/core/tool-check-reading.js +80 -0
  239. package/dist/core/tool-policy.d.ts +59 -18
  240. package/dist/core/tool-policy.js +77 -12
  241. package/dist/core/tool-registry.d.ts +20 -0
  242. package/dist/core/tool-registry.js +4 -0
  243. package/dist/core/tool-spec.d.ts +10 -6
  244. package/dist/core/tools.js +2 -0
  245. package/dist/core/trace.d.ts +51 -32
  246. package/dist/core/types.d.ts +2 -1
  247. package/dist/core/types.js +1 -0
  248. package/dist/core/unc-spelling.d.ts +10 -0
  249. package/dist/core/unc-spelling.js +3 -0
  250. package/dist/core/untrusted-egress.d.ts +8 -0
  251. package/dist/core/untrusted-egress.js +4 -1
  252. package/dist/core/user-attachment.d.ts +12 -2
  253. package/dist/core/user-attachment.js +17 -2
  254. package/dist/core/wiring-manifest.d.ts +14 -13
  255. package/dist/core/wiring-manifest.js +2 -2
  256. package/dist/engine/compaction/utils.js +1 -2
  257. package/dist/engine/execution-env/node-execution-env.d.ts +4 -3
  258. package/dist/engine/execution-env/symlink-chain.js +1 -1
  259. package/dist/engine/harness/agent-harness.d.ts +1 -1
  260. package/dist/engine/harness/agent-harness.js +3 -3
  261. package/dist/engine/harness/types.d.ts +17 -16
  262. package/dist/engine/harness/types.js +7 -1
  263. package/dist/engine/llm/types.d.ts +12 -7
  264. package/dist/engine/loop/agent-loop.js +1 -1
  265. package/dist/engine/loop/types.d.ts +1 -1
  266. package/dist/engine/lsp/node-lsp-manager.d.ts +2 -2
  267. package/dist/engine/session/import-validate.js +3 -10
  268. package/dist/engine/session/session.d.ts +4 -4
  269. package/dist/engine/session/session.js +4 -4
  270. package/dist/index.d.ts +24 -17
  271. package/dist/index.js +15 -12
  272. package/dist/internal/harness.d.ts +1 -1
  273. package/dist/internal/harness.js +1 -1
  274. package/dist/orchestration/run-spec.d.ts +4 -6
  275. package/dist/orchestration/run-spec.js +39 -63
  276. package/dist/orchestration/run-workflow-tool.js +1 -2
  277. package/dist/orchestration/workflow.d.ts +11 -3
  278. package/dist/orchestration/workflow.js +11 -2
  279. package/dist/prompt-assembly/artifact-store.d.ts +37 -56
  280. package/dist/prompt-assembly/artifact-store.js +31 -49
  281. package/dist/prompt-assembly/artifact.d.ts +89 -76
  282. package/dist/prompt-assembly/artifact.js +167 -146
  283. package/dist/prompt-assembly/assemble.d.ts +34 -29
  284. package/dist/prompt-assembly/assemble.js +33 -220
  285. package/dist/prompt-assembly/bands.d.ts +20 -0
  286. package/dist/prompt-assembly/bands.js +18 -0
  287. package/dist/prompt-assembly/catalog/constitution.d.ts +23 -0
  288. package/dist/prompt-assembly/catalog/constitution.js +69 -0
  289. package/dist/prompt-assembly/catalog/core-behavior.d.ts +9 -0
  290. package/dist/prompt-assembly/catalog/core-behavior.js +85 -0
  291. package/dist/prompt-assembly/catalog/index.d.ts +11 -0
  292. package/dist/prompt-assembly/catalog/index.js +59 -0
  293. package/dist/prompt-assembly/catalog/modes.d.ts +15 -0
  294. package/dist/prompt-assembly/catalog/modes.js +137 -0
  295. package/dist/prompt-assembly/catalog/role.d.ts +10 -0
  296. package/dist/prompt-assembly/catalog/role.js +157 -0
  297. package/dist/prompt-assembly/catalog/schema.d.ts +124 -0
  298. package/dist/prompt-assembly/catalog/schema.js +25 -0
  299. package/dist/prompt-assembly/catalog/sections.d.ts +9 -0
  300. package/dist/prompt-assembly/catalog/sections.js +98 -0
  301. package/dist/prompt-assembly/catalog/team.d.ts +4 -0
  302. package/dist/prompt-assembly/catalog/team.js +258 -0
  303. package/dist/prompt-assembly/composer.d.ts +24 -28
  304. package/dist/prompt-assembly/composer.js +124 -46
  305. package/dist/prompt-assembly/epoch.d.ts +89 -79
  306. package/dist/prompt-assembly/epoch.js +115 -142
  307. package/dist/prompt-assembly/explain.d.ts +58 -34
  308. package/dist/prompt-assembly/explain.js +21 -24
  309. package/dist/prompt-assembly/overlay.d.ts +127 -0
  310. package/dist/prompt-assembly/overlay.js +301 -0
  311. package/dist/prompt-assembly/renderers.d.ts +21 -0
  312. package/dist/prompt-assembly/renderers.js +39 -0
  313. package/dist/prompt-assembly/section-usage.d.ts +3 -3
  314. package/dist/prompt-assembly/section-usage.js +1 -1
  315. package/dist/prompt-assembly/select.d.ts +56 -0
  316. package/dist/prompt-assembly/select.js +69 -0
  317. package/dist/prompt-assembly/sugar.d.ts +31 -0
  318. package/dist/prompt-assembly/sugar.js +20 -0
  319. package/dist/prompt-assembly/turn-snapshot.d.ts +3 -2
  320. package/dist/prompt-assembly/types.d.ts +45 -148
  321. package/dist/prompts/coordinator.d.ts +2 -21
  322. package/dist/prompts/coordinator.js +3 -255
  323. package/dist/prompts/cowork.d.ts +27 -16
  324. package/dist/prompts/cowork.js +2 -23
  325. package/dist/prompts/default.d.ts +38 -500
  326. package/dist/prompts/default.js +20 -285
  327. package/dist/prompts/supervisor.d.ts +6 -71
  328. package/dist/prompts/supervisor.js +6 -117
  329. package/dist/stores/file/session-policy-store.d.ts +3 -3
  330. package/dist/tools/fs/bash-readonly-classifier.d.ts +6 -5
  331. package/dist/tools/fs/dir-entries.d.ts +4 -2
  332. package/dist/tools/fs/dir-entries.js +16 -4
  333. package/dist/tools/fs/fs-bash.d.ts +1 -1
  334. package/dist/tools/fs/fs-bash.js +22 -11
  335. package/dist/tools/fs/fs-pdf.js +17 -13
  336. package/dist/tools/fs/fs-read.js +4 -3
  337. package/dist/tools/fs/fs-shared.d.ts +1 -10
  338. package/dist/tools/fs/fs-shared.js +3 -4
  339. package/dist/tools/fs/fs-write.js +2 -1
  340. package/dist/tools/fs/notebook.js +1 -1
  341. package/dist/tools/fs/pdf.d.ts +20 -10
  342. package/dist/tools/fs/pdf.js +19 -10
  343. package/dist/tools/fs/program-read-model.d.ts +68 -8
  344. package/dist/tools/fs/program-read-model.js +112 -33
  345. package/dist/tools/fs/program-read-model.rows.js +30 -10
  346. package/dist/tools/fs/read-deny-home.d.ts +25 -9
  347. package/dist/tools/fs/read-deny-home.js +28 -27
  348. package/dist/tools/fs/read-deny.d.ts +41 -11
  349. package/dist/tools/fs/read-deny.js +51 -5
  350. package/dist/tools/fs/safety.d.ts +4 -26
  351. package/dist/tools/fs/safety.js +10 -32
  352. package/dist/tools/fs/search.js +15 -10
  353. package/dist/tools/fs/shell-read-argv.d.ts +3 -2
  354. package/dist/tools/fs/shell-read-argv.js +118 -38
  355. package/dist/tools/fs/shell-read-establish.d.ts +5 -5
  356. package/dist/tools/fs/shell-read-establish.js +11 -61
  357. package/dist/tools/fs/shell-read-identity.js +6 -3
  358. package/dist/tools/fs/shell-read-judge.d.ts +13 -15
  359. package/dist/tools/fs/shell-read-judge.js +18 -4
  360. package/dist/tools/fs/shell-read-plan.d.ts +2 -2
  361. package/dist/tools/web.js +1 -1
  362. package/package.json +13 -1
  363. package/test/export-surface.snapshot.json +256 -99
  364. package/wire-changes/core@7.51.1.json +5 -5
  365. package/wire-changes/core@7.51.2.json +293 -0
  366. package/wire-changes/core@7.52.0.json +5859 -0
  367. package/dist/core/hook-seats.d.ts +0 -66
  368. package/dist/core/hook-seats.js +0 -37
  369. package/dist/prompt-assembly/packs/sema-default.d.ts +0 -2
  370. package/dist/prompt-assembly/packs/sema-default.js +0 -147
  371. package/dist/prompts/simple-sections.d.ts +0 -58
  372. package/dist/prompts/simple-sections.js +0 -43
package/dist/index.js CHANGED
@@ -62,7 +62,7 @@ export { WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS } from "./orchestration/workflow-siz
62
62
  export { ENGINE_AUTHORITY_ENVELOPE_TAGS } from "./core/untrusted-text.js";
63
63
  export { materializeA2aTools, A2aRpcError } from "./core/a2a.js";
64
64
  export { PROTOCOL_TABLE, MCP_NAMESPACE, A2A_NAMESPACE, protocolOf } from "./core/protocol-table.js";
65
- export { InMemorySessionPolicyStore, SessionPolicyError, loosenReasons, normalizeRules, judgeSessionRulesWrite, readSessionRulesShape, } from "./core/session-policy-store.js";
65
+ export { InMemorySessionPolicyStore, SessionPolicyError, loosenReasons, normalizeRules, judgeSessionRulesWrite, readSessionRulesShape, SESSION_RULES_GRAMMAR, compileSessionRuleBucket, unreadableDenyEntries, } from "./core/session-policy-store.js";
66
66
  export { SAFETY_MERGE_CONFORMANCE_CORPUS } from "./core/safety-merge-corpus.js";
67
67
  export { SAFETY_AXIS_VOCABULARY } from "./core/safety-axis-vocab.js";
68
68
  export { createSessionRulePolicy } from "./core/runner/session-rule-policy.js";
@@ -163,7 +163,7 @@ export { hasScheduler, isValidCronExpr, SchedulerError } from "./core/scheduler.
163
163
  export { createSchedulerTools, SCHEDULE_WAKEUP_TOOL_NAME, AUTONOMOUS_LOOP_SENTINEL, AUTONOMOUS_LOOP_DYNAMIC_SENTINEL, } from "./tools/scheduler-tools.js";
164
164
  export { resolveAutonomousLoopPrompt, AUTONOMOUS_LOOP_PREAMBLE, AUTONOMOUS_LOOP_PREAMBLE_PERSISTENT, } from "./tools/loop-tick.js";
165
165
  export { tightenTaskSpec, TaskSpecTightenError } from "./core/tighten-task-spec.js";
166
- export { createAllowDenyPolicy, createApprovalPolicy, COARSE_SHELL_TOOLS, createCoarseCommandNamePolicy, createTranscriptIntegrityPolicy, createUnverifiableDeletePolicy, combinePolicies, abortedSeatDeny, noApproverSeatDeny, receiveHookResult, isEngineRefusal, wrapToolPolicy, decisionText, resolveAsk, toolPolicyNameSets, toolPolicyPathRules, checkToolPolicyProjection, constraintChainEntryOf, constraintChainDigest, screenApproverAttribution, APPROVER_ATTRIBUTION_MAX_CHARS, BIDI_CONTROL_CHARS, carriesBidiControls, ASK_EVIDENCE_ABSENCE_VALUES, } from "./core/tool-policy.js";
166
+ export { createAllowDenyPolicy, createApprovalPolicy, COARSE_SHELL_TOOLS, createCoarseCommandNamePolicy, createTranscriptIntegrityPolicy, createUnverifiableDeletePolicy, combinePolicies, abortedSeatDeny, noApproverSeatDeny, wrapToolPolicy, decisionText, resolveAsk, toolPolicyNameSets, toolPolicyPathRules, checkToolPolicyProjection, constraintChainEntryOf, constraintChainDigest, screenApproverAttribution, APPROVER_ATTRIBUTION_MAX_CHARS, BIDI_CONTROL_CHARS, carriesBidiControls, ASK_EVIDENCE_ABSENCE_VALUES, } from "./core/tool-policy.js";
167
167
  export {} from "./core/read-root-grant-screen.js";
168
168
  export { ASK_ORIGINS, isAskOrigin, ORIGIN_IMPLIES_REAL_APPROVAL, PERSISTED_RULE_MANDATES, isPersistedRuleMandate, screenAskClassMembers } from "./core/ask-origin.js";
169
169
  export { PERMISSION_MODES, isPermissionMode, PERMISSION_MODE_RANK, clampPermissionMode, ASK_CLASSES, isAskClass, MODE_ARBITRATION, ASK_FACES, askFaceOf, releasableAskClassesFor, MODE_RELEASE_REASONS, isModeReleaseReason, RRA_EXPLAINERS, classifyAsk, foldArbitrationRow, arbitrateByMode, fileCommandOptionsSentence } from "./core/ask-origin.js";
@@ -203,7 +203,8 @@ export { adoptFilePermissionRuleStore } from "./stores/file/permission-rule-adop
203
203
  export { AdoptionError, assertAdoptionBootGate, readRootAdoptionFile, writeRootAdoptionFile, ROOT_ADOPTION_FILE, } from "./stores/file/adoption/marker.js";
204
204
  export { adoptLocalDataRoot, ackAdoptionConfig, witnessAdoptionConfig, listAdoptionQuarantine, readAdoptionStatus, } from "./stores/file/adoption/adopt.js";
205
205
  export { formatHookFeedback, runToolGate, createHookEnvCapabilities, createPreToolUseConstraintPolicy, normalizePersistedRuleHit, } from "./core/hooks.js";
206
- export { HOOK_FAMILIES, HOOKS_INVALID_CODE } from "./core/hook-seats.js";
206
+ export { KERNEL_CONTRACT_VERSION, MOD_TIERS, MOD_SEATS, MOD_EVENT_SIDES, MOD_EVENT_TABLE, MODS_INVALID_CODE, MODS_REGISTRATION_REFUSED_CODE, } from "./core/mods/kernel/index.js";
207
+ export { admitModChain } from "./core/mods/stations.js";
207
208
  export { InMemoryMemoryStore, composeMemoryBlock, composeLayeredMemoryBlock, normalizeMemorySpec, supportsConsolidation, supportsPeriodicConsolidation, firstSentence, expandLexicalTerms, lexicalSearchMatch, classifyPromotable, enforcePromotableWriteGate, guardedMemoryStore, MemoryGateError, MemoryProjectionError, detectSecret, enforceSecretWriteGate, enforceStructuredNoteSecretGate, MEMORY_PROJECT_KEY_ABSENT_REASONS, } from "./core/memory.js";
208
209
  export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, buildMemoryInstruction, writableRootOf, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, consolidationExposedFrontmatter, ambiguousOriginRepresentation, committedDistilledOf, distilledEquals, CONSOLIDATION_DEFAULTS, ConsolidationRefusedError, MEMORY_SEARCH_SUPERSEDED_TAG, consolidationTypeEligible, deriveSupersededSet, memorySupersededNote, readIntentCredentials, supersessionFuseCeiling, deriveShadowedSet, memoryConsolidationRecommendedNotice, memoryConsolidationCommittedNotice, memoryConsolidationConflictNotice, memoryConsolidationIncompleteNotice, memoryConsolidationRefusedNotice, memoryConsolidationWithheldNotice, DISTILLER_DEFAULT_MAX_INPUTS_PER_PRODUCT, LLM_DISTILLER_CONTRACT, LLM_DISTILLER_CONTRACT_DL2, LLM_DISTILLER_CONTRACT_DL3, LLM_DISTILLER_CONTRACTS, MEMORY_DISTILLER_CONTRACT_V1, contractGroupingDiff, driveConsolidationToFixpoint, isAliasModelId, llmPlanDistiller, mintExposurePartitionedPlan, mintLlmConsolidationPlan, MEMORY_DISTILLER_PURITY_CONTRACT_V1, detectCleanArmVerbatimLeak, openAiCompatChatSeat, parseJsonAnswer, planParseRepairs, sanitizeLlmGroups, scheduleUnderFuse, CONSOLIDATION_DRIVER_PLANS_DIR, CONSOLIDATION_DRIVER_RUNS_FILE, CONSOLIDATION_RUN_STOP_REASONS, CONSOLIDATION_WRITE_REFUSED_CODE, archiveDistillerPlan, readConsolidationDriverRun, runMemoryConsolidationDriver, isInstructionEntry, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, MEMORY_CAPTURE_OPTOUT_NOTICE, memoryCaptureOptedOutNotice, memoryCaptureOptOutUnpersistedNotice, SESSION_CAPTURE_OPTOUT_DIR, markSessionCaptureOptOut, readSessionCaptureOptOut, listSessionCaptureOptOut, fileSessionCaptureRecordStore, readV2HeaderHints, LINEAGE_FILE, CHALLENGES_FILE, CHALLENGED_HISTORY_FILE, CHALLENGE_LEDGER_MAX_EVENTS, rebuildStrictControlPlaneLedger, MEMORY_INDEX_FILENAME, MEMORY_INDEX_MAX_LINES, MEMORY_INDEX_MAX_BYTES, MEMORY_SEARCH_TOOL_NAME, MEMORY_GET_TOOL_NAME, MEMORY_INDEX_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, MEMORY_EXPOSURE_BANNER, MEMORY_EXPOSURE_HANDLE_TAG, memoryExposureIndexRow, STUB_ARCHIVED_LINE, DEFAULT_MAX_MEMORY_FILES, DEFAULT_MAX_ENTRY_DEPTH, DEFAULT_HARVEST_DEADLINE_MS, DEFAULT_HARVEST_FILE_BUDGET, MASS_DELETION_FUSE_RATIO, scanMemoryWrite, scanMemoryFileName, scanRemediation, MEMORY_FILENAME_SEGMENT_RE, renderAnnouncements, enqueueMemoryAnnouncement, drainMemoryAnnouncements, peekMemoryAnnouncements, bumpScanFuse, scanFuseCount, clearScanFuse, ANNOUNCEMENTS_FILE, MEMORY_ANNOUNCEMENTS_MAX, SCAN_FUSE_FILE, SCAN_FUSE_THRESHOLD, erasureSelectHash, computeMemoryBundleHash, SCOPE_SEGMENT_MAX_ENCODED, PROJECT_MARKER_PATH, encodeScopeSegment, decodeScopeSegment, parseScopeKey, formatUserScope, formatOrgScope, formatProjScope, formatUserProjScope, isPersonalScope, isOrgScopeKey, assertScopeContractPlacement, formatProjectMarker, parseProjectMarker, resolveProjectId, PROJECT_ID_REGEX, migrateScope, materializeEntriesToFiles, harvestFilesToPatches, projectionsToWriteBack, screenInboundEntries, REMOTE_HARVEST_PER_FILE_BYTES, REMOTE_MASS_DELETION_FUSE_RATIO, deriveProjectMemoryDir, deriveProjectControlDir, recordProjectIdHint, lookupProjectIdHint, PROJECT_ID_HINTS_FILE, reconcileMemoryEntries, nextSyncBaseline, mergeRecallHits, syncMemoryScope, } from "./core/memory-engine/index.js";
209
210
  export { createConsolidationWriteJudge, deliverWriteRefusal } from "./core/runner/memory-consolidation-write-judge.js";
@@ -218,14 +219,15 @@ export { runMemoryConsolidation, CONSOLIDATION_SYSTEM_PROMPT, DEFAULT_CONSOLIDAT
218
219
  export { consolidateScope, advanceCursorAfterInline, } from "./core/consolidate-scope.js";
219
220
  export { resolveMemoryConsolidationDriver, autoRunOnRecommendationEffective, } from "./core/runner/memory-consolidation-driver.js";
220
221
  export { DEFAULT_COMPACTION_INSTRUCTIONS } from "./core/auto-compaction.js";
221
- export { DEFAULT_SYSTEM_PROMPT, CODE_AGENT_PROMPT, SUBAGENT_PROMPT, CODE_SYSTEM_PROMPT, MEMORY_GUIDANCE, MEMORY_SAFETY, MEMORY_HYGIENE, NO_PERSISTENT_MEMORY_NOTICE, OUTPUT_EFFICIENCY, CYBER_RISK, HARNESS_SECTION_ANCHOR, URL_SAFETY, SUMMARIZE_TOOL_RESULTS, EXECUTION_ENVIRONMENT, EXECUTION_ENVIRONMENT_OPEN_READS, executionEnvironmentBlockFor, harnessContext, buildEnvironmentContext, buildGitSnapshot, buildScratchpadSection, GIT_STATUS_MAX_CHARS, formatLocalDate, defaultPromptProvider, composeSystemPrompt, composeConstitution, constitutionBlocks, analyzePromptCacheFriendliness, assertPromptCacheFriendly, } from "./prompts/default.js";
222
+ export { DEFAULT_SYSTEM_PROMPT, CODE_AGENT_PROMPT, SUBAGENT_PROMPT, CODE_SYSTEM_PROMPT, MEMORY_GUIDANCE, MEMORY_SAFETY, MEMORY_HYGIENE, NO_PERSISTENT_MEMORY_NOTICE, OUTPUT_EFFICIENCY, CYBER_RISK, HARNESS_SECTION_ANCHOR, URL_SAFETY, SUMMARIZE_TOOL_RESULTS, EXECUTION_ENVIRONMENT, EXECUTION_ENVIRONMENT_OPEN_READS, executionEnvironmentBlockFor, buildEnvironmentContext, buildGitSnapshot, buildScratchpadSection, GIT_STATUS_MAX_CHARS, formatLocalDate, } from "./prompts/default.js";
222
223
  export { SUPERVISOR_PROMPT, ORCHESTRATION_GUIDANCE, ORCHESTRATION_AWARENESS, GOAL_COMPLETION_GUIDANCE } from "./prompts/supervisor.js";
223
- export { coworkPromptProvider, COWORK_PROMPT_SECTIONS } from "./prompts/cowork.js";
224
- export { compose, validatePack } from "./prompt-assembly/composer.js";
225
- export { SEMA_DEFAULT_PACK } from "./prompt-assembly/packs/sema-default.js";
224
+ export { OVERLAY_SOURCE_ORDER } from "./prompt-assembly/overlay.js";
225
+ export { BANDS as PROMPT_BANDS } from "./prompt-assembly/bands.js";
226
+ export { OVERLAY_OPS, HOST_ROLES, HOST_FORMS } from "./prompt-assembly/catalog/schema.js";
227
+ export { SEMA_DEFAULT_CATALOG, catalogText } from "./prompt-assembly/catalog/index.js";
226
228
  export { attachToolContract, getToolContract, hasToolContract, computeShapeDigest, projectToolManifest } from "./prompt-assembly/tool-catalog.js";
227
- export { computeBundledArtifactDigest, normalizePromptEpoch } from "./prompt-assembly/epoch.js";
228
- export { ARTIFACT_LIMITS, artifactDeclarations, buildPromptArtifactEnvelope, computeArtifactDigest, computeCatalogDigest, verifyPromptArtifact, } from "./prompt-assembly/artifact.js";
229
+ export { normalizePromptEpoch, promptIdentityOf, PROMPT_EPOCH_ACTIVATIONS, PROMPT_EPOCH_CHANGES, } from "./prompt-assembly/epoch.js";
230
+ export { ARTIFACT_LIMITS, buildPromptArtifact, computeArtifactDigest, requiresOf, unmetRequirements, verifyPromptArtifact, } from "./prompt-assembly/artifact.js";
229
231
  export { buildTurnPromptSnapshot, loweringRecordFor, LOWERING_VERSION, PREFIX_INPUT_CLASSIFICATION, } from "./prompt-assembly/turn-snapshot.js";
230
232
  export { CenterPromptSource, FilePromptArtifactStore, FilePromptSourceStateStore, MemoryPromptArtifactStore, MemoryPromptSourceStateStore, } from "./prompt-assembly/artifact-store.js";
231
233
  export { stripEngineMetadata } from "./internal/llm.js";
@@ -285,7 +287,7 @@ export { CONFIG_CATALOG_VERSION, describeConfigCatalog, resolveEffectiveConfig,
285
287
  export { normalizeAgentName } from "./core/task-registry.js";
286
288
  export { DELEGATION_MAX_CONCURRENT_DEFAULT, DELEGATION_MAX_PER_SESSION_DEFAULT, SUBAGENT_TRANSCRIPT_RETENTION_DAYS_DEFAULT, } from "./config/defaults.js";
287
289
  export { COORDINATOR_ROLE_PROMPT, TEAMMATE_COMMUNICATION_ADDENDUM } from "./prompts/coordinator.js";
288
- export { createSubagentTool, FORK_SUBAGENT_TYPE, GENERAL_PURPOSE_SUBAGENT_TYPE, agentWhenToUseText, FORK_DIRECTIVE_FRAME, SUBAGENT_SYSTEM_NOTE, resolveDelegationEntryCaps, } from "./agents/subagent.js";
290
+ export { createSubagentTool, FORK_SUBAGENT_TYPE, BUILTIN_SUBAGENT_TYPES, GENERAL_PURPOSE_SUBAGENT_TYPE, agentWhenToUseText, FORK_DIRECTIVE_FRAME, SUBAGENT_SYSTEM_NOTE, resolveDelegationEntryCaps, } from "./agents/subagent.js";
289
291
  export { getSessionRetainLedger, releaseSessionRetainLedger, } from "./agents/retain-ledger.js";
290
292
  export { createSendMessageTool, createAgentContinuationVerb, SEND_MESSAGE_TOOL_NAME } from "./agents/send-message-tool.js";
291
293
  export { createPeerAdmission, peerAdmissionFor, judgePeerAdmission, resolvePeerLaneConfig, PEER_LANE_DEFAULTS, PEER_HOP_CHAIN_WINDOW, PEER_MESSAGE_NOTICE, createPeerSelfRef, createPeerInboundChainRef, peerAxisToken, appendHopToken, } from "./agents/peer-admission.js";
@@ -320,15 +322,16 @@ export { createCircuitBreakerBrain, CIRCUIT_OPEN_MARKER, } from "./brain/circuit
320
322
  export { createDegradingBrain, readDegradation, DEGRADED_DIAGNOSTIC_TYPE, } from "./brain/degrading.js";
321
323
  export { retryBackoffMs, parseRetryAfter } from "./brain/retry.js";
322
324
  export { WAITING_FIRST_TOKEN_AFTER_MS, WAITING_FIRST_TOKEN_EVERY_MS } from "./brain/stream-engine.js";
323
- export { adjudicateModelRoute, resolveRouteCredential, routeRefusalText, routePairingStatus, routeKeyOf, displayUrlOf, resolveRequestRoot, resolveRequestRootOf, joinRequestUrl, hasAuthCarrier, } from "./brain/route-adjudicator.js";
325
+ export { adjudicateModelRoute, resolveRouteCredential, routeRefusalText, routePairingStatus, routeKeyOf, displayUrlOf, resolveRequestRoot, resolveRequestRootOf, joinRequestUrl, hasAuthCarrier, __resetCredentialOriginBindings, } from "./brain/route-adjudicator.js";
324
326
  export { ROUTE_CREDENTIAL_SOURCES, ROUTE_CARRIERS, ROUTE_CARRIER_BAGS, REQUEST_ROOT_ORIGINS, ROUTE_CREDENTIAL_PAIRING, requestRouteOf, routePairingRowOf, } from "./brain/request-route.js";
325
327
  export { ROUTE_ADJUDICATION_CONFORMANCE_CORPUS } from "./brain/route-conformance.js";
326
328
  export {} from "./brain/timeout.js";
327
329
  export { createAssistantMessageEventStream } from "./internal/llm.js";
328
330
  export { Type } from "typebox";
329
- export { explainPromptAssembly, describeDefaultPack } from "./prompt-assembly/explain.js";
331
+ export { explainPromptAssembly, describeCatalog } from "./prompt-assembly/explain.js";
330
332
  export { APPROVAL_ROUTES, approvalRouteOf } from "./core/wiring-manifest.js";
331
333
  export { SHADOW_REASON, allowRuleShadowSentence, cardDisclosureOf } from "./core/allow-entry.js";
332
334
  export { RULE_OFFERS_ABSENCES } from "./core/ask-origin.js";
333
335
  export { BOUND_GRANT_ABSENCES } from "./core/skill-grant-binding.js";
334
336
  export { DISPOSABLE_PROMPT_SECTIONS } from "./core/prompt-section-seat.js";
337
+ export { readMcpToolAxes } from "./core/mcp-server-spec.js";
@@ -12,7 +12,7 @@
12
12
  export * from "./harness-types.js";
13
13
  export { AgentHarness } from "../engine/harness/agent-harness.js";
14
14
  export type { HaltConsumption, PromptDeliveredCallback, SeatCutSource, StopRequestSource, TrailingToolBatchOptions } from "../engine/harness/agent-harness.js";
15
- export { CompactionError, ExecutionError, FileError, ok, err } from "../engine/harness/types.js";
15
+ export { CompactionError, ExecutionError, FileError, isTimeCutCode, ok, err } from "../engine/harness/types.js";
16
16
  export { DEFAULT_CHARS_PER_TOKEN, DEFAULT_CLAMP_TOLERANCE, DEFAULT_COMPACTION_SETTINGS, compact, computeFileLists, dryRunSummarizationClamp, estimateContextTokens, estimateTokens, prepareCompaction, shouldCompact, summaryOutputBudgetTokens, } from "../engine/compaction/compaction.js";
17
17
  export { SKILL_RETENTION_PER_SKILL_MAX_CHARS, SKILL_RETENTION_TOTAL_MAX_CHARS, SKILL_RETENTION_TRUNCATION_MARKER, formatFileOperations, formatPersistedOutputRefs, readCompactionActiveTools, readRetainedInvokedSkills, renderInvokedSkillsRetention, } from "../engine/compaction/utils.js";
18
18
  export { NodeExecutionEnv } from "../engine/execution-env/node-execution-env.js";
@@ -1,6 +1,6 @@
1
1
  export * from "./harness-types.js";
2
2
  export { AgentHarness } from "../engine/harness/agent-harness.js";
3
- export { CompactionError, ExecutionError, FileError, ok, err } from "../engine/harness/types.js";
3
+ export { CompactionError, ExecutionError, FileError, isTimeCutCode, ok, err } from "../engine/harness/types.js";
4
4
  export { DEFAULT_CHARS_PER_TOKEN, DEFAULT_CLAMP_TOLERANCE, DEFAULT_COMPACTION_SETTINGS, compact, computeFileLists, dryRunSummarizationClamp, estimateContextTokens, estimateTokens, prepareCompaction, shouldCompact, summaryOutputBudgetTokens, } from "../engine/compaction/compaction.js";
5
5
  export { SKILL_RETENTION_PER_SKILL_MAX_CHARS, SKILL_RETENTION_TOTAL_MAX_CHARS, SKILL_RETENTION_TRUNCATION_MARKER, formatFileOperations, formatPersistedOutputRefs, readCompactionActiveTools, readRetainedInvokedSkills, renderInvokedSkillsRetention, } from "../engine/compaction/utils.js";
6
6
  export { NodeExecutionEnv } from "../engine/execution-env/node-execution-env.js";
@@ -8,10 +8,8 @@
8
8
  * (green→`spec.not_red`、error→`spec.oracle_error`,均 fail-loud);捕获 baseline 计数。
9
9
  * 2. frozen deny policy 经 {@link combinePolicies} 合入部署基线(deny 短路不可被顶);绝不裸赋顶掉
10
10
  * `taskSpec.toolPolicy`(TRAP #1)。
11
- * 3. Hooks 多路复用:runSpec 的 stop gate 先跑(guard-restore → oracle 判)——red ⇒ block 短路(失败
12
- * 尾部经 `delimitUntrusted` 围栏后置入:oracle 输出是模型可影响面);green ⇒ **链式调用**用户 stop
13
- * (不吞其否决权);error ⇒ block 一次并注明 oracle 基础设施故障,**连续 2 次 error 放弃把关**走终态
14
- * 判定(防 oracle 自坏死循环)。其它 hook 槽原样透传。
11
+ * 3. stop gate = 任务座位上的一条注册(在调用方注册之前):red ⇒ block(失败尾部经 `delimitUntrusted` 围栏);green ⇒
12
+ * `next(e)` 交下游;error ⇒ block 一次,**连续 2 次 error 放弃把关**走终态判定。
15
13
  * 4. 收口:终态亲跑 oracle = 最终判定;`emitTaskOutcome`(mechanical):`oracleHadRedRun` = 任一
16
14
  * 「真跑过且判 red」的观察(preflight ∨ stop-gate ∨ 终态;error 永不置位)。durable pause
17
15
  * (suspended/needs_review)非终态,不发射(同 goal.ts 先例:无半事实、resume 不重复计数)。
@@ -34,8 +32,8 @@ import { type OracleBaseline, type OracleGateResult, type OracleVerdict, type Sp
34
32
  export interface RunSpecOptions {
35
33
  /** Workcopy root — the containment root for frozenPaths, oracle cwd, and `spec.path` resolution. */
36
34
  rootDir: string;
37
- /** Per-run base spec (model/tools/toolPolicy/hooks/limits/…). `objective` is owned by runSpec (the
38
- * spec framing); `toolPolicy` and `hooks` are COMPOSED with runSpec's, never replaced. */
35
+ /** Per-run base spec (model/tools/toolPolicy/mods/limits/…). `objective` is owned by runSpec (the
36
+ * spec framing); `toolPolicy` and `mods` are COMPOSED with runSpec's, never replaced. */
39
37
  taskSpec: Omit<TaskSpec, "objective">;
40
38
  /** Receives the oracle gates' once-per-process `config.secret_env_scrubbed` notice (`runOracle`'s `onNotice`);
41
39
  * absent ⇒ the console line. */
@@ -9,6 +9,8 @@ import { writeTargetPath } from "../tools/fs/safety.js";
9
9
  import { callTargetViewsOf } from "../core/effective-path-target.js";
10
10
  import { captureBaseline, resolveFrozenPaths, restoreFrozenPaths, runOracle, snapshotFrozenPaths, specError, } from "../core/spec-contract.js";
11
11
  import { isProtectedWrite } from "../core/tool-registry.js";
12
+ const RUN_SPEC_ORACLE_GATE = "run-spec-oracle-gate";
13
+ const RUN_SPEC_ORACLE_GATE_BUDGET_MS = 600_000;
12
14
  const CASE_INSENSITIVE_FS = process.platform === "darwin" || process.platform === "win32";
13
15
  const pathKey = (p) => {
14
16
  let n = p.replace(/\\/g, "/");
@@ -100,81 +102,55 @@ export async function runSpec(runner, contract, opts) {
100
102
  const frozenPolicy = frozenDenyPolicy(rootDir, frozenResolved);
101
103
  const policies = [deployBaseline?.toolPolicy, opts.taskSpec.toolPolicy, frozenPolicy].filter((p) => p !== undefined);
102
104
  const toolPolicy = policies.length === 1 ? policies[0] : combinePolicies(...policies);
103
- const userHooks = opts.taskSpec.hooks && deployBaseline?.hooks
104
- ? {
105
- preToolUse: (opts.taskSpec.hooks.preToolUse ?? deployBaseline.hooks.preToolUse)?.bind(opts.taskSpec.hooks.preToolUse ? opts.taskSpec.hooks : deployBaseline.hooks),
106
- ...((opts.taskSpec.hooks.preToolUse ? opts.taskSpec.hooks : deployBaseline.hooks).preToolUseObservational === true
107
- ? { preToolUseObservational: true }
108
- : {}),
109
- postToolUse: (opts.taskSpec.hooks.postToolUse ?? deployBaseline.hooks.postToolUse)?.bind(opts.taskSpec.hooks.postToolUse ? opts.taskSpec.hooks : deployBaseline.hooks),
110
- userPromptSubmit: (opts.taskSpec.hooks.userPromptSubmit ?? deployBaseline.hooks.userPromptSubmit)?.bind(opts.taskSpec.hooks.userPromptSubmit ? opts.taskSpec.hooks : deployBaseline.hooks),
111
- stop: (opts.taskSpec.hooks.stop ?? deployBaseline.hooks.stop)?.bind(opts.taskSpec.hooks.stop ? opts.taskSpec.hooks : deployBaseline.hooks),
112
- postToolUseFailure: (opts.taskSpec.hooks.postToolUseFailure ?? deployBaseline.hooks.postToolUseFailure)?.bind(opts.taskSpec.hooks.postToolUseFailure ? opts.taskSpec.hooks : deployBaseline.hooks),
113
- postToolBatch: (opts.taskSpec.hooks.postToolBatch ?? deployBaseline.hooks.postToolBatch)?.bind(opts.taskSpec.hooks.postToolBatch ? opts.taskSpec.hooks : deployBaseline.hooks),
114
- preCompact: (opts.taskSpec.hooks.preCompact ?? deployBaseline.hooks.preCompact)?.bind(opts.taskSpec.hooks.preCompact ? opts.taskSpec.hooks : deployBaseline.hooks),
115
- postCompact: (opts.taskSpec.hooks.postCompact ?? deployBaseline.hooks.postCompact)?.bind(opts.taskSpec.hooks.postCompact ? opts.taskSpec.hooks : deployBaseline.hooks),
116
- stopFailure: (opts.taskSpec.hooks.stopFailure ?? deployBaseline.hooks.stopFailure)?.bind(opts.taskSpec.hooks.stopFailure ? opts.taskSpec.hooks : deployBaseline.hooks),
117
- permissionDenied: (opts.taskSpec.hooks.permissionDenied ?? deployBaseline.hooks.permissionDenied)?.bind(opts.taskSpec.hooks.permissionDenied ? opts.taskSpec.hooks : deployBaseline.hooks),
118
- ...((opts.taskSpec.hooks.timeoutMs ?? deployBaseline.hooks.timeoutMs) !== undefined
119
- ? { timeoutMs: opts.taskSpec.hooks.timeoutMs ?? deployBaseline.hooks.timeoutMs }
120
- : {}),
121
- }
122
- : (opts.taskSpec.hooks ?? deployBaseline?.hooks);
123
105
  let guardRestores = 0;
124
106
  let consecutiveOracleErrors = 0;
125
107
  let gateAbandoned = false;
126
- const hooks = {
127
- ...(userHooks?.preToolUse && { preToolUse: userHooks.preToolUse.bind(userHooks) }),
128
- ...(userHooks?.preToolUse && userHooks.preToolUseObservational === true ? { preToolUseObservational: true } : {}),
129
- ...(userHooks?.postToolUse && { postToolUse: userHooks.postToolUse.bind(userHooks) }),
130
- ...(userHooks?.userPromptSubmit && { userPromptSubmit: userHooks.userPromptSubmit.bind(userHooks) }),
131
- ...(userHooks?.postToolUseFailure && { postToolUseFailure: userHooks.postToolUseFailure.bind(userHooks) }),
132
- ...(userHooks?.postToolBatch && { postToolBatch: userHooks.postToolBatch.bind(userHooks) }),
133
- ...(userHooks?.preCompact && { preCompact: userHooks.preCompact.bind(userHooks) }),
134
- ...(userHooks?.postCompact && { postCompact: userHooks.postCompact.bind(userHooks) }),
135
- ...(userHooks?.stopFailure && { stopFailure: userHooks.stopFailure.bind(userHooks) }),
136
- ...(userHooks?.permissionDenied && { permissionDenied: userHooks.permissionDenied.bind(userHooks) }),
137
- ...(userHooks?.timeoutMs !== undefined ? { timeoutMs: userHooks.timeoutMs } : {}),
138
- async stop(ctx) {
139
- guardRestores += restoreFrozenPaths(snapshot, rootDir);
140
- if (!gateAbandoned) {
141
- const gateSignal = ctx.signal !== undefined && opts.taskSpec.signal !== undefined ? AbortSignal.any([ctx.signal, opts.taskSpec.signal]) : (ctx.signal ?? opts.taskSpec.signal);
142
- const report = await runOracle(contract.oracle, rootDir, { baseline, ...(gateSignal !== undefined ? { signal: gateSignal } : {}), ...noticeSeat });
143
- if (ctx.signal?.aborted === true)
144
- return undefined;
145
- oracleRuns++;
146
- if (report.verdict === "red") {
147
- oracleHadRedRun = true;
148
- oracleRedRuns++;
149
- stopGateBlocks++;
150
- consecutiveOracleErrors = 0;
151
- return { block: redFeedback(report.gates) };
152
- }
153
- if (report.verdict === "error") {
154
- consecutiveOracleErrors++;
155
- if (consecutiveOracleErrors < 2) {
156
- const broken = report.gates.filter((g) => g.verdict === "error");
108
+ const oracleGate = {
109
+ name: RUN_SPEC_ORACLE_GATE,
110
+ uses: { events: ["classic.Stop"], calls: [] },
111
+ budgetMs: RUN_SPEC_ORACLE_GATE_BUDGET_MS,
112
+ register(on) {
113
+ on("classic.Stop", async (_$, e, next) => {
114
+ guardRestores += restoreFrozenPaths(snapshot, rootDir);
115
+ if (!gateAbandoned) {
116
+ const gateSignal = opts.taskSpec.signal !== undefined ? AbortSignal.any([next.signal, opts.taskSpec.signal]) : next.signal;
117
+ const report = await runOracle(contract.oracle, rootDir, { baseline, signal: gateSignal, ...noticeSeat });
118
+ if (next.signal.aborted)
119
+ return {};
120
+ oracleRuns++;
121
+ if (report.verdict === "red") {
122
+ oracleHadRedRun = true;
123
+ oracleRedRuns++;
157
124
  stopGateBlocks++;
158
- return {
159
- block: `The verification oracle itself FAILED TO RUN (${broken.map((g) => `gate "${g.name}": ${g.reason}`).join("; ")}). ` +
160
- `This is an infrastructure error, not a test failure — you may have broken the build/test environment. ` +
161
- `Restore it so the oracle can run.`,
162
- };
125
+ consecutiveOracleErrors = 0;
126
+ return { block: redFeedback(report.gates) };
127
+ }
128
+ if (report.verdict === "error") {
129
+ consecutiveOracleErrors++;
130
+ if (consecutiveOracleErrors < 2) {
131
+ const broken = report.gates.filter((g) => g.verdict === "error");
132
+ stopGateBlocks++;
133
+ return {
134
+ block: `The verification oracle itself FAILED TO RUN (${broken.map((g) => `gate "${g.name}": ${g.reason}`).join("; ")}). ` +
135
+ `This is an infrastructure error, not a test failure — you may have broken the build/test environment. ` +
136
+ `Restore it so the oracle can run.`,
137
+ };
138
+ }
139
+ gateAbandoned = true;
140
+ }
141
+ else {
142
+ consecutiveOracleErrors = 0;
163
143
  }
164
- gateAbandoned = true;
165
- }
166
- else {
167
- consecutiveOracleErrors = 0;
168
144
  }
169
- }
170
- return userHooks?.stop ? userHooks.stop(ctx) : undefined;
145
+ return next(e);
146
+ });
171
147
  },
172
148
  };
173
149
  const result = await runner.runTask({
174
150
  ...opts.taskSpec,
175
151
  objective: buildObjective(specText, contract),
176
152
  toolPolicy,
177
- hooks,
153
+ mods: [oracleGate, ...(opts.taskSpec.mods ?? [])],
178
154
  });
179
155
  guardRestores += restoreFrozenPaths(snapshot, rootDir);
180
156
  const final = await runOracle(contract.oracle, rootDir, { baseline, ...noticeSeat });
@@ -539,9 +539,8 @@ async function mountRunWorkflowTool(d) {
539
539
  ...((ctx.inheritedGateForChildren ?? d.inheritedGateForChildren) !== undefined
540
540
  ? { inheritedGate: (ctx.inheritedGateForChildren ?? d.inheritedGateForChildren)() }
541
541
  : {}),
542
- ...((ctx.toolSelector?.layers ?? d.parentToolCeiling) !== undefined ? { toolCeiling: (ctx.toolSelector?.layers ?? d.parentToolCeiling) } : {}),
543
542
  ...(autoModeReview !== undefined ? { autoModeReview } : {}),
544
- }, { workflowDepth: d.workflowDepth });
543
+ }, { workflowDepth: d.workflowDepth, ...((ctx.toolSelector?.layers ?? d.parentToolCeiling) !== undefined ? { toolCeiling: (ctx.toolSelector?.layers ?? d.parentToolCeiling) } : {}) });
545
544
  }
546
545
  catch (err) {
547
546
  return structuredError(thrownText(err));
@@ -153,6 +153,11 @@ export declare class WorkflowJournalAppendTimeoutError extends Error {
153
153
  */
154
154
  export interface WorkflowInternals {
155
155
  workflowDepth?: number;
156
+ /** The tool selector layers of the prepared run that launched this workflow (`ToolExecuteContext.toolSelector.layers`), threaded into
157
+ * EVERY spawned agent as its ceiling (`RunInternals.toolCeiling`) on both spawn legs. The run that holds them judged them where it
158
+ * wrote them, so they are not asked again here; a ceiling a host writes itself is {@link RunWorkflowOptions.toolCeiling}, which is.
159
+ * Given both, both bound every agent (these layers first) and only the host-written one is judged. */
160
+ toolCeiling?: readonly import("../core/tool-face.js").ToolSelectorLayer[];
156
161
  }
157
162
  export interface WorkflowBudget {
158
163
  /** The token ceiling, or null when none was set (then `remaining()` is Infinity). */
@@ -565,9 +570,12 @@ export interface RunWorkflowOptions {
565
570
  * `run_workflow` tool wiring; a directly-started workflow may pass its own. Absent ⇒ children run
566
571
  * under only their own gates (pre-seam behavior). TRUSTED: never a script/model argument. */
567
572
  inheritedGate?: import("../core/runner/contracts.js").InheritedGate;
568
- /** The HOST task's tool selector layers (`ToolExecuteContext.toolSelector.layers`), threaded into EVERY spawned agent's trusted
569
- * internals as its ceiling (`RunInternals.toolCeiling`) on both spawn legs: nothing a workflow agent's spec names can widen what
570
- * the host may use. Set by the `run_workflow` tool wiring; absent ⇒ the agents are bounded only by their own lists. TRUSTED. */
573
+ /** A tool selector ceiling the HOST writes, threaded into EVERY spawned agent's trusted internals as its ceiling
574
+ * (`RunInternals.toolCeiling`) on both spawn legs: nothing a workflow agent's spec names can widen it. Nobody judged what the host
575
+ * wrote, so each agent's spec is asked of it before it launches: another spelling of a tool the agent carries (a caller tool, the
576
+ * catalog, a listable delegation pool) refuses that agent — `config.tool_face_control`, `detail.reason: "near_miss"`. The ceiling of the
577
+ * prepared run that launched the workflow rides {@link WorkflowInternals.toolCeiling} instead; given both, both bound every agent and only
578
+ * this one is judged. Absent ⇒ the agents are bounded only by their own lists. */
571
579
  toolCeiling?: readonly import("../core/tool-face.js").ToolSelectorLayer[];
572
580
  /** RB-201 FO-3 (workflow lane) — the session's auto-mode classifier, consulted BEFORE each script-spawned
573
581
  * child starts (objective + toolset + output schema, finalized). The delegation-tool lane reviews its
@@ -20,7 +20,7 @@ import { boundInputHashOf } from "../core/canonical-json.js";
20
20
  import { boundedRedactedSummary, egressThrownText } from "../core/untrusted-egress.js";
21
21
  import { delimitUntrusted } from "../core/untrusted-text.js";
22
22
  import { OUTPUT_TOOL_NAME } from "../core/runner/synthetic-tools.js";
23
- import { deniedToolNamesOf } from "../core/runner/sub-agent-deny-lists.js";
23
+ import { deniedToolNamesOf, judgeHostToolCeiling } from "../core/runner/sub-agent-deny-lists.js";
24
24
  import { compileOutputSchema } from "../core/runner/strict-output-schema.js";
25
25
  import { WorkflowBudgetExceededError, WorkflowNestingError, WorkflowAgentBlockedError, WorkflowAgentParkedError, WorkflowAgentSchemaError, WorkflowAgentStalledError, WorkflowMaxAgentsError, WORKFLOW_SPAWN_BLOCKED_ERROR_CODE } from "./workflow-types.js";
26
26
  import { WorkflowScriptError } from "./workflow-meta.js";
@@ -705,6 +705,13 @@ export function startWorkflow(runner, fn, opts = {}, internals) {
705
705
  o.close();
706
706
  };
707
707
  const sem = createSemaphore(concurrency);
708
+ const launchingCeiling = internals?.toolCeiling ?? undefined;
709
+ const hostCeiling = opts.toolCeiling ?? undefined;
710
+ const agentCeiling = launchingCeiling === undefined ? hostCeiling : hostCeiling === undefined ? launchingCeiling : [...launchingCeiling, ...hostCeiling];
711
+ const judgeHostCeiling = (spec) => {
712
+ if (hostCeiling !== undefined)
713
+ judgeHostToolCeiling(hostCeiling, spec, launchingCeiling);
714
+ };
708
715
  const spawnAttribution = {
709
716
  isDelegatedChild: true,
710
717
  ...(opts.questionFaceStripped === true ? { questionFaceStripped: true } : {}),
@@ -715,7 +722,7 @@ export function startWorkflow(runner, fn, opts = {}, internals) {
715
722
  ...(opts.parentCenterSourceRevision !== undefined ? { parentCenterSourceRevision: opts.parentCenterSourceRevision } : {}),
716
723
  ...(opts.onForwardEvent ? { onForwardEvent: opts.onForwardEvent } : {}),
717
724
  ...(opts.inheritedGate !== undefined ? { inheritedGate: opts.inheritedGate } : {}),
718
- ...(opts.toolCeiling !== undefined ? { toolCeiling: opts.toolCeiling } : {}),
725
+ ...(agentCeiling !== undefined ? { toolCeiling: agentCeiling } : {}),
719
726
  ...((opts.rootSessionId ?? opts.originatingSessionId) !== undefined ? { rootSessionId: opts.rootSessionId ?? opts.originatingSessionId } : {}),
720
727
  ...(opts.placementRoot !== undefined ? { placementRoot: opts.placementRoot } : {}),
721
728
  ...(opts.originatingSessionId !== undefined ? { parentSessionId: opts.originatingSessionId } : {}),
@@ -1645,6 +1652,7 @@ export function startWorkflow(runner, fn, opts = {}, internals) {
1645
1652
  const preReviewSpec = agentOpts.schema
1646
1653
  ? { ...seatedSpec, ...authInherit, ...parkInherit, signal: effectiveSignal, outputSchema: agentOpts.schema }
1647
1654
  : { ...seatedSpec, ...authInherit, ...parkInherit, signal: effectiveSignal };
1655
+ judgeHostCeiling(preReviewSpec);
1648
1656
  const runSpec = await reviewSpawnBeforeLaunch("ctx.agent", label, callKey, preReviewSpec, effectiveSignal);
1649
1657
  const enrichedForward = opts.onForwardEvent !== undefined
1650
1658
  ? (e) => {
@@ -2010,6 +2018,7 @@ export function startWorkflow(runner, fn, opts = {}, internals) {
2010
2018
  ? { ...seatedSpec, ...authInherit, ...parkInherit, signal: effectiveSignal, outputSchema: agentOpts.schema }
2011
2019
  : { ...seatedSpec, ...authInherit, ...parkInherit, signal: effectiveSignal };
2012
2020
  const preReviewSpec = childSessionId !== undefined ? { ...baseRunSpec, sessionId: childSessionId } : baseRunSpec;
2021
+ judgeHostCeiling(preReviewSpec);
2013
2022
  const runSpec = await reviewSpawnBeforeLaunch("ctx.agentStream", label, callKey, preReviewSpec, effectiveSignal);
2014
2023
  const enrichedForwardS = opts.onForwardEvent !== undefined
2015
2024
  ? (e) => {
@@ -1,28 +1,22 @@
1
- import { type PromptEpochArtifact, type PublishedPromptArtifactEnvelope } from "./artifact.js";
1
+ import { type ArtifactVerifyCode, type PromptArtifact, type PublishedPromptArtifact } from "./artifact.js";
2
2
  export interface PromptArtifactStore {
3
- /** Verified read by digest — undefined on miss OR on any verification failure of stored bytes. */
4
- get(artifactDigest: string, opts: {
5
- engineVersion: string;
6
- }): Promise<PublishedPromptArtifactEnvelope | undefined>;
7
- /** Idempotent immutable write (same digest ⇒ same bytes; the caller verified before putting). */
8
- put(envelope: PublishedPromptArtifactEnvelope): Promise<void>;
3
+ /** Verified read by digest — undefined on a miss OR on any verification failure of the stored bytes. */
4
+ get(artifactDigest: string): Promise<PublishedPromptArtifact | undefined>;
5
+ /** Write by digest (the caller verified before putting). */
6
+ put(artifact: PublishedPromptArtifact): Promise<void>;
9
7
  }
10
8
  export declare class MemoryPromptArtifactStore implements PromptArtifactStore {
11
9
  private readonly byDigest;
12
- get(artifactDigest: string, opts: {
13
- engineVersion: string;
14
- }): Promise<PublishedPromptArtifactEnvelope | undefined>;
15
- put(envelope: PublishedPromptArtifactEnvelope): Promise<void>;
10
+ get(artifactDigest: string): Promise<PublishedPromptArtifact | undefined>;
11
+ put(artifact: PublishedPromptArtifact): Promise<void>;
16
12
  }
17
- /** `artifacts/<hex>.json` under a caller-owned directory; atomic tmp+rename writes (§9.2). */
13
+ /** `artifacts/<hex>.json` under a caller-owned directory; atomic tmp+rename writes. */
18
14
  export declare class FilePromptArtifactStore implements PromptArtifactStore {
19
15
  private readonly dir;
20
16
  constructor(dir: string);
21
17
  private fileFor;
22
- get(artifactDigest: string, opts: {
23
- engineVersion: string;
24
- }): Promise<PublishedPromptArtifactEnvelope | undefined>;
25
- put(envelope: PublishedPromptArtifactEnvelope): Promise<void>;
18
+ get(artifactDigest: string): Promise<PublishedPromptArtifact | undefined>;
19
+ put(artifact: PublishedPromptArtifact): Promise<void>;
26
20
  }
27
21
  export type PromptSourceState = {
28
22
  state: "active";
@@ -49,60 +43,47 @@ export declare class FilePromptSourceStateStore implements PromptSourceStateStor
49
43
  load(): Promise<PromptSourceState | undefined>;
50
44
  save(state: PromptSourceState): Promise<void>;
51
45
  }
52
- /** The narrow face the Runner consumes (RunnerDeps.promptSource) — resolution only, no publish. */
46
+ /** The narrow face the Runner consumes (`RunnerDeps.promptSource`) — resolution only, no publish. */
53
47
  export interface PromptArtifactSource {
54
- /** The current validated candidate for NEW sessions, with its publish provenance
55
- * (undefined = bundled-only, today's shape). */
56
- current(): {
57
- artifact: PromptEpochArtifact;
58
- sourceRevision: string;
59
- } | undefined;
60
- /** Resolve a PINNED digest (resume path). Undefined = unavailable — the caller fails loud. */
61
- get(artifactDigest: string): Promise<PromptEpochArtifact | undefined>;
62
- /** RB-31 — the tri-state the adoption boundary keys on: `"disabled"` = an EXPLICIT
63
- * validated revocation (applyDisabled) ⇒ pinned sessions roll back to bundled at the next
64
- * compaction; `"active"` = a validated candidate is live; `"unavailable"` = no verified state
65
- * (never-configured face, store-miss boot) ⇒ conservative restate — an outage must never strip
66
- * policy, only an explicit revocation does. Optional (older sources read as "unavailable"). */
67
- sourceState?(): "active" | "disabled" | "unavailable";
48
+ /** The current verified candidate new sessions (and every top-level session at a compaction) adopt; undefined = none. */
49
+ current(): PublishedPromptArtifact | undefined;
50
+ /** Resolve a PINNED digest (the resume path). Undefined = unavailable — the caller fails loud. */
51
+ get(artifactDigest: string): Promise<PromptArtifact | undefined>;
52
+ /** The tri-state every adoption decision keys on: `"active"` = a verified candidate is live; `"disabled"` = an
53
+ * EXPLICIT verified revocation (`applyDisabled`) — the one state that empties a pinned center layer;
54
+ * `"unavailable"` = no verified state (never configured, or a store miss at boot) — an outage never strips policy,
55
+ * only an explicit revocation does. */
56
+ sourceState(): "active" | "disabled" | "unavailable";
68
57
  }
69
58
  /**
70
- * The candidate state machine (§9.2 full pipeline). Publish-side entry points:
71
- * - `applySnapshot(raw)` — a fetched effective-snapshot body: verify → store.put → persist
72
- * active state → atomic in-memory swap. Any verification failure leaves EVERYTHING unchanged.
73
- * - `applyDisabled(sourceRevision)` — an explicit, successful disable/delete response: persist
74
- * disabled state + drop the candidate. (Network failure/304 = simply don't call anything.)
75
- * - `restore()` — boot: re-resolve persisted active state through the verified store; a miss or
76
- * verify failure boots stateless (no candidate) without touching the persisted record.
59
+ * The candidate state machine. Publish-side entry points:
60
+ * - `applySnapshot(raw)` — a fetched published artifact: verify → store.put → persist active state → atomic
61
+ * in-memory swap. Any verification failure leaves EVERYTHING unchanged.
62
+ * - `applyDisabled(sourceRevision)` — an explicit, successful disable/delete response: persist disabled state +
63
+ * drop the candidate. (Network failure/304 = simply don't call anything.)
64
+ * - `restore()` — boot: re-resolve the persisted active state through the verified store; a miss or verify failure
65
+ * boots stateless (no candidate) without touching the persisted record.
77
66
  */
78
67
  export declare class CenterPromptSource implements PromptArtifactSource {
79
68
  private readonly store;
80
69
  private readonly stateStore;
81
- private readonly engineVersion;
82
70
  private candidate;
83
71
  private state;
84
- /** Hardening 2026-07-31 — serialization tail for the three STATE-MUTATING entry points. Each of
85
- * them is a multi-await sequence ending in a synchronous swap of (candidate, state); with two in
86
- * flight, an interleaving where B's `stateStore.save` resolves and swaps before A's leaves the
87
- * persisted record naming B's digest while the in-memory candidate names A's — `current()` then
88
- * serves A to every new session until the next `restore()` silently switches to B. `CenterPromptSource`
89
- * is a public export driven by a caller's poll loop, so two overlapping applies are an ordinary
90
- * schedule, not an exotic race. Serializing costs nothing (these are publish-rate operations) and
91
- * makes the durable record and the in-memory candidate agree by construction. */
72
+ /** Serialization tail for the three STATE-MUTATING entry points. Each is a multi-await sequence ending in a
73
+ * synchronous swap of (candidate, state); with two in flight, an interleaving where B's `stateStore.save`
74
+ * resolves and swaps before A's would leave the persisted record naming B's digest while the in-memory candidate
75
+ * names A's. `CenterPromptSource` is driven by a caller's poll loop, so overlapping applies are an ordinary
76
+ * schedule. Serializing costs nothing (publish-rate operations) and makes the durable record and the in-memory
77
+ * candidate agree by construction. */
92
78
  private tail;
93
- /** Run `fn` after every previously-queued mutation settles (success OR failure — a failed apply
94
- * must not wedge the queue). */
79
+ /** Run `fn` after every previously-queued mutation settles (success OR failure — a failed apply must not wedge the queue). */
95
80
  private exclusive;
96
81
  constructor(opts: {
97
82
  store: PromptArtifactStore;
98
83
  stateStore?: PromptSourceStateStore;
99
- engineVersion: string;
100
84
  });
101
- current(): {
102
- artifact: PromptEpochArtifact;
103
- sourceRevision: string;
104
- } | undefined;
105
- get(artifactDigest: string): Promise<PromptEpochArtifact | undefined>;
85
+ current(): PublishedPromptArtifact | undefined;
86
+ get(artifactDigest: string): Promise<PromptArtifact | undefined>;
106
87
  restore(): Promise<void>;
107
88
  sourceState(): "active" | "disabled" | "unavailable";
108
89
  applySnapshot(raw: unknown): Promise<{
@@ -110,7 +91,7 @@ export declare class CenterPromptSource implements PromptArtifactSource {
110
91
  artifactDigest: string;
111
92
  } | {
112
93
  ok: false;
113
- code: string;
94
+ code: ArtifactVerifyCode;
114
95
  reason: string;
115
96
  }>;
116
97
  applyDisabled(sourceRevision: string): Promise<void>;