@wrongstack/core 0.313.0 → 0.316.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/dist/chronicle/index.js +84 -6391
  2. package/dist/chronicle/legacy-journal-import.d.ts +0 -6
  3. package/dist/chronicle/metrics-ingest.d.ts +14 -0
  4. package/dist/chronicle/metrics-schema.d.ts +10 -1
  5. package/dist/chronicle/metrics-store.d.ts +20 -2
  6. package/dist/chronicle/project-server.js +98 -4874
  7. package/dist/chronicle/sink.d.ts +13 -0
  8. package/dist/chronicle/sqlite-journal.d.ts +20 -2
  9. package/dist/chunk-25LSLC3G.js +334 -0
  10. package/dist/chunk-27QIURLN.js +1073 -0
  11. package/dist/chunk-2FK4WTFF.js +207 -0
  12. package/dist/chunk-2YU4WVBW.js +134 -0
  13. package/dist/chunk-3AGWVSS7.js +4608 -0
  14. package/dist/chunk-3BDV7RL3.js +211 -0
  15. package/dist/chunk-3ECENVHL.js +325 -0
  16. package/dist/chunk-3XPVB7BA.js +135 -0
  17. package/dist/chunk-45WI72ZB.js +16884 -0
  18. package/dist/chunk-4BMVPOHO.js +3748 -0
  19. package/dist/chunk-4I7HGVVA.js +363 -0
  20. package/dist/chunk-4LCZVJVF.js +317 -0
  21. package/dist/chunk-4SJNS7OB.js +217 -0
  22. package/dist/chunk-4VWO3ZXL.js +342 -0
  23. package/dist/chunk-57GEWK5X.js +26 -0
  24. package/dist/chunk-5BMIE7QG.js +46 -0
  25. package/dist/chunk-5S437PRC.js +50 -0
  26. package/dist/chunk-5XDUGTKN.js +511 -0
  27. package/dist/chunk-5YPSXQXM.js +1443 -0
  28. package/dist/chunk-6FHWXLPT.js +10 -0
  29. package/dist/chunk-6H5GEOET.js +2406 -0
  30. package/dist/chunk-6NWEVFEL.js +151 -0
  31. package/dist/chunk-AYW5YINX.js +58 -0
  32. package/dist/chunk-B4AMLZPB.js +9 -0
  33. package/dist/chunk-B7F4WVP4.js +65 -0
  34. package/dist/chunk-BJHVULHO.js +55 -0
  35. package/dist/chunk-BPBKKBUK.js +2085 -0
  36. package/dist/chunk-BYD345OX.js +589 -0
  37. package/dist/chunk-C27KDLOX.js +279 -0
  38. package/dist/chunk-CU546ESW.js +597 -0
  39. package/dist/chunk-DLHHXUAM.js +172 -0
  40. package/dist/chunk-DOTHQSJ2.js +429 -0
  41. package/dist/chunk-DYLPMV4Q.js +711 -0
  42. package/dist/chunk-EODDVJBM.js +82 -0
  43. package/dist/chunk-F3JWNST7.js +361 -0
  44. package/dist/chunk-FC2ZGRF3.js +140 -0
  45. package/dist/chunk-FCBTO76Z.js +5786 -0
  46. package/dist/chunk-FHZVFYSL.js +396 -0
  47. package/dist/chunk-FNXVT7HF.js +52 -0
  48. package/dist/chunk-FWNLEZYG.js +259 -0
  49. package/dist/chunk-FXQLIX3K.js +211 -0
  50. package/dist/chunk-G5S3S5ZN.js +38 -0
  51. package/dist/chunk-GDQ7CZRQ.js +116 -0
  52. package/dist/chunk-GJJGJB2R.js +1374 -0
  53. package/dist/chunk-GTCU6DZ3.js +1 -0
  54. package/dist/chunk-HA4ZYA6T.js +178 -0
  55. package/dist/chunk-HI3JGZR2.js +188 -0
  56. package/dist/chunk-HMLIGAU7.js +395 -0
  57. package/dist/chunk-HXKZ7OBQ.js +303 -0
  58. package/dist/chunk-I7DALG7J.js +292 -0
  59. package/dist/chunk-IRUTEHCE.js +960 -0
  60. package/dist/chunk-IYFBFX34.js +86 -0
  61. package/dist/chunk-J2WRWR37.js +1104 -0
  62. package/dist/chunk-JFPJ6LLQ.js +129 -0
  63. package/dist/chunk-JMULFFLN.js +9 -0
  64. package/dist/chunk-JO4MGB6Z.js +1264 -0
  65. package/dist/chunk-JVKB2TBL.js +48 -0
  66. package/dist/chunk-JX7VBZDK.js +31 -0
  67. package/dist/chunk-K6BXGITA.js +931 -0
  68. package/dist/chunk-KDQJCT2J.js +45 -0
  69. package/dist/chunk-KJ2ZTQSL.js +47 -0
  70. package/dist/chunk-KZMSZV32.js +187 -0
  71. package/dist/chunk-LA7CLDRW.js +129 -0
  72. package/dist/chunk-LHOA5DWA.js +28 -0
  73. package/dist/chunk-LSMMOS2Z.js +119 -0
  74. package/dist/chunk-LX5QWLBL.js +27 -0
  75. package/dist/chunk-LXWCMQNJ.js +789 -0
  76. package/dist/chunk-M27LIEKV.js +2829 -0
  77. package/dist/chunk-MJPHJRAL.js +663 -0
  78. package/dist/chunk-MTL4O5YR.js +228 -0
  79. package/dist/chunk-NDBIPFNY.js +102 -0
  80. package/dist/chunk-NEMIWEXC.js +1199 -0
  81. package/dist/chunk-NHJ75HXY.js +1 -0
  82. package/dist/chunk-NIOAGFPB.js +1510 -0
  83. package/dist/chunk-NS52ISWS.js +355 -0
  84. package/dist/chunk-NSOFPKGT.js +5352 -0
  85. package/dist/chunk-NVIZG63R.js +757 -0
  86. package/dist/chunk-O37BQ65S.js +21 -0
  87. package/dist/chunk-OOYZPOXM.js +308 -0
  88. package/dist/chunk-OSGLYW5J.js +28 -0
  89. package/dist/chunk-PFCMSSUF.js +1640 -0
  90. package/dist/chunk-PFZO3C6H.js +14 -0
  91. package/dist/chunk-PGRVXIMY.js +158 -0
  92. package/dist/chunk-PHH7LD45.js +113 -0
  93. package/dist/chunk-PISBFBJN.js +109 -0
  94. package/dist/chunk-POOOIWE5.js +9 -0
  95. package/dist/chunk-PQNS3U7Z.js +1240 -0
  96. package/dist/chunk-QSTSJOCK.js +402 -0
  97. package/dist/chunk-RFQMOKWK.js +282 -0
  98. package/dist/chunk-RJIZEJ42.js +30 -0
  99. package/dist/chunk-RTOTNK3P.js +484 -0
  100. package/dist/chunk-RXKSDUAU.js +1172 -0
  101. package/dist/chunk-S45JPKQN.js +3317 -0
  102. package/dist/chunk-SAFHACFA.js +152 -0
  103. package/dist/chunk-SQJVFEBV.js +41 -0
  104. package/dist/chunk-SVT4RNTR.js +49 -0
  105. package/dist/chunk-SWUFN7XM.js +43 -0
  106. package/dist/chunk-SXMVYC5H.js +174 -0
  107. package/dist/chunk-SZ6AYUIZ.js +23 -0
  108. package/dist/chunk-TBRL2RCC.js +9 -0
  109. package/dist/chunk-TCCHINEF.js +655 -0
  110. package/dist/chunk-THEGTRAG.js +316 -0
  111. package/dist/chunk-TR4LQE7L.js +2256 -0
  112. package/dist/chunk-TRT2HRWZ.js +18 -0
  113. package/dist/chunk-TWJMGXCI.js +900 -0
  114. package/dist/chunk-U45AXT5D.js +1023 -0
  115. package/dist/chunk-U4FWBSO3.js +509 -0
  116. package/dist/chunk-UBGDX6FI.js +147 -0
  117. package/dist/chunk-UJILKYES.js +75 -0
  118. package/dist/chunk-ULMAQV3T.js +234 -0
  119. package/dist/chunk-VVBP6KGT.js +9 -0
  120. package/dist/chunk-W5VITDM2.js +168 -0
  121. package/dist/chunk-WAHQVNWT.js +194 -0
  122. package/dist/chunk-WBPVKEEE.js +227 -0
  123. package/dist/chunk-WGGYRBXH.js +5434 -0
  124. package/dist/chunk-WLYKU45P.js +5770 -0
  125. package/dist/chunk-WP7BVANJ.js +53 -0
  126. package/dist/chunk-WQQON3SV.js +473 -0
  127. package/dist/chunk-WQTOVMGV.js +119 -0
  128. package/dist/chunk-XBDP4QPW.js +7 -0
  129. package/dist/chunk-XEBHSJLT.js +103 -0
  130. package/dist/chunk-XF4VUMKW.js +231 -0
  131. package/dist/chunk-XQ2ECNK3.js +1 -0
  132. package/dist/chunk-Y5YXDM7D.js +74 -0
  133. package/dist/chunk-YOPAUVU4.js +2588 -0
  134. package/dist/chunk-YPT4A46F.js +362 -0
  135. package/dist/chunk-YWXT3JNM.js +425 -0
  136. package/dist/chunk-YY6APYUM.js +49 -0
  137. package/dist/chunk-Z2IJUO45.js +691 -0
  138. package/dist/chunk-ZHZ2Y2DH.js +1643 -0
  139. package/dist/chunk-ZT7JNIGX.js +152 -0
  140. package/dist/coordination/agent-monitor.d.ts +9 -1
  141. package/dist/coordination/agent-subagent-runner.d.ts +1 -1
  142. package/dist/coordination/agents/agent-prompts.d.ts +8 -0
  143. package/dist/coordination/agents/index.d.ts +33 -1
  144. package/dist/coordination/agents/index.js +184 -6269
  145. package/dist/coordination/agents/phase3-wave1-platform.d.ts +1 -3
  146. package/dist/coordination/agents/phase3-wave2-meta.d.ts +1 -3
  147. package/dist/coordination/agents/phase8-wave3-products.d.ts +1 -3
  148. package/dist/coordination/agents/phase9-wave4-platform-meta.d.ts +1 -3
  149. package/dist/coordination/agents/project-agent-identity.d.ts +11 -11
  150. package/dist/coordination/agents/types.d.ts +13 -2
  151. package/dist/coordination/brain-monitor.d.ts +30 -7
  152. package/dist/coordination/collab-debug.d.ts +1 -1
  153. package/dist/coordination/collab-pause.d.ts +1 -1
  154. package/dist/coordination/delegate-tool.d.ts +7 -5
  155. package/dist/coordination/director-kanban-queue-helpers.d.ts +1 -0
  156. package/dist/coordination/director-options.d.ts +7 -0
  157. package/dist/coordination/director-spawn-model.d.ts +17 -0
  158. package/dist/coordination/director-tools.d.ts +2 -2
  159. package/dist/coordination/director.d.ts +12 -0
  160. package/dist/coordination/dispatcher.d.ts +8 -0
  161. package/dist/coordination/fleet-bus.d.ts +35 -4
  162. package/dist/coordination/fleet-supervisor.d.ts +10 -2
  163. package/dist/coordination/fleet.d.ts +16 -7
  164. package/dist/coordination/index.d.ts +4 -0
  165. package/dist/coordination/index.js +402 -34324
  166. package/dist/coordination/kanban-dispatch-port.d.ts +2 -2
  167. package/dist/coordination/mailbox-http-router.d.ts +4 -3
  168. package/dist/coordination/mailbox-http-validation.d.ts +1 -1
  169. package/dist/coordination/mailbox-project-server.js +48 -3276
  170. package/dist/coordination/mailbox-types.d.ts +24 -6
  171. package/dist/coordination/model-tier-leader.d.ts +122 -0
  172. package/dist/coordination/model-tier.d.ts +122 -0
  173. package/dist/coordination/multi-agent-coordinator.d.ts +24 -0
  174. package/dist/coordination/origin-session.d.ts +16 -0
  175. package/dist/coordination/provider-status-tracker.d.ts +41 -5
  176. package/dist/coordination/session-note-hub.d.ts +44 -0
  177. package/dist/coordination/session-note-tool.d.ts +10 -0
  178. package/dist/core/agent.d.ts +15 -2
  179. package/dist/core/context.d.ts +22 -3
  180. package/dist/core/index.d.ts +2 -0
  181. package/dist/core/index.js +239 -12360
  182. package/dist/core/model-ref.js +5 -23
  183. package/dist/core/provider-runner.d.ts +36 -1
  184. package/dist/core/request-conversation-binding.d.ts +37 -0
  185. package/dist/core/session-notes.d.ts +25 -0
  186. package/dist/core/system-prompt-builder.d.ts +11 -2
  187. package/dist/core/system-prompt-variants.d.ts +78 -0
  188. package/dist/design/index.js +50 -1087
  189. package/dist/execution/auto-compaction-middleware.d.ts +11 -0
  190. package/dist/execution/autonomy-brain.d.ts +2 -1
  191. package/dist/execution/autonomy-prompt-contributor.d.ts +7 -2
  192. package/dist/execution/compaction-core.d.ts +4 -4
  193. package/dist/execution/eternal-autonomy.d.ts +1 -1
  194. package/dist/execution/index.d.ts +1 -1
  195. package/dist/execution/index.js +1615 -21895
  196. package/dist/execution/model-runtime.d.ts +0 -7
  197. package/dist/execution/parallel-eternal-engine.d.ts +7 -7
  198. package/dist/execution/prompt-enhancer.js +16 -535
  199. package/dist/execution/retry-policy.d.ts +31 -1
  200. package/dist/extension/index.js +7 -311
  201. package/dist/goal/index.js +33 -3435
  202. package/dist/hooks/index.js +14 -1138
  203. package/dist/hq/index.js +114 -5139
  204. package/dist/hq/persistence/event-log.d.ts +0 -1
  205. package/dist/hq/persistence.d.ts +4 -4
  206. package/dist/hq/protocol.js +21 -668
  207. package/dist/hq/publisher.d.ts +2 -0
  208. package/dist/index.d.ts +14 -11
  209. package/dist/index.js +1502 -92655
  210. package/dist/infrastructure/index.d.ts +4 -4
  211. package/dist/infrastructure/index.js +504 -5230
  212. package/dist/infrastructure/token-counter.d.ts +9 -0
  213. package/dist/kernel/events/agent-events.d.ts +77 -3
  214. package/dist/kernel/events/brain-events.d.ts +12 -0
  215. package/dist/kernel/events/provider-events.d.ts +22 -1
  216. package/dist/kernel/events/session-events.d.ts +14 -0
  217. package/dist/kernel/events/tool-events.d.ts +13 -0
  218. package/dist/kernel/index.js +14 -992
  219. package/dist/mailbox-attach.d.ts +1 -1
  220. package/dist/models/index.js +41 -1117
  221. package/dist/notifications/index.js +3 -108
  222. package/dist/observability/event-bridge.d.ts +25 -5
  223. package/dist/observability/index.d.ts +9 -8
  224. package/dist/observability/index.js +477 -631
  225. package/dist/observability/tool-usage-source.d.ts +65 -0
  226. package/dist/plugin/index.d.ts +5 -0
  227. package/dist/plugin/index.js +600 -14835
  228. package/dist/plugins/auto-review-plugin.d.ts +3 -2
  229. package/dist/plugins/review-finding-commands.d.ts +0 -8
  230. package/dist/plugins/review-finding-store.js +22 -0
  231. package/dist/plugins/review-finding-types.js +19 -0
  232. package/dist/plugins/review-report-integration.js +21 -0
  233. package/dist/plugins/review-report-store.js +20 -0
  234. package/dist/plugins/review-report-types.js +13 -0
  235. package/dist/prompts/index.js +14 -948
  236. package/dist/registry/index.js +9 -822
  237. package/dist/registry/tool-registry.d.ts +59 -9
  238. package/dist/registry-7N4O3E7W.js +14 -0
  239. package/dist/replay/index.js +6 -84
  240. package/dist/security/capabilities.d.ts +6 -0
  241. package/dist/security/file-permissions.d.ts +1 -1
  242. package/dist/security/index.js +161 -2235
  243. package/dist/security/permission-policy.d.ts +12 -1
  244. package/dist/security/secret-scrubber.d.ts +15 -0
  245. package/dist/session-catalog/index.d.ts +1 -0
  246. package/dist/session-catalog/index.js +41 -2103
  247. package/dist/session-catalog/project-server.js +59 -1435
  248. package/dist/session-catalog/protocol.d.ts +32 -1
  249. package/dist/session-catalog/registry.d.ts +17 -1
  250. package/dist/session-catalog/session-agents.d.ts +56 -0
  251. package/dist/session-catalog/store-rebuild.d.ts +14 -0
  252. package/dist/session-catalog/store-schema.d.ts +26 -0
  253. package/dist/session-catalog/store.d.ts +27 -1
  254. package/dist/session-note-attach.d.ts +9 -0
  255. package/dist/skills/index.js +35 -1578
  256. package/dist/statusline/index.d.ts +43 -0
  257. package/dist/statusline/index.js +102 -0
  258. package/dist/storage/board-store-port.d.ts +2 -2
  259. package/dist/storage/config-loader/in-project-policy.d.ts +29 -0
  260. package/dist/storage/config-loader.d.ts +3 -2
  261. package/dist/storage/file-session-writer.d.ts +4 -2
  262. package/dist/storage/goal-coordination.d.ts +6 -1
  263. package/dist/storage/goal-kanban.d.ts +4 -1
  264. package/dist/storage/index.d.ts +12 -4
  265. package/dist/storage/index.js +198 -15601
  266. package/dist/storage/input-history-store.d.ts +2 -4
  267. package/dist/storage/memory-curator.d.ts +133 -0
  268. package/dist/storage/session-agent-attribution.d.ts +39 -0
  269. package/dist/storage/session-doctor.d.ts +109 -0
  270. package/dist/storage/session-event-bridge.d.ts +5 -7
  271. package/dist/storage/session-outcome.d.ts +42 -0
  272. package/dist/storage/session-recovery.d.ts +55 -0
  273. package/dist/storage/session-store/load-session-data.d.ts +11 -0
  274. package/dist/storage/session-store/prune-helpers.d.ts +1 -1
  275. package/dist/storage/session-store/resume-session.d.ts +0 -2
  276. package/dist/storage/session-store/types.d.ts +8 -0
  277. package/dist/storage/session-store.d.ts +3 -3
  278. package/dist/storage/session-summary-tracker.d.ts +8 -1
  279. package/dist/storage/session-write-buffer.d.ts +18 -0
  280. package/dist/storage/session-writer-truncate.d.ts +2 -0
  281. package/dist/tasking/index.js +10 -676
  282. package/dist/tools/fallback-manage-tools.d.ts +6 -4
  283. package/dist/tools/index.js +52 -9590
  284. package/dist/tools/model-tier-set-tool.d.ts +66 -0
  285. package/dist/types/agent-bridge.d.ts +2 -1
  286. package/dist/types/config/autonomy.d.ts +5 -0
  287. package/dist/types/config/mcp-features.d.ts +7 -0
  288. package/dist/types/config/model-tiers.d.ts +148 -0
  289. package/dist/types/config/root.d.ts +9 -0
  290. package/dist/types/config/tools.d.ts +73 -0
  291. package/dist/types/config/ui.d.ts +1 -1
  292. package/dist/types/config.d.ts +1 -0
  293. package/dist/types/context.d.ts +2 -0
  294. package/dist/types/default-config.d.ts +6 -0
  295. package/dist/types/errors.d.ts +20 -1
  296. package/dist/types/index.d.ts +11 -9
  297. package/dist/types/index.js +131 -1342
  298. package/dist/types/multi-agent.d.ts +43 -0
  299. package/dist/types/plugin.d.ts +1 -1
  300. package/dist/types/provider-runner.d.ts +8 -0
  301. package/dist/types/provider.d.ts +15 -0
  302. package/dist/types/runtime-capability-manifest.d.ts +1 -1
  303. package/dist/types/secret-scrubber.d.ts +15 -0
  304. package/dist/types/session-markers.d.ts +37 -10
  305. package/dist/types/session-markers.js +8 -144
  306. package/dist/types/session-timeline.d.ts +197 -0
  307. package/dist/types/session-timeline.js +12 -0
  308. package/dist/types/session.d.ts +172 -11
  309. package/dist/types/system-prompt.d.ts +27 -0
  310. package/dist/utils/config-backup.d.ts +9 -1
  311. package/dist/utils/error.js +3 -4
  312. package/dist/utils/expect-defined.js +3 -9
  313. package/dist/utils/heap-watchdog.js +6 -706
  314. package/dist/utils/index.js +271 -5685
  315. package/dist/utils/message-invariants.d.ts +4 -1
  316. package/dist/utils/regex-guard.d.ts +1 -1
  317. package/dist/utils/sage-output-block.js +5 -42
  318. package/dist/utils/socket-path.d.ts +1 -1
  319. package/dist/utils/token-estimate.d.ts +6 -2
  320. package/dist/utils/wstack-paths.d.ts +2 -0
  321. package/dist/wiring/proxy-rewrite.d.ts +46 -0
  322. package/dist/wiring/proxy-rewrite.js +24 -121
  323. package/dist/worktree/index.js +6 -887
  324. package/instructions/agents/explore-companion.md +45 -18
  325. package/instructions/agents/memory-curator.md +34 -22
  326. package/instructions/coordination/director-preamble.md +12 -7
  327. package/instructions/coordination/subagent-baseline.md +26 -5
  328. package/instructions/leader-after-task.md +4 -1
  329. package/instructions/llm/chimera-review.md +30 -9
  330. package/instructions/llm/memory-curator.md +31 -0
  331. package/instructions/sections/tool/delegation-compact.md +2 -0
  332. package/instructions/sections/tool/delegation-full.md +5 -1
  333. package/instructions/sections/tool/mailbox-compact.md +5 -1
  334. package/instructions/sections/tool/mailbox-full.md +3 -0
  335. package/instructions/sections/tool/session-note-compact.md +3 -0
  336. package/instructions/sections/tool/session-note-full.md +15 -0
  337. package/instructions/system-lite.md +9 -4
  338. package/instructions/system-pro.md +66 -143
  339. package/instructions/system.md +73 -175
  340. package/package.json +32 -4
  341. package/dist/coordination/agents.d.ts +0 -8
  342. package/dist/coordination/transport.d.ts +0 -2
  343. package/dist/storage/session-writer/session-writer-summary-tracker.d.ts +0 -28
