@adhdev/daemon-core 0.9.82-rc.10 → 0.9.82-rc.101

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 (67) hide show
  1. package/dist/cli-adapters/provider-cli-adapter.d.ts +13 -0
  2. package/dist/cli-adapters/provider-cli-parse.d.ts +1 -0
  3. package/dist/cli-adapters/provider-cli-shared.d.ts +10 -0
  4. package/dist/commands/router.d.ts +22 -0
  5. package/dist/config/mesh-config.d.ts +66 -1
  6. package/dist/index.d.ts +12 -5
  7. package/dist/index.js +5793 -1219
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +5759 -1206
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/installer.d.ts +1 -4
  12. package/dist/launch.d.ts +1 -1
  13. package/dist/logging/async-batch-writer.d.ts +10 -0
  14. package/dist/mesh/beads-db.d.ts +18 -0
  15. package/dist/mesh/mesh-active-work.d.ts +60 -0
  16. package/dist/mesh/mesh-events.d.ts +26 -5
  17. package/dist/mesh/mesh-fast-forward.d.ts +39 -0
  18. package/dist/mesh/mesh-host-ownership.d.ts +9 -0
  19. package/dist/mesh/mesh-ledger.d.ts +38 -1
  20. package/dist/mesh/mesh-work-queue.d.ts +27 -5
  21. package/dist/mesh/refine-config.d.ts +176 -0
  22. package/dist/providers/chat-message-normalization.d.ts +1 -0
  23. package/dist/providers/cli-provider-instance.d.ts +2 -1
  24. package/dist/repo-mesh-types.d.ts +46 -0
  25. package/dist/status/reporter.d.ts +2 -0
  26. package/package.json +3 -1
  27. package/src/boot/daemon-lifecycle.ts +1 -0
  28. package/src/cli-adapters/provider-cli-adapter.ts +319 -14
  29. package/src/cli-adapters/provider-cli-parse.d.ts +1 -0
  30. package/src/cli-adapters/provider-cli-parse.ts +4 -0
  31. package/src/cli-adapters/provider-cli-runtime.ts +3 -1
  32. package/src/cli-adapters/provider-cli-shared.d.ts +2 -0
  33. package/src/cli-adapters/provider-cli-shared.ts +28 -10
  34. package/src/commands/chat-commands.ts +570 -20
  35. package/src/commands/cli-manager.ts +129 -1
  36. package/src/commands/handler.ts +8 -1
  37. package/src/commands/mesh-coordinator.ts +13 -143
  38. package/src/commands/router.ts +2820 -437
  39. package/src/config/chat-history.ts +9 -7
  40. package/src/config/mesh-config.ts +245 -1
  41. package/src/daemon/dev-cli-debug.ts +10 -1
  42. package/src/detection/ide-detector.ts +26 -16
  43. package/src/index.ts +30 -4
  44. package/src/installer.d.ts +1 -1
  45. package/src/installer.ts +8 -6
  46. package/src/launch.d.ts +1 -1
  47. package/src/launch.ts +37 -28
  48. package/src/logging/async-batch-writer.ts +55 -0
  49. package/src/logging/logger.ts +2 -1
  50. package/src/mesh/beads-db.ts +176 -0
  51. package/src/mesh/coordinator-prompt.ts +31 -8
  52. package/src/mesh/mesh-active-work.ts +255 -0
  53. package/src/mesh/mesh-events.ts +389 -47
  54. package/src/mesh/mesh-fast-forward.ts +430 -0
  55. package/src/mesh/mesh-host-ownership.ts +73 -0
  56. package/src/mesh/mesh-ledger.ts +138 -1
  57. package/src/mesh/mesh-work-queue.ts +199 -137
  58. package/src/mesh/refine-config.ts +356 -0
  59. package/src/providers/chat-message-normalization.ts +7 -12
  60. package/src/providers/cli-provider-instance.ts +102 -17
  61. package/src/providers/ide-provider-instance.ts +17 -3
  62. package/src/providers/provider-loader.ts +10 -4
  63. package/src/providers/read-chat-contract.ts +1 -1
  64. package/src/providers/version-archive.ts +38 -20
  65. package/src/repo-mesh-types.ts +51 -0
  66. package/src/status/reporter.ts +15 -0
  67. package/src/system/host-memory.ts +29 -12
