@sema-agent/core 7.54.1 → 7.56.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 (621) hide show
  1. package/CHANGELOG.md +950 -0
  2. package/dist/agents/agent-transcript-tool.js +2 -1
  3. package/dist/agents/builtin-agents.d.ts +12 -14
  4. package/dist/agents/cascade.js +1 -1
  5. package/dist/agents/cc-peer-directory.d.ts +36 -0
  6. package/dist/agents/cc-peer-directory.js +139 -0
  7. package/dist/agents/cc-peer-wire.d.ts +105 -0
  8. package/dist/agents/cc-peer-wire.js +98 -0
  9. package/dist/agents/cc-uds-peer-channel.d.ts +40 -0
  10. package/dist/agents/cc-uds-peer-channel.js +457 -0
  11. package/dist/agents/child-model-seat.d.ts +0 -11
  12. package/dist/agents/child-model-seat.js +0 -3
  13. package/dist/agents/cross-session-envelope.d.ts +4 -1
  14. package/dist/agents/cross-session-envelope.js +8 -1
  15. package/dist/agents/cross-session-judge.d.ts +2 -2
  16. package/dist/agents/list-agents-tool.d.ts +3 -1
  17. package/dist/agents/list-agents-tool.js +9 -8
  18. package/dist/agents/observer.d.ts +4 -5
  19. package/dist/agents/observer.js +2 -1
  20. package/dist/agents/peer-admission.d.ts +6 -0
  21. package/dist/agents/peer-admission.js +4 -1
  22. package/dist/agents/peer-directory.d.ts +65 -13
  23. package/dist/agents/peer-directory.js +90 -25
  24. package/dist/agents/peer-notices.d.ts +1 -1
  25. package/dist/agents/peer-session-drain.d.ts +3 -1
  26. package/dist/agents/peer-session-drain.js +3 -2
  27. package/dist/agents/read-inbox-tool.js +2 -1
  28. package/dist/agents/repair-loop.js +2 -2
  29. package/dist/agents/retain-ledger.d.ts +1 -1
  30. package/dist/agents/roster-store.d.ts +1 -1
  31. package/dist/agents/send-message-tool.d.ts +10 -0
  32. package/dist/agents/send-message-tool.js +37 -8
  33. package/dist/agents/subagent.d.ts +39 -82
  34. package/dist/agents/subagent.js +109 -106
  35. package/dist/agents/tool-filter.d.ts +31 -46
  36. package/dist/agents/tool-filter.js +13 -33
  37. package/dist/agents/verify.d.ts +6 -5
  38. package/dist/agents/verify.js +3 -3
  39. package/dist/brain/anthropic.js +43 -81
  40. package/dist/brain/errors.d.ts +15 -0
  41. package/dist/brain/errors.js +10 -0
  42. package/dist/brain/media-degrade.d.ts +18 -7
  43. package/dist/brain/media-degrade.js +13 -2
  44. package/dist/brain/model-capability.d.ts +37 -0
  45. package/dist/brain/model-capability.js +34 -0
  46. package/dist/brain/model-presets.d.ts +6 -12
  47. package/dist/brain/model-presets.js +1 -6
  48. package/dist/brain/open-responses.js +27 -35
  49. package/dist/brain/openai.js +30 -98
  50. package/dist/brain/provider-dialect.d.ts +39 -3
  51. package/dist/brain/provider-dialect.js +28 -0
  52. package/dist/brain/reasoning-request.d.ts +96 -0
  53. package/dist/brain/reasoning-request.js +174 -0
  54. package/dist/brain/reasoning.d.ts +12 -12
  55. package/dist/brain/reasoning.js +4 -3
  56. package/dist/brain/request-params.d.ts +62 -9
  57. package/dist/brain/request-params.js +42 -7
  58. package/dist/brain/retry.d.ts +1 -1
  59. package/dist/brain/route-adjudicator.d.ts +15 -0
  60. package/dist/brain/route-adjudicator.js +15 -0
  61. package/dist/brain/status-sink.d.ts +20 -0
  62. package/dist/brain/status-sink.js +7 -0
  63. package/dist/brain/stream-engine.js +6 -5
  64. package/dist/brain/stream-shared.d.ts +1 -1
  65. package/dist/core/a2a.d.ts +2 -1
  66. package/dist/core/a2a.js +19 -13
  67. package/dist/core/advisor-verdict.d.ts +120 -0
  68. package/dist/core/advisor-verdict.js +92 -0
  69. package/dist/core/agent-definition.d.ts +17 -8
  70. package/dist/core/allow-entry.d.ts +69 -36
  71. package/dist/core/allow-entry.js +81 -52
  72. package/dist/core/allow-rule-shadow.d.ts +10 -3
  73. package/dist/core/approval-object.d.ts +2 -1
  74. package/dist/core/approval-object.js +6 -6
  75. package/dist/core/ask-origin.d.ts +127 -29
  76. package/dist/core/ask-origin.js +87 -25
  77. package/dist/core/ask-question.d.ts +51 -8
  78. package/dist/core/ask-question.js +12 -7
  79. package/dist/core/ask-unresolvable-notice.d.ts +8 -3
  80. package/dist/core/ask-unresolvable-notice.js +16 -2
  81. package/dist/core/auto-compaction.d.ts +11 -8
  82. package/dist/core/auto-compaction.js +4 -2
  83. package/dist/core/auto-mode-arming.d.ts +2 -2
  84. package/dist/core/auto-mode-defaults.d.ts +8 -8
  85. package/dist/core/auto-mode-prompt-assets.d.ts +3 -3
  86. package/dist/core/auto-mode-prompt.d.ts +1 -1
  87. package/dist/core/auto-mode.d.ts +17 -9
  88. package/dist/core/auto-mode.js +9 -6
  89. package/dist/core/background-agent-store.d.ts +3 -3
  90. package/dist/core/canonical-json.d.ts +1 -1
  91. package/dist/core/canonical-json.js +2 -2
  92. package/dist/core/checkpoint-generation.d.ts +53 -0
  93. package/dist/core/checkpoint-generation.js +35 -0
  94. package/dist/core/checkpoint-queries.d.ts +180 -0
  95. package/dist/core/checkpoint-queries.js +272 -0
  96. package/dist/core/checkpoint-requirements.d.ts +19 -4
  97. package/dist/core/checkpoint-requirements.js +8 -14
  98. package/dist/core/checkpoint-store.d.ts +165 -72
  99. package/dist/core/checkpoint-store.js +79 -82
  100. package/dist/core/child-clamp-seats.d.ts +6 -0
  101. package/dist/core/child-clamp-seats.js +3 -16
  102. package/dist/core/compliance.d.ts +2 -2
  103. package/dist/core/context-edit.d.ts +6 -7
  104. package/dist/core/cross-boundary-taint.d.ts +11 -4
  105. package/dist/core/cross-boundary-taint.js +3 -3
  106. package/dist/core/decision-receipt.d.ts +37 -3
  107. package/dist/core/decision-receipt.js +19 -19
  108. package/dist/core/delegation-not-started.d.ts +6 -0
  109. package/dist/core/delegation-not-started.js +17 -0
  110. package/dist/core/effective-path-target.d.ts +1 -1
  111. package/dist/core/engine-attestation.d.ts +93 -0
  112. package/dist/core/engine-attestation.js +70 -0
  113. package/dist/core/engine-capabilities.d.ts +4 -1
  114. package/dist/core/engine-capabilities.js +1 -1
  115. package/dist/core/engine-notice.d.ts +45 -12
  116. package/dist/core/exec-output-tail.d.ts +1 -1
  117. package/dist/core/file-history-retention.d.ts +1 -1
  118. package/dist/core/file-history-store.d.ts +147 -21
  119. package/dist/core/file-history-store.js +58 -32
  120. package/dist/core/gate-fold.d.ts +1 -1
  121. package/dist/core/gate-fold.js +24 -11
  122. package/dist/core/gate-lanes.js +81 -68
  123. package/dist/core/gate-outcome.d.ts +40 -6
  124. package/dist/core/gate-outcome.js +56 -0
  125. package/dist/core/governance-codes.d.ts +17 -3
  126. package/dist/core/governance-codes.js +16 -0
  127. package/dist/core/hands-band.d.ts +1 -1
  128. package/dist/core/hooks.d.ts +21 -20
  129. package/dist/core/hooks.js +3 -1
  130. package/dist/core/host-floor.d.ts +128 -0
  131. package/dist/core/host-floor.js +206 -0
  132. package/dist/core/host-target.d.ts +84 -0
  133. package/dist/core/host-target.js +92 -0
  134. package/dist/core/image-downsample.d.ts +1 -1
  135. package/dist/core/lsp-diagnostics.d.ts +4 -4
  136. package/dist/core/lsp.d.ts +3 -3
  137. package/dist/core/mailbox-store.d.ts +4 -0
  138. package/dist/core/mcp-connection-pool.d.ts +18 -2
  139. package/dist/core/mcp-connection-pool.js +53 -6
  140. package/dist/core/mcp-failure.d.ts +23 -4
  141. package/dist/core/mcp-failure.js +26 -11
  142. package/dist/core/mcp-listing-drift.d.ts +10 -0
  143. package/dist/core/mcp-listing-drift.js +6 -0
  144. package/dist/core/mcp-server-link.d.ts +173 -0
  145. package/dist/core/mcp-server-link.js +127 -0
  146. package/dist/core/mcp-server-spec.d.ts +4 -2
  147. package/dist/core/mcp-session-end.d.ts +26 -0
  148. package/dist/core/mcp-session-end.js +29 -0
  149. package/dist/core/mcp-startup-request.d.ts +17 -0
  150. package/dist/core/mcp-startup-request.js +17 -0
  151. package/dist/core/mcp.d.ts +17 -13
  152. package/dist/core/mcp.js +240 -189
  153. package/dist/core/media-byte-cap.d.ts +1 -1
  154. package/dist/core/memory-engine/delegation-settlement.js +15 -24
  155. package/dist/core/memory-engine/engine.d.ts +9 -9
  156. package/dist/core/memory-engine/engine.js +4 -4
  157. package/dist/core/memory-engine/layout.d.ts +60 -8
  158. package/dist/core/memory-engine/layout.js +65 -6
  159. package/dist/core/memory-engine/provenance-wording.d.ts +1 -1
  160. package/dist/core/memory-engine/tools.js +4 -1
  161. package/dist/core/mode-policy.d.ts +1 -1
  162. package/dist/core/model-seat.d.ts +10 -3
  163. package/dist/core/mods/classic-events.d.ts +67 -0
  164. package/dist/core/mods/classic-events.js +1 -0
  165. package/dist/core/mods/dollar.d.ts +13 -0
  166. package/dist/core/mods/extension-call.d.ts +31 -0
  167. package/dist/core/mods/extension-call.js +43 -0
  168. package/dist/core/mods/kernel/dispatch.d.ts +20 -3
  169. package/dist/core/mods/kernel/dispatch.js +140 -69
  170. package/dist/core/mods/kernel/events.d.ts +47 -11
  171. package/dist/core/mods/kernel/events.js +66 -42
  172. package/dist/core/mods/kernel/index.d.ts +4 -4
  173. package/dist/core/mods/kernel/index.js +2 -2
  174. package/dist/core/mods/kernel/receive.d.ts +39 -5
  175. package/dist/core/mods/kernel/receive.js +290 -17
  176. package/dist/core/mods/kernel/registration.d.ts +33 -2
  177. package/dist/core/mods/kernel/registration.js +6 -7
  178. package/dist/core/mods/kernel/site-rules.d.ts +44 -16
  179. package/dist/core/mods/kernel/site-rules.js +24 -42
  180. package/dist/core/mods/spec-seats.d.ts +69 -0
  181. package/dist/core/mods/spec-seats.js +114 -0
  182. package/dist/core/mods/stations.d.ts +28 -8
  183. package/dist/core/mods/stations.js +29 -13
  184. package/dist/core/mods/tool-call.d.ts +79 -0
  185. package/dist/core/mods/tool-call.js +152 -0
  186. package/dist/core/namespaced-rule-name.d.ts +44 -24
  187. package/dist/core/namespaced-rule-name.js +50 -43
  188. package/dist/core/output-style.d.ts +1 -1
  189. package/dist/core/param-rule-reach.d.ts +15 -0
  190. package/dist/core/param-rule-reach.js +30 -0
  191. package/dist/core/parent-spec-seat.d.ts +13 -1
  192. package/dist/core/parent-spec-seat.js +6 -0
  193. package/dist/core/park-selfcheck.js +1 -0
  194. package/dist/core/pause-registry.d.ts +16 -5
  195. package/dist/core/pause-registry.js +6 -2
  196. package/dist/core/peer-channel.d.ts +70 -0
  197. package/dist/core/peer-channel.js +1 -0
  198. package/dist/core/permission-rule-consent.d.ts +30 -5
  199. package/dist/core/permission-rule-consent.js +147 -50
  200. package/dist/core/permission-rule-model.d.ts +245 -65
  201. package/dist/core/permission-rule-model.js +421 -107
  202. package/dist/core/permission-rule-org.d.ts +6 -2
  203. package/dist/core/permission-rule-org.js +7 -3
  204. package/dist/core/permission-rule-provider.d.ts +6 -2
  205. package/dist/core/permission-rule-provider.js +41 -11
  206. package/dist/core/permission-rule-store.d.ts +22 -26
  207. package/dist/core/permission-rule-store.js +12 -6
  208. package/dist/core/permission-rule-sync.d.ts +11 -2
  209. package/dist/core/permission-rule-sync.js +11 -3
  210. package/dist/core/permission-rule-syntax.d.ts +5 -4
  211. package/dist/core/permission-rule-syntax.js +2 -2
  212. package/dist/core/permission-rules.d.ts +53 -15
  213. package/dist/core/permission-rules.js +125 -100
  214. package/dist/core/persisted-rule-arms.d.ts +6 -4
  215. package/dist/core/persisted-rule-arms.js +10 -12
  216. package/dist/core/present-plan-tool.js +3 -1
  217. package/dist/core/principal-name.d.ts +20 -0
  218. package/dist/core/principal-name.js +22 -0
  219. package/dist/core/prompt-section-seat.js +4 -6
  220. package/dist/core/protocol-http-auth.d.ts +26 -5
  221. package/dist/core/protocol-http-auth.js +137 -4
  222. package/dist/core/protocol-naming.d.ts +2 -2
  223. package/dist/core/read-only-shell-table.d.ts +1 -1
  224. package/dist/core/read-only-shell.d.ts +1 -1
  225. package/dist/core/retired-keys.d.ts +16 -0
  226. package/dist/core/retired-keys.js +16 -4
  227. package/dist/core/rewrite-rejudge.d.ts +60 -0
  228. package/dist/core/rewrite-rejudge.js +36 -0
  229. package/dist/core/roles.d.ts +34 -3
  230. package/dist/core/roles.js +66 -53
  231. package/dist/core/rule-lane-reads.d.ts +20 -15
  232. package/dist/core/rule-lane-reads.js +45 -17
  233. package/dist/core/rule-offer-read.d.ts +53 -0
  234. package/dist/core/rule-offer-read.js +146 -0
  235. package/dist/core/rule-owner.d.ts +46 -0
  236. package/dist/core/rule-owner.js +29 -0
  237. package/dist/core/runner/advisor-instructions.d.ts +70 -0
  238. package/dist/core/runner/advisor-instructions.js +61 -0
  239. package/dist/core/runner/advisor-tool.d.ts +33 -0
  240. package/dist/core/runner/advisor-tool.js +112 -0
  241. package/dist/core/runner/announce-once-ledger.d.ts +18 -26
  242. package/dist/core/runner/announce-once-ledger.js +19 -46
  243. package/dist/core/runner/approval-feedback.js +6 -3
  244. package/dist/core/runner/assemble-result.d.ts +2 -1
  245. package/dist/core/runner/assemble-result.js +1 -1
  246. package/dist/core/runner/call-hook-stations.d.ts +3 -2
  247. package/dist/core/runner/caller-roster.d.ts +21 -2
  248. package/dist/core/runner/caller-roster.js +38 -0
  249. package/dist/core/runner/capability-withheld-seat.d.ts +5 -0
  250. package/dist/core/runner/capability-withheld-seat.js +24 -0
  251. package/dist/core/runner/classifier-ladder.d.ts +33 -13
  252. package/dist/core/runner/classifier-ladder.js +15 -14
  253. package/dist/core/runner/compaction-restate.d.ts +10 -6
  254. package/dist/core/runner/compaction-restate.js +9 -3
  255. package/dist/core/runner/construction-doors.js +3 -0
  256. package/dist/core/runner/contracts.d.ts +40 -33
  257. package/dist/core/runner/conversation-segment.d.ts +28 -0
  258. package/dist/core/runner/conversation-segment.js +42 -0
  259. package/dist/core/runner/cross-boundary-lane.d.ts +21 -16
  260. package/dist/core/runner/cross-boundary-lane.js +58 -34
  261. package/dist/core/runner/decide-continuation.d.ts +7 -4
  262. package/dist/core/runner/decide-continuation.js +2 -2
  263. package/dist/core/runner/denial-limit-arms.d.ts +4 -4
  264. package/dist/core/runner/denial-limit-arms.js +1 -1
  265. package/dist/core/runner/derived-route-fallback.d.ts +24 -24
  266. package/dist/core/runner/derived-route-fallback.js +9 -7
  267. package/dist/core/runner/file-history-request.d.ts +18 -0
  268. package/dist/core/runner/file-history-request.js +21 -13
  269. package/dist/core/runner/file-history-restore.d.ts +45 -0
  270. package/dist/core/runner/file-history-restore.js +46 -0
  271. package/dist/core/runner/gate-exit.d.ts +9 -3
  272. package/dist/core/runner/gate-exit.js +11 -5
  273. package/dist/core/runner/image.d.ts +7 -17
  274. package/dist/core/runner/image.js +9 -60
  275. package/dist/core/runner/initial-run-state.js +1 -1
  276. package/dist/core/runner/permission-rule-lanes.d.ts +6 -6
  277. package/dist/core/runner/permission-rule-lanes.js +38 -15
  278. package/dist/core/runner/person-path-rows.d.ts +12 -9
  279. package/dist/core/runner/person-path-rows.js +19 -8
  280. package/dist/core/runner/prepare-advisor.d.ts +63 -0
  281. package/dist/core/runner/prepare-advisor.js +77 -0
  282. package/dist/core/runner/prepare-ask-lane.d.ts +2 -2
  283. package/dist/core/runner/prepare-ask-lane.js +5 -2
  284. package/dist/core/runner/prepare-caps-and-workflow.d.ts +4 -6
  285. package/dist/core/runner/prepare-caps-and-workflow.js +5 -4
  286. package/dist/core/runner/prepare-config-doors.d.ts +31 -38
  287. package/dist/core/runner/prepare-config-doors.js +57 -34
  288. package/dist/core/runner/prepare-defer-classify.d.ts +4 -3
  289. package/dist/core/runner/prepare-defer-classify.js +7 -8
  290. package/dist/core/runner/prepare-delegation-surface.d.ts +2 -2
  291. package/dist/core/runner/prepare-delegation-surface.js +1 -1
  292. package/dist/core/runner/prepare-file-history.d.ts +48 -8
  293. package/dist/core/runner/prepare-file-history.js +41 -73
  294. package/dist/core/runner/prepare-gate-stations.d.ts +2 -5
  295. package/dist/core/runner/prepare-gate-stations.js +12 -8
  296. package/dist/core/runner/prepare-hands-readface.d.ts +2 -8
  297. package/dist/core/runner/prepare-hands-readface.js +15 -14
  298. package/dist/core/runner/prepare-inherited-gate.d.ts +11 -7
  299. package/dist/core/runner/prepare-inherited-gate.js +8 -6
  300. package/dist/core/runner/prepare-memory-engine-session.js +1 -1
  301. package/dist/core/runner/prepare-park-ask.js +12 -12
  302. package/dist/core/runner/prepare-policy-chain.d.ts +7 -4
  303. package/dist/core/runner/prepare-policy-chain.js +68 -81
  304. package/dist/core/runner/prepare-project-context.d.ts +5 -2
  305. package/dist/core/runner/prepare-project-context.js +6 -3
  306. package/dist/core/runner/prepare-prompt-assembly.d.ts +5 -7
  307. package/dist/core/runner/prepare-prompt-assembly.js +10 -8
  308. package/dist/core/runner/prepare-prompt-inputs.d.ts +11 -9
  309. package/dist/core/runner/prepare-prompt-inputs.js +4 -6
  310. package/dist/core/runner/prepare-protocol-tools.d.ts +4 -2
  311. package/dist/core/runner/prepare-protocol-tools.js +5 -4
  312. package/dist/core/runner/prepare-safety-scan.d.ts +9 -12
  313. package/dist/core/runner/prepare-safety-scan.js +8 -23
  314. package/dist/core/runner/prepare-suspend-saga.d.ts +2 -0
  315. package/dist/core/runner/prepare-suspend-saga.js +5 -6
  316. package/dist/core/runner/prepare-task.d.ts +1 -1
  317. package/dist/core/runner/prepare-task.js +41 -35
  318. package/dist/core/runner/prepare-tool-disclosure-mount.d.ts +7 -4
  319. package/dist/core/runner/prepare-tool-disclosure-mount.js +24 -18
  320. package/dist/core/runner/prepare-turn-wiring.d.ts +0 -4
  321. package/dist/core/runner/prepare-turn-wiring.js +2 -7
  322. package/dist/core/runner/prepare-wiring-manifest.d.ts +11 -4
  323. package/dist/core/runner/prepare-wiring-manifest.js +3 -3
  324. package/dist/core/runner/resume-admission.js +1 -1
  325. package/dist/core/runner/resume-apply.js +11 -12
  326. package/dist/core/runner/resume-checkpoint-screen.js +3 -0
  327. package/dist/core/runner/resume-claim.d.ts +4 -2
  328. package/dist/core/runner/resume-claim.js +15 -8
  329. package/dist/core/runner/resume-policy-outcome.js +1 -1
  330. package/dist/core/runner/retired-runner-deps.js +2 -1
  331. package/dist/core/runner/rewind-files.d.ts +15 -0
  332. package/dist/core/runner/rewind-files.js +132 -0
  333. package/dist/core/runner/run-attachment-seats.js +2 -2
  334. package/dist/core/runner/run-brain-sinks.d.ts +4 -1
  335. package/dist/core/runner/run-brain-sinks.js +4 -2
  336. package/dist/core/runner/run-compaction-machinery.d.ts +1 -1
  337. package/dist/core/runner/run-compaction-machinery.js +2 -12
  338. package/dist/core/runner/run-git-lane.d.ts +1 -0
  339. package/dist/core/runner/run-harness-handlers.js +14 -7
  340. package/dist/core/runner/run-leg.d.ts +1 -1
  341. package/dist/core/runner/run-leg.js +43 -18
  342. package/dist/core/runner/run-settle-and-teardown.js +3 -2
  343. package/dist/core/runner/run-telemetry-and-budget-seats.js +1 -1
  344. package/dist/core/runner/run-turn-boundary.d.ts +1 -0
  345. package/dist/core/runner/run-turn-boundary.js +15 -22
  346. package/dist/core/runner/runtask.d.ts +3 -0
  347. package/dist/core/runner/runtask.js +8 -9
  348. package/dist/core/runner/session-read-file-states.d.ts +15 -0
  349. package/dist/core/runner/session-read-file-states.js +28 -0
  350. package/dist/core/runner/session-rule-policy.d.ts +22 -21
  351. package/dist/core/runner/session-rule-policy.js +17 -31
  352. package/dist/core/runner/shell-env-withheld.d.ts +33 -0
  353. package/dist/core/runner/shell-env-withheld.js +51 -0
  354. package/dist/core/runner/side-call-account.d.ts +32 -8
  355. package/dist/core/runner/side-call-account.js +23 -1
  356. package/dist/core/runner/skills-seat.js +6 -2
  357. package/dist/core/runner/stream-settle-backstop.js +1 -1
  358. package/dist/core/runner/strict-output-schema.d.ts +1 -1
  359. package/dist/core/runner/sub-agent-deny-lists.js +4 -6
  360. package/dist/core/runner/synthetic-tools.d.ts +16 -13
  361. package/dist/core/runner/synthetic-tools.js +8 -3
  362. package/dist/core/runner/tool-disclosure.d.ts +10 -12
  363. package/dist/core/runner/tool-disclosure.js +3 -4
  364. package/dist/core/runner/tool-end-body.d.ts +1 -1
  365. package/dist/core/runner/tool-end-body.js +10 -9
  366. package/dist/core/runner/tool-face-overlay.d.ts +2 -1
  367. package/dist/core/runner/tool-face-overlay.js +17 -1
  368. package/dist/core/runner/tool-not-executed.d.ts +5 -0
  369. package/dist/core/runner/tool-not-executed.js +11 -0
  370. package/dist/core/runner/tool-occurrence.d.ts +8 -0
  371. package/dist/core/runner/tool-occurrence.js +7 -0
  372. package/dist/core/runner/tool-progress-lane.d.ts +2 -2
  373. package/dist/core/runner/tool-turn-repair-seat.d.ts +3 -2
  374. package/dist/core/runner/turn-attachments.d.ts +91 -80
  375. package/dist/core/runner/turn-attachments.js +62 -37
  376. package/dist/core/runner-deps.d.ts +42 -42
  377. package/dist/core/runtime-caps.d.ts +4 -4
  378. package/dist/core/safety-axis-vocab.d.ts +6 -4
  379. package/dist/core/safety-axis-vocab.js +6 -5
  380. package/dist/core/safety-merge-corpus.js +26 -2
  381. package/dist/core/same-plain-value.d.ts +40 -0
  382. package/dist/core/same-plain-value.js +49 -0
  383. package/dist/core/scheduler.d.ts +1 -1
  384. package/dist/core/secret-env.d.ts +26 -3
  385. package/dist/core/secret-env.js +44 -8
  386. package/dist/core/select-model.js +3 -3
  387. package/dist/core/sensitive-path-policy.d.ts +1 -1
  388. package/dist/core/sensitive-path-policy.js +1 -1
  389. package/dist/core/session-policy-store.d.ts +102 -35
  390. package/dist/core/session-policy-store.js +210 -48
  391. package/dist/core/session-reconcile.d.ts +2 -2
  392. package/dist/core/session-store.d.ts +106 -37
  393. package/dist/core/session-store.js +165 -91
  394. package/dist/core/session.d.ts +101 -57
  395. package/dist/core/session.js +53 -0
  396. package/dist/core/shared-memory/tools.js +3 -1
  397. package/dist/core/shared-memory/types.d.ts +1 -1
  398. package/dist/core/shell-read-silence.d.ts +11 -12
  399. package/dist/core/shell-read-silence.js +9 -5
  400. package/dist/core/shell-run-candidates.js +3 -1
  401. package/dist/core/shell-wrapper-projection.js +1 -1
  402. package/dist/core/shell-wrapper-table.d.ts +14 -7
  403. package/dist/core/shell-wrapper-table.js +5 -4
  404. package/dist/core/side-query.d.ts +10 -0
  405. package/dist/core/side-query.js +15 -1
  406. package/dist/core/skill-grant.d.ts +7 -2
  407. package/dist/core/skill-grant.js +5 -0
  408. package/dist/core/skills-directory.js +6 -2
  409. package/dist/core/store-contracts/checkpoint-store-contract.d.ts +11 -1
  410. package/dist/core/store-contracts/checkpoint-store-contract.js +168 -3
  411. package/dist/core/store-contracts/file-history-store-contract.js +74 -4
  412. package/dist/core/store-contracts/peer-directory-contract.d.ts +7 -2
  413. package/dist/core/store-contracts/peer-directory-contract.js +14 -2
  414. package/dist/core/store-contracts/session-policy-store-contract.d.ts +7 -0
  415. package/dist/core/store-contracts/session-policy-store-contract.js +130 -0
  416. package/dist/core/store-contracts/session-repo-contract.js +176 -0
  417. package/dist/core/store-contracts/session-store-contract.d.ts +6 -8
  418. package/dist/core/store-contracts/session-store-contract.js +361 -51
  419. package/dist/core/store-contracts/workflow-journal-store-contract.js +26 -1
  420. package/dist/core/stub-env.d.ts +2 -0
  421. package/dist/core/stub-env.js +1 -0
  422. package/dist/core/surrogate-safe-slice.d.ts +3 -3
  423. package/dist/core/synthetic-read-verdict.js +3 -3
  424. package/dist/core/task-event.d.ts +42 -8
  425. package/dist/core/task-notification.d.ts +19 -15
  426. package/dist/core/task-registry-agent.d.ts +4 -4
  427. package/dist/core/task-registry-shared.d.ts +4 -4
  428. package/dist/core/task-registry-shared.js +1 -0
  429. package/dist/core/task-registry.d.ts +13 -4
  430. package/dist/core/task-registry.js +14 -2
  431. package/dist/core/task-result.d.ts +21 -3
  432. package/dist/core/task-spec.d.ts +69 -64
  433. package/dist/core/task-stream.d.ts +6 -6
  434. package/dist/core/task-tool-shape.d.ts +4 -4
  435. package/dist/core/tighten-task-spec.d.ts +1 -1
  436. package/dist/core/tighten-task-spec.js +2 -1
  437. package/dist/core/tool-catalog-entries.d.ts +36 -2
  438. package/dist/core/tool-catalog-entries.js +69 -43
  439. package/dist/core/tool-check-reading.d.ts +11 -0
  440. package/dist/core/tool-check-reading.js +11 -6
  441. package/dist/core/tool-conformance.js +1 -0
  442. package/dist/core/tool-errors.d.ts +2 -2
  443. package/dist/core/tool-face-reader.js +5 -3
  444. package/dist/core/tool-face.d.ts +21 -2
  445. package/dist/core/tool-face.js +1 -1
  446. package/dist/core/tool-model-gate.d.ts +5 -5
  447. package/dist/core/tool-name-aliases.d.ts +29 -8
  448. package/dist/core/tool-name-aliases.js +22 -4
  449. package/dist/core/tool-name-readings.d.ts +10 -43
  450. package/dist/core/tool-name-readings.js +2 -11
  451. package/dist/core/tool-policy.d.ts +85 -196
  452. package/dist/core/tool-policy.js +150 -175
  453. package/dist/core/tool-registry.d.ts +14 -7
  454. package/dist/core/tool-registry.js +17 -7
  455. package/dist/core/tool-result-store.js +5 -1
  456. package/dist/core/tool-roster.d.ts +57 -33
  457. package/dist/core/tool-roster.js +56 -68
  458. package/dist/core/tool-spec-members.js +8 -3
  459. package/dist/core/tool-spec.d.ts +53 -31
  460. package/dist/core/tools.js +51 -10
  461. package/dist/core/trace.d.ts +6 -2
  462. package/dist/core/types.d.ts +1 -1
  463. package/dist/core/untrusted-egress.d.ts +1 -1
  464. package/dist/core/untrusted-text.d.ts +1 -1
  465. package/dist/core/user-attachment.d.ts +8 -1
  466. package/dist/core/user-attachment.js +64 -4
  467. package/dist/core/warm-resume.d.ts +1 -1
  468. package/dist/core/wiring-manifest.d.ts +58 -0
  469. package/dist/core/wiring-manifest.js +14 -5
  470. package/dist/core/workflow-journal-store.d.ts +62 -0
  471. package/dist/core/workflow-journal-store.js +78 -2
  472. package/dist/core/workflow-run-store.d.ts +6 -0
  473. package/dist/core/workflow-run-store.js +2 -0
  474. package/dist/engine/compaction/compaction.d.ts +9 -9
  475. package/dist/engine/compaction/compaction.js +3 -2
  476. package/dist/engine/execution-env/node-execution-env.d.ts +26 -8
  477. package/dist/engine/execution-env/node-execution-env.js +54 -24
  478. package/dist/engine/harness/agent-harness.d.ts +39 -9
  479. package/dist/engine/harness/agent-harness.js +87 -33
  480. package/dist/engine/harness/types.d.ts +58 -9
  481. package/dist/engine/harness/types.js +12 -1
  482. package/dist/engine/llm/types.d.ts +36 -19
  483. package/dist/engine/llm/validation.d.ts +4 -1
  484. package/dist/engine/llm/validation.js +13 -1
  485. package/dist/engine/loop/agent-loop.d.ts +23 -1
  486. package/dist/engine/loop/agent-loop.js +26 -34
  487. package/dist/engine/loop/types.d.ts +31 -19
  488. package/dist/engine/lsp/node-lsp-manager.d.ts +2 -2
  489. package/dist/engine/session/memory-repo.d.ts +18 -12
  490. package/dist/engine/session/memory-repo.js +24 -9
  491. package/dist/engine/session/parent-chain-guard.d.ts +3 -2
  492. package/dist/engine/session/parent-chain-guard.js +1 -1
  493. package/dist/engine/session/repo-utils.d.ts +32 -3
  494. package/dist/engine/session/repo-utils.js +50 -5
  495. package/dist/index.d.ts +47 -23
  496. package/dist/index.js +35 -17
  497. package/dist/internal/harness-types.d.ts +1 -1
  498. package/dist/internal/harness.d.ts +3 -3
  499. package/dist/internal/harness.js +2 -2
  500. package/dist/internal/llm.d.ts +2 -2
  501. package/dist/internal/llm.js +1 -1
  502. package/dist/orchestration/goal.js +2 -2
  503. package/dist/orchestration/run-workflow-tool.d.ts +8 -6
  504. package/dist/orchestration/run-workflow-tool.js +10 -6
  505. package/dist/orchestration/workflow-size-guideline.d.ts +4 -4
  506. package/dist/orchestration/workflow-types.d.ts +18 -0
  507. package/dist/orchestration/workflow-types.js +6 -0
  508. package/dist/orchestration/workflow.d.ts +5 -13
  509. package/dist/orchestration/workflow.js +57 -49
  510. package/dist/prompt-assembly/artifact.d.ts +2 -2
  511. package/dist/prompt-assembly/artifact.js +5 -3
  512. package/dist/prompt-assembly/assemble.d.ts +3 -2
  513. package/dist/prompt-assembly/assemble.js +1 -1
  514. package/dist/prompt-assembly/catalog/schema.d.ts +43 -12
  515. package/dist/prompt-assembly/catalog/schema.js +34 -2
  516. package/dist/prompt-assembly/catalog/sections.js +0 -1
  517. package/dist/prompt-assembly/composer.d.ts +3 -1
  518. package/dist/prompt-assembly/composer.js +1 -1
  519. package/dist/prompt-assembly/event-registry.js +2 -0
  520. package/dist/prompt-assembly/overlay.js +3 -3
  521. package/dist/prompt-assembly/renderers.d.ts +1 -1
  522. package/dist/prompt-assembly/renderers.js +0 -3
  523. package/dist/prompt-assembly/role-base.d.ts +15 -0
  524. package/dist/prompt-assembly/role-base.js +9 -0
  525. package/dist/prompt-assembly/select.d.ts +39 -14
  526. package/dist/prompt-assembly/select.js +47 -16
  527. package/dist/prompt-assembly/sugar.d.ts +17 -11
  528. package/dist/prompt-assembly/sugar.js +8 -3
  529. package/dist/prompt-assembly/tool-catalog.d.ts +39 -2
  530. package/dist/prompt-assembly/tool-catalog.js +117 -4
  531. package/dist/prompt-assembly/turn-snapshot.d.ts +4 -10
  532. package/dist/prompt-assembly/turn-snapshot.js +0 -3
  533. package/dist/prompt-assembly/types.d.ts +0 -7
  534. package/dist/prompts/default.d.ts +14 -14
  535. package/dist/scenarios/full-body.d.ts +15 -15
  536. package/dist/scenarios/full-body.js +4 -3
  537. package/dist/shell/lex.js +10 -1
  538. package/dist/stores/file/adoption/adopt.d.ts +4 -3
  539. package/dist/stores/file/adoption/adopt.js +27 -33
  540. package/dist/stores/file/adoption/marker.d.ts +6 -13
  541. package/dist/stores/file/adoption/marker.js +9 -17
  542. package/dist/stores/file/checkpoint-store.d.ts +24 -0
  543. package/dist/stores/file/checkpoint-store.js +45 -7
  544. package/dist/stores/file/file-history-store.d.ts +20 -19
  545. package/dist/stores/file/file-history-store.js +157 -141
  546. package/dist/stores/file/fs-atomic.d.ts +15 -0
  547. package/dist/stores/file/fs-atomic.js +89 -14
  548. package/dist/stores/file/index.d.ts +1 -1
  549. package/dist/stores/file/index.js +2 -1
  550. package/dist/stores/file/mailbox-store.d.ts +3 -0
  551. package/dist/stores/file/mailbox-store.js +3 -1
  552. package/dist/stores/file/permission-rule-adopt.d.ts +1 -1
  553. package/dist/stores/file/permission-rule-adopt.js +18 -18
  554. package/dist/stores/file/permission-rule-store.d.ts +18 -2
  555. package/dist/stores/file/permission-rule-store.js +31 -18
  556. package/dist/stores/file/session-policy-store.d.ts +3 -3
  557. package/dist/stores/file/session-store.d.ts +54 -16
  558. package/dist/stores/file/session-store.js +114 -85
  559. package/dist/stores/file/workflow-journal-store.d.ts +10 -4
  560. package/dist/stores/file/workflow-journal-store.js +28 -13
  561. package/dist/tools/artifact/artifact-text.d.ts +1 -1
  562. package/dist/tools/artifact/artifact-tool.js +5 -3
  563. package/dist/tools/fs/bash-program-position.d.ts +19 -2
  564. package/dist/tools/fs/bash-program-position.js +56 -9
  565. package/dist/tools/fs/bash-readonly-classifier.d.ts +3 -3
  566. package/dist/tools/fs/fs-bash.d.ts +2 -2
  567. package/dist/tools/fs/fs-bash.js +8 -6
  568. package/dist/tools/fs/fs-glob.d.ts +86 -0
  569. package/dist/tools/fs/fs-glob.js +226 -0
  570. package/dist/tools/fs/fs-read.js +14 -14
  571. package/dist/tools/fs/fs-search-tools.js +7 -7
  572. package/dist/tools/fs/fs-shared.d.ts +8 -8
  573. package/dist/tools/fs/gh-rate-limit.d.ts +1 -1
  574. package/dist/tools/fs/notebook.d.ts +2 -2
  575. package/dist/tools/fs/pattern-kill-guard.d.ts +22 -0
  576. package/dist/tools/fs/pattern-kill-guard.js +397 -0
  577. package/dist/tools/fs/pdf.d.ts +9 -6
  578. package/dist/tools/fs/pdf.js +3 -3
  579. package/dist/tools/fs/program-read-model.d.ts +57 -7
  580. package/dist/tools/fs/program-read-model.js +11 -1
  581. package/dist/tools/fs/program-read-model.rows.js +78 -21
  582. package/dist/tools/fs/read-deny-home.js +3 -2
  583. package/dist/tools/fs/read-deny.d.ts +29 -7
  584. package/dist/tools/fs/read-deny.js +63 -22
  585. package/dist/tools/fs/removal-targets.d.ts +18 -8
  586. package/dist/tools/fs/removal-targets.js +47 -20
  587. package/dist/tools/fs/safety.d.ts +9 -9
  588. package/dist/tools/fs/search.d.ts +16 -6
  589. package/dist/tools/fs/search.js +20 -26
  590. package/dist/tools/fs/shell-read-argv.js +89 -12
  591. package/dist/tools/fs/shell-read-bindings.d.ts +31 -0
  592. package/dist/tools/fs/shell-read-bindings.js +41 -0
  593. package/dist/tools/fs/shell-read-check.js +12 -20
  594. package/dist/tools/fs/shell-read-environment.d.ts +5 -1
  595. package/dist/tools/fs/shell-read-environment.js +3 -2
  596. package/dist/tools/fs/shell-read-establish.d.ts +15 -0
  597. package/dist/tools/fs/shell-read-establish.js +19 -20
  598. package/dist/tools/fs/shell-read-judge.d.ts +4 -0
  599. package/dist/tools/fs/shell-read-judge.js +5 -2
  600. package/dist/tools/fs/shell-read-plan.js +24 -16
  601. package/dist/tools/fs/shell-read-start.d.ts +6 -1
  602. package/dist/tools/fs/shell-read-write-targets.d.ts +5 -1
  603. package/dist/tools/fs/shell-read-write-targets.js +2 -3
  604. package/dist/tools/fs/shell-reentry-text.d.ts +9 -0
  605. package/dist/tools/fs/shell-reentry-text.js +40 -2
  606. package/dist/tools/loop-tick.d.ts +2 -2
  607. package/dist/tools/scheduler-tools.js +5 -1
  608. package/dist/tools/task-list.d.ts +7 -7
  609. package/dist/tools/task-list.js +5 -1
  610. package/dist/tools/todo.js +65 -64
  611. package/dist/tools/web.d.ts +20 -15
  612. package/dist/tools/web.js +55 -69
  613. package/dist/tools/worktree.d.ts +3 -3
  614. package/dist/tools/worktree.js +3 -1
  615. package/package.json +1 -1
  616. package/test/export-surface.snapshot.json +5894 -5638
  617. package/wire-changes/core@7.55.0.json +3318 -0
  618. package/wire-changes/core@7.56.0.json +3891 -0
  619. package/wire-changes/mods-kernel@7.56.0.json +303 -0
  620. package/dist/core/store-contracts/session-store-incarnation-contract.d.ts +0 -39
  621. package/dist/core/store-contracts/session-store-incarnation-contract.js +0 -95