@@ -1,5 +1,3 @@
1
- import { type AgentDefinition, type RoleDispatcherSignal } from './types.js';
1
+ import { type AgentDefinition } from './types.js';
2
2
  export declare const WAVE1_AGENTS: AgentDefinition[];
3
- export declare const WAVE1_ROLE_METAS: Record<string, RoleDispatcherSignal>;
4
- export declare const WAVE1_ROLES: Set<string>;
5
3
  //# sourceMappingURL=phase3-wave1-platform.d.ts.map
@@ -1,5 +1,3 @@
1
- import { type AgentDefinition, type RoleDispatcherSignal } from './types.js';
1
+ import { type AgentDefinition } from './types.js';
2
2
  export declare const WAVE2_AGENTS: AgentDefinition[];
3
- export declare const WAVE2_ROLE_METAS: Record<string, RoleDispatcherSignal>;
4
- export declare const WAVE2_ROLES: Set<string>;
5
3
  //# sourceMappingURL=phase3-wave2-meta.d.ts.map
@@ -1,5 +1,3 @@
1
- import { type AgentDefinition, type RoleDispatcherSignal } from './types.js';
1
+ import { type AgentDefinition } from './types.js';
2
2
  export declare const WAVE3_AGENTS: AgentDefinition[];
3
- export declare const WAVE3_ROLE_METAS: Record<string, RoleDispatcherSignal>;
4
- export declare const WAVE3_ROLES: Set<string>;
5
3
  //# sourceMappingURL=phase8-wave3-products.d.ts.map
