@adhdev/daemon-core 0.9.82-rc.209 → 0.9.82-rc.210

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 (64) hide show
  1. package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +2 -0
  2. package/dist/commands/router.d.ts +6 -0
  3. package/dist/git/git-commands.d.ts +2 -0
  4. package/dist/git/git-diff.d.ts +6 -0
  5. package/dist/index.d.ts +11 -5
  6. package/dist/index.js +5699 -3486
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +5679 -3483
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/mesh/coordinator-prompt.d.ts +6 -0
  11. package/dist/mesh/mesh-delivery-policy.d.ts +5 -0
  12. package/dist/mesh/mesh-events-coordinator.d.ts +151 -0
  13. package/dist/mesh/mesh-events-pending.d.ts +33 -0
  14. package/dist/mesh/mesh-events-stale.d.ts +40 -0
  15. package/dist/mesh/mesh-events-utils.d.ts +14 -0
  16. package/dist/mesh/mesh-events.d.ts +5 -198
  17. package/dist/mesh/mesh-ledger-reconciliation.d.ts +23 -3
  18. package/dist/mesh/mesh-ledger.d.ts +19 -0
  19. package/dist/mesh/mesh-missions.d.ts +58 -0
  20. package/dist/mesh/mesh-review-inbox.d.ts +90 -0
  21. package/dist/mesh/mesh-runtime-store.d.ts +175 -0
  22. package/dist/mesh/mesh-task-stats.d.ts +49 -0
  23. package/dist/mesh/mesh-work-queue.d.ts +82 -0
  24. package/dist/mesh/refine-config.d.ts +24 -2
  25. package/dist/mesh/worktree-bootstrap-config.d.ts +22 -0
  26. package/dist/providers/acp-provider-instance.d.ts +2 -0
  27. package/dist/providers/spec/driver.d.ts +8 -0
  28. package/dist/providers/spec/evaluator.d.ts +4 -5
  29. package/dist/providers/spec/loader.d.ts +1 -0
  30. package/dist/providers/spec/schema.gen.d.ts +1409 -6
  31. package/dist/providers/spec/types.d.ts +188 -175
  32. package/dist/repo-mesh-types.d.ts +1 -0
  33. package/package.json +1 -1
  34. package/src/boot/daemon-lifecycle.ts +3 -0
  35. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +20 -7
  36. package/src/commands/router.ts +594 -66
  37. package/src/git/git-commands.ts +5 -5
  38. package/src/git/git-diff.ts +53 -0
  39. package/src/index.ts +11 -5
  40. package/src/mesh/coordinator-prompt.ts +14 -1
  41. package/src/mesh/mesh-delivery-policy.ts +17 -0
  42. package/src/mesh/mesh-events-coordinator.ts +1404 -0
  43. package/src/mesh/mesh-events-pending.ts +371 -0
  44. package/src/mesh/mesh-events-stale.ts +283 -0
  45. package/src/mesh/mesh-events-utils.ts +161 -0
  46. package/src/mesh/mesh-events.ts +27 -2143
  47. package/src/mesh/mesh-ledger-reconciliation.ts +12 -5
  48. package/src/mesh/mesh-ledger.ts +134 -2
  49. package/src/mesh/mesh-missions.ts +151 -0
  50. package/src/mesh/mesh-review-inbox.ts +307 -0
  51. package/src/mesh/mesh-runtime-store.ts +539 -3
  52. package/src/mesh/mesh-task-stats.ts +154 -0
  53. package/src/mesh/mesh-work-queue.ts +233 -17
  54. package/src/mesh/refine-config.ts +42 -5
  55. package/src/mesh/worktree-bootstrap-config.ts +79 -0
  56. package/src/providers/acp-provider-instance.ts +15 -1
  57. package/src/providers/cli-provider-instance.ts +34 -13
  58. package/src/providers/spec/driver.ts +57 -29
  59. package/src/providers/spec/evaluator.ts +302 -112
  60. package/src/providers/spec/loader.ts +226 -37
  61. package/src/providers/spec/schema.gen.ts +450 -334
  62. package/src/providers/spec/schema.json +162 -75
  63. package/src/providers/spec/types.ts +234 -183
  64. package/src/repo-mesh-types.ts +1 -0
