@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,6 @@
1
- import type { SessionRegistryEntry } from './session-registry-types.js';
2
1
  import type { SessionSummary } from '../types/session.js';
2
+ import type { SessionAgentRecord } from './session-agents.js';
3
+ import type { SessionRegistryEntry } from './session-registry-types.js';
3
4
  export declare const SESSION_CATALOG_PROTOCOL_VERSION = 1;
4
5
  export declare const SESSION_CATALOG_MAX_FRAME_CHARS: number;
5
6
  export declare const SESSION_CATALOG_DEFAULT_LEASE_MS = 30000;
@@ -126,6 +127,25 @@ export interface SessionCatalogOperations {
126
127
  };
127
128
  result: SessionLeaseCredential;
128
129
  };
130
+ /**
131
+ * Extend a reservation that is still being worked on.
132
+ *
133
+ * A resume reserves ownership BEFORE it can know how long the transcript
134
+ * takes to open, and the default window is 15s. Hydrating a large journal
135
+ * (load + summary + file-observation validation + opening the append
136
+ * handle, all of which can also wait on this daemon) routinely outruns it,
137
+ * and `activate_reservation` then fails with "reservation expired" after
138
+ * the expensive work is already done. Renewal keeps the reservation alive
139
+ * for exactly as long as the caller is demonstrably still hydrating.
140
+ */
141
+ renew_reservation: {
142
+ args: {
143
+ reservationId: string;
144
+ requesterInstanceId: string;
145
+ reservationMs?: number;
146
+ };
147
+ result: ResumeReservation;
148
+ };
129
149
  cancel_reservation: {
130
150
  args: {
131
151
  reservationId: string;
@@ -210,6 +230,17 @@ export interface SessionCatalogOperations {
210
230
  };
211
231
  result: CatalogSessionRecord | null;
212
232
  };
233
+ /**
234
+ * Agent roster of one session, derived from its journal. Read-only: there
235
+ * is no write op, because the rows are a projection of the transcript and
236
+ * a writer would create a second authority that can disagree with it.
237
+ */
238
+ list_session_agents: {
239
+ args: {
240
+ sessionId: string;
241
+ };
242
+ result: SessionAgentRecord[];
243
+ };
213
244
  rename: {
214
245
  args: {
215
246
  sessionId: string;
@@ -1,8 +1,22 @@
1
- import type { AgentEntry, SessionRegistryEntry } from './session-registry-types.js';
2
1
  import type { ResumeReservation, SessionCatalogEvent } from './protocol.js';
2
+ import type { AgentEntry, SessionRegistryEntry } from './session-registry-types.js';
3
3
  export interface SessionResumeClaim {
4
4
  reservation: ResumeReservation;
5
5
  activate(entry: SessionRegistryRegistration): Promise<void>;
6
+ /**
7
+ * Push the reservation deadline out while the caller is still hydrating.
8
+ *
9
+ * The reservation is taken before the transcript is opened, so its window
10
+ * has to cover work whose duration nobody knows yet. Callers that do slow
11
+ * work between reserve and activate must call this periodically; without it
12
+ * a large journal simply outlives its own reservation and `activate` fails
13
+ * after the expensive part already succeeded.
14
+ *
15
+ * Resolves to `false` when the reservation is already settled (activated or
16
+ * cancelled) — renewal is then a no-op, not an error. Rejects when the
17
+ * daemon refuses (expired, or owned by someone else).
18
+ */
19
+ renew(reservationMs?: number): Promise<boolean>;
6
20
  cancel(): Promise<void>;
7
21
  }
8
22
  export type SessionRegistryRegistration = Omit<SessionRegistryEntry, 'status' | 'lastHeartbeatAt' | 'agentCount' | 'agents'> & {
@@ -36,6 +50,8 @@ export declare class ProjectSessionRegistry {
36
50
  sessionId: string;
37
51
  projectSlug: string;
38
52
  projectRoot: string;
53
+ /** Initial reservation window. Callers doing slow hydration should also `renew()`. */
54
+ reservationMs?: number | undefined;
39
55
  }): Promise<SessionResumeClaim>;
40
56
  updateAgents(agents: AgentEntry[]): Promise<void>;
41
57
  private flushAgents;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Derive the agent roster of one session from its journal.
3
+ *
4
+ * The journal is the source of truth and this is a pure projection over it —
5
+ * deliberately, because the alternative (agents writing their own rows as they
6
+ * spawn) creates a second authority that drifts the first time a process dies
7
+ * between the append and the row. A projection cannot drift: re-run it and it
8
+ * agrees with the file by construction.
9
+ *
10
+ * Three records feed a row, and they do NOT arrive in a fixed order.
11
+ * `agent_session_linked` is appended by the subagent factory, which runs
12
+ * INSIDE `coordinator.spawn()`, while `agent_spawned` is appended by the fleet
13
+ * layer only after that call returns — so the link normally lands first. Every
14
+ * merge here is therefore an upsert keyed on `agentId`, never a lookup that
15
+ * assumes the row already exists.
16
+ */
17
+ import type { Usage } from '../types/provider.js';
18
+ import type { SessionEvent } from '../types/session.js';
19
+ export type SessionAgentStatus = 'running' | 'completed' | 'failed';
20
+ export interface SessionAgentRecord {
21
+ agentId: string;
22
+ /** Role the agent was spawned as, from `agent_spawned`. */
23
+ role?: string | undefined;
24
+ provider?: string | undefined;
25
+ model?: string | undefined;
26
+ /** The agent's own journal id, when it has one of its own. */
27
+ agentSessionId?: string | undefined;
28
+ /** Absolute path of the agent's own JSONL, when it has one. */
29
+ transcriptPath?: string | undefined;
30
+ /** Set when another agent — not the leader — spawned this one. */
31
+ parentAgentId?: string | undefined;
32
+ spawnedAt?: string | undefined;
33
+ endedAt?: string | undefined;
34
+ status: SessionAgentStatus;
35
+ error?: string | undefined;
36
+ /**
37
+ * Events in THIS journal stamped with this agent's id.
38
+ *
39
+ * Non-zero only for agents running on the parent-interleaved writer, whose
40
+ * events land in the leader's file. An agent with its own transcript writes
41
+ * nothing here, so a `0` means "look in `transcriptPath`", not "did nothing".
42
+ */
43
+ interleavedEventCount: number;
44
+ usage?: Usage | undefined;
45
+ }
46
+ /**
47
+ * Project a session's events into one record per agent, ordered by first
48
+ * appearance so the roster reads in spawn order.
49
+ *
50
+ * Tolerates truncated journals: an agent that never got a terminal record
51
+ * stays `running`, which is exactly what a crashed-mid-fleet session should
52
+ * report. Callers that need "running or just never finished" must compare
53
+ * against the session's own liveness, which this function has no view of.
54
+ */
55
+ export declare function deriveSessionAgents(events: Iterable<SessionEvent>): SessionAgentRecord[];
56
+ //# sourceMappingURL=session-agents.d.ts.map
@@ -1,5 +1,19 @@
1
1
  import type { DatabaseSync } from 'node:sqlite';
2
2
  import type { SessionSummary } from '../types/session.js';
3
+ /**
4
+ * Collect the transcript/summary files this catalog indexes.
5
+ *
6
+ * Skips exactly what `DefaultSessionStore`'s own directory scan skips — see
7
+ * `shouldSkipSessionDirectoryEntry`. The two disagreed: the store excluded
8
+ * `subagents/` (and `shared/`, `attachments/`) from what counts as a session,
9
+ * while this walk descended into them, so a full rebuild pushed subagent
10
+ * transcripts into the table backing the user's session list. On a real project
11
+ * that is 3,156 worker transcripts against 170 actual sessions; the five
12
+ * subagent rows found in a live catalog were this leak already in progress.
13
+ *
14
+ * Subagent transcripts are not unindexed — each director run maintains its own
15
+ * `_index.jsonl` beside them. They just are not user-resumable sessions.
16
+ */
3
17
  export declare function walkSessionFiles(root: string, suffix: string): string[];
4
18
  export declare function summarizeTranscriptFile(transcriptFilePath: string, id: string): SessionSummary;
5
19
  export declare function rebuildCatalogIndex(db: DatabaseSync, sessionsDir: string, containedPathFn: (relative: string) => string, transactionFn: <T>(run: () => T) => T, bumpGenerationFn: () => number): {
@@ -1,5 +1,14 @@
1
1
  import type { DatabaseSync } from 'node:sqlite';
2
2
  import type { SessionRegistryEntry } from './session-registry-types.js';
3
+ /**
4
+ * Bumped ONLY for breaking changes — a mismatch throws and takes the catalog
5
+ * with it (`initializeCatalogSchema`), and there is no downgrade path.
6
+ *
7
+ * Purely additive tables do not qualify and must not bump it: every statement
8
+ * below is `IF NOT EXISTS`, so a new binary adds what it needs on open and an
9
+ * older binary reading the same file simply never queries the extra tables.
10
+ * `session_agents` / `session_agent_index` were added this way.
11
+ */
3
12
  export declare const SCHEMA_VERSION = 1;
4
13
  export declare const MAX_LEASE_MS = 120000;
5
14
  export declare const MAX_RESERVATION_MS = 60000;
@@ -25,6 +34,23 @@ export interface ReservationRow {
25
34
  current_session_id: string | null;
26
35
  expires_at: number;
27
36
  }
37
+ export interface SessionAgentRow {
38
+ session_id: string;
39
+ agent_id: string;
40
+ role: string | null;
41
+ provider: string | null;
42
+ model: string | null;
43
+ agent_session_id: string | null;
44
+ transcript_path: string | null;
45
+ parent_agent_id: string | null;
46
+ spawned_at: string | null;
47
+ ended_at: string | null;
48
+ status: string;
49
+ error: string | null;
50
+ interleaved_event_count: number;
51
+ usage_json: string | null;
52
+ ordinal: number;
53
+ }
28
54
  export interface CatalogRow {
29
55
  session_id: string;
30
56
  transcript_relative_path: string;
@@ -1,6 +1,7 @@
1
- import type { SessionRegistryEntry } from './session-registry-types.js';
2
1
  import type { SessionSummary } from '../types/session.js';
3
2
  import type { CatalogSessionRecord, MaintenanceLease, ResumeReservation, SessionCatalogHealth, SessionCatalogListArgs, SessionLeaseCredential } from './protocol.js';
3
+ import { type SessionAgentRecord } from './session-agents.js';
4
+ import type { SessionRegistryEntry } from './session-registry-types.js';
4
5
  export declare class SessionCatalogStore {
5
6
  readonly projectDir: string;
6
7
  readonly databasePath: string;
@@ -24,6 +25,15 @@ export declare class SessionCatalogStore {
24
25
  reconnectLease(credential: SessionLeaseCredential): SessionLeaseCredential;
25
26
  reserveResume(targetSessionId: string, requesterInstanceId: string, currentSessionId?: string, reservationMs?: number): ResumeReservation;
26
27
  activateReservation(reservation: ResumeReservation, entry: SessionRegistryEntry, leaseMs?: number): SessionLeaseCredential;
28
+ /**
29
+ * Extend a live reservation the requester still owns.
30
+ *
31
+ * Deliberately does NOT call `reapExpired()` first: reaping would delete an
32
+ * already-expired row and turn the accurate "expired" answer into the
33
+ * indistinguishable "not owned by this requester". The caller needs to know
34
+ * which of the two happened.
35
+ */
36
+ renewReservation(reservationId: string, requesterInstanceId: string, reservationMs?: number): ResumeReservation;
27
37
  cancelReservation(reservationId: string, requesterInstanceId: string): void;
28
38
  heartbeat(credential: SessionLeaseCredential, status?: SessionRegistryEntry['status']): SessionLeaseCredential;
29
39
  publishAgents(credential: SessionLeaseCredential, revision: number, agents: SessionRegistryEntry['agents']): {
@@ -39,6 +49,22 @@ export declare class SessionCatalogStore {
39
49
  private catalogRecord;
40
50
  listCatalog(criteria?: SessionCatalogListArgs): CatalogSessionRecord[];
41
51
  getSummary(sessionId: string): CatalogSessionRecord | null;
52
+ /**
53
+ * The agent roster of one session, derived from its journal.
54
+ *
55
+ * Cached in `session_agents`, keyed to the transcript's size and mtime: the
56
+ * journal is the authority, so the cache is a memo of a pure function over
57
+ * it rather than a second place agents get recorded. When the file has grown
58
+ * (the usual case — a live session) the rows are re-derived from scratch, so
59
+ * a partial read can never leave a half-updated roster behind.
60
+ *
61
+ * Returns `[]` for a session with no transcript on disk. A caller cannot
62
+ * distinguish that from "a real session that spawned nothing", and should
63
+ * not need to: both mean there is no agent to show.
64
+ */
65
+ listSessionAgents(sessionId: string): SessionAgentRecord[];
66
+ private readSessionAgentRows;
67
+ private writeSessionAgentRows;
42
68
  resolveId(query: string): string;
43
69
  rename(sessionId: string, name: string): Promise<CatalogSessionRecord>;
44
70
  acquireMaintenance(sessionId: string, operation: MaintenanceLease['operation'], holderId: string, leaseMs?: number, holderPid?: number): MaintenanceLease;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Bind a running agent to the same-session note hub so peers can reach it
3
+ * without mailbox. Unregisters via the agent hook on teardown.
4
+ *
5
+ * @module session-note-attach
6
+ */
7
+ import type { AgentInternals } from './core/agent-internals.js';
8
+ export declare function attachSessionNotes(a: AgentInternals): void;
9
+ //# sourceMappingURL=session-note-attach.d.ts.map