@@ -1,5 +1,3 @@
1
- import { type AgentDefinition, type RoleDispatcherSignal } from './types.js';
1
+ import { type AgentDefinition } from './types.js';
2
2
  export declare const WAVE4_AGENTS: AgentDefinition[];
3
- export declare const WAVE4_ROLE_METAS: Record<string, RoleDispatcherSignal>;
4
- export declare const WAVE4_ROLES: Set<string>;
5
3
  //# sourceMappingURL=phase9-wave4-platform-meta.d.ts.map
@@ -20,26 +20,26 @@
20
20
  import { existsSync } from 'node:fs';
21
21
  import { CAPTURE_COOLDOWN_MS, CAPTURE_MAX_PER_SESSION } from './project-agent-capture-window.js';
22
22
  import type { RoleKnowledgeManifest } from './project-agent-identity-types.js';
23
- export { type AutoOptimizeDecision, type AutoOptimizeEvent, type AutoOptimizePolicy, type AutoOptimizePolicyOverrides, DEFAULT_AUTO_OPTIMIZE_POLICY, evaluateAutoOptimize, LearningOptimizationScheduler, type LearningOptimizationSchedulerOptions, resolveAutoOptimizePolicy, } from './project-agent-auto-optimize.js';
24
- export { CAPTURE_SESSION_WINDOW_MS, resetCaptureWindow, resetCaptureWindows, } from './project-agent-capture-window.js';
23
+ export { DEFAULT_AUTO_OPTIMIZE_POLICY, evaluateAutoOptimize, LearningOptimizationScheduler, resolveAutoOptimizePolicy } from './project-agent-auto-optimize.js';
24
+ export { CAPTURE_SESSION_WINDOW_MS, resetCaptureWindow, resetCaptureWindows } from './project-agent-capture-window.js';
25
25
  export { loadProjectAgentConfig } from './project-agent-config-io.js';