@@ -26,6 +26,12 @@ export interface CoordinatorPromptContext {
26
26
  status?: RepoMeshStatus;
27
27
  userInstruction?: string;
28
28
  coordinatorCliType?: string;
29
+ /**
30
+ * M3: pre-rendered active mission section (from buildMissionPromptSection).
31
+ * Empty/undefined when the mesh has no active mission — the prompt output
32
+ * stays identical to the pre-M3 form in that case.
33
+ */
34
+ missionSection?: string;
29
35
  }
30
36
  /**
31
37
  * Compose the final coordinator prompt from four layers, in this precedence:
@@ -124,3 +124,8 @@ export declare function getRecentCompletionConflicts(meshId: string, limitMs?: n
124
124
  createdAt: string;
125
125
  }[];
126
126
  export declare function __clearSessionDeliveriesForTests(meshId: string): void;
127
+ /**
128
+ * Mark all active (queued/delivering/delivered/acked) deliveries for a session as completed or failed.
129
+ * Called when a task's terminal status is confirmed so delivery records stay in sync.
130
+ */
131
+ export declare function markSessionDeliveriesTerminal(meshId: string, sessionId: string, terminalStatus: 'completed' | 'failed'): void;
@@ -0,0 +1,151 @@
1
+ import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
2
+ export declare function __resetIdleAutoFastForwardForTests(): void;
3
+ export declare function tryAssignQueueTask(components: DaemonComponents, meshId: string, nodeId: string, sessionId: string, providerType: string): boolean;
4
+ export interface MeshQueueTriggerResult {
5
+ success: true;
6
+ meshId: string;
7
+ pendingBefore: number;
8
+ assignedBefore: number;
9
+ pendingAfter: number;
10
+ assignedAfter: number;
11
+ claimed: boolean;
12
+ newlyAssignedTasks: Array<{
13
+ id: string;
14
+ nodeId?: string;
15
+ sessionId?: string;
16
+ }>;
17
+ localIdleSessionsChecked: number;
18
+ remoteIdleSessionsChecked: number;
19
+ skippedSessions: Array<{
20
+ nodeId?: string;
21
+ sessionId?: string;
22
+ reason: string;
23
+ status?: string;
24
+ }>;
25
+ autoLaunchStarted: boolean;
26
+ noIdleMeshSessionAvailable?: boolean;
27
+ }
28
+ export declare function triggerMeshQueue(components: DaemonComponents, meshId: string): Promise<MeshQueueTriggerResult>;
29
+ export declare function isMeshCoordinatorEvent(eventName: unknown): eventName is string;
30
+ export declare function handleMeshForwardEvent(components: DaemonComponents, payload: Record<string, unknown>): {
31
+ success: boolean;
32
+ forwarded: number;
33
+ suppressed: boolean;
34
+ intentionalCleanupStop: boolean;
35
+ terminalLedgerEvidence?: undefined;
36
+ terminalLedgerKind?: undefined;
37
+ duplicateRefineTerminalEvent?: undefined;
38
+ duplicateApproval?: undefined;
39
+ duplicateCompletion?: undefined;
40
+ duplicateStopped?: undefined;
41
+ error?: undefined;
42
+ bufferedForGeneratingCoordinator?: undefined;
43
+ } | {
44
+ success: boolean;
45
+ forwarded: number;
46
+ suppressed: boolean;
47
+ terminalLedgerEvidence: boolean;
48
+ terminalLedgerKind: unknown;
49
+ intentionalCleanupStop?: undefined;
50
+ duplicateRefineTerminalEvent?: undefined;
51
+ duplicateApproval?: undefined;
52
+ duplicateCompletion?: undefined;
53
+ duplicateStopped?: undefined;
54
+ error?: undefined;
55
+ bufferedForGeneratingCoordinator?: undefined;
56
+ } | {
57
+ success: boolean;
58
+ forwarded: number;
59
+ suppressed: boolean;
60
+ duplicateRefineTerminalEvent: boolean;
61
+ intentionalCleanupStop?: undefined;
62
+ terminalLedgerEvidence?: undefined;
63
+ terminalLedgerKind?: undefined;
64
+ duplicateApproval?: undefined;
65
+ duplicateCompletion?: undefined;
66
+ duplicateStopped?: undefined;
67
+ error?: undefined;
68
+ bufferedForGeneratingCoordinator?: undefined;
69
+ } | {
70
+ success: boolean;
71
+ forwarded: number;
72
+ suppressed: boolean;
73
+ duplicateApproval: boolean;
74
+ intentionalCleanupStop?: undefined;
75
+ terminalLedgerEvidence?: undefined;
76
+ terminalLedgerKind?: undefined;
77
+ duplicateRefineTerminalEvent?: undefined;
78
+ duplicateCompletion?: undefined;
79
+ duplicateStopped?: undefined;
80
+ error?: undefined;
81
+ bufferedForGeneratingCoordinator?: undefined;
82
+ } | {
83
+ success: boolean;
84
+ forwarded: number;
85
+ suppressed: boolean;
86
+ duplicateCompletion: boolean;
87
+ terminalLedgerEvidence: boolean;
88
+ intentionalCleanupStop?: undefined;
89
+ terminalLedgerKind?: undefined;
90
+ duplicateRefineTerminalEvent?: undefined;
91
+ duplicateApproval?: undefined;
92
+ duplicateStopped?: undefined;
93
+ error?: undefined;
94
+ bufferedForGeneratingCoordinator?: undefined;
95
+ } | {
96
+ success: boolean;
97
+ forwarded: number;
98
+ suppressed: boolean;
99
+ duplicateCompletion: boolean;
100
+ intentionalCleanupStop?: undefined;
101
+ terminalLedgerEvidence?: undefined;
102
+ terminalLedgerKind?: undefined;
103
+ duplicateRefineTerminalEvent?: undefined;
104
+ duplicateApproval?: undefined;
105
+ duplicateStopped?: undefined;
106
+ error?: undefined;
107
+ bufferedForGeneratingCoordinator?: undefined;
108
+ } | {
109
+ success: boolean;
110
+ forwarded: number;
111
+ suppressed: boolean;
112
+ duplicateStopped: boolean;
113
+ intentionalCleanupStop?: undefined;
114
+ terminalLedgerEvidence?: undefined;
115
+ terminalLedgerKind?: undefined;
116
+ duplicateRefineTerminalEvent?: undefined;
117
+ duplicateApproval?: undefined;
118
+ duplicateCompletion?: undefined;
119
+ error?: undefined;
120
+ bufferedForGeneratingCoordinator?: undefined;
121
+ } | {
122
+ success: boolean;
123
+ forwarded: number;
124
+ suppressed?: undefined;
125
+ intentionalCleanupStop?: undefined;
126
+ terminalLedgerEvidence?: undefined;
127
+ terminalLedgerKind?: undefined;
128
+ duplicateRefineTerminalEvent?: undefined;
129
+ duplicateApproval?: undefined;
130
+ duplicateCompletion?: undefined;
131
+ duplicateStopped?: undefined;
132
+ error?: undefined;
133
+ bufferedForGeneratingCoordinator?: undefined;
134
+ } | {
135
+ success: boolean;
136
+ forwarded: number;
137
+ bufferedForGeneratingCoordinator: boolean;
138
+ suppressed?: undefined;
139
+ intentionalCleanupStop?: undefined;
140
+ terminalLedgerEvidence?: undefined;
141
+ terminalLedgerKind?: undefined;
142
+ duplicateRefineTerminalEvent?: undefined;
143
+ duplicateApproval?: undefined;
144
+ duplicateCompletion?: undefined;
145
+ duplicateStopped?: undefined;
146
+ error?: undefined;
147
+ } | {
148
+ success: boolean;
149
+ error: string;
150
+ };
151
+ export declare function setupMeshEventForwarding(components: DaemonComponents): void;
@@ -0,0 +1,33 @@
1
+ export interface PendingMeshCoordinatorEvent {
2
+ event: string;
3
+ meshId: string;
4
+ nodeLabel: string;
5
+ nodeId?: string;
6
+ workspace?: string;
7
+ metadataEvent: Record<string, unknown>;
8
+ coordinatorMessage?: string;
9
+ queuedAt: number;
10
+ /**
11
+ * When set, this event is intended for a specific coordinator daemon.
12
+ * Coordinators on other daemons should ignore it during drain.
13
+ * Absent on legacy events — treated as broadcast to any coordinator.
14
+ */
15
+ targetCoordinatorDaemonId?: string;
16
+ }
17
+ export declare function readRefineJobId(event: {
18
+ metadataEvent?: Record<string, unknown>;
19
+ } | Record<string, unknown>): string;
20
+ export declare function buildPendingEventFingerprint(event: PendingMeshCoordinatorEvent): string;
21
+ export declare function hasPendingCoordinatorEventDuplicate(event: PendingMeshCoordinatorEvent): boolean;
22
+ export declare function queuePendingMeshCoordinatorEvent(event: PendingMeshCoordinatorEvent): boolean;
23
+ /** Drain and return all pending coordinator events for meshId, removing them from disk. */
24
+ export declare function drainPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): PendingMeshCoordinatorEvent[];
25
+ /** Peek at pending coordinator events without draining (non-destructive). */
26
+ export declare function getPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): readonly PendingMeshCoordinatorEvent[];
27
+ /**
28
+ * Test helper: purge all pending-event state for a mesh — SQLite rows
29
+ * (including drained fingerprint history) and JSONL files.
30
+ */
31
+ export declare function __clearMeshPendingEventsForTests(meshId: string): void;
32
+ /** Explicitly clear all pending coordinator events for a mesh (and coordinator if scoped). */
33
+ export declare function clearPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): void;
@@ -0,0 +1,40 @@
1
+ import type { MeshLedgerKind } from './mesh-ledger.js';
2
+ export declare function findRecentTerminalLedgerEvidence(args: {
3
+ meshId: string;
4
+ sessionId?: string;
5
+ nodeId?: string;
6
+ }): {
7
+ id: string;
8
+ kind: MeshLedgerKind;
9
+ payload: Record<string, unknown>;
10
+ timestamp: string;
11
+ } | null;
12
+ export declare function hasDispatchAfterTerminal(meshId: string, sessionId: string, terminalId: string): boolean;
13
+ export declare function hasUnterminalDirectDispatchLedgerEntry(meshId: string, sessionId: string): boolean;
14
+ export declare function reconcileDirectDispatchCompletionFromTranscript(args: {
15
+ meshId: string;
16
+ nodeId?: string;
17
+ sessionId: string;
18
+ providerType?: string;
19
+ providerSessionId?: string;
20
+ taskId: string;
21
+ finalSummary: string;
22
+ transcriptMessageAt?: string;
23
+ completedAt?: string;
24
+ targetCoordinatorDaemonId?: string;
25
+ source?: string;
26
+ }): {
27
+ reconciled: boolean;
28
+ kind?: MeshLedgerKind;
29
+ alreadyTerminal?: boolean;
30
+ workerResult?: unknown;
31
+ ledgerEntryId?: string;
32
+ reason?: string;
33
+ };
34
+ export declare function buildLongGeneratingCompletionReconciliation(args: {
35
+ meshId: string;
36
+ nodeId?: string;
37
+ nodeLabel: string;
38
+ metadataEvent: Record<string, unknown>;
39
+ sourceInstanceId?: string;
40
+ }): Record<string, unknown> | null;
@@ -0,0 +1,14 @@
1
+ import type { SessionRecoveryContext } from './mesh-ledger.js';
2
+ export declare function readNonEmptyString(value: unknown): string;
3
+ export declare function readRecord(value: unknown): Record<string, unknown> | undefined;
4
+ export declare function resolveEventSessionId(event: Record<string, unknown>, fallback?: unknown): string;
5
+ export declare function readRefineJobId(event: {
6
+ metadataEvent?: Record<string, unknown>;
7
+ } | Record<string, unknown>): string;
8
+ export declare function readWorkerResultMetadata(event: Record<string, unknown>): Record<string, unknown> | undefined;
9
+ export declare function buildMeshSystemMessage(args: {
10
+ event: string;
11
+ nodeLabel: string;
12
+ metadataEvent: Record<string, unknown>;
13
+ recoveryContext?: SessionRecoveryContext | null;
14
+ }): string;
@@ -1,198 +1,5 @@
1
- import type { DaemonComponents } from '../boot/daemon-lifecycle.js';
2
- import type { MeshLedgerKind } from './mesh-ledger.js';
3
- export declare function __resetIdleAutoFastForwardForTests(): void;
4
- export interface PendingMeshCoordinatorEvent {
5
- event: string;
6
- meshId: string;
7
- nodeLabel: string;
8
- nodeId?: string;
9
- workspace?: string;
10
- metadataEvent: Record<string, unknown>;
11
- coordinatorMessage?: string;
12
- queuedAt: number;
13
- /**
14
- * When set, this event is intended for a specific coordinator daemon.
15
- * Coordinators on other daemons should ignore it during drain.
16
- * Absent on legacy events — treated as broadcast to any coordinator.
17
- */
18
- targetCoordinatorDaemonId?: string;
19
- }
20
- export declare function queuePendingMeshCoordinatorEvent(event: PendingMeshCoordinatorEvent): boolean;
21
- /** Drain and return all pending coordinator events for meshId, removing them from disk. */
22
- export declare function drainPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): PendingMeshCoordinatorEvent[];
23
- /** Peek at pending coordinator events without draining (non-destructive). */
24
- export declare function getPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): readonly PendingMeshCoordinatorEvent[];
25
- /** Explicitly clear all pending coordinator events for a mesh (and coordinator if scoped). */
26
- export declare function clearPendingMeshCoordinatorEvents(meshId?: string, coordinatorDaemonId?: string): void;
27
- export declare function reconcileDirectDispatchCompletionFromTranscript(args: {
28
- meshId: string;
29
- nodeId?: string;
30
- sessionId: string;
31
- providerType?: string;
32
- providerSessionId?: string;
33
- taskId: string;
34
- finalSummary: string;
35
- transcriptMessageAt?: string;
36
- completedAt?: string;
37
- targetCoordinatorDaemonId?: string;
38
- source?: string;
39
- }): {
40
- reconciled: boolean;
41
- kind?: MeshLedgerKind;
42
- alreadyTerminal?: boolean;
43
- workerResult?: unknown;
44
- ledgerEntryId?: string;
45
- reason?: string;
46
- };
47
- export declare function tryAssignQueueTask(components: DaemonComponents, meshId: string, nodeId: string, sessionId: string, providerType: string): boolean;
48
- export interface MeshQueueTriggerResult {
49
- success: true;
50
- meshId: string;
51
- pendingBefore: number;
52
- assignedBefore: number;
53
- pendingAfter: number;
54
- assignedAfter: number;
55
- claimed: boolean;
56
- newlyAssignedTasks: Array<{
57
- id: string;
58
- nodeId?: string;
59
- sessionId?: string;
60
- }>;
61
- localIdleSessionsChecked: number;
62
- remoteIdleSessionsChecked: number;
63
- skippedSessions: Array<{
64
- nodeId?: string;
65
- sessionId?: string;
66
- reason: string;
67
- status?: string;
68
- }>;
69
- autoLaunchStarted: boolean;
70
- noIdleMeshSessionAvailable?: boolean;
71
- }
72
- /**
73
- * Triggers a queue check for all nodes in the mesh.
74
- * Called when a new task is enqueued, in case nodes are already idle.
75
- */
76
- export declare function triggerMeshQueue(components: DaemonComponents, meshId: string): Promise<MeshQueueTriggerResult>;
77
- export declare function handleMeshForwardEvent(components: DaemonComponents, payload: Record<string, unknown>): {
78
- success: boolean;
79
- forwarded: number;
80
- suppressed: boolean;
81
- intentionalCleanupStop: boolean;
82
- terminalLedgerEvidence?: undefined;
83
- terminalLedgerKind?: undefined;
84
- duplicateRefineTerminalEvent?: undefined;
85
- duplicateApproval?: undefined;
86
- duplicateCompletion?: undefined;
87
- duplicateStopped?: undefined;
88
- error?: undefined;
89
- bufferedForGeneratingCoordinator?: undefined;
90
- } | {
91
- success: boolean;
92
- forwarded: number;
93
- suppressed: boolean;
94
- terminalLedgerEvidence: boolean;
95
- terminalLedgerKind: unknown;
96
- intentionalCleanupStop?: undefined;
97
- duplicateRefineTerminalEvent?: undefined;
98
- duplicateApproval?: undefined;
99
- duplicateCompletion?: undefined;
100
- duplicateStopped?: undefined;
101
- error?: undefined;
102
- bufferedForGeneratingCoordinator?: undefined;
103
- } | {
104
- success: boolean;
105
- forwarded: number;
106
- suppressed: boolean;
107
- duplicateRefineTerminalEvent: boolean;
108
- intentionalCleanupStop?: undefined;
109
- terminalLedgerEvidence?: undefined;
110
- terminalLedgerKind?: undefined;
111
- duplicateApproval?: undefined;
112
- duplicateCompletion?: undefined;
113
- duplicateStopped?: undefined;
114
- error?: undefined;
115
- bufferedForGeneratingCoordinator?: undefined;
116
- } | {
117
- success: boolean;
118
- forwarded: number;
119
- suppressed: boolean;
120
- duplicateApproval: boolean;
121
- intentionalCleanupStop?: undefined;
122
- terminalLedgerEvidence?: undefined;
123
- terminalLedgerKind?: undefined;
124
- duplicateRefineTerminalEvent?: undefined;
125
- duplicateCompletion?: undefined;
126
- duplicateStopped?: undefined;
127
- error?: undefined;
128
- bufferedForGeneratingCoordinator?: undefined;
129
- } | {
130
- success: boolean;
131
- forwarded: number;
132
- suppressed: boolean;
133
- duplicateCompletion: boolean;
134
- terminalLedgerEvidence: boolean;
135
- intentionalCleanupStop?: undefined;
136
- terminalLedgerKind?: undefined;
137
- duplicateRefineTerminalEvent?: undefined;
138
- duplicateApproval?: undefined;
139
- duplicateStopped?: undefined;
140
- error?: undefined;
141
- bufferedForGeneratingCoordinator?: undefined;
142
- } | {
143
- success: boolean;
144
- forwarded: number;
145
- suppressed: boolean;
146
- duplicateCompletion: boolean;
147
- intentionalCleanupStop?: undefined;
148
- terminalLedgerEvidence?: undefined;
149
- terminalLedgerKind?: undefined;
150
- duplicateRefineTerminalEvent?: undefined;
151
- duplicateApproval?: undefined;
152
- duplicateStopped?: undefined;
153
- error?: undefined;
154
- bufferedForGeneratingCoordinator?: undefined;
155
- } | {
156
- success: boolean;
157
- forwarded: number;
158
- suppressed: boolean;
159
- duplicateStopped: boolean;
160
- intentionalCleanupStop?: undefined;
161
- terminalLedgerEvidence?: undefined;
162
- terminalLedgerKind?: undefined;
163
- duplicateRefineTerminalEvent?: undefined;
164
- duplicateApproval?: undefined;
165
- duplicateCompletion?: undefined;
166
- error?: undefined;
167
- bufferedForGeneratingCoordinator?: undefined;
168
- } | {
169
- success: boolean;
170
- forwarded: number;
171
- suppressed?: undefined;
172
- intentionalCleanupStop?: undefined;
173
- terminalLedgerEvidence?: undefined;
174
- terminalLedgerKind?: undefined;
175
- duplicateRefineTerminalEvent?: undefined;
176
- duplicateApproval?: undefined;
177
- duplicateCompletion?: undefined;
178
- duplicateStopped?: undefined;
179
- error?: undefined;
180
- bufferedForGeneratingCoordinator?: undefined;
181
- } | {
182
- success: boolean;
183
- forwarded: number;
184
- bufferedForGeneratingCoordinator: boolean;
185
- suppressed?: undefined;
186
- intentionalCleanupStop?: undefined;
187
- terminalLedgerEvidence?: undefined;
188
- terminalLedgerKind?: undefined;
189
- duplicateRefineTerminalEvent?: undefined;
190
- duplicateApproval?: undefined;
191
- duplicateCompletion?: undefined;
192
- duplicateStopped?: undefined;
193
- error?: undefined;
194
- } | {
195
- success: boolean;
196
- error: string;
197
- };
198
- export declare function setupMeshEventForwarding(components: DaemonComponents): void;
1
+ export type { PendingMeshCoordinatorEvent } from './mesh-events-pending.js';
2
+ export { queuePendingMeshCoordinatorEvent, drainPendingMeshCoordinatorEvents, getPendingMeshCoordinatorEvents, clearPendingMeshCoordinatorEvents, } from './mesh-events-pending.js';
3
+ export { reconcileDirectDispatchCompletionFromTranscript, } from './mesh-events-stale.js';
4
+ export type { MeshQueueTriggerResult } from './mesh-events-coordinator.js';
5
+ export { tryAssignQueueTask, triggerMeshQueue, handleMeshForwardEvent, setupMeshEventForwarding, isMeshCoordinatorEvent, __resetIdleAutoFastForwardForTests, } from './mesh-events-coordinator.js';
@@ -1,4 +1,24 @@
1
- import type { AppendRemoteLedgerResult, MeshLedgerSlice, MeshLedgerSummary } from './mesh-ledger.js';
1
+ import type { AppendRemoteLedgerResult, MeshLedgerSummary } from './mesh-ledger.js';
2
+ /** Minimal ledger slice shape accepted by buildMeshLedgerReplicaEvidence. Covers both JSONL and SQLite slices. */
3
+ export interface AnyLedgerSlice {
4
+ entries: Array<{
5
+ id: string;
6
+ meshId: string;
7
+ timestamp: string;
8
+ kind: string;
9
+ nodeId?: string | null;
10
+ sessionId?: string | null;
11
+ providerType?: string | null;
12
+ payload: unknown;
13
+ }>;
14
+ cursor: {
15
+ afterId: string | null;
16
+ nextAfterId: string | null;
17
+ limit: number;
18
+ hasMore: boolean;
19
+ };
20
+ summary?: MeshLedgerSummary;
21
+ }
2
22
  export type MeshLedgerReplicaStatus = 'local' | 'queried' | 'imported' | 'failed';