@@ -121,8 +121,7 @@ export interface TaskSpec {
121
121
  * long-lived child's per-request face is correct design, not a configuration lie, so those legs
122
122
  * are exempt). The park lane is deliberately NOT required (interactive-without-park is a
123
123
  * legitimate light deployment — a synchronous CLI/local UI). `"headless"` declares the opposite
124
- * and checks nothing (a batch deployment carrying an onAsk for audit is legal). Absent = no
125
- * check, bytes unchanged.
124
+ * and checks nothing (a batch deployment carrying an onAsk for audit is legal). Absent = no check, bytes unchanged.
126
125
  *
127
126
  * Seat resolution is THREE-leg: `spec.interactionPosture ?? <the spawning run's resolved posture>
128
127
  * ?? deps.interactionPosture` — a Runner serving both an interactive session and cron/batch legs
@@ -271,8 +270,7 @@ export interface TaskSpec {
271
270
  * when that turn began", so B(target) IS the before-state. A target with no boundary of its own (a
272
271
  * steer / follow-up entry, a turn that recorded no history, a mixed-epoch session) refuses at prepare
273
272
  * (`rewind_snapshot.unresolvable`) with the files untouched: an earlier boundary would also revert edits
274
- * the conversation keeps, so the anchor never falls back to an ancestor and never crosses into an
275
- * earlier turn.
273
+ * the conversation keeps, so the anchor never falls back to an ancestor and never crosses into an earlier turn.
276
274
  * Fail-loud: setting this without {@link resumeAt}, or an unknown mode value, rejects at prepare.