26
26
  export { validateProjectAgentConfig } from './project-agent-config-validation.js';
27
- export { buildConsolidationInstruction, type ConsolidationMetadata, clearProjectAgentConsolidated, consolidatedDocumentPath, isConsolidated, loadConsolidationMetadata, loadProjectAgentConsolidated, readRawLearnedEntries, type SaveConsolidationOptions, saveProjectAgentConsolidated, } from './project-agent-consolidation.js';
28
- export { DIRECTIVE_QUARANTINE_MAX_UTILITY, DIRECTIVE_QUARANTINE_MIN_APPLIED, type DirectiveOutcomeResult, directiveWasApplied, recordDirectiveOutcomes, } from './project-agent-directive-outcome.js';
27
+ export { buildConsolidationInstruction, clearProjectAgentConsolidated, consolidatedDocumentPath, isConsolidated, loadConsolidationMetadata, loadProjectAgentConsolidated, readRawLearnedEntries, saveProjectAgentConsolidated } from './project-agent-consolidation.js';
28
+ export { DIRECTIVE_QUARANTINE_MAX_UTILITY, DIRECTIVE_QUARANTINE_MIN_APPLIED, directiveWasApplied, recordDirectiveOutcomes } from './project-agent-directive-outcome.js';
29
29
  export type { CreateProjectAgentInput, LearnedCaptureResult, ProjectAgentConfig, ProjectAgentProfile, RoleKnowledgeManifest, } from './project-agent-identity-types.js';
30
30
  export { splitLearnedEntries, tokenOverlap } from './project-agent-learning-entries.js';
