@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.
- package/dist/chronicle/index.js +84 -6391
- package/dist/chronicle/legacy-journal-import.d.ts +0 -6
- package/dist/chronicle/metrics-ingest.d.ts +14 -0
- package/dist/chronicle/metrics-schema.d.ts +10 -1
- package/dist/chronicle/metrics-store.d.ts +20 -2
- package/dist/chronicle/project-server.js +98 -4874
- package/dist/chronicle/sink.d.ts +13 -0
- package/dist/chronicle/sqlite-journal.d.ts +20 -2
- package/dist/chunk-25LSLC3G.js +334 -0
- package/dist/chunk-27QIURLN.js +1073 -0
- package/dist/chunk-2FK4WTFF.js +207 -0
- package/dist/chunk-2YU4WVBW.js +134 -0
- package/dist/chunk-3AGWVSS7.js +4608 -0
- package/dist/chunk-3BDV7RL3.js +211 -0
- package/dist/chunk-3ECENVHL.js +325 -0
- package/dist/chunk-3XPVB7BA.js +135 -0
- package/dist/chunk-45WI72ZB.js +16884 -0
- package/dist/chunk-4BMVPOHO.js +3748 -0
- package/dist/chunk-4I7HGVVA.js +363 -0
- package/dist/chunk-4LCZVJVF.js +317 -0
- package/dist/chunk-4SJNS7OB.js +217 -0
- package/dist/chunk-4VWO3ZXL.js +342 -0
- package/dist/chunk-57GEWK5X.js +26 -0
- package/dist/chunk-5BMIE7QG.js +46 -0
- package/dist/chunk-5S437PRC.js +50 -0
- package/dist/chunk-5XDUGTKN.js +511 -0
- package/dist/chunk-5YPSXQXM.js +1443 -0
- package/dist/chunk-6FHWXLPT.js +10 -0
- package/dist/chunk-6H5GEOET.js +2406 -0
- package/dist/chunk-6NWEVFEL.js +151 -0
- package/dist/chunk-AYW5YINX.js +58 -0
- package/dist/chunk-B4AMLZPB.js +9 -0
- package/dist/chunk-B7F4WVP4.js +65 -0
- package/dist/chunk-BJHVULHO.js +55 -0
- package/dist/chunk-BPBKKBUK.js +2085 -0
- package/dist/chunk-BYD345OX.js +589 -0
- package/dist/chunk-C27KDLOX.js +279 -0
- package/dist/chunk-CU546ESW.js +597 -0
- package/dist/chunk-DLHHXUAM.js +172 -0
- package/dist/chunk-DOTHQSJ2.js +429 -0
- package/dist/chunk-DYLPMV4Q.js +711 -0
- package/dist/chunk-EODDVJBM.js +82 -0
- package/dist/chunk-F3JWNST7.js +361 -0
- package/dist/chunk-FC2ZGRF3.js +140 -0
- package/dist/chunk-FCBTO76Z.js +5786 -0
- package/dist/chunk-FHZVFYSL.js +396 -0
- package/dist/chunk-FNXVT7HF.js +52 -0
- package/dist/chunk-FWNLEZYG.js +259 -0
- package/dist/chunk-FXQLIX3K.js +211 -0
- package/dist/chunk-G5S3S5ZN.js +38 -0
- package/dist/chunk-GDQ7CZRQ.js +116 -0
- package/dist/chunk-GJJGJB2R.js +1374 -0
- package/dist/chunk-GTCU6DZ3.js +1 -0
- package/dist/chunk-HA4ZYA6T.js +178 -0
- package/dist/chunk-HI3JGZR2.js +188 -0
- package/dist/chunk-HMLIGAU7.js +395 -0
- package/dist/chunk-HXKZ7OBQ.js +303 -0
- package/dist/chunk-I7DALG7J.js +292 -0
- package/dist/chunk-IRUTEHCE.js +960 -0
- package/dist/chunk-IYFBFX34.js +86 -0
- package/dist/chunk-J2WRWR37.js +1104 -0
- package/dist/chunk-JFPJ6LLQ.js +129 -0
- package/dist/chunk-JMULFFLN.js +9 -0
- package/dist/chunk-JO4MGB6Z.js +1264 -0
- package/dist/chunk-JVKB2TBL.js +48 -0
- package/dist/chunk-JX7VBZDK.js +31 -0
- package/dist/chunk-K6BXGITA.js +931 -0
- package/dist/chunk-KDQJCT2J.js +45 -0
- package/dist/chunk-KJ2ZTQSL.js +47 -0
- package/dist/chunk-KZMSZV32.js +187 -0
- package/dist/chunk-LA7CLDRW.js +129 -0
- package/dist/chunk-LHOA5DWA.js +28 -0
- package/dist/chunk-LSMMOS2Z.js +119 -0
- package/dist/chunk-LX5QWLBL.js +27 -0
- package/dist/chunk-LXWCMQNJ.js +789 -0
- package/dist/chunk-M27LIEKV.js +2829 -0
- package/dist/chunk-MJPHJRAL.js +663 -0
- package/dist/chunk-MTL4O5YR.js +228 -0
- package/dist/chunk-NDBIPFNY.js +102 -0
- package/dist/chunk-NEMIWEXC.js +1199 -0
- package/dist/chunk-NHJ75HXY.js +1 -0
- package/dist/chunk-NIOAGFPB.js +1510 -0
- package/dist/chunk-NS52ISWS.js +355 -0
- package/dist/chunk-NSOFPKGT.js +5352 -0
- package/dist/chunk-NVIZG63R.js +757 -0
- package/dist/chunk-O37BQ65S.js +21 -0
- package/dist/chunk-OOYZPOXM.js +308 -0
- package/dist/chunk-OSGLYW5J.js +28 -0
- package/dist/chunk-PFCMSSUF.js +1640 -0
- package/dist/chunk-PFZO3C6H.js +14 -0
- package/dist/chunk-PGRVXIMY.js +158 -0
- package/dist/chunk-PHH7LD45.js +113 -0
- package/dist/chunk-PISBFBJN.js +109 -0
- package/dist/chunk-POOOIWE5.js +9 -0
- package/dist/chunk-PQNS3U7Z.js +1240 -0
- package/dist/chunk-QSTSJOCK.js +402 -0
- package/dist/chunk-RFQMOKWK.js +282 -0
- package/dist/chunk-RJIZEJ42.js +30 -0
- package/dist/chunk-RTOTNK3P.js +484 -0
- package/dist/chunk-RXKSDUAU.js +1172 -0
- package/dist/chunk-S45JPKQN.js +3317 -0
- package/dist/chunk-SAFHACFA.js +152 -0
- package/dist/chunk-SQJVFEBV.js +41 -0
- package/dist/chunk-SVT4RNTR.js +49 -0
- package/dist/chunk-SWUFN7XM.js +43 -0
- package/dist/chunk-SXMVYC5H.js +174 -0
- package/dist/chunk-SZ6AYUIZ.js +23 -0
- package/dist/chunk-TBRL2RCC.js +9 -0
- package/dist/chunk-TCCHINEF.js +655 -0
- package/dist/chunk-THEGTRAG.js +316 -0
- package/dist/chunk-TR4LQE7L.js +2256 -0
- package/dist/chunk-TRT2HRWZ.js +18 -0
- package/dist/chunk-TWJMGXCI.js +900 -0
- package/dist/chunk-U45AXT5D.js +1023 -0
- package/dist/chunk-U4FWBSO3.js +509 -0
- package/dist/chunk-UBGDX6FI.js +147 -0
- package/dist/chunk-UJILKYES.js +75 -0
- package/dist/chunk-ULMAQV3T.js +234 -0
- package/dist/chunk-VVBP6KGT.js +9 -0
- package/dist/chunk-W5VITDM2.js +168 -0
- package/dist/chunk-WAHQVNWT.js +194 -0
- package/dist/chunk-WBPVKEEE.js +227 -0
- package/dist/chunk-WGGYRBXH.js +5434 -0
- package/dist/chunk-WLYKU45P.js +5770 -0
- package/dist/chunk-WP7BVANJ.js +53 -0
- package/dist/chunk-WQQON3SV.js +473 -0
- package/dist/chunk-WQTOVMGV.js +119 -0
- package/dist/chunk-XBDP4QPW.js +7 -0
- package/dist/chunk-XEBHSJLT.js +103 -0
- package/dist/chunk-XF4VUMKW.js +231 -0
- package/dist/chunk-XQ2ECNK3.js +1 -0
- package/dist/chunk-Y5YXDM7D.js +74 -0
- package/dist/chunk-YOPAUVU4.js +2588 -0
- package/dist/chunk-YPT4A46F.js +362 -0
- package/dist/chunk-YWXT3JNM.js +425 -0
- package/dist/chunk-YY6APYUM.js +49 -0
- package/dist/chunk-Z2IJUO45.js +691 -0
- package/dist/chunk-ZHZ2Y2DH.js +1643 -0
- package/dist/chunk-ZT7JNIGX.js +152 -0
- package/dist/coordination/agent-monitor.d.ts +9 -1
- package/dist/coordination/agent-subagent-runner.d.ts +1 -1
- package/dist/coordination/agents/agent-prompts.d.ts +8 -0
- package/dist/coordination/agents/index.d.ts +33 -1
- package/dist/coordination/agents/index.js +184 -6269
- package/dist/coordination/agents/phase3-wave1-platform.d.ts +1 -3
- package/dist/coordination/agents/phase3-wave2-meta.d.ts +1 -3
- package/dist/coordination/agents/phase8-wave3-products.d.ts +1 -3
- package/dist/coordination/agents/phase9-wave4-platform-meta.d.ts +1 -3
- package/dist/coordination/agents/project-agent-identity.d.ts +11 -11
- package/dist/coordination/agents/types.d.ts +13 -2
- package/dist/coordination/brain-monitor.d.ts +30 -7
- package/dist/coordination/collab-debug.d.ts +1 -1
- package/dist/coordination/collab-pause.d.ts +1 -1
- package/dist/coordination/delegate-tool.d.ts +7 -5
- package/dist/coordination/director-kanban-queue-helpers.d.ts +1 -0
- package/dist/coordination/director-options.d.ts +7 -0
- package/dist/coordination/director-spawn-model.d.ts +17 -0
- package/dist/coordination/director-tools.d.ts +2 -2
- package/dist/coordination/director.d.ts +12 -0
- package/dist/coordination/dispatcher.d.ts +8 -0
- package/dist/coordination/fleet-bus.d.ts +35 -4
- package/dist/coordination/fleet-supervisor.d.ts +10 -2
- package/dist/coordination/fleet.d.ts +16 -7
- package/dist/coordination/index.d.ts +4 -0
- package/dist/coordination/index.js +402 -34324
- package/dist/coordination/kanban-dispatch-port.d.ts +2 -2
- package/dist/coordination/mailbox-http-router.d.ts +4 -3
- package/dist/coordination/mailbox-http-validation.d.ts +1 -1
- package/dist/coordination/mailbox-project-server.js +48 -3276
- package/dist/coordination/mailbox-types.d.ts +24 -6
- package/dist/coordination/model-tier-leader.d.ts +122 -0
- package/dist/coordination/model-tier.d.ts +122 -0
- package/dist/coordination/multi-agent-coordinator.d.ts +24 -0
- package/dist/coordination/origin-session.d.ts +16 -0
- package/dist/coordination/provider-status-tracker.d.ts +41 -5
- package/dist/coordination/session-note-hub.d.ts +44 -0
- package/dist/coordination/session-note-tool.d.ts +10 -0
- package/dist/core/agent.d.ts +15 -2
- package/dist/core/context.d.ts +22 -3
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +239 -12360
- package/dist/core/model-ref.js +5 -23
- package/dist/core/provider-runner.d.ts +36 -1
- package/dist/core/request-conversation-binding.d.ts +37 -0
- package/dist/core/session-notes.d.ts +25 -0
- package/dist/core/system-prompt-builder.d.ts +11 -2
- package/dist/core/system-prompt-variants.d.ts +78 -0
- package/dist/design/index.js +50 -1087
- package/dist/execution/auto-compaction-middleware.d.ts +11 -0
- package/dist/execution/autonomy-brain.d.ts +2 -1
- package/dist/execution/autonomy-prompt-contributor.d.ts +7 -2
- package/dist/execution/compaction-core.d.ts +4 -4
- package/dist/execution/eternal-autonomy.d.ts +1 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.js +1615 -21895
- package/dist/execution/model-runtime.d.ts +0 -7
- package/dist/execution/parallel-eternal-engine.d.ts +7 -7
- package/dist/execution/prompt-enhancer.js +16 -535
- package/dist/execution/retry-policy.d.ts +31 -1
- package/dist/extension/index.js +7 -311
- package/dist/goal/index.js +33 -3435
- package/dist/hooks/index.js +14 -1138
- package/dist/hq/index.js +114 -5139
- package/dist/hq/persistence/event-log.d.ts +0 -1
- package/dist/hq/persistence.d.ts +4 -4
- package/dist/hq/protocol.js +21 -668
- package/dist/hq/publisher.d.ts +2 -0
- package/dist/index.d.ts +14 -11
- package/dist/index.js +1502 -92655
- package/dist/infrastructure/index.d.ts +4 -4
- package/dist/infrastructure/index.js +504 -5230
- package/dist/infrastructure/token-counter.d.ts +9 -0
- package/dist/kernel/events/agent-events.d.ts +77 -3
- package/dist/kernel/events/brain-events.d.ts +12 -0
- package/dist/kernel/events/provider-events.d.ts +22 -1
- package/dist/kernel/events/session-events.d.ts +14 -0
- package/dist/kernel/events/tool-events.d.ts +13 -0
- package/dist/kernel/index.js +14 -992
- package/dist/mailbox-attach.d.ts +1 -1
- package/dist/models/index.js +41 -1117
- package/dist/notifications/index.js +3 -108
- package/dist/observability/event-bridge.d.ts +25 -5
- package/dist/observability/index.d.ts +9 -8
- package/dist/observability/index.js +477 -631
- package/dist/observability/tool-usage-source.d.ts +65 -0
- package/dist/plugin/index.d.ts +5 -0
- package/dist/plugin/index.js +600 -14835
- package/dist/plugins/auto-review-plugin.d.ts +3 -2
- package/dist/plugins/review-finding-commands.d.ts +0 -8
- package/dist/plugins/review-finding-store.js +22 -0
- package/dist/plugins/review-finding-types.js +19 -0
- package/dist/plugins/review-report-integration.js +21 -0
- package/dist/plugins/review-report-store.js +20 -0
- package/dist/plugins/review-report-types.js +13 -0
- package/dist/prompts/index.js +14 -948
- package/dist/registry/index.js +9 -822
- package/dist/registry/tool-registry.d.ts +59 -9
- package/dist/registry-7N4O3E7W.js +14 -0
- package/dist/replay/index.js +6 -84
- package/dist/security/capabilities.d.ts +6 -0
- package/dist/security/file-permissions.d.ts +1 -1
- package/dist/security/index.js +161 -2235
- package/dist/security/permission-policy.d.ts +12 -1
- package/dist/security/secret-scrubber.d.ts +15 -0
- package/dist/session-catalog/index.d.ts +1 -0
- package/dist/session-catalog/index.js +41 -2103
- package/dist/session-catalog/project-server.js +59 -1435
- package/dist/session-catalog/protocol.d.ts +32 -1
- package/dist/session-catalog/registry.d.ts +17 -1
- package/dist/session-catalog/session-agents.d.ts +56 -0
- package/dist/session-catalog/store-rebuild.d.ts +14 -0
- package/dist/session-catalog/store-schema.d.ts +26 -0
- package/dist/session-catalog/store.d.ts +27 -1
- package/dist/session-note-attach.d.ts +9 -0
- package/dist/skills/index.js +35 -1578
- package/dist/statusline/index.d.ts +43 -0
- package/dist/statusline/index.js +102 -0
- package/dist/storage/board-store-port.d.ts +2 -2
- package/dist/storage/config-loader/in-project-policy.d.ts +29 -0
- package/dist/storage/config-loader.d.ts +3 -2
- package/dist/storage/file-session-writer.d.ts +4 -2
- package/dist/storage/goal-coordination.d.ts +6 -1
- package/dist/storage/goal-kanban.d.ts +4 -1
- package/dist/storage/index.d.ts +12 -4
- package/dist/storage/index.js +198 -15601
- package/dist/storage/input-history-store.d.ts +2 -4
- package/dist/storage/memory-curator.d.ts +133 -0
- package/dist/storage/session-agent-attribution.d.ts +39 -0
- package/dist/storage/session-doctor.d.ts +109 -0
- package/dist/storage/session-event-bridge.d.ts +5 -7
- package/dist/storage/session-outcome.d.ts +42 -0
- package/dist/storage/session-recovery.d.ts +55 -0
- package/dist/storage/session-store/load-session-data.d.ts +11 -0
- package/dist/storage/session-store/prune-helpers.d.ts +1 -1
- package/dist/storage/session-store/resume-session.d.ts +0 -2
- package/dist/storage/session-store/types.d.ts +8 -0
- package/dist/storage/session-store.d.ts +3 -3
- package/dist/storage/session-summary-tracker.d.ts +8 -1
- package/dist/storage/session-write-buffer.d.ts +18 -0
- package/dist/storage/session-writer-truncate.d.ts +2 -0
- package/dist/tasking/index.js +10 -676
- package/dist/tools/fallback-manage-tools.d.ts +6 -4
- package/dist/tools/index.js +52 -9590
- package/dist/tools/model-tier-set-tool.d.ts +66 -0
- package/dist/types/agent-bridge.d.ts +2 -1
- package/dist/types/config/autonomy.d.ts +5 -0
- package/dist/types/config/mcp-features.d.ts +7 -0
- package/dist/types/config/model-tiers.d.ts +148 -0
- package/dist/types/config/root.d.ts +9 -0
- package/dist/types/config/tools.d.ts +73 -0
- package/dist/types/config/ui.d.ts +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/context.d.ts +2 -0
- package/dist/types/default-config.d.ts +6 -0
- package/dist/types/errors.d.ts +20 -1
- package/dist/types/index.d.ts +11 -9
- package/dist/types/index.js +131 -1342
- package/dist/types/multi-agent.d.ts +43 -0
- package/dist/types/plugin.d.ts +1 -1
- package/dist/types/provider-runner.d.ts +8 -0
- package/dist/types/provider.d.ts +15 -0
- package/dist/types/runtime-capability-manifest.d.ts +1 -1
- package/dist/types/secret-scrubber.d.ts +15 -0
- package/dist/types/session-markers.d.ts +37 -10
- package/dist/types/session-markers.js +8 -144
- package/dist/types/session-timeline.d.ts +197 -0
- package/dist/types/session-timeline.js +12 -0
- package/dist/types/session.d.ts +172 -11
- package/dist/types/system-prompt.d.ts +27 -0
- package/dist/utils/config-backup.d.ts +9 -1
- package/dist/utils/error.js +3 -4
- package/dist/utils/expect-defined.js +3 -9
- package/dist/utils/heap-watchdog.js +6 -706
- package/dist/utils/index.js +271 -5685
- package/dist/utils/message-invariants.d.ts +4 -1
- package/dist/utils/regex-guard.d.ts +1 -1
- package/dist/utils/sage-output-block.js +5 -42
- package/dist/utils/socket-path.d.ts +1 -1
- package/dist/utils/token-estimate.d.ts +6 -2
- package/dist/utils/wstack-paths.d.ts +2 -0
- package/dist/wiring/proxy-rewrite.d.ts +46 -0
- package/dist/wiring/proxy-rewrite.js +24 -121
- package/dist/worktree/index.js +6 -887
- package/instructions/agents/explore-companion.md +45 -18
- package/instructions/agents/memory-curator.md +34 -22
- package/instructions/coordination/director-preamble.md +12 -7
- package/instructions/coordination/subagent-baseline.md +26 -5
- package/instructions/leader-after-task.md +4 -1
- package/instructions/llm/chimera-review.md +30 -9
- package/instructions/llm/memory-curator.md +31 -0
- package/instructions/sections/tool/delegation-compact.md +2 -0
- package/instructions/sections/tool/delegation-full.md +5 -1
- package/instructions/sections/tool/mailbox-compact.md +5 -1
- package/instructions/sections/tool/mailbox-full.md +3 -0
- package/instructions/sections/tool/session-note-compact.md +3 -0
- package/instructions/sections/tool/session-note-full.md +15 -0
- package/instructions/system-lite.md +9 -4
- package/instructions/system-pro.md +66 -143
- package/instructions/system.md +73 -175
- package/package.json +32 -4
- package/dist/coordination/agents.d.ts +0 -8
- package/dist/coordination/transport.d.ts +0 -2
- 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
|