3
23
  export interface MeshLedgerReplicaEvidence {
4
24
  nodeId: string;
@@ -22,7 +42,7 @@ export interface MeshLedgerReconciliationEvidence {
22
42
  meshId: string;
23
43
  generatedAt: string;
24
44
  sourceOfTruth: {
25
- kind: 'coordinator_local_jsonl';
45
+ kind: 'coordinator_local_sqlite';
26
46
  p2pOnly: true;
27
47
  cloudD1LedgerSync: false;
28
48
  notes: string;
@@ -47,7 +67,7 @@ export declare function buildMeshLedgerReplicaEvidence(args: {
47
67
  nodeId: string;
48
68
  daemonId?: string;
49
69
  transport: 'local' | 'p2p_datachannel';
50
- slice?: MeshLedgerSlice;
70
+ slice?: AnyLedgerSlice;
51
71
  importResult?: AppendRemoteLedgerResult;
52
72
  status?: MeshLedgerReplicaStatus;
53
73
  error?: string;
@@ -13,6 +13,7 @@
13
13
  * Safety: mode 0o600, atomic append via appendFileSync
14
14
  */
15
15
  import { EventEmitter } from 'events';
16
+ import { MeshRuntimeStore } from './mesh-runtime-store.js';
16
17
  export type MeshLedgerKind = 'task_dispatched' | 'task_completed' | 'task_failed' | 'task_stalled' | 'task_approval_needed' | 'p2p_dispatch_failed' | 'session_launched' | 'session_auto_launch' | 'session_stopped' | 'checkpoint_created' | 'node_cloned' | 'node_joined' | 'node_removed' | 'coordinator_started' | 'recovery_attempted' | 'ledger_replicated' | 'ledger_reconciled' | 'direct_fast_forward';
17
18
  export interface MeshLedgerEntry {
18
19
  id: string;
@@ -184,8 +185,16 @@ export declare function appendLedgerEntry(meshId: string, partial: Omit<MeshLedg
184
185
  * This skips deduplicated entries and rejects malformed/cross-mesh entries.
185
186
  */
186
187
  export declare function appendRemoteLedgerEntries(meshId: string, entries: MeshLedgerEntry[]): AppendRemoteLedgerResult;
188
+ /**
189
+ * Test helper: clear all runtime ledger state for a mesh — SQLite rows, read
190
+ * cache, and the one-time import flag. JSONL files are the caller's concern.
191
+ */
192
+ export declare function __clearMeshLedgerForTests(meshId: string): void;
187
193
  /**
188
194
  * Read ledger entries with optional filtering.
195
+ * G2: SQLite (mesh_event_ledger) is the primary read path; legacy JSONL is
196
+ * imported once per store instance and otherwise retained as an
197
+ * export/import/debug artifact only.
189
198
  */
190
199
  export declare function readLedgerEntries(meshId: string, opts?: ReadLedgerOptions): MeshLedgerEntry[];
191
200
  /**
@@ -194,6 +203,16 @@ export declare function readLedgerEntries(meshId: string, opts?: ReadLedgerOptio
194
203
  * remote daemons on demand without Cloud/D1 becoming a ledger data-plane.
195
204
  */
196
205
  export declare function readLedgerSlice(meshId: string, opts?: ReadLedgerSliceOptions): MeshLedgerSlice;
206
+ /**
207
+ * G4: Read a bounded ledger slice from the SQLite mesh_event_ledger table.
208
+ * This is the preferred P2P reconcile read path; JSONL files are retained as
209
+ * export/import/debug/legacy artifacts only.
210
+ *
211
+ * Returns a shape structurally compatible with MeshLedgerSlice (minus the
212
+ * JSONL-specific `summary` and `sourceOfTruth.path` fields) so callers can
213
+ * pass it to buildMeshLedgerReplicaEvidence without modification.
214
+ */
215
+ export declare function readLedgerSliceFromStore(meshId: string, opts?: ReadLedgerSliceOptions): ReturnType<typeof MeshRuntimeStore.prototype.readLedgerSlice>;
197
216
  /**
198
217
  * Get a summary of mesh activity from the ledger.
199
218
  */
@@ -0,0 +1,58 @@
1
+ /**
2
+ * M3: Mission persistence (minimal form).
3
+ *
4
+ * A mission is a persistent record of a multi-task goal so the plan lives in
5
+ * the system rather than in the coordinator LLM's context. Coordinator
6
+ * sessions can die or compact; a new coordinator reads the mission back at
7
+ * launch and continues.
8
+ *
9
+ * Explicit non-goals (see docs/mesh-product-plan-v2.md Phase M3): this is not
10
+ * a workflow engine and there is no automatic takeover daemon. Progress is
11
+ * never stored — it is derived from queue task statuses (mission_id) at
12
+ * query time.
13
+ */
14
+ export type MeshMissionStatus = 'active' | 'paused' | 'completed' | 'abandoned';
15
+ export declare const MESH_MISSION_STATUSES: MeshMissionStatus[];
16
+ export interface MeshMissionRecord {
17
+ id: string;
18
+ meshId: string;
19
+ title: string;
20
+ goal: string;
21
+ status: MeshMissionStatus;
22
+ createdAt: string;
23
+ updatedAt: string;
24
+ }
25
+ export interface MeshMissionTaskAggregate {
26
+ total: number;
27
+ pending: number;
28
+ assigned: number;
29
+ completed: number;
30
+ failed: number;
31
+ cancelled: number;
32
+ /** Pending tasks held back by a dependency failure (blockedReason set). */
33
+ blocked: number;
34
+ /** Latest updatedAt across the mission's tasks, or null with no tasks. */
35
+ lastActivityAt: string | null;
36
+ }
37
+ export interface MeshMissionSummary extends MeshMissionRecord {
38
+ tasks: MeshMissionTaskAggregate;
39
+ }
40
+ export declare function upsertMeshMission(meshId: string, input: {
41
+ id?: string;
42
+ title: string;
43
+ goal?: string;
44
+ status?: string;
45
+ }): MeshMissionRecord;
46
+ export declare function getMeshMissions(meshId: string, statuses?: MeshMissionStatus[]): MeshMissionRecord[];
47
+ export declare function getMeshMission(meshId: string, missionId: string): MeshMissionRecord | null;
48
+ /** Aggregate task statuses for a mission at query time (no stored progress). */
49
+ export declare function summarizeMissionTasks(meshId: string, missionId: string): MeshMissionTaskAggregate;
50
+ export declare function summarizeMeshMission(meshId: string, mission: MeshMissionRecord): MeshMissionSummary;
51
+ /** Active mission summaries for mesh_status / coordinator prompt injection. */
52
+ export declare function getActiveMeshMissionSummaries(meshId: string): MeshMissionSummary[];
53
+ /**
54
+ * M3-3: render active missions as a prompt section for {{mission}}.
55
+ * Empty string when no active mission — the prompt stays byte-identical to
56
+ * the pre-M3 output in that case (regression guarantee).
57
+ */
58
+ export declare function buildMissionPromptSection(meshId: string): string;