@adhdev/daemon-core 0.9.82-rc.136 → 0.9.82-rc.138

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 (63) hide show
  1. package/dist/chat/source-machine.d.ts +166 -0
  2. package/dist/chat/source-resolver.d.ts +104 -0
  3. package/dist/cli-adapters/cli-script-runner.d.ts +45 -0
  4. package/dist/cli-adapters/cli-state-engine.d.ts +169 -0
  5. package/dist/cli-adapters/provider-cli-adapter.d.ts +72 -74
  6. package/dist/cli-adapters/provider-cli-parse.d.ts +1 -0
  7. package/dist/cli-adapters/provider-cli-shared.d.ts +5 -0
  8. package/dist/config/chat-history.d.ts +1 -0
  9. package/dist/index.d.ts +3 -3
  10. package/dist/index.js +3507 -2288
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +3515 -2301
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/mesh/beads-db.d.ts +54 -0
  15. package/dist/mesh/contracts.d.ts +164 -0
  16. package/dist/mesh/mesh-active-work.d.ts +7 -1
  17. package/dist/mesh/mesh-events.d.ts +10 -4
  18. package/dist/mesh/mesh-ledger.d.ts +21 -1
  19. package/dist/mesh/mesh-refine-status.d.ts +2 -3
  20. package/dist/mesh/mesh-work-queue.d.ts +17 -0
  21. package/dist/mesh/worktree-bootstrap-config.d.ts +2 -4
  22. package/dist/providers/contracts.d.ts +19 -0
  23. package/dist/providers/read-chat-contract.d.ts +29 -0
  24. package/dist/providers/transcript-v2.d.ts +176 -0
  25. package/dist/repo-mesh-types.d.ts +5 -0
  26. package/dist/shared-types.d.ts +7 -0
  27. package/dist/status/snapshot.d.ts +1 -0
  28. package/dist/types.d.ts +5 -0
  29. package/package.json +1 -1
  30. package/src/chat/source-machine.ts +534 -0
  31. package/src/chat/source-resolver.ts +0 -0
  32. package/src/chat/subscription-updates.ts +9 -0
  33. package/src/cli-adapters/cli-script-runner.ts +145 -0
  34. package/src/cli-adapters/cli-state-engine.ts +1054 -0
  35. package/src/cli-adapters/provider-cli-adapter.d.ts +0 -1
  36. package/src/cli-adapters/provider-cli-adapter.ts +413 -1399
  37. package/src/cli-adapters/provider-cli-parse.ts +3 -0
  38. package/src/cli-adapters/provider-cli-shared.ts +17 -1
  39. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +17 -1
  40. package/src/cli-adapters/terminal-backends/xterm-backend.ts +8 -1
  41. package/src/commands/chat-commands.ts +715 -368
  42. package/src/commands/router.ts +22 -2
  43. package/src/config/chat-history.ts +43 -16
  44. package/src/git/git-worktree.ts +8 -1
  45. package/src/index.ts +3 -2
  46. package/src/mesh/beads-db.ts +305 -2
  47. package/src/mesh/contracts.ts +329 -0
  48. package/src/mesh/coordinator-prompt.ts +12 -17
  49. package/src/mesh/mesh-active-work.ts +162 -59
  50. package/src/mesh/mesh-events.ts +198 -53
  51. package/src/mesh/mesh-ledger.ts +321 -105
  52. package/src/mesh/mesh-refine-status.ts +2 -3
  53. package/src/mesh/mesh-work-queue.ts +116 -120
  54. package/src/mesh/worktree-bootstrap-config.ts +17 -4
  55. package/src/providers/contracts.ts +19 -0
  56. package/src/providers/provider-loader.ts +21 -7
  57. package/src/providers/provider-schema.ts +12 -0
  58. package/src/providers/read-chat-contract.ts +74 -14
  59. package/src/providers/transcript-v2.ts +567 -0
  60. package/src/repo-mesh-types.ts +10 -0
  61. package/src/shared-types.ts +7 -0
  62. package/src/status/snapshot.ts +35 -11
  63. package/src/types.ts +5 -0