31
- export { classifyLearnedEntry, LEARNED_ENTRY_MAX_CHARS, LEARNED_HARD_LIMIT, LEARNED_SOFT_LIMIT, type LearnedEntryCategory, normalizeLearnedEntry, } from './project-agent-learning-normalize.js';
32
- export { loadProjectAgentLearningPolicy, type ProjectAgentLearningPolicy, recordProjectAgentOptimizePass, updateProjectAgentLearningPolicy, } from './project-agent-learning-policy.js';
33
- export { DIRECTIVE_PROVEN_MIN_APPLIED, DIRECTIVE_PROVEN_MIN_UTILITY, decomposeLearnedEntry, directiveTrials, directiveUtility, enforceLearnedBudget, isProvenDirective, mergeStructuredEntries, parseLearnedEntryStamp, parseStructuredLearnedEntriesFromContent, renderLearnedInstructions, type StructuredLearnedEntry, } from './project-agent-learning-structured.js';
34
- export { type LearningOptimizerLlm, type OptimizeLearningOptions, type OptimizeLearningResult, optimizeProjectAgentLearning, unwrapWholeDocumentFence, } from './project-agent-optimizer.js';
31
+ export { classifyLearnedEntry, LEARNED_ENTRY_MAX_CHARS, LEARNED_HARD_LIMIT, LEARNED_SOFT_LIMIT, normalizeLearnedEntry } from './project-agent-learning-normalize.js';
32
+ export { loadProjectAgentLearningPolicy, recordProjectAgentOptimizePass, updateProjectAgentLearningPolicy } from './project-agent-learning-policy.js';
33
+ export { DIRECTIVE_PROVEN_MIN_APPLIED, DIRECTIVE_PROVEN_MIN_UTILITY, decomposeLearnedEntry, directiveTrials, directiveUtility, enforceLearnedBudget, isProvenDirective, mergeStructuredEntries, parseLearnedEntryStamp, parseStructuredLearnedEntriesFromContent, renderLearnedInstructions } from './project-agent-learning-structured.js';
34
+ export { optimizeProjectAgentLearning, unwrapWholeDocumentFence } from './project-agent-optimizer.js';
35
35
  export { assertProjectAgentRole } from './project-agent-paths.js';
36
- export { type QuarantinedDirective, quarantinePath, readQuarantinedDirectives, retiredDirectivesToWarnAbout, scrubRetiredLines, } from './project-agent-quarantine.js';
37
- export { buildSkillDistillInstruction, clearProjectSkillAugmentation, DEFAULT_EAGER_SKILL_LIMIT, listProjectSkillAugmentations, loadProjectSkillAugmentation, loadSkillAffinity, rankRoleSkills, recordSkillLoad, recordSkillOutcome, renderSkillAugmentation, resolveRoleSkillCandidates, routeDirectiveToSkill, SKILL_AUGMENTATION_MAX_BYTES, SKILL_EVIDENCE_HALF_LIFE_DAYS, type SkillAffinity, type SkillAffinityEntry, saveProjectSkillAugmentation, scoreSkillAffinity, setSkillPinned, } from './project-agent-skill-layer.js';
36
+ export { quarantinePath, readQuarantinedDirectives, retiredDirectivesToWarnAbout, scrubRetiredLines } from './project-agent-quarantine.js';
37
+ export { buildSkillDistillInstruction, clearProjectSkillAugmentation, DEFAULT_EAGER_SKILL_LIMIT, listProjectSkillAugmentations, loadProjectSkillAugmentation, loadSkillAffinity, rankRoleSkills, recordSkillLoad, recordSkillOutcome, renderSkillAugmentation, resolveRoleSkillCandidates, routeDirectiveToSkill, SKILL_AUGMENTATION_MAX_BYTES, SKILL_EVIDENCE_HALF_LIFE_DAYS, saveProjectSkillAugmentation, scoreSkillAffinity, setSkillPinned } from './project-agent-skill-layer.js';
38
38
  export { CAPTURE_COOLDOWN_MS, CAPTURE_MAX_PER_SESSION };
39
39
  export { listProjectAgentRoles, refreshProjectAgentIdentity, resetProjectAgentIdentity, updateProjectAgentConfig, updateProjectAgentIdentity, updateProjectAgentKnowledge, updateProjectAgentLearned, } from './project-agent-files.js';
40
40
  export { createProjectAgent, loadProjectAgentProfile, slugifyProjectAgentRole, } from './project-agent-profile.js';
41
41
  export { applyProjectAgentConfig, createProjectAgentRoster, } from './project-agent-roster.js';
42
- export { canCaptureNewLearned, captureLearnedFromAgentOutput, captureLearnedFromAgentOutputDetailed, detectLearnedConflicts, getProjectAgentLearnStats, hintLearnedNeedsSummarization, listProjectAgentLearnedEntries, loadProjectAgentLearned, parseStructuredLearnedEntries, type ProjectAgentLearnStats, } from './project-agent-capture.js';
42
+ export { canCaptureNewLearned, captureLearnedFromAgentOutput, captureLearnedFromAgentOutputDetailed, detectLearnedConflicts, getProjectAgentLearnStats, hintLearnedNeedsSummarization, listProjectAgentLearnedEntries, loadProjectAgentLearned, parseStructuredLearnedEntries } from './project-agent-capture.js';
43
43
  /**
44
44
  * Load the project-level identity appendix for a given role.
45
45
  * Appended to the subagent prompt after the base role prompt and policy.
@@ -41,6 +41,12 @@ export interface AgentCapability {
41
41
  * Optional `RoleDispatcherSignal` attached to the role. Wave-1/2/3/4 roles
42
42
  * carry this to make the "why this role wins" rationale auditable; legacy
43
43
  * roles omit it and the dispatcher falls back to `summary` + `keywords`.
44
+ *
45
+ * Set it on the definition itself — `ROLE_DISPATCH_RATIONALE` in
46
+ * `agents/index.ts` is derived from the catalog, and the LLM classifier
47
+ * reads `differentiatesFrom` from here. For a long stretch the wave files
48
+ * declared these blocks but only spread `.signals` into `keywords`, so the
49
+ * rationale and contrast text were authored and then dropped on the floor.
44
50
  */
45
51
  rationale?: RoleDispatcherSignal | undefined;
46
52
  }
@@ -57,8 +63,13 @@ export interface RoleDispatcherSignal {
57
63
  signals: readonly string[];
58
64
  /**
59
65
  * One-line description of how this role differs from its closest sibling
60
- * ("X finds defects; Y designs threats before code exists"). Used by tests
61
- * to assert distinct boundaries and by docs to explain routing.
66
+ * ("X finds defects; Y designs threats before code exists").
67
+ *
68
+ * Handed to the LLM dispatch classifier as a `vs. siblings:` line beside the
69
+ * candidate's summary (see `makeLLMClassifier`), which is the moment it
70
+ * matters: the classifier only runs when the heuristic could not separate
71
+ * roles that share vocabulary. Also asserted by
72
+ * `tests/coordination/role-dispatch-rationale.test.ts`.
62
73
  */
63
74
  differentiatesFrom: string;
64
75
  }
@@ -41,6 +41,16 @@ export type { BrainInterventionKind };
41
41
  export interface BrainInterventionInput {
42
42
  subject: string;
43
43
  body: string;
44
+ /**
45
+ * The session whose distress triggered this intervention.
46
+ *
47
+ * The steer has to reach THAT leader. A host that resolves the target from
48
+ * its own "current session" instead delivers the correction to whichever
49
+ * session is in front — with several sessions live under one host, the tab
50
+ * that is struggling gets nothing and an unrelated one is told to change
51
+ * approach. Undefined only when the signal itself carried no session.
52
+ */
53
+ sessionId?: string | undefined;
44
54
  }
45
55
  /**
46
56
  * How a detected distress signal is resolved.
@@ -132,14 +142,8 @@ export type BrainMonitorTunables = Partial<Pick<BrainMonitorOptions, 'enabled' |
132
142
  export declare const DEFAULT_FILE_EDIT_TOOLS: readonly string[];
133
143
  export declare class BrainMonitor {
134
144
  private readonly opts;
135
- private readonly failStreaks;
136
- private errorTimestamps;
137
- private readonly editTimestamps;
138
- private readonly lastEngagedAt;
145
+ private readonly bySession;
139
146
  private readonly unsubscribers;
140
- private engaging;
141
- private activeRuns;
142
- private lastProgressAt;
143
147
  private stallTimer;
144
148
  private toolFailureStreak;
145
149
  private errorStormCount;
@@ -164,6 +168,25 @@ export declare class BrainMonitor {
164
168
  private hostStarted;
165
169
  /** Resolve the leader's own session id for event filtering. */
166
170
  private resolveLeaderSessionId;
171
+ /**
172
+ * The signal state for one session, created on first sight.
173
+ *
174
+ * A host that pins `leaderSessionId` (the CLI, one session per process) only
175
+ * ever reaches one bucket. A host that does not (the WebUI, four tabs on one
176
+ * runtime) gets one bucket per tab, which is the point.
177
+ */
178
+ private stateFor;
179
+ /**
180
+ * Drop buckets for sessions that have been quiet longer than any signal
181
+ * window. Without this a long-lived host accumulates one bucket per session
182
+ * it has ever seen — cheap individually, unbounded in aggregate.
183
+ *
184
+ * Cooldowns are the one thing worth losing sleep over here: pruning a bucket
185
+ * resets its rate limit. That is acceptable only because the prune horizon is
186
+ * strictly longer than the cooldown, so a pruned session could have engaged
187
+ * again anyway.
188
+ */
189
+ private pruneIdleSessions;
167
190
  constructor(opts: BrainMonitorOptions);
168
191
  /** Resolve the live-tunable subset onto the instance. Shared by the constructor and `reconfigure`. */
169
192
  private applyTunables;
@@ -40,7 +40,7 @@ export declare const DEFAULT_MAX_TARGET_FILES = 30;
40
40
  * These flow through the FleetBus so the host can display them in the UI.
41
41
  */
42
42
  export { DirectorAlertLevel } from './collab-debug-types.js';
43
- export type { BugFinding, CollabBudgetConfig, BugFoundPayload, CollabBudgetOverrides, CollabBudgetWarningPayload, CollabDebugReport, CollabSessionOptions, CriticConcern, CriticEvaluation, CriticEvaluationPayload, DirectorAlert, DirectorCancelCollabPayload, RefactorPlan, RefactorPlanPayload, RefactorPhase, SharedFileEntry, SharedFileSnapshot, } from './collab-debug-types.js';
43
+ export type { BugFinding, CollabBudgetConfig, CollabBudgetOverrides, CollabBudgetWarningPayload, CollabDebugReport, CollabSessionOptions, CriticConcern, CriticEvaluation, DirectorAlert, DirectorCancelCollabPayload, RefactorPlan, RefactorPhase, SharedFileEntry, SharedFileSnapshot } from './collab-debug-types.js';
44
44
  import type { CollabDebugReport, CollabSessionOptions, DirectorAlert, SharedFileSnapshot } from './collab-debug-types.js';
45
45
  export declare class CollabSession extends EventEmitter {
46
46
  readonly sessionId: string;
@@ -1,5 +1,5 @@
1
1
  import type { CollaborationBus, InjectedToolResult } from './collab-bus.js';
2
- import type { ToolCallPipelinePayload } from '../core/agent.js';
2
+ import type { ToolCallPipelinePayload } from '../core/agent-types.js';
3
3
  import type { Middleware } from '../kernel/pipeline.js';
4
4
  /**
5
5
  * collabPauseMiddleware — gates the agent's `toolCall` pipeline on
@@ -62,11 +62,13 @@ export interface CreateDelegateToolOptions {
62
62
  subagentTimeoutBufferMs?: number | undefined;
63
63
  /**
64
64
  * Host EventBus. When supplied, `delegate` emits `delegate.started`
65
- * (before it blocks on the subagent) and `delegate.completed` (once the
66
- * subagent settles) so UIs / the Telegram bridge can render readable
67
- * start/finish lines instead of inferring them from the truncated
68
- * `tool.executed` JSON preview. Optional emits are best-effort and a
69
- * missing bus never affects delegation behaviour.
65
+ * (before it blocks on the subagent) and, once the subagent settles, both
66
+ * `delegate.completed` and `subagent.done` see `emitDelegateCompleted`
67
+ * below for why the outcome goes out on two names. UIs / the Telegram
68
+ * bridge render readable start/finish lines from these instead of
69
+ * inferring them from the truncated `tool.executed` JSON preview.
70
+ * Optional — emits are best-effort and a missing bus never affects
71
+ * delegation behaviour.
70
72
  */
71
73
  events?: EventBus | undefined;
72
74
  }