@@ -74,6 +74,9 @@ export declare class ProviderCliAdapter implements CliAdapter {
74
74
  private idleFinishCandidate;
75
75
  private finishRetryTimer;
76
76
  private finishRetryCount;
77
+ private pendingOutboundQueue;
78
+ private pendingOutboundFlushTimer;
79
+ private pendingOutboundFlushInFlight;
77
80
  private resizeSuppressUntil;
78
81
  private statusHistory;
79
82
  private cliScripts;
@@ -154,6 +157,7 @@ export declare class ProviderCliAdapter implements CliAdapter {
154
157
  private waitForInteractivePrompt;
155
158
  private clearAllTimers;
156
159
  private clearStaleIdleResponseGuard;
160
+ private clearParsedIdleResponseGuard;
157
161
  private hasMeaningfulResponseBuffer;
158
162
  private evaluateSettled;
159
163
  private applyPendingScriptStatusDebounce;
@@ -169,6 +173,10 @@ export declare class ProviderCliAdapter implements CliAdapter {
169
173
  private runDetectStatus;
170
174
  private runParseApproval;
171
175
  private hasActionableApproval;
176
+ private parsedStatusHasFinalAssistantMessage;
177
+ private parsedStatusHasFinalStandardAssistantMessage;
178
+ private shouldKeepCodexTurnOpenForFinish;
179
+ private rescheduleCodexFinishCheck;
172
180
  private projectEffectiveStatus;
173
181
  getStatus(options?: {
174
182
  allowParse?: boolean;
@@ -199,6 +207,11 @@ export declare class ProviderCliAdapter implements CliAdapter {
199
207
  private submitImmediatePrompt;
200
208
  private waitForEchoAndSubmit;
201
209
  sendMessage(text: string): Promise<void>;
210
+ private enqueuePendingOutboundMessage;
211
+ private shouldQueuePendingOutboundMessage;
212
+ private schedulePendingOutboundFlush;
213
+ private flushPendingOutboundQueue;
214
+ private sendMessageNow;
202
215
  getPartialResponse(): string;
203
216
  getDebugSnapshot(): Record<string, unknown>;
204
217
  getRuntimeMetadata(): PtyRuntimeMetadata | null;
@@ -15,6 +15,7 @@ export declare function buildCliParseInput(options: {
15
15
  accumulatedRawBuffer: string;
16
16
  recentOutputBuffer: string;
17
17
  terminalScreenText: string;
18
+ workingDir?: string;
18
19
  baseMessages: CliChatMessage[];
19
20
  partialResponse: string;
20
21
  isWaitingForResponse?: boolean;
@@ -26,6 +26,14 @@ export interface CliSessionStatus {
26
26
  message: string;
27
27
  buttons: string[];
28
28
  } | null;
29
+ pendingOutboundCount?: number;
30
+ pendingOutboundMessages?: Array<{
31
+ id: string;
32
+ role: 'user';
33
+ content: string;
34
+ queuedAt: number;
35
+ source: string;
36
+ }>;
29
37
  errorMessage?: string;
30
38
  errorReason?: string;
31
39
  bufferState?: {
@@ -112,6 +120,8 @@ export interface CliScriptInput {
112
120
  rawBuffer: string;
113
121
  recentBuffer: string;
114
122
  screenText: string;
123
+ workspace?: string;
124
+ workingDir?: string;
115
125
  screen: CliScreenSnapshot;
116
126
  bufferScreen: CliScreenSnapshot;
117
127
  recentScreen: CliScreenSnapshot;
@@ -74,6 +74,8 @@ export interface CommandRouterDeps {
74
74
  sessionHostControl?: SessionHostControlPlane | null;
75
75
  /** Selected-coordinator mesh peer telemetry surface for target daemons, when supported by the runtime. */
76
76
  getMeshPeerConnectionStatus?: (daemonId: string) => Record<string, unknown> | null;
77
+ /** Dispatch a command to a remote mesh node via P2P/relay. Injected by cloud runtime; absent in standalone. */
78
+ dispatchMeshCommand?: (daemonId: string, cmd: string, args: Record<string, unknown>) => Promise<unknown>;
77
79
  }
78
80
  export interface CommandRouterResult {
79
81
  success: boolean;
@@ -85,9 +87,22 @@ export declare class DaemonCommandRouter {
85
87
  * Allows the MCP server to query mesh data via get_mesh even when
86
88
  * the mesh doesn't exist in the local meshes.json file. */
87
89
  private inlineMeshCache;
90
+ /** Coordinator-owned whole-mesh aggregate status snapshots. Browser callers read this by default. */
91
+ private aggregateMeshStatusCache;
92
+ /** In-memory async Refinery jobs keyed by meshId:nodeId to reject/return duplicate in-flight requests. */
93
+ private runningRefineJobs;
94
+ /** Terminal async Refinery jobs preserve a clear answer after the worktree node has been removed. */
95
+ private terminalRefineJobs;
88
96
  constructor(deps: CommandRouterDeps);
97
+ private cloneJsonValue;
98
+ private hydrateCachedAggregateMeshStatusFromInline;
99
+ private getCachedAggregateMeshStatus;
100
+ private rememberAggregateMeshStatus;
89
101
  getCachedInlineMesh(meshId: string, inlineMesh?: unknown): any | undefined;
102
+ private warmInlineMeshCache;
90
103
  private getMeshForCommand;
104
+ private invalidateAggregateMeshStatus;
105
+ private requireMeshHostMutationOwner;
91
106
  private updateInlineMeshNode;
92
107
  private removeInlineMeshNode;
93
108
  private normalizeMeshSessionCleanupMode;
@@ -110,6 +125,13 @@ export declare class DaemonCommandRouter {
110
125
  * @param source Log source ('ws' | 'p2p' | 'standalone' | etc.)
111
126
  */
112
127
  execute(cmd: string, args: any, source?: string): Promise<CommandRouterResult>;
128
+ private buildRefineJobKey;
129
+ private buildRefineJobHandle;
130
+ private queueRefineJobEvent;
131
+ private appendRefineJobLedger;
132
+ private executeMeshRefineNodeSynchronously;
133
+ private finishMeshRefineJob;
134
+ private startMeshRefineJob;
113
135
  /**
114
136
  * Daemon-level command execution (IDE start/stop/restart, CLI, detect, logs).
115
137
  * Returns null if not handled at this level → caller delegates to CommandHandler.
@@ -5,7 +5,7 @@
5
5
  * Cloud mode syncs these to D1 via server routes; standalone mode
6
6
  * uses this file as the single source of truth.
7
7
  */
8
- import type { LocalMeshEntry, LocalMeshNodeEntry, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshNodeCapabilities, RepoMeshCoordinatorConfig } from '../repo-mesh-types.js';
8
+ import type { LocalMeshEntry, LocalMeshNodeEntry, RepoMeshPolicy, RepoMeshNodePolicy, RepoMeshNodeCapabilities, RepoMeshCoordinatorConfig, RepoMeshHostMetadata, RepoMeshDaemonRole } from '../repo-mesh-types.js';
9
9
  /**
10
10
  * Normalize a Git remote URL into a stable identity string.
11
11
  * e.g. "git@github.com:user/repo.git" → "github.com/user/repo"
@@ -22,6 +22,7 @@ export interface CreateMeshOptions {
22
22
  defaultBranch?: string;
23
23
  policy?: Partial<RepoMeshPolicy>;
24
24
  coordinator?: RepoMeshCoordinatorConfig;
25
+ meshHost?: RepoMeshHostMetadata;
25
26
  }
26
27
  export declare function createMesh(opts: CreateMeshOptions): LocalMeshEntry;
27
28
  export interface UpdateMeshOptions {
@@ -29,9 +30,72 @@ export interface UpdateMeshOptions {
29
30
  defaultBranch?: string;
30
31
  policy?: Partial<RepoMeshPolicy>;
31
32
  coordinator?: RepoMeshCoordinatorConfig;
33
+ meshHost?: RepoMeshHostMetadata;
32
34
  }
33
35
  export declare function updateMesh(meshId: string, opts: UpdateMeshOptions): LocalMeshEntry | undefined;
34
36
  export declare function deleteMesh(meshId: string): boolean;
37
+ export declare function tokenIdForManualPairing(token: string): string;
38
+ export interface ConfigureMeshHostPairingOptions {
39
+ hostAddress: string;
40
+ token: string;
41
+ now?: string;
42
+ }
43
+ export declare function configureMeshHostPairing(meshId: string, opts: ConfigureMeshHostPairingOptions): {
44
+ mesh: LocalMeshEntry;
45
+ meshHost: RepoMeshHostMetadata;
46
+ hostAddress: string;
47
+ } | undefined;
48
+ export interface CreateMeshHostPairingTokenOptions {
49
+ token?: string;
50
+ expiresAt?: string;
51
+ now?: string;
52
+ }
53
+ export declare function createMeshHostPairingToken(meshId: string, opts?: CreateMeshHostPairingTokenOptions): {
54
+ mesh: LocalMeshEntry;
55
+ meshHost: RepoMeshHostMetadata;
56
+ token: string;
57
+ tokenId: string;
58
+ expiresAt?: string;
59
+ } | undefined;
60
+ export interface MeshHostJoinMemberNodeInput {
61
+ id?: string;
62
+ workspace: string;
63
+ repoRoot?: string;
64
+ daemonId?: string;
65
+ machineId?: string;
66
+ userOverrides?: Partial<RepoMeshNodeCapabilities>;
67
+ policy?: RepoMeshNodePolicy;
68
+ role?: RepoMeshDaemonRole;
69
+ }
70
+ export interface ApplyMeshHostJoinOptions {
71
+ token: string;
72
+ memberNode: MeshHostJoinMemberNodeInput;
73
+ memberMeshId?: string;
74
+ now?: string;
75
+ }
76
+ export declare function applyMeshHostJoinRequest(meshId: string, opts: ApplyMeshHostJoinOptions): {
77
+ accepted: true;
78
+ mesh: LocalMeshEntry;
79
+ meshHost: RepoMeshHostMetadata;
80
+ node: LocalMeshNodeEntry;
81
+ tokenId: string;
82
+ } | {
83
+ accepted: false;
84
+ mesh?: LocalMeshEntry;
85
+ meshHost?: RepoMeshHostMetadata;
86
+ tokenId?: string;
87
+ reason: string;
88
+ } | undefined;
89
+ export declare function markMeshHostPairingJoined(meshId: string, opts: {
90
+ hostDaemonId?: string;
91
+ hostNodeId?: string;
92
+ joinedAt?: string;
93
+ token?: string;
94
+ tokenId?: string;
95
+ }): {
96
+ mesh: LocalMeshEntry;
97
+ meshHost: RepoMeshHostMetadata;
98
+ } | undefined;
35
99
  export interface AddNodeOptions {
36
100
  workspace: string;
37
101
  repoRoot?: string;
@@ -42,6 +106,7 @@ export interface AddNodeOptions {
42
106
  isLocalWorktree?: boolean;
43
107
  worktreeBranch?: string;
44
108
  clonedFromNodeId?: string;
109
+ role?: RepoMeshDaemonRole;
45
110
  }
46
111
  export declare function addNode(meshId: string, opts: AddNodeOptions): LocalMeshNodeEntry | undefined;
47
112
  export declare function removeNode(meshId: string, nodeId: string): 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, 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, } 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';
@@ -30,14 +30,21 @@ export { listMeshes, getMesh, getMeshByRepo, createMesh, updateMesh, deleteMesh,
30
30
  export type { CreateMeshOptions, UpdateMeshOptions, AddNodeOptions } from './config/mesh-config.js';
31
31
  export { buildCoordinatorSystemPrompt } from './mesh/coordinator-prompt.js';
32
32
  export type { CoordinatorPromptContext } from './mesh/coordinator-prompt.js';
33
+ export { MESH_REFINE_CONFIG_LOCATIONS, MESH_REFINE_CONFIG_SCHEMA, loadMeshRefineConfig, resolveMeshRefineValidationPlan, suggestMeshRefineConfig, validateMeshRefineConfig, } from './mesh/refine-config.js';
34
+ export type { MeshRefineValidationCategory, MeshRefineValidationCommandPlan, MeshRefineValidationPlan, RepoMeshRefineConfig, RepoMeshRefineValidationCommandConfig, } from './mesh/refine-config.js';
33
35
  export { syncMeshes } from './mesh/mesh-sync.js';
34
36
  export type { MeshSyncTransport, MeshSyncResult, RemoteMeshRecord } from './mesh/mesh-sync.js';
35
- export { appendLedgerEntry, appendRemoteLedgerEntries, readLedgerEntries, readLedgerSlice, getLedgerSummary, getLedgerDir, getSessionRecoveryContext, MAX_LEDGER_SLICE_LIMIT } from './mesh/mesh-ledger.js';
36
- export type { AppendRemoteLedgerResult, MeshLedgerEntry, MeshLedgerKind, MeshLedgerSlice, MeshLedgerSummary, ReadLedgerOptions, ReadLedgerSliceOptions, SessionRecoveryContext } from './mesh/mesh-ledger.js';
37
+ export { appendLedgerEntry, appendRemoteLedgerEntries, buildTaskCompletionEvidence, normalizeMeshWorkerResult, readLedgerEntries, readLedgerSlice, getLedgerSummary, getLedgerDir, getSessionRecoveryContext, MAX_LEDGER_SLICE_LIMIT } from './mesh/mesh-ledger.js';
38
+ export type { AppendRemoteLedgerResult, MeshLedgerEntry, MeshLedgerKind, MeshLedgerSlice, MeshLedgerSummary, ReadLedgerOptions, ReadLedgerSliceOptions, SessionRecoveryContext, MeshTaskCompletionEvidence, MeshWorkerResultArtifact, MeshProcessArtifact, MeshValidationResultArtifact } from './mesh/mesh-ledger.js';
39
+ export { fastForwardMeshNode } from './mesh/mesh-fast-forward.js';
40
+ export type { MeshFastForwardNodeArgs, MeshFastForwardPlannedStep, MeshFastForwardResult } from './mesh/mesh-fast-forward.js';
37
41
  export { buildMeshLedgerReconciliationEvidence, buildMeshLedgerReplicaEvidence } from './mesh/mesh-ledger-reconciliation.js';
38
42
  export type { MeshLedgerReconciliationEvidence, MeshLedgerReplicaEvidence, MeshLedgerReplicaStatus } from './mesh/mesh-ledger-reconciliation.js';
39
- export { enqueueTask, getQueue, claimNextTask, updateTaskStatus, updateSessionTaskStatus, cancelTask, requeueTask, getMeshQueueStats } from './mesh/mesh-work-queue.js';
40
- export type { MeshWorkQueueEntry, MeshTaskStatus, MeshWorkQueueStats } from './mesh/mesh-work-queue.js';
43
+ export { enqueueTask, getQueue, claimNextTask, updateTaskStatus, updateSessionTaskStatus, cancelTask, requeueTask, getMeshQueueStats, getMeshQueueRevision, normalizeMeshTaskMode, validateMeshTaskModeRequest } from './mesh/mesh-work-queue.js';
44
+ export type { MeshWorkQueueEntry, MeshTaskStatus, MeshTaskMode, MeshWorkQueueStats, MeshQueueMutationOptions, MeshTaskModeValidationResult } from './mesh/mesh-work-queue.js';
45
+ export { buildMeshActiveWork, buildMeshActiveWorkSummary } from './mesh/mesh-active-work.js';
46
+ export type { MeshActiveWorkRecord, MeshActiveWorkStatus, MeshActiveWorkSummary, MeshActiveWorkSource } from './mesh/mesh-active-work.js';
47
+ export { buildMeshHostRequiredFailure, createDefaultMeshHostMetadata, isMeshHostOwner, normalizeMeshDaemonRole, requireMeshHostQueueOwner, resolveMeshHostStatus } from './mesh/mesh-host-ownership.js';
41
48
  export { triggerMeshQueue, drainPendingMeshCoordinatorEvents, getPendingMeshCoordinatorEvents, clearPendingMeshCoordinatorEvents, queuePendingMeshCoordinatorEvent } from './mesh/mesh-events.js';
42
49
  export type { PendingMeshCoordinatorEvent } from './mesh/mesh-events.js';
43
50
  export { P2pRelayFailureError, buildP2pRelayFailurePayload, classifyP2pRelayFailure, isP2pRelayTransportFailure, } from './mesh/p2p-relay-failure.js';