@@ -15,31 +15,28 @@
15
15
  */
16
16
  import type { CliAdapter } from '../cli-adapter-types.js';
17
17
  import { type PtyRuntimeMetadata, type PtyTransportFactory } from './pty-transport.js';
18
- import { type CliProviderModule, type CliScripts, type CliSessionStatus } from './provider-cli-shared.js';
18
+ import { type CliProviderModule, type CliScripts, type CliSessionStatus, type CliTraceEntry, type ParsedSession } from './provider-cli-shared.js';
19
+ import { CliStateEngine, type CliBufferSnapshot } from './cli-state-engine.js';
20
+ import { type TurnParseScope } from './provider-cli-parse.js';
19
21
  import { type ProviderResolutionMeta } from './provider-cli-config.js';
20
22
  export { normalizeCliProviderForRuntime, type CliApprovalInput, type CliChatMessage, type CliProviderModule, type CliScreenLine, type CliScreenSnapshot, type CliScriptInput, type CliScripts, type CliSessionStatus, type CliStatusInput, type CliTraceEntry, } from './provider-cli-shared.js';
21
23
  export declare function appendBoundedText(current: string, chunk: string, maxChars: number): string;
22
24
  export declare class ProviderCliAdapter implements CliAdapter {
23
25
  private extraArgs;
24
26
  private extraEnv;
25
- readonly cliType: string;
27
+ cliType: string;
26
28
  readonly cliName: string;
27
29
  workingDir: string;
28
30
  private provider;
29
31
  private ptyProcess;
30
32
  private transportFactory;
31
- private currentStatus;
32
33
  private onStatusChange;
34
+ readonly engine: CliStateEngine;
33
35
  private responseBuffer;
34
36
  private recentOutputBuffer;
35
- private isWaitingForResponse;
36
- private activeModal;
37
- private parseErrorMessage;
37
+ private get parseErrorMessage();
38
38
  private providerSessionId;
39
- private providerErrorMessage;
40
- private providerErrorReason;
41
39
  private responseTimeout;
42
- private idleTimeout;
43
40
  private ready;
44
41
  private startupBuffer;
45
42
  private startupParseGate;
@@ -60,33 +57,15 @@ export declare class ProviderCliAdapter implements CliAdapter {
60
57
  private lastScreenSnapshotReadAt;
61
58
  private serverConn;
62
59
  private logBuffer;
63
- private lastApprovalResolvedAt;
64
- private approvalTransitionBuffer;
65
- private approvalExitTimeout;
66
- private pendingScriptStatus;
67
- private pendingScriptStatusSince;
68
- private pendingScriptStatusTimer;
69
- private settleTimer;
70
- private settledBuffer;
71
- private submitPendingUntil;
72
- private responseSettleIgnoreUntil;
73
- private responseEpoch;
74
- private submitRetryTimer;
75
- private submitRetryUsed;
76
- private submitRetryPromptSnippet;
77
- private idleFinishCandidate;
78
- private finishRetryTimer;
79
- private finishRetryCount;
80
60
  private pendingOutboundQueue;
81
61
  private pendingOutboundFlushTimer;
82
62
  private pendingOutboundFlushInFlight;
83
- private providerErrorRetryTimer;
84
- private providerErrorRetryKey;
63
+ private submitRetryTimer;
85
64
  private resizeSuppressUntil;
86
- private statusHistory;
87
- private cliScripts;
88
- /** Per-session opaque state object created by cliScripts.createState(), reset on stop. */
89
- private scriptState;
65
+ private readonly runner;
66
+ /** @deprecated use runner.cliScripts for direct script access */
67
+ get cliScripts(): CliScripts;
68
+ set cliScripts(scripts: CliScripts);
90
69
  private runtimeSettings;
91
70
  /** Full accumulated rendered PTY transcript for parser/readback use */
92
71
  private accumulatedBuffer;
@@ -106,16 +85,9 @@ export declare class ProviderCliAdapter implements CliAdapter {
106
85
  * Hermes turn (tool calls + reasoning + final bubble) without the
107
86
  * rolling window pushing the turn's ╭─ opening line out of view. */
108
87
  private static readonly MAX_ACCUMULATED_BUFFER;
109
- private currentTurnScope;
110
- private traceEntries;
111
- private traceSeq;
112
- private traceSessionId;
113
88
  private parsedStatusCache;
114
89
  private static readonly SCREEN_SNAPSHOT_MIN_INTERVAL_MS;
115
- private static readonly MAX_TRACE_ENTRIES;
116
90
  private readonly providerResolutionMeta;
117
- private static readonly FINISH_RETRY_DELAY_MS;
118
- private static readonly MAX_FINISH_RETRIES;
119
91
  private getBufferState;
120
92
  private recordBoundedAppendDrop;
121
93
  private readTerminalScreenText;
@@ -128,18 +100,12 @@ export declare class ProviderCliAdapter implements CliAdapter {
128
100
  private shouldUseFullProviderTranscriptContext;
129
101
  private getIdleFinishConfirmMs;
130
102
  private getStatusActivityHoldMs;
131
- private setStatus;
132
- private clearIdleFinishCandidate;
133
- private armIdleFinishCandidate;
134
- private recordTrace;
135
- private resetTraceSession;
136
103
  private readonly timeouts;
137
104
  private readonly approvalKeys;
138
105
  private readonly sendDelayMs;
139
106
  private readonly sendKey;
140
107
  private readonly submitStrategy;
141
108
  private readonly requirePromptEchoBeforeSubmit;
142
- private static readonly SCRIPT_STATUS_DEBOUNCE_MS;
143
109
  constructor(provider: CliProviderModule, workingDir: string, extraArgs?: string[], extraEnv?: Record<string, string>, transportFactory?: PtyTransportFactory);
144
110
  /** Inject CLI scripts after construction (e.g. when resolved by ProviderLoader) */
145
111
  setCliScripts(scripts: CliScripts): void;
@@ -154,37 +120,15 @@ export declare class ProviderCliAdapter implements CliAdapter {
154
120
  private handleOutput;
155
121
  private resolveStartupState;
156
122
  private scheduleStartupSettleCheck;
157
- private scheduleSettle;
158
- private armApprovalExitTimeout;
159
- private shouldRetryFinishResponse;
160
- private hasRecentInteractiveActivity;
161
- private shouldDeferIdleTimeoutFinish;
162
123
  private waitForInteractivePrompt;
163
124
  private clearAllTimers;
164
- private clearStaleIdleResponseGuard;
165
- private clearParsedIdleResponseGuard;
166
- private hasMeaningfulResponseBuffer;
167
- private evaluateSettled;
168
- private applyPendingScriptStatusDebounce;
169
- private applyHoldGenerating;
170
- private applyWaitingApproval;
171
- private applyGenerating;
172
- private applyError;
173
- private maybeScheduleProviderErrorRetry;
174
- private applyIdle;
175
- private finishResponse;
176
- private maybeCommitVisibleIdleTranscript;
177
- private commitCurrentTranscript;
178
- private invokeCliScript;
179
- private runParseSession;
180
- private runDetectStatus;
181
- private runParseApproval;
182
- private hasActionableApproval;
183
- private parsedStatusHasFinalAssistantMessage;
125
+ runParseSession(): ParsedSession | null;
126
+ runDetectStatus(text: string): string | null;
127
+ runParseApproval(tail: string): {
128
+ message: string;
129
+ buttons: string[];
130
+ } | null;
184
131
  private applyParsedSessionMetadata;
185
- private parsedStatusHasFinalStandardAssistantMessage;
186
- private shouldKeepCodexTurnOpenForFinish;
187
- private rescheduleCodexFinishCheck;
188
132
  private projectEffectiveStatus;
189
133
  getStatus(options?: {
190
134
  allowParse?: boolean;
@@ -204,6 +148,7 @@ export declare class ProviderCliAdapter implements CliAdapter {
204
148
  */
205
149
  resolveAction(data: any): Promise<void>;
206
150
  private isSubmitStuck;
151
+ private hasMeaningfulResponseBufferLocal;
207
152
  private writeToPty;
208
153
  private resetPendingSendState;
209
154
  private commitSendUserTurn;
@@ -235,8 +180,61 @@ export declare class ProviderCliAdapter implements CliAdapter {
235
180
  clearHistory(): void;
236
181
  isProcessing(): boolean;
237
182
  isReady(): boolean;
238
- writeRaw(data: string): Promise<void>;
183
+ get currentStatus(): CliSessionStatus['status'];
184
+ set currentStatus(v: CliSessionStatus['status']);
185
+ get isWaitingForResponse(): boolean;
186
+ set isWaitingForResponse(v: boolean);
187
+ get activeModal(): {
188
+ message: string;
189
+ buttons: string[];
190
+ } | null;
191
+ set activeModal(v: {
192
+ message: string;
193
+ buttons: string[];
194
+ } | null);
195
+ get currentTurnScope(): TurnParseScope | null;
196
+ set currentTurnScope(v: TurnParseScope | null);
197
+ get responseEpoch(): number;
198
+ set responseEpoch(v: number);
199
+ get submitRetryUsed(): boolean;
200
+ set submitRetryUsed(v: boolean);
201
+ get submitRetryPromptSnippet(): string;
202
+ set submitRetryPromptSnippet(v: string);
203
+ get responseSettleIgnoreUntil(): number;
204
+ set responseSettleIgnoreUntil(v: number);
205
+ get submitPendingUntil(): number;
206
+ set submitPendingUntil(v: number);
207
+ get lastApprovalResolvedAt(): number;
208
+ set lastApprovalResolvedAt(v: number);
209
+ get providerErrorMessage(): string | null;
210
+ get providerErrorReason(): string | null;
211
+ get pendingScriptStatus(): 'generating' | 'waiting_approval' | null;
212
+ get pendingScriptStatusSince(): number;
213
+ get finishRetryCount(): number;
214
+ set finishRetryCount(v: number);
215
+ get traceSessionId(): string;
216
+ get traceEntries(): CliTraceEntry[];
217
+ get statusHistory(): {
218
+ status: string;
219
+ at: number;
220
+ trigger?: string;
221
+ }[];
222
+ get traceSeq(): number;
223
+ /** Expose engine's evaluateSettled for test access */
224
+ evaluateSettled(): void;
225
+ /** Expose engine's scheduleSettle for test access */
226
+ scheduleSettle(): void;
227
+ /** Expose engine's clearIdleFinishCandidate for test access */
228
+ clearIdleFinishCandidate(reason: string): void;
229
+ /** Expose engine's finishResponse for test access */
230
+ finishResponse(): void;
231
+ /** Returns a point-in-time snapshot of all buffer/screen state for external consumers (e.g. CliStateEngine). */
232
+ getSnapshot(): CliBufferSnapshot;
233
+ isAlive(): boolean;
234
+ flushOutboundQueue(): void;
235
+ writeRaw(data: string | Buffer): Promise<void>;
239
236
  resolveModal(buttonIndex: number): void;
237
+ getApprovalKeyForIndex(buttonIndex: number): string | undefined;
240
238
  /** Returns true if an approval was resolved within the adapter's cooldown window. */
241
239
  isApprovalRecentlyResolved(): boolean;
242
240
  resize(cols: number, rows: number): void;
@@ -23,6 +23,7 @@ export declare function buildCliParseInput(options: {
23
23
  isWaitingForResponse?: boolean;
24
24
  scope?: TurnParseScope | null;
25
25
  runtimeSettings: Record<string, any>;
26
+ spawnAt?: number;
26
27
  }): CliScriptInput;
27
28
  export declare function summarizeCliTraceText(text: string, max?: number): string;
28
29
  export declare function summarizeCliTraceMessages(messages: CliChatMessage[], limit?: number): {
@@ -137,6 +137,7 @@ export interface CliScriptInput {
137
137
  promptText?: string;
138
138
  settings?: Record<string, any>;
139
139
  args?: Record<string, any>;
140
+ spawnAt?: number;
140
141
  }
141
142
  export interface CliStatusInput {
142
143
  tail: string;
@@ -180,6 +181,10 @@ export interface CliProviderModule {
180
181
  requirePromptEchoBeforeSubmit?: boolean;
181
182
  /** Allow sending another prompt while the CLI is still generating so users can intervene mid-turn. */
182
183
  allowInputDuringGeneration?: boolean;
184
+ /** When true, only transition to idle after the parsed transcript includes a final standard assistant message. */
185
+ requiresFinalAssistantBeforeIdle?: boolean;
186
+ /** When true, allow providers to augment stale snapshot data before parse. Reserved for future use. */
187
+ augmentStaleSnapshot?: boolean;
183
188
  /** When provider-owned, daemon treats provider parser output as canonical transcript authority. */
184
189
  transcriptAuthority?: 'provider' | 'daemon';
185
190
  /** Full context lets provider-owned parsers canonicalize retained history instead of daemon prefix stitching. */
@@ -110,6 +110,7 @@ export declare function readProviderChatHistory(agentType: string, options?: {
110
110
  excludeRecentCount?: number;
111
111
  historyBehavior?: ProviderHistoryBehavior;
112
112
  scripts?: ProviderNativeHistoryScripts;
113
+ excludeInProgressTurn?: boolean;
113
114
  }): {
114
115
  messages: HistoryMessage[];
115
116
  hasMore: boolean;
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export type { ChatBubbleState, ChatMessage, ExtensionInfo, CommandResult as CoreCommandResult, ProviderConfig, DaemonEvent, StatusResponse, SystemInfo, DetectedIde, ProviderInfo, AgentEntry, } from './types.js';
7
7
  export type { SessionEntry, CompactSessionEntry, CompactDaemonEntry, CloudDaemonSummaryEntry, DashboardBootstrapDaemonEntry, VersionUpdateReason, CloudStatusReportPayload, DaemonStatusEventPayload, DashboardStatusEventPayload, SessionTransport, SessionKind, SessionCapability, AgentSessionStream, ReadChatCursor, ReadChatSyncResult, TransportTopic, SessionChatTailSubscriptionParams, SessionRuntimeOutputSubscriptionParams, MachineRuntimeSubscriptionParams, SessionHostDiagnosticsSubscriptionParams, SessionModalSubscriptionParams, DaemonMetadataSubscriptionParams, WorkspaceGitSubscriptionParams, SessionChatTailUpdate, MachineRuntimeUpdate, SessionHostDiagnosticsUpdate, SessionModalUpdate, DaemonMetadataUpdate, TopicUpdateEnvelope, SubscribeRequest, UnsubscribeRequest, StandaloneWsStatusPayload, AvailableProviderInfo, AcpConfigOption, AcpMode, ProviderControlSchema, StatusReportPayload, MachineInfo, SessionHostDiagnosticsSnapshot, SessionHostRecord, SessionHostWriteOwner, SessionHostAttachedClient, SessionHostLogEntry, SessionHostRequestTrace, SessionHostRuntimeTransition, DetectedIdeInfo, WorkspaceEntry, ProviderSummaryItem, ProviderSummaryMetadata, ProviderState, ProviderStatus, ProviderErrorReason, SessionActiveChatData, ActiveChatData, IdeProviderState, CliProviderState, AcpProviderState, ExtensionProviderState, MessageInputSupport, InputMediaStrategyDescriptor, InputAttachmentStrategy, InputMediaType, } from './shared-types.js';
8
- export type { RepoMesh, RepoMeshDaemonRole, RepoMeshHostMetadata, RepoMeshHostPairingMetadata, RepoMeshHostStatus, RepoMeshNode, RepoMeshNodeHealth, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshRelatedRepo, RepoMeshNodeCapabilities, DetectedCommand, ProjectContextSnapshot, ProjectContextSource, RepoMeshCoordinatorConfig, LocalMeshConfig, LocalMeshEntry, LocalMeshNodeEntry, RepoMeshStatus, RepoMeshNodeStatus, RepoMeshSessionStatus, RepoMeshQueueTask, RepoMeshQueueTaskStatus, RepoMeshQueueSummary, RepoMeshQueueStatus, RepoMeshLedgerEntryStatus, RepoMeshLedgerSummaryStatus, RepoMeshLedgerStatus, } from './repo-mesh-types.js';
8
+ export type { RepoMesh, RepoMeshDaemonRole, RepoMeshHostMetadata, RepoMeshHostPairingMetadata, RepoMeshHostStatus, RepoMeshNode, RepoMeshNodeHealth, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshRelatedRepo, RepoMeshNodeCapabilities, DetectedCommand, ProjectContextSnapshot, ProjectContextSource, RepoMeshCoordinatorConfig, LocalMeshConfig, LocalMeshEntry, LocalMeshNodeEntry, RepoMeshStatus, RepoMeshNodeStatus, RepoMeshSessionStatus, RepoMeshQueueTask, RepoMeshQueueTaskStatus, RepoMeshQueueSummary, RepoMeshQueueStatus, RepoMeshLedgerEntryStatus, RepoMeshLedgerSummaryStatus, RepoMeshLedgerStatus, MeshAsyncJobLifecycle, } from './repo-mesh-types.js';
9
9
  export { DEFAULT_MESH_POLICY } from './repo-mesh-types.js';
10
10
  export * from './git/index.js';
11
11
  import type { RuntimeWriteOwner as _RuntimeWriteOwner } from './shared-types-extra.js';
@@ -41,8 +41,8 @@ export { fastForwardMeshNode } from './mesh/mesh-fast-forward.js';
41
41
  export type { MeshFastForwardNodeArgs, MeshFastForwardPlannedStep, MeshFastForwardResult } from './mesh/mesh-fast-forward.js';
42
42
  export { buildMeshLedgerReconciliationEvidence, buildMeshLedgerReplicaEvidence } from './mesh/mesh-ledger-reconciliation.js';
43
43
  export type { MeshLedgerReconciliationEvidence, MeshLedgerReplicaEvidence, MeshLedgerReplicaStatus } from './mesh/mesh-ledger-reconciliation.js';
44
- export { enqueueTask, getQueue, claimNextTask, updateTaskStatus, updateSessionTaskStatus, cancelTask, requeueTask, getMeshQueueStats, getMeshQueueRevision, normalizeMeshTaskMode, validateMeshTaskModeRequest } from './mesh/mesh-work-queue.js';
45
- export type { MeshWorkQueueEntry, MeshTaskStatus, MeshTaskMode, MeshWorkQueueStats, MeshQueueMutationOptions, MeshTaskModeValidationResult } from './mesh/mesh-work-queue.js';
44
+ export { enqueueTask, getQueue, claimNextTask, updateTaskStatus, updateSessionTaskStatus, cancelTask, requeueTask, getMeshQueueStats, getMeshQueueRevision, normalizeMeshTaskMode, validateMeshTaskModeRequest, insertDirectDispatch, getActiveDirectDispatches, updateDirectDispatchStatus, cleanupTerminalDirectDispatches, markStaleDirectDispatches } from './mesh/mesh-work-queue.js';
45
+ export type { MeshWorkQueueEntry, MeshTaskStatus, MeshTaskMode, MeshWorkQueueStats, MeshQueueMutationOptions, MeshTaskModeValidationResult, DirectDispatchRecord } from './mesh/mesh-work-queue.js';
46
46
  export { buildCompactStaleDirectWorkSummary, buildMeshActiveWork, buildMeshActiveWorkSummary } from './mesh/mesh-active-work.js';
47
47
  export type { MeshActiveWorkRecord, MeshActiveWorkStatus, MeshActiveWorkSummary, MeshActiveWorkSource, MeshStaleDirectWorkSummary } from './mesh/mesh-active-work.js';
48
48
  export { buildMeshAsyncRefineJobs } from './mesh/mesh-refine-status.js';