277
275
  */
278
276
  resumeAtMode?: "at" | "before";
@@ -294,14 +292,16 @@ export interface TaskSpec {
294
292
  * self-compacts on its own main model, so the window-safety judgment is structurally never
295
293
  * triggered in a subagent (guard-tested). */
296
294
  compactionModel?: ModelRef;
295
+ /** The ADVISOR model (CC's `advisorModel` setting): any ref {@link model} takes. Present ⇒ prepare judges it against this leg's own model (`advisorAttachVerdict`) and, when it attaches, mounts the no-argument `advisor` tool; a value that is neither a string nor a Model refuses prepare (`config.advisor_model_invalid`) unless `RunnerDeps.advisorTool` is `"disabled"`, which ignores it unread. Rides the parent spec seat — unlike {@link compactionModel}, a child inherits it and judges it against its own model. */
296
+ advisorModel?: ModelRef;
297
297
  /** Thinking level. If omitted, a default from the resolved role's `RoleSpec.thinking` applies. */
298
298
  thinking?: ThinkingLevel;
299
- /** This task's role text: it replaces the selected role base (`promptRole`). Text carrying a locked section verbatim
300
- * (an already-assembled prompt) is refused by name (`prompt.assembled_role_refused`). */
299
+ /** This task's role text: it replaces the role base `promptRole` selects; the task names its role base first, above its role's preset (`RoleSpec`).
300
+ * Text carrying a locked section verbatim (an already-assembled prompt) is refused by name (`prompt.assembled_role_refused`). */
301
301
  systemPrompt?: string;
302
- /** The role base `core/role.base` selects: `"general"` (absent), `"code"`, `"coordinator"`, `"cowork"` (rendered from the
303
- * mounted tools and the working directory); `systemPrompt` replaces whichever is selected. Not inherited (a child gets
304
- * the sub-agent persona). A value outside the closed set (`HOST_ROLES`, tested by `isHostRole`) is refused at prepare. */
302
+ /** The role base `core/role.base` selects — `"general"`, `"code"`, `"coordinator"`, `"cowork"` (rendered from the mounted tools and the
303
+ * working directory) — and the run's host role; `systemPrompt` replaces it. A task naming neither takes its role's preset (`RoleSpec.promptRole` /
304
+ * `systemPrompt`) whole; an explicit `"general"` names the general base and ends that chain, absent does not. Not inherited (a child gets the sub-agent persona). Outside the closed set (`HOST_ROLES`, `isHostRole`) ⇒ refused at prepare. */
305
305
  promptRole?: import("../prompt-assembly/catalog/schema.js").HostRole;
306
306
  /** `"minimal"` leaves the core-behavior band out; the locked sections (mode sections in play among them) and
307
307
  * `appendSystemPrompt` stay. Absent ⇒ standard. Rides the parent spec seat to every engine-built child (a clamp-table
@@ -344,10 +344,9 @@ export interface TaskSpec {
344
344
  /**
345
345
  * Enable long-term memory for this task. **design/138 S4 (BREAKING): requires `RunnerDeps.memoryBackend`**
346
346
  * (the injection-first memory engine — materialize → file ops → harvest). With a backend configured the
347
- * task gets the CC-verbatim `# Memory` instruction + fenced derived index and works memory through its
348
- * ordinary file tools. WITHOUT a backend this field is INERT: the legacy `RunnerDeps.memoryStore` fallback
349
- * (remember/recall tools + legacy `<user_memory>` injection) was retired — the task runs memory-less and
350
- * one deprecation warning is emitted via `onError` (phase `"config"`).
347
+ * task gets the `# Memory` instruction + fenced derived index and works memory through its
348
+ * ordinary file tools. WITHOUT a backend this field is INERT: the task runs memory-less and one warning is
349
+ * emitted via `onError` (phase `"config"`).
351
350
  *
352
351
  * **design/84 Seam A** — single opaque scope → an **ordered, opaque scope list + a single writeScope**.
353
352
  * The engine only does read-side **layered injection** (one `<user_memory>` block, a `<scope …>` subsection
@@ -396,6 +395,14 @@ export interface TaskSpec {
396
395
  * such a run, for that cycle); no word turns it back on below. Any other value refuses (`rewind.invalid_spec`).
397
396
  */
398
397
  fileHistory?: "disabled";
398
+ /** The per-run OFF SWITCH for the deployment's project context (`"disabled"`, the only word; {@link fileHistory}'s spelling). Omitted ⇒ the
399
+ * deployment's `RunnerDeps.loadProjectMemory` is called as it always is. `"disabled"` ⇒ this leg's prepare does not call it: no project layer is
400
+ * injected, no instruction source is declared (the instruction-change lane never runs), none of the seam's files is seeded as already read,
401
+ * and the compaction lanes carry no instruction-file text. Not that seam, and unaffected: the engine's own git-status lane and the memory
402
+ * engine (its index seed included). The manifest reports `projectMemory: "disabled"` (`"absent"` where no seam is wired). Children inherit it
403
+ * (parent spec seat, a revived cycle included); no word turns it back on below. Any other value refuses prepare, and a resume's screen before its
404
+ * claim, `config.invalid_argument`. */
405
+ projectMemory?: "disabled";
399
406
  /**
400
407
  * design/381 (DV-9) — the RESTORE half of file rewind: when this task uses {@link resumeAt} to branch at
401
408
  * a prior entry, ALSO converge the working tree's **agent-edited files** (the tracked set — files this
@@ -445,8 +452,7 @@ export interface TaskSpec {
445
452
  * that should cover those edits is the root session's action; a restore request on such a child run
446
453
  * is refused loud (`rewind.child_scope_unsupported`) rather than converging a scope that holds none
447
454
  * of its edits. A delegated child that was handed NO lineage — a revival, a workflow/team member —
448
- * keeps its own scope: its edits are outside this target's reach, and its own restore request is an
449
- * ordinary one.
455
+ * keeps its own scope: its edits are outside this target's reach, and its own restore request is an ordinary one.
450
456
  */
451
457
  rewindFilesTo?: string;
452
458
  /**
@@ -478,8 +484,8 @@ export interface TaskSpec {
478
484
  *
479
485
  * Entries are read like {@link excludeTools}: a wire name or an alias it declares, `mcp__srv` / `mcp__srv__*` for every tool
480
486
  * of a server (including tools it lists later), a glob over the tool segment. The engine resolves the list against its OWN
481
- * roster at prepare — a host passes the names it was given. A spelling no tool name can have, `mcp__*`, or an entry that is not
482
- * a string is REFUSED at prepare (`config.tool_face_control`); a name no tool answers to is kept and told once (`onError`, phase
487
+ * roster at prepare — a host passes the names it was given. A spelling no tool name can have, `mcp__*` / `mcp__*__*` (an allowed
488
+ * list names no peer by them), or an entry that is not a string is REFUSED at prepare (`config.tool_face_control`); a name no tool answers to is kept and told once (`onError`, phase
483
489
  * `"config"`). The same compiled selector is applied on every later roster change (an MCP refresh or re-dial, the
484
490
  * deferred-search lane). Deferral is reached through ToolSearch, so a list that leaves it out defers nothing.
485
491
  *
@@ -493,8 +499,8 @@ export interface TaskSpec {
493
499
  * mounted tool set AFTER assembly — their schemas never reach `tools[]` (unlike a policy deny, which gates calls but still
494
500
  * ships the schema bytes every request — measured at zero token savings). The DENY half of the run's tool selector, read
495
501
  * exactly as a sub-agent's denied tools are: a wire name or an alias it declares; `Tool(content)` names the whole `Tool`;
496
- * `mcp__srv` / `mcp__srv__*` / a glob over the tool segment for a server's tools, `mcp__*` for every MCP tool (including tools
497
- * a server lists later). A spelling no tool name can have, `"*"`, or an entry that is not a string is REFUSED at prepare; a name
502
+ * `mcp__srv` / `mcp__srv__*` / a glob over the tool segment for a server's tools, `mcp__*` / `mcp__*__*` for every MCP tool
503
+ * (including tools a server lists later). A spelling no tool name can have, `"*"`, or an entry that is not a string is REFUSED at prepare; a name
498
504
  * no tool answers to is kept (it hides a tool of that name mounted later) and told once. A deny wins over {@link allowTools}.
499
505
  * ⚠️ A list that reaches a tool this kind of leg relies on (see {@link allowTools}) is refused; excluding a host-requested
500
506
  * structural tool (the structured-output tool) can still strand the task — the caller owns that risk.
@@ -557,7 +563,7 @@ export interface TaskSpec {
557
563
  toolMaterializeStrategy?: "swap" | "static";
558
564
  /**
559
565
  * The inline-pin counterpart of {@link deferTools} (same wire-name addressing, opposite
560
- * direction; CC 220 `alwaysLoad` 对位): names listed here are NEVER deferred — not by
566
+ * direction): names listed here are NEVER deferred — not by
561
567
  * `ToolSpec.defer`, not by the MCP constant-defer arm (besides the server's own
562
568
  * `_meta["anthropic/alwaysLoad"]` declaration this list is the only channel that keeps a chosen
563
569
  * MCP tool's full schema inlined), not by `deferTools`, not by the deferral gate under any `deferMode`. Unknown names
@@ -590,19 +596,18 @@ export interface TaskSpec {
590
596
  * arguments succeeds; activation only controls whether the model has SEEN the schema). Set
591
597
  * `false` to restore the strict posture: every call on an un-activated placeholder is rejected
592
598
  * with the ToolSearch teaching message regardless of argument shape. Governance is unaffected
593
- * either way — policy/effect/irreversibility gates key on the tool NAME maps and run upstream
594
- * of any execute.
599
+ * either way — policy/effect/irreversibility gates key on the tool NAME maps and run upstream of any execute.
595
600
  */
596
601
  deferSelfResolve?: boolean;
597
602
  /**
598
- * R2 双形轴(2026-07-18 裁): which prompt-profile face this task speaks — "simple" (default;
599
- * CC 2.1.212's short-form tool descriptions + lean system sections, what CC serves every non-claude
600
- * model id) or "classic" (the long-form face, ≈ CC 4.x-era wording — switchable per task/model,
601
- * e.g. serving classic to a model that scores better on it; center distribution rides this field).
602
- * Affects PRESENTATION only (descriptions/section wording), never tool behavior or policy.
603
- * Inherited by delegated children unless their spec overrides.
603
+ * The task's one switch on the prompt's shape: `true` adds the `lean_prompt` trait to the model's declared traits
604
+ * (`Model.promptTraits`), `false` removes it (the long, classic shape of the system sections and tool descriptions),
605
+ * absent leaves the model's answer. It moves no other trait — a model-family trait stays the model's. PRESENTATION
606
+ * only (section wording, tool descriptions), never tool behavior or policy. Inherited by delegated children (and
607
+ * workflow agents) unless their spec writes it; a value that is not a boolean refuses the task
608
+ * (`config.prompt_selector_invalid`).
604
609
  */
605
- promptProfile?: "simple" | "classic";
610
+ promptLean?: boolean;
606
611
  /**
607
612
  * core half — PER-TASK custom sub-agents. Same shape as the boot injection point
608
613
  * ({@link RunnerDeps.agents} / `SubagentToolOptions.agents`): full {@link AgentDefinition} objects
@@ -649,7 +654,7 @@ export interface TaskSpec {
649
654
  * this manager. Overrides `RunnerDeps.lspManager`. Neither seat set, or no hands ⇒ the engine mounts no `lsp` tool (the model uses grep/read_file). */
650
655
  lspManager?: import("./lsp.js").LspServerManager;
651
656
  /**
652
- * design/121 (CC 198 parity): after the agent edits a file, NEW language-server diagnostics are
657
+ * design/121: after the agent edits a file, NEW language-server diagnostics are
653
658
  * injected into the model (`<new-diagnostics>` context message, 10/file · 30 total · 4000-char cap)
654
659
  * and emitted as a structured `diagnostics` event for the shell. **Default ON** whenever the
655
660
  * preconditions hold — an LSP manager with a diagnostics registry is wired AND the roster has
@@ -660,7 +665,7 @@ export interface TaskSpec {
660
665
  * registrations hang handlers on the `classic.*` events the engine's stations raise (tool pre/post/failure/batch,
661
666
  * prompt submit, stop, compaction, permission denied). A delegated child dispatches its parent's task seat as its own
662
667
  * (the parent spec seat fills an unset one). */
663
- mods?: readonly import("./mods/kernel/index.js").ModRegistration<import("./mods/dollar.js").EngineDollar>[];
668
+ mods?: readonly import("./mods/classic-events.js").EngineModRegistration[];
664
669
  /**
665
670
  * The session's SELF-REPORTED presence for the peer directory (`agent` = what it is, `intent` = what
666
671
  * it is doing; each ≤ 120 chars). The engine never writes a directory row: the same object goes out
@@ -831,8 +836,7 @@ export interface TaskSpec {
831
836
  * request is dropped with the existing `preempt.ignored` trace instead of pausing the run.
832
837
  *
833
838
  * Delegated children inherit it: the sync / background / fork spawn lanes copy the `"disabled"` word
834
- * into every child spec (same discipline as `principal`), so a store-less run's whole tree stays
835
- * store-less.
839
+ * into every child spec (same discipline as `principal`), so a store-less run's whole tree stays store-less.
836
840
  *
837
841
  * The off switch is the WORD `"disabled"`, never `null`: a string is not nullish, so the ordinary
838
842
  * `spec ?? deps` coalesce is the whole resolution rule and no reader has to remember a special
@@ -895,8 +899,7 @@ export interface TaskSpec {
895
899
  * notebook_edit refuse these paths exactly as before). Use `additionalDirectories` when the task
896
900
  * should also write there. Same canonicalization and fail-closed skip rules as
897
901
  * `additionalDirectories`. Typical use: a deployment's own user-config directory in an interactive
898
- * assembly, where a read-classifying shell gate would otherwise consult the approver for every
899
- * config read.
902
+ * assembly, where a read-classifying shell gate would otherwise consult the approver for every config read.
900
903
  */
901
904
  additionalReadDirectories?: string[];
902
905
  /**
@@ -970,7 +973,7 @@ export interface TaskSpec {
970
973
  */
971
974
  enablePlanMode?: boolean;
972
975
  /**
973
- * Interactive-tool mounting override (CC 2.1.207/209 parity: AskUserQuestion / ExitPlanMode /
976
+ * Interactive-tool mounting override (AskUserQuestion / ExitPlanMode /
974
977
  * EnterPlanMode share one `isEnabled` gate — in non-interactive mode without an SDK permission-prompt
975
978
  * tool the tool is NOT offered at all, so the model never asks into the void). sema's automatic
976
979
  * criterion (this knob unset): a human-facing tool mounts only when the deployment has SOME face that
@@ -997,8 +1000,7 @@ export interface TaskSpec {
997
1000
  * OPT-OUT default (flipped from the pre-136 opt-IN): `undefined`/`true` = fork is AVAILABLE, bounded by the
998
1001
  * session capability (`hasSessionFork` durable store + a session id + not inside a fork — honest refusal
999
1002
  * otherwise); an EXPLICIT `false` = fork is DENIED for this task with the honest `fork.disabled` result
1000
- * (never a silent downgrade). Multi-tenant deployments that previously relied on `undefined` being OFF must
1001
- * now send `enableFork: false` explicitly (or deny per-principal via `RuntimeCaps.allowFork`).
1003
+ * (never a silent downgrade); `RuntimeCaps.allowFork` denies it per principal.
1002
1004
  */
1003
1005
  enableFork?: boolean;
1004
1006
  /**
@@ -1080,7 +1082,7 @@ export interface TaskSpec {
1080
1082
  *
1081
1083
  * Lives for this run — the steers it takes in included; a delegated child holds the entries until it ends; a resumed leg
1082
1084
  * holds them only when its spec supplies them again (they are not written into a checkpoint). An entry this grammar
1083
- * reads as nothing (`*`, `mcp__*`, a write-path or domain pattern) grants nothing and is announced at the start of the
1085
+ * reads as nothing (`*`, `mcp__*` / `mcp__*__*`, a write-path or domain pattern) grants nothing and is announced at the start of the
1084
1086
  * run (`permission.allowed_tool_not_granted`); a list holding `*` grants nothing at all. A value that is not a list of
1085
1087
  * strings refuses the run before it starts (`config.invalid_permission_rules`, with its issues).
1086
1088
  */
@@ -1164,8 +1166,7 @@ export interface TaskSpec {
1164
1166
  /**
1165
1167
  * design/164 — the SINGLE task-limit surface. Every budget axis lives here (the former top-level
1166
1168
  * `maxTokens` / `maxCostUsd` / `budgetStreamCancel` / `degrade` were folded in), and **every axis is
1167
- * DEFAULT-EMPTY**: a task with no `limits` runs with no engine-imposed turn / token / cost / wall-clock
1168
- * ceiling at all.
1169
+ * DEFAULT-EMPTY**: a task with no `limits` runs with no engine-imposed turn / token / cost / wall-clock ceiling at all.
1169
1170
  *
1170
1171
  * Consequence, stated plainly (ruled 2026-08-04): a zero-config runaway has NO task-level backstop.
1171
1172
  * What still binds is the ENGINEERING GUARDRAIL family — {@link TaskLimits.brainCallGuardrailMs} (a
@@ -1258,16 +1259,16 @@ export interface TaskSpec {
1258
1259
  streamingToolExecution?: boolean;
1259
1260
  /**
1260
1261
  * **Structured output** (1.41): constrain the task's FINAL result to this JSON schema (a typebox
1261
- * object schema). Injects a built-in `submit_output` tool whose parameters ARE this schema; the model
1262
+ * object schema). Injects a built-in `StructuredOutput` tool whose parameters ARE this schema; the model
1262
1263
  * calls it to finish, the validated object is surfaced as `TaskResult.structuredOutput`, and the task
1263
1264
  * ends. Provider-agnostic (it's just a tool). If the model can't produce a valid object within a few
1264
- * tries the task fails with `errorCode="output.invalid"`. A caller tool named `submit_output` is
1265
- * rejected (reserved). The model may still answer in prose (then `structuredOutput` is undefined) or
1266
- * `report_blocked`. Cast the result with `Static<typeof yourSchema>`.
1265
+ * tries the task fails with `errorCode="output.invalid"`. While this is set, a caller tool named
1266
+ * `StructuredOutput` is rejected (reserved). The model may still answer in prose (then `structuredOutput`
1267
+ * is undefined) or call `ReportBlocked`. Cast the result with `Static<typeof yourSchema>`.
1267
1268
  */
1268
1269
  outputSchema?: TSchema;
1269
1270
  /**
1270
- * How many times the model may **retry** a rejected `submit_output` before the task fails with
1271
+ * How many times the model may **retry** a rejected `StructuredOutput` call before the task fails with
1271
1272
  * `errorCode="output.invalid"` (only meaningful when {@link outputSchema} is set). `0` = fail on the
1272
1273
  * first invalid submit (no in-loop retry); the caller decides whether to re-run. Default `2`
1273
1274
  * (3 total attempts). Clamped to a non-negative integer. This bounds only the *in-task* retry of a
@@ -1309,7 +1310,7 @@ export interface TaskSpec {
1309
1310
  * the recovery-class forced lanes (design/374 slice 3): a prompt-too-long recovery or the guard
1310
1311
  * chain's arm B may still legitimately compact WITHIN the task — error/pressure recovery is not
1311
1312
  * a routine boundary pass, so a within-task compaction under this flag is contract-conforming.
1312
- * `attachWorkingFiles` (LONGRUN-2; **default ON since 2026-07-03** — CC 198 hard-codes its
1313
+ * `attachWorkingFiles` (LONGRUN-2; **default ON since 2026-07-03** — the reference hard-codes its
1313
1314
  * post-compact file restore, and LONGRUN-2 measured ≈2.3 extra read round-trips per compaction
1314
1315
  * without it): after each compaction, re-read the task's most recently READ files (CC
1315
1316
  * readFileState semantics; else modified-by-recency) the summary leaves out of view, with the Read tool's
@@ -1330,7 +1331,7 @@ export interface TaskSpec {
1330
1331
  maxCharsPerFile?: number;
1331
1332
  };
1332
1333
  /**
1333
- * design/169-F (CC 220 :386605-386659/:597965 lightweight-clear posture) — OPT-IN stale
1334
+ * design/169-F (lightweight-clear posture) — OPT-IN stale
1334
1335
  * tool-result offload, a projection-layer clear below full compaction: in the REQUEST sent to
1335
1336
  * the model, same-tool results older than the most recent `keepRecentPerTool` are replaced by a
1336
1337
  * short pointer ("offloaded … saved to persisted output ref …", readable back via the
@@ -1371,7 +1372,7 @@ export interface TaskSpec {
1371
1372
  * coalesced `<system-reminder>` steer per clean turn boundary, lowest lane: finalize/deadline-nudge/
1372
1373
  * diagnostics at the same boundary — and the design/130 P2 / design/132 end-game latches — all
1373
1374
  * suppress it. The listing family ALSO delivers its initial full frames on the FIRST user turn
1374
- * (prompt-adjacent, CC 209 classic wire shape) — that first-frame delivery is part of the first
1375
+ * (prompt-adjacent) — that first-frame delivery is part of the first
1375
1376
  * message, not a boundary steer, so none of the boundary gates apply to it.
1376
1377
  *
1377
1378
  * - `todoReminder`: CC 10/10 cadence — when TodoWrite (or the task tools; both mounted ⇒ the
@@ -1392,7 +1393,7 @@ export interface TaskSpec {
1392
1393
  * (re)announced; no deferred tools ⇒ permanently silent.
1393
1394
  * - `agentListing` (G1 续批 — CC `agent_listing_delta` parity; [c209-C] DEFAULT-ON, see above):
1394
1395
  * when a delegation tool built by `createSubagentTool` is mounted, the FIRST user turn carries
1395
- * the full agent-type roster ("Available agent types for the Agent tool:", CC-verbatim; + the
1396
+ * the full agent-type roster ("Available agent types for the Agent tool:"; + the
1396
1397
  * concurrency note when more than one type; + the Q4 "Models available for the 'model'
1397
1398
  * parameter:" tail when a catalog is mounted). Boundaries announce only roster drift
1398
1399
  * (adds/removals — static in practice; the delta lane serves dynamic-registration deployments
@@ -1409,7 +1410,7 @@ export interface TaskSpec {
1409
1410
  * instructions stay in the stable system prompt (`# MCP Server Instructions`, design/64 §17.3 —
1410
1411
  * deliberate CC deviation: CC injects them as reminders, sema's stable-prompt carrier is
1411
1412
  * prefix-cache-correct). This member announces only DELTAS: a mid-task disconnect of an
1412
- * instruction-bearing server ("The following MCP servers have disconnected…", CC-verbatim), and
1413
+ * instruction-bearing server ("The following MCP servers have disconnected…"), and
1413
1414
  * the add lane for a future dynamic-connect face. Added instruction text is UNTRUSTED server
1414
1415
  * text → fenced with `delimitUntrusted` (deliberate CC deviation: CC injects it raw).
1415
1416
  *
@@ -1425,8 +1426,8 @@ export interface TaskSpec {
1425
1426
  attachments?: {
1426
1427
  todoReminder?: true;
1427
1428
  /**
1428
- * task #51 口径③ — CC `r2o()` kill-switch parity (CC 198 pretty.js:479167-479171; both reminder
1429
- * producers consume it as `if (r2o() === "off") return []`, :480232/:480268). `"off"` silences the
1429
+ * task #51 口径③ — kill-switch parity (both reminder
1430
+ * producers consume it as `if (r2o() === "off") return []`). `"off"` silences the
1430
1431
  * todo/task reminder lane even when `todoReminder` is wired on (the other attachment producers are
1431
1432
  * untouched — CC's nudge gate is lane-scoped); any other value (or absence) = CC `"baseline"`.
1432
1433
  * CC resolves this from env `CLAUDE_CODE_TODO_REMINDER_MODE` / the `tengu_soft_slate_nudge` gate;
@@ -1434,7 +1435,7 @@ export interface TaskSpec {
1434
1435
  */
1435
1436
  todoReminderMode?: "baseline" | "off";
1436
1437
  /**
1437
- * `tool_search_usage_reminder` (CC 2.1.220 producer `Nop` @608915, renderer @626269): the
1438
+ * `tool_search_usage_reminder`: the
1438
1439
  * REVERSE nudge for delayed tool disclosure. When tools are deferred (design/36), a model that has
1439
1440
  * gone N turns without calling `ToolSearch` and still has unloaded schemas is told they exist and
1440
1441
  * how to load them, so "this capability does not exist, I will build a workaround" stops being the
@@ -1452,12 +1453,12 @@ export interface TaskSpec {
1452
1453
  maxFiles?: number;
1453
1454
  };
1454
1455
  /**
1455
- * SR-3 (CC 198 `budget_usd` lane, producer QFm pretty.js:480424-480428 + renderer :600225): the
1456
- * progressive $-budget readout `USD budget: $used/$total; $remaining remaining` (CC-verbatim
1456
+ * SR-3 (the `budget_usd` lane): the
1457
+ * progressive $-budget readout `USD budget: $used/$total; $remaining remaining` (fixed
1457
1458
  * template). CC-exact activation: live ONLY while the task carries an effective cost ceiling
1458
1459
  * (`maxCostUsd`, or a resource-slice ledger remaining — CC `options.maxBudgetUsd`); no ceiling ⇒
1459
1460
  * permanently silent even when opted in. CC-exact cadence: NO threshold ladder and NO throttle —
1460
- * CC mounts it on every attachment cycle whose task carries a ceiling (RB-311: CC 220 @607474 puts
1461
+ * CC mounts it on every attachment cycle whose task carries a ceiling (RB-311: CC puts
1461
1462
  * it in the SHARED producer group, so a SUBAGENT with its own ceiling sees it too — the `!agentId`
1462
1463
  * flag gates the main-agent-exclusive group next to it, not this lane), so
1463
1464
  * sema emits one line at every collected clean turn boundary; the "progression" is the numbers
@@ -1472,9 +1473,9 @@ export interface TaskSpec {
1472
1473
  */
1473
1474
  budgetUsd?: true;
1474
1475
  /**
1475
- * `total_tokens_reminder` (CC 2.1.245 producer `MPs`, renderer `Oje`):
1476
+ * `total_tokens_reminder`:
1476
1477
  * the TOKEN twin of {@link budgetUsd}. One line per collected boundary,
1477
- * `<total_tokens>N tokens left</total_tokens>`, CC-verbatim bytes.
1478
+ * `<total_tokens>N tokens left</total_tokens>`.
1478
1479
  *
1479
1480
  * Activation, CC-exact in shape and BYOM-honest in substance: opted in here AND — for the two
1480
1481
  * COUNTDOWN arms — the task carries a token ceiling (`limits.maxTokens`, or a resource-slice
@@ -1494,7 +1495,7 @@ export interface TaskSpec {
1494
1495
  * `true`-only 133 form. BREAKING for a deployment that declares a token ceiling: pre-flip it saw
1495
1496
  * no `<total_tokens>` frame without opting in, and a probe pinning that absence reds.
1496
1497
  *
1497
- * WHY THIS LANE AND NOT {@link budgetUsd}. CC 2.1.245+ ships the readout on by default (its own
1498
+ * WHY THIS LANE AND NOT {@link budgetUsd}. The reference ships the readout on by default (its own
1498
1499
  * settings schema reads "Defaults to padded-countdown"), which is the fact that reopened the
1499
1500
  * 2026-07-30 registration; the design/74 "no budget language reaches the model" default is
1500
1501
  * relaxed here for the same reason CC relaxed it. The BYOM honesty objection does not survive
@@ -1508,7 +1509,7 @@ export interface TaskSpec {
1508
1509
  */
1509
1510
  totalTokensReminder?: boolean;
1510
1511
  /**
1511
- * Which arm of the readout, CC 2.1.245's closed set (`off` / `infinite` / `fixed` /
1512
+ * Which arm of the readout, the reference's closed set (`off` / `infinite` / `fixed` /
1512
1513
  * `countdown` / `padded-countdown`); absent ⇒ CC's own default `"padded-countdown"`.
1513
1514
  *
1514
1515
  * - `countdown` — remaining = ceiling − spend, raw.
@@ -1537,6 +1538,11 @@ export interface TaskSpec {
1537
1538
  * the default was off — a probe pinning "no background_tasks frame without opt-in" reds. */
1538
1539
  backgroundTasks?: boolean;
1539
1540
  toolsDelta?: true;
1541
+ /** The notice that a declared MCP server did not connect for this message: its tools are unavailable for now, and it is
1542
+ * tried again when the next message arrives. Rides the leg's first request (a fresh leg's first user message, a resumed leg's continuation),
1543
+ * once per session per server and error. DEFAULT ON — boolean: `false` is the opt-out, a non-boolean is refused at the
1544
+ * task's door (`config.invalid_argument`). BREAKING: the notice used to ride {@link toolsDelta}, and only a turn boundary. */
1545
+ mcpUnavailable?: boolean;
1540
1546
  /** [c209-C] listing family — DEFAULT ON (boolean, not `true`: explicit `false` is the opt-out;
1541
1547
  * see the family carve-out note above). BREAKING (B-3): pre-[c209-C] the default was off. */
1542
1548
  agentListing?: boolean;
@@ -1545,9 +1551,8 @@ export interface TaskSpec {
1545
1551
  mcpInstructions?: true;
1546
1552
  };
1547
1553
  /**
1548
- * Inject a built-in `report_blocked` tool the agent can call when it cannot finish
1549
- * (missing info, permission, ambiguity). When called, the task ends with status "blocked".
1550
- * Default: true.
1554
+ * Inject a built-in `ReportBlocked` tool the agent can call when it cannot finish
1555
+ * (missing info, permission, ambiguity). When called, the task ends with status "blocked". Default: true.
1551
1556
  */
1552
1557
  enableBlockedReport?: boolean;
1553
1558
  /**
@@ -96,7 +96,7 @@ export interface TaskStream extends AsyncIterable<TaskEvent> {
96
96
  * - `"now"` — `"next"`'s delivery guarantee PLUS the boundary is manufactured early: the frame
97
97
  * takes the queue's class head and, when a turn is in flight, the engine CUTS that turn at a
98
98
  * reconciled boundary (finished tool calls keep their real results; never-started ones settle
99
- * as paired interrupted results; the CC-verbatim interruption marker lands) and the run
99
+ * as paired interrupted results; the interruption marker lands) and the run
100
100
  * CONTINUES with this input — never the run-level `interrupt()`. Best-effort accelerator:
101
101
  * with nothing in flight (idle tail, between turns) delivery is exactly `"next"`'s. Every
102
102
  * real cut is announced (`task.turn_interrupted` notice) and counts toward `maxTurns` —
@@ -202,11 +202,11 @@ export interface TaskStream extends AsyncIterable<TaskEvent> {
202
202
  * (the run-end backstop resolves "mooted" without a frame; the task's terminal events are the signal).
203
203
  *
204
204
  * design/145 §4 (additive): `opts.instructions` — the CC `/compact <instructions>` parity face.
205
- * Injected into the summarization prompt in the CC-verbatim shape (`\n\nAdditional Instructions:`),
205
+ * Injected into the summarization prompt in the standard shape (`\n\nAdditional Instructions:`),
206
206
  * REPLACING the spec-level `compaction.instructions` / default instructions for THIS pass (a
207
207
  * one-shot directive should out-rank standing configuration — sema judgment inside the superset;
208
- * CC has no spec level). A `preCompact` hook's `additionalInstructions` still APPENDS (CC 207
209
- * :348007 merge shape). Sanitized like every instructions channel (break-out tags defused, fence
208
+ * CC has no spec level). A `preCompact` hook's `additionalInstructions` still APPENDS.
209
+ * Sanitized like every instructions channel (break-out tags defused, fence
210
210
  * sentinels capped, ≤2048 code points). Concurrent `compact()` calls coalesce onto one boundary:
211
211
  * the LAST caller's instructions win that pass (all waiters share its outcome — same coalescing
212
212
  * contract as before).
@@ -302,7 +302,7 @@ export interface TaskStream extends AsyncIterable<TaskEvent> {
302
302
  * is not (its contract is "never dials or re-dials"). Core holds no MCP connection across task
303
303
  * legs, so once a server's transport closes this leg is stuck with it: every one of its tools fails
304
304
  * fast and a refresh can only keep reporting `not_connected`. This is the verb a host hangs a
305
- * "Reconnect" control on. ONE NAMED SERVER, required — CC 2.1.259's control-channel request carries
305
+ * "Reconnect" control on. ONE NAMED SERVER, required — the reference's control-channel request carries
306
306
  * a required `serverName` and has no all-servers form, and an all-servers form would CLOSE HEALTHY
307
307
  * connections to re-dial them (the stdio server owning a device or a port — the case this verb
308
308
  * exists for — is the one that cannot be re-dialed while its predecessor still holds the device).
@@ -353,7 +353,7 @@ export interface TaskStream extends AsyncIterable<TaskEvent> {
353
353
  *
354
354
  * The CUT half is the design/373 S1 turn-scoped settle, verbatim: finished tool calls keep their
355
355
  * REAL results; never-started ones settle as paired interrupted results
356
- * (`errorKind:"interrupted_never_started"`); the CC-verbatim interruption marker lands in the
356
+ * (`errorKind:"interrupted_never_started"`); the interruption marker lands in the
357
357
  * session as an engine-note user frame. Every REAL cut is announced (`task.turn_interrupted`
358
358
  * notice, `detail.cause:"user_halt"` — the steer-now landing keeps its own message and no
359
359
  * `cause` key). The STOP half: from acceptance on, NO new model turn starts — the loop ends at
@@ -44,13 +44,13 @@ export interface TaskToolCapabilities {
44
44
  /** TaskStop accepts a background agent's spawn NAME as task_id (registry name resolution only). */
45
45
  nameAddressing: boolean;
46
46
  }
47
- /** Full-capability profile = the registry-backed mount with notifications wired (CC 209 verbatim form). */
47
+ /** Full-capability profile = the registry-backed mount with notifications wired. */
48
48
  export declare const REGISTRY_TASK_TOOL_CAPS: TaskToolCapabilities;
49
49
  /** The env-direct thin-shell profile: cursor polling over a background shell, nothing else. */
50
50
  export declare const ENV_DIRECT_TASK_TOOL_CAPS: TaskToolCapabilities;
51
51
  /**
52
52
  * TaskOutput description, composed per capability. With every flag true this reproduces the registry's
53
- * pre-S2 literal byte-for-byte — the first two sentences are the CC 2.1.209 A5 deprecated form
53
+ * pre-S2 literal byte-for-byte — the first two sentences are the A5 deprecated form
54
54
  * (209-verbatim except the task-type names, mapped to sema's lanes; divergence-logged; the anchor
55
55
  * commentary lives at the registry factory). With `notification` false the <task-notification> half is
56
56
  * honestly omitted and the cursor-polling guidance (the env side's long-standing wording) is composed in
@@ -58,8 +58,8 @@ export declare const ENV_DIRECT_TASK_TOOL_CAPS: TaskToolCapabilities;
58
58
  */
59
59
  export declare function composeTaskOutputDescription(caps: TaskToolCapabilities): string;
60
60
  /**
61
- * TaskStop description, composed per capability. All-true reproduces the registry literal (CC206-B 欠账:
62
- * the named-agent bullet is CC-verbatim; CC's teammate bullet stays honestly omitted — sema's team face is
61
+ * TaskStop description, composed per capability. All-true reproduces the registry literal (
62
+ * the named-agent bullet is the reference's; its teammate bullet stays honestly omitted — sema's team face is
63
63
  * in-process, not registry-addressable); `nameAddressing:false` drops exactly that bullet (the env shell
64
64
  * has no agent-name resolution), which reproduces the env-direct literal.
65
65
  */
@@ -12,7 +12,7 @@ export declare class TaskSpecTightenError extends Error {
12
12
  * the override can only ADD denials/asks). Either alone ⇒ that one. This is the central fix: a blind spread
13
13
  * would drop the base policy entirely.
14
14
  * - **every row of the clamp table** (`CLAMP_SET`: `handsReadOnly`, `interactiveTools`, `approvalReach`, the two
15
- * containment faces, `readDenyPatterns`, `oneShot`, `memoryPersistenceCapable`, `fileHistory`, `promptForm`, and
15
+ * containment faces, `readDenyPatterns`, `oneShot`, `memoryPersistenceCapable`, `fileHistory`, `projectMemory`, `promptForm`, and
16
16
  * `memory.enabled`) — a base carrying the row's restricting value meeting an override that states a different one ⇒
17
17
  * **throw** (loosening); otherwise the restricting value wins if either side carries it, an add-only list unions, and an
18
18
  * override writing `undefined` erases nothing. `memory` is an object seat with ONE clamped member (`enabled: false`):
@@ -1,4 +1,5 @@
1
1
  import { combinePolicies } from "./tool-policy.js";
2
+ import { namesEveryTool } from "../agents/tool-filter.js";
2
3
  import { clampPermissionMode } from "./ask-origin.js";
3
4
  import { CLAMP_SEATS, clampCellOf, clampCellPath, composeClampSeat, loosensClampSeat } from "./child-clamp-seats.js";
4
5
  export class TaskSpecTightenError extends Error {
@@ -25,7 +26,7 @@ export function tightenTaskSpec(base, overrides) {
25
26
  {
26
27
  const b = base.allowTools;
27
28
  const o = overrides.allowTools;
28
- if (b !== undefined && o !== undefined && !b.includes("*")) {
29
+ if (b !== undefined && o !== undefined && !b.some(namesEveryTool)) {
29
30
  const wider = o.filter((entry) => !b.includes(entry));
30
31
  if (wider.length > 0)
31
32
  throw new TaskSpecTightenError(`tightenTaskSpec: cannot widen allowTools beyond the base list (override names ${JSON.stringify(wider)}; the override may only narrow)`);
@@ -6,7 +6,8 @@
6
6
  *
7
7
  * SINGLE SOURCE, TWO READERS. Each definition module spreads its row's `face` into the `ToolSpec` it
8
8
  * hands `defineTool` (`...TOOL_FACES.read`), so the face a tool declares at mount time IS the face
9
- * listed here — there is no second declaration to drift. The effect roster (tool-roster.ts) reads every
9
+ * listed here — there is no second declaration to drift (a definition whose schema is built per mount leaves its row's rule
10
+ * `params` to the static view, `mountRuleFace`). The effect roster (tool-roster.ts) reads every
10
11
  * axis off the MOUNTED INSTANCE; the static catalog (`describeToolCatalog()`) reads this table without
11
12
  * an env or a deps object. The conformance gate (test/tool-catalog-conformance.test.ts) proves the two
12
13
  * agree for every definition it can instantiate; the catalog completeness gate
@@ -31,11 +32,16 @@ export declare const TASK_GET_TOOL_NAME = "TaskGet";
31
32
  export declare const TASK_UPDATE_TOOL_NAME = "TaskUpdate";
32
33
  export declare const TASK_LIST_TOOL_NAME = "TaskList";
33
34
  export declare const TODO_WRITE_TOOL_NAME = "TodoWrite";
35
+ /** Reserved name of the injected structured-output tool (`StructuredOutput`). The name it retired, `submit_output`, resolves to
36
+ * nothing: the retired-name table (`RETIRED_TOOL_NAMES`) only tells a caller this one. */
37
+ export declare const OUTPUT_TOOL_NAME = "StructuredOutput";
34
38
  export declare const REFRESH_MCP_TOOLS_TOOL_NAME = "RefreshMcpTools";
35
39
  export declare const ARTIFACT_TOOL_NAME = "Artifact";
36
40
  /**
37
41
  * Every row. Order is documentation order (hands → delegation → scaffolds → memory → scheduler → host
38
- * scenarios); nothing reads the order.
42
+ * scenarios); nothing reads the order. A row's rule `params` is its definition's FULLEST mount's scalar vocabulary, the
43
+ * static view's (`catalogRuleFaceOf`); a row that declares none (StructuredOutput: its schema is each task's) can be judged
44
+ * on a leg only.
39
45
  */
40
46
  export declare const TOOL_CATALOG_ENTRIES: readonly ToolCatalogEntry[];
41
47
  /**
@@ -45,6 +51,34 @@ export declare const TOOL_CATALOG_ENTRIES: readonly ToolCatalogEntry[];
45
51
  export declare const ENGINE_CARDS: Readonly<Record<string, string>>;
46
52
  /** The declared face of one definition, by definition id — what a definition module spreads into its spec. */
47
53
  export declare function toolFace(id: string): ToolFaceDeclaration;
54
+ /** Is `contract` a contract object the catalog minted for an engine definition ({@link toolFace}) — the one record of "the engine
55
+ * declared this", which a value written by hand (the same id spelled out) is not. */
56
+ export declare function isCatalogContract(contract: unknown): boolean;
57
+ /**
58
+ * "Does this call dispatch to the ENGINE's own instance of one of these definitions?" — the one judge, read off the call's face:
59
+ * one of the engine's own mount sites mounted the tool (`engineMounted`, the one identity a caller cannot wear), and the
60
+ * contract it carries is the one the catalog gives one of `ids`. Never the name or the contract alone: a caller's tool can take
61
+ * an engine name, and a contract id can be written by hand. False for every other call — a caller's or a protocol peer's tool,
62
+ * a face rebuilt from a park row minted before the row recorded its mount site, a bare request (no face). A row minted since
63
+ * carries the mount site its roster entry had at the park, so the pre-claim recheck of its edit reads this judge's answer at park time.
64
+ */
65
+ export declare function engineMountedAs(ids: readonly string[]): (face: {
66
+ readonly engineMounted?: true;
67
+ readonly contractId: string;
68
+ } | undefined) => boolean;
69
+ /** Is this call's face the engine's own shell tool (either of its two mounts)? */
70
+ export declare const isEngineShellFace: (face: {
71
+ readonly engineMounted?: true;
72
+ readonly contractId: string;
73
+ } | undefined) => boolean;
74
+ /**
75
+ * The rule face a definition whose schema is BUILT PER MOUNT puts on its instance: its row's primaries only (none ⇒ no rule
76
+ * face). The row's `params` is the static view's vocabulary, the fullest mount's; a mount's own is read off the schema it
77
+ * carries — whatever a summarizer, a host's capabilities or a host's own schema made it (`ruleFaceOfInstance`).
78
+ */
79
+ export declare function mountRuleFace(id: string): {
80
+ primaryParams: string[];
81
+ } | undefined;
48
82
  /** Definition-id → face, for the modules that spread one (`...TOOL_FACES.read`). Frozen: a face is data. */
49
83
  export declare const TOOL_FACES: Readonly<Record<string, ToolFaceDeclaration>>;
50
84
  /**