@@ -14,6 +14,7 @@ export interface KanbanQueueInput {
14
14
  role?: string | undefined;
15
15
  provider?: string | undefined;
16
16
  model?: string | undefined;
17
+ tier?: string | undefined;
17
18
  fallbackModels?: string[] | undefined;
18
19
  tools?: string[] | undefined;
19
20
  allowedCapabilities?: string[] | undefined;
@@ -1,3 +1,4 @@
1
+ import type { Config } from '../types/config.js';
1
2
  import type { Logger } from '../types/logger.js';
2
3
  import type { MultiAgentConfig, SubagentConfig, SubagentRunner, TaskResult, TaskSpec } from '../types/multi-agent.js';
3
4
  import type { SessionWriter } from '../types/session.js';
@@ -93,6 +94,12 @@ export interface DirectorOptions {
93
94
  maxLeaderContextLoad?: number | undefined;
94
95
  /** Provider's max context window in tokens. */
95
96
  maxContext?: number | (() => number | undefined) | undefined;
97
+ /**
98
+ * Live app config source for the deterministic model-tier layer. A getter is
99
+ * preferred so tier edits (WebUI / TUI / `/tier`) take effect on the next
100
+ * spawn without a restart, exactly like `modelMatrix`.
101
+ */
102
+ appConfig?: Config | (() => Config | undefined) | undefined;
96
103
  /** Per-task model matrix. */
97
104
  modelMatrix?: ModelMatrixSource | undefined;
98
105
  /** Optional git-worktree manager for Director fleet isolation. */
@@ -1,9 +1,26 @@
1
+ import type { Config } from '../types/config.js';
1
2
  import type { Logger } from '../types/logger.js';
2
3
  import type { SubagentConfig } from '../types/multi-agent.js';
3
4
  import type { ModelMatrixSource } from './model-matrix.js';
5
+ import type { ResolvedTierTarget } from './model-tier.js';
4
6
  import type { ProviderModelStatusTracker } from './provider-status-tracker.js';
5
7
  export interface ResolveDirectorSpawnModelOptions {
6
8
  modelMatrix?: ModelMatrixSource | undefined;
9
+ /**
10
+ * Live config, used to resolve the deterministic model-tier layer. Optional:
11
+ * when omitted (or when `modelTiers.enabled` is not true) the tier step is
12
+ * skipped entirely and resolution behaves exactly as it did before tiers
13
+ * existed.
14
+ */
15
+ config?: Config | undefined;
16
+ /**
17
+ * Tier named explicitly by the caller — the `tier` argument on `delegate` /
18
+ * `spawn_subagent`, or a Kanban task's persisted route. Outranks the routing
19
+ * table but still loses to an explicit provider/model.
20
+ */
21
+ tier?: string | undefined;
22
+ /** Observability hook: fired when a tier actually contributed a decision. */
23
+ onTierResolved?: ((resolved: ResolvedTierTarget) => void) | undefined;
7
24
  sessionProvider?: string | undefined;
8
25
  sessionModel?: string | undefined;
9
26
  statusTracker?: ProviderModelStatusTracker | undefined;
@@ -3,9 +3,9 @@ import type { Tool } from '../types/tool.js';
3
3
  import type * as Host from './director-host-contracts.js';
4
4
  export { makeAskResultTool, makeAskTool, makeAssignTool, makeAwaitTasksTool, makeFleetTool, makeRollUpTool, makeTerminateAllTool, makeTerminateTool, } from './director-basic-tools.js';
5
5
  export { makeCollabDebugTool, makeFleetEmitTool, makeWorkCompleteTool, } from './director-collab-tools.js';
6
- export { makeQualityGateTool } from './director-quality-gate-tool.js';
7
6
  export { makeMutationTestTool } from './director-mutation-test-tool.js';
8
- export { applyMutation, type MutationKind, type MutationPlanItem, parseMutationReport, planMutations, } from './mutation-engine.js';
7
+ export { makeQualityGateTool } from './director-quality-gate-tool.js';
8
+ export { applyMutation, parseMutationReport, planMutations } from './mutation-engine.js';
9
9
  export declare function makeSpawnTool(director: Host.DirectorAdmissionPort, roster?: Record<string, SubagentConfig>): Tool;
10
10
  export declare function makeKanbanQueueTool(director: Host.DirectorLeaseRecoveryPort, roster?: Record<string, SubagentConfig>): Tool;
11
11
  //# sourceMappingURL=director-tools.d.ts.map
@@ -86,6 +86,7 @@ export declare class Director implements DirectorFleetHost, ICoordinator {
86
86
  leaderContextPressure: number;
87
87
  readonly maxLeaderContextLoad: number;
88
88
  private readonly maxContext;
89
+ private readonly appConfig?;
89
90
  readonly modelMatrix?: ModelMatrixSource | undefined;
90
91
  workCompleteFlag: boolean;
91
92
  private readonly btwNotes;
@@ -142,6 +143,17 @@ export declare class Director implements DirectorFleetHost, ICoordinator {
142
143
  retargetPendingTask(taskId: string, subagentId: string | undefined): boolean;
143
144
  terminate(subagentId: string): Promise<void>;
144
145
  terminateAll(): Promise<void>;
146
+ /**
147
+ * Terminate every subagent spawned by ONE session.
148
+ *
149
+ * What a tab's Stop button needs. `terminateAll()` is the wrong tool once
150
+ * several sessions share a director: it would kill three other tabs' fleets
151
+ * along with this one's. Aborting the leader's run only unwinds workers the
152
+ * leader is BLOCKED on (the delegate tool terminates those itself); anything
153
+ * started with `spawn_subagent` + `assign_task` keeps running because nobody
154
+ * asked it to stop. This is that ask, scoped to the session that owns them.
155
+ */
156
+ terminateSession(sessionId: string): Promise<void>;
145
157
  remove(subagentId: string): Promise<void>;
146
158
  private clearSubagentIdleRetirement;
147
159
  private armSubagentIdleRetirement;
@@ -43,11 +43,19 @@ export interface DispatchResult {
43
43
  * Provider-agnostic classifier seam. Given the task and the candidate agents
44
44
  * (role + summary), return the chosen role (and optional reason), or null to
45
45
  * decline. Wire via `makeLLMClassifier`.
46
+ *
47
+ * `differentiatesFrom` is present for roles that declare a
48
+ * `capability.rationale`. The classifier only ever runs on an ambiguous task —
49
+ * that is exactly when two siblings share vocabulary and a summary alone
50
+ * cannot separate them — so the contrast line is the most useful thing to hand
51
+ * it. Optional: legacy roles omit the rationale and the classifier falls back
52
+ * to `summary` for those.
46
53
  */
47
54
  export type DispatchClassifier = (task: string, candidates: {
48
55
  role: string;
49
56
  name: string;
50
57
  summary: string;
58
+ differentiatesFrom?: string | undefined;
51
59
  }[]) => Promise<{
52
60
  role: string;
53
61
  reason?: string | undefined;
@@ -58,6 +58,17 @@ export declare class FleetBus {
58
58
  * lean on summaries for the next task").
59
59
  */
60
60
  export interface FleetUsage {
61
+ /**
62
+ * Cumulative spend for the WHOLE run, retired subagents included.
63
+ *
64
+ * This used to be decremented when a subagent was retired, which made the
65
+ * figure mean "currently-live subagents" while every reader — the director's
66
+ * budget reasoning, `fleet.json`, `director-state.json` — treated it as the
67
+ * run total. A long orchestration that retires workers as it goes therefore
68
+ * under-reported its own spend, and the number could only ever fall.
69
+ * Retirement now moves a subagent's contribution into {@link retired}
70
+ * instead of erasing it.
71
+ */
61
72
  total: {
62
73
  input: number;
63
74
  output: number;
@@ -65,7 +76,22 @@ export interface FleetUsage {
65
76
  cacheWrite: number;
66
77
  cost: number;
67
78
  };
79
+ /** Live subagents only — retirement drops the entry to bound memory. */
68
80
  perSubagent: Record<string, SubagentUsageSnapshot>;
81
+ /**
82
+ * The share of {@link total} contributed by subagents no longer in
83
+ * `perSubagent`. `total` minus `retired` is the live-only figure the old
84
+ * decrementing behavior produced, so any consumer that genuinely wants
85
+ * "currently live" can still compute it.
86
+ */
87
+ retired: {
88
+ subagents: number;
89
+ input: number;
90
+ output: number;
91
+ cacheRead: number;
92
+ cacheWrite: number;
93
+ cost: number;
94
+ };
69
95
  }
70
96
  export interface SubagentUsageSnapshot {
71
97
  subagentId: string;
@@ -93,6 +119,7 @@ export declare class FleetUsageAggregator {
93
119
  private readonly metaLookup?;
94
120
  private readonly perSubagent;
95
121
  private readonly total;
122
+ private readonly retired;
96
123
  private readonly unsub;
97
124
  constructor(bus: FleetBus, priceLookup?: ((subagentId: string, provider?: string | undefined, model?: string | undefined) => {
98
125
  input?: number | undefined;
@@ -104,10 +131,14 @@ export declare class FleetUsageAggregator {
104
131
  model?: string | undefined;
105
132
  } | undefined) | undefined);
106
133
  /**
107
- * Remove a terminated subagent's data from the aggregator and subtract its
108
- * contribution from the running totals. Call this when a subagent is removed
109
- * from the fleet so the aggregator doesn't accumulate unbounded data for
110
- * entities that will never emit events again.
134
+ * Drop a terminated subagent's per-agent entry, folding its spend into
135
+ * {@link FleetUsage.retired} so the run total stays whole.
136
+ *
137
+ * The per-agent map is what needed bounding — one entry per spawn, for
138
+ * entities that will never emit again. Deducting from `total` as well (the
139
+ * original behavior) also un-spent real tokens: a run that retires each
140
+ * worker on completion reported a total that shrank as it made progress, and
141
+ * the director budgets against that number.
111
142
  */
112
143
  removeSubagent(subagentId: string): void;
113
144
  /** Disposes all fleet-bus subscriptions. Call when the aggregator is no longer needed. */
@@ -60,8 +60,16 @@ export interface FleetSupervisorActions {
60
60
  }>;
61
61
  /** High-priority steer mail to one agent. */
62
62
  steerAgent(subagentId: string, subject: string, body: string): Promise<void>;
63
- /** Status/steer mail to the session leader. */
64
- notifyLeader(subject: string, body: string): Promise<void>;
63
+ /**
64
+ * Status note to the session leader.
65
+ *
66
+ * `subagentId` names the worker the note is ABOUT, when there is one. The
67
+ * host resolves the conversation from it: with several tabs sharing this
68
+ * fleet, "the session leader" is not one address, and a note about tab 3's
69
+ * worker sent to the boot tab's leader reaches nobody who can act on it.
70
+ * Omitted for fleet-wide observations, which fall back to the host session.
71
+ */
72
+ notifyLeader(subject: string, body: string, subagentId?: string): Promise<void>;
65
73
  /** Abort a subagent (only used when config.allowTerminate). */
66
74
  terminate(subagentId: string): Promise<void>;
67
75
  }
@@ -1,8 +1,3 @@
1
- /**
2
- * Pre-built subagent role configurations for the WrongStack fleet.
3
- * These can be passed to `MultiAgentHost.spawn()` or used as templates
4
- * for the director's roster.
5
- */
6
1
  import type { SubagentConfig } from '../types/multi-agent.js';
7
2
  /**
8
3
  * Audit Log Agent — analyzes session logs, event streams, and traces.
@@ -24,12 +19,26 @@ export declare const REFACTOR_PLANNER_AGENT: SubagentConfig;
24
19
  * Use for: CI checks, pre-release audits, dependency vulnerability scanning.
25
20
  */
26
21
  export declare const SECURITY_SCANNER_AGENT: SubagentConfig;
22
+ /**
23
+ * Read-only discovery surface for the Explore Companion.
24
+ *
25
+ * Index tools first (the point of the role: save the leader those calls).
26
+ * `codebase-impact-analysis` is read-only blast radius — the leader is about
27
+ * to edit; the companion should say who breaks. File tools are fallbacks
28
+ * when the index is cold or the probe needs a cited `file:line`.
29
+ *
30
+ * Deliberately omitted from `TOOLS.read`:
31
+ * - `search` — web search, not codebase search
32
+ * - `mailbox` — cross-session mail; same-session talk is `session_note`
33
+ * (injected by the host, like `submit_result`)
34
+ */
35
+ export declare const EXPLORE_COMPANION_TOOLS: readonly string[];
27
36
  /**
28
37
  * Explore Companion — state-triggered background codebase explorer.
29
38
  * Runs behind a leader agent: triggered by the in-progress state of the
30
39
  * work (unread-file edits, zero-hit searches, todo flips, explicit asks),
31
- * scans the codebase read-only, and feeds findings back via mailbox
32
- * `result`/`btw` + `submit_result`. See
40
+ * scans the codebase read-only, and feeds findings back via `submit_result`
41
+ * (the host mails a compact copy to the leader). See
33
42
  * docs/architecture/explore-companion-subagent.md.
34
43
  *
35
44
  * Operational role — deliberately NOT in ALL_AGENT_DEFINITIONS (like
@@ -28,6 +28,8 @@ export type { ICoordinator } from './icoordinator.js';
28
28
  export type { IFleetManager } from './ifleet-manager.js';
29
29
  export { LargeAnswerStore } from './large-answer-store.js';
30
30
  export { type MailToolsOptions, makeMailInboxTool, makeMailSendTool } from './mail-tools.js';
31
+ export { postSessionNote, SessionNoteHub, sessionNoteHub, type SessionNoteInbox, type SessionNotePost, type SessionNotePostResult, } from './session-note-hub.js';
32
+ export { makeSessionNoteTool } from './session-note-tool.js';
31
33
  export type { MailboxActionInput, MailboxActionResult, MailboxMessageAction, } from './mailbox-actions.js';
32
34
  export { actionToAckInput } from './mailbox-actions.js';
33
35
  export { parseMailboxAckInput, parseMailboxQueryInput, parseMailboxSendInput, } from './mailbox-codecs.js';
@@ -46,6 +48,8 @@ export { applyMailboxSendPolicy, type MailboxResolver, type MailboxToolOptions,
46
48
  export type { AgentHeartbeatInput, AgentRegistrationInput, ClientHeartbeatInput, ClientRegistrationInput, ClientSource, ClientStatus, Mailbox, MailboxAckBatchInput, MailboxAckInput, MailboxAgentStatus, MailboxAudience, MailboxMessage, MailboxMessageProjection, MailboxMessageType, MailboxQuery, MailboxRecipientState, MailboxSendInput, MailboxTaskContext, PurgeOptions, PurgeResult, ReadReceipts, RegisteredAgent, } from './mailbox-types.js';
47
49
  export { isMailboxLeader, isMailboxMessageVisibleTo, MAILBOX_TYPE_PROPERTIES, mailboxIdentityBase, normalizeRecipient, SESSION_RECIPIENT_PREFIX, sessionRecipient, } from './mailbox-types.js';
48
50
  export { isValidMatrixKey, MATRIX_PHASE_KEYS, type MatrixKeyKind, type ModelMatrixResolution, type ModelMatrixResolutionSource, type ModelReference, matrixKeyKind, phaseForRole, type ResolvedModelTarget, type ResolvedSubagentModelTarget, resolveImplementationModelTarget, resolveModelMatrix, resolveModelMatrixResolution, resolveModelTargetFromEntry, resolveSubagentModelTarget, roleNeedsIndependentReviewModel, sameModelReference, } from './model-matrix.js';
51
+ export { activeTierConfig, applyTierToSubagentConfig, classifyTier, DEFAULT_TIER_ID, isConfiguredTier, listTierIds, type ModelTierBudget, type ModelTierDecision, type ModelTierSource, type ResolvedTierTarget, resolveTier, tierBudget, tierLevel, tierModelTarget, } from './model-tier.js';
52
+ export { evaluateLeaderTierSwitch, evaluateSwitchEconomics, type LeaderTierRefusalCode, type LeaderTierSwitchRequest, type LeaderTierVerdict, leaderTierPolicy, type ResolvedLeaderTierPolicy, type TierModelEconomics, tierRank, } from './model-tier-leader.js';
49
53
  export { DefaultMultiAgentCoordinator, type MultiAgentCoordinatorOptions, } from './multi-agent-coordinator.js';
50
54
  export { NULL_FLEET_BUS } from './null-fleet-bus.js';
51
55
  export { detectEcosystem, getFullPackageLog, getManifestPackages, getPackageAuthor, getPackagesByAgent, type PackageAuthorEntry, type PackageAuthorLog, type PackageAuthorTrackerOptions, recordPackageAction, updatePackageOutdatedStatus, } from './package-author-tracker.js';