@adhdev/daemon-core 0.8.34 → 0.8.36

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 (109) hide show
  1. package/dist/boot/daemon-lifecycle.d.ts +4 -0
  2. package/dist/commands/router.d.ts +3 -0
  3. package/dist/config/config.d.ts +5 -0
  4. package/dist/index.d.ts +2 -2
  5. package/dist/index.js +585 -256
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +584 -256
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/shared-types.d.ts +286 -16
  10. package/dist/status/builders.d.ts +5 -1
  11. package/dist/status/normalize.d.ts +11 -1
  12. package/dist/status/normalize.js +36 -16
  13. package/dist/status/normalize.js.map +1 -1
  14. package/dist/status/normalize.mjs +35 -16
  15. package/dist/status/normalize.mjs.map +1 -1
  16. package/dist/status/reporter.d.ts +7 -0
  17. package/dist/status/snapshot.d.ts +5 -5
  18. package/dist/types.d.ts +1 -1
  19. package/node_modules/@adhdev/session-host-core/package.json +1 -1
  20. package/package.json +1 -1
  21. package/src/agent-stream/forward.d.ts +8 -0
  22. package/src/agent-stream/index.d.ts +6 -0
  23. package/src/agent-stream/manager.d.ts +60 -0
  24. package/src/agent-stream/poller.d.ts +41 -0
  25. package/src/agent-stream/provider-adapter.d.ts +36 -0
  26. package/src/agent-stream/types.d.ts +68 -0
  27. package/src/boot/daemon-lifecycle.d.ts +100 -0
  28. package/src/boot/daemon-lifecycle.ts +7 -0
  29. package/src/cdp/devtools.d.ts +51 -0
  30. package/src/cdp/initializer.d.ts +50 -0
  31. package/src/cdp/manager.d.ts +147 -0
  32. package/src/cdp/scanner.d.ts +58 -0
  33. package/src/cdp/setup.d.ts +58 -0
  34. package/src/cli-adapter-types.d.ts +57 -0
  35. package/src/cli-adapters/provider-cli-adapter.d.ts +177 -0
  36. package/src/cli-adapters/provider-cli-adapter.ts +115 -91
  37. package/src/cli-adapters/provider-cli-config.d.ts +30 -0
  38. package/src/cli-adapters/provider-cli-parse.d.ts +42 -0
  39. package/src/cli-adapters/provider-cli-runtime.d.ts +29 -0
  40. package/src/cli-adapters/provider-cli-shared.d.ts +158 -0
  41. package/src/cli-adapters/pty-transport.d.ts +48 -0
  42. package/src/cli-adapters/session-host-transport.d.ts +20 -0
  43. package/src/cli-adapters/spawn-env.d.ts +8 -0
  44. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +16 -0
  45. package/src/cli-adapters/terminal-backends/types.d.ts +18 -0
  46. package/src/cli-adapters/terminal-backends/xterm-backend.d.ts +17 -0
  47. package/src/cli-adapters/terminal-screen.d.ts +33 -0
  48. package/src/commands/cdp-commands.d.ts +15 -0
  49. package/src/commands/chat-commands.d.ts +15 -0
  50. package/src/commands/chat-commands.ts +192 -17
  51. package/src/commands/cli-manager.d.ts +94 -0
  52. package/src/commands/handler.d.ts +103 -0
  53. package/src/commands/router.d.ts +98 -0
  54. package/src/commands/router.ts +25 -0
  55. package/src/commands/stream-commands.d.ts +14 -0
  56. package/src/commands/stream-commands.ts +14 -10
  57. package/src/commands/upgrade-helper.d.ts +10 -0
  58. package/src/commands/workspace-commands.d.ts +11 -0
  59. package/src/config/chat-history.d.ts +99 -0
  60. package/src/config/config.d.ts +14 -0
  61. package/src/config/config.ts +8 -0
  62. package/src/config/recent-activity.d.ts +29 -0
  63. package/src/config/saved-sessions.d.ts +22 -0
  64. package/src/config/state-store.d.ts +32 -0
  65. package/src/config/workspaces.d.ts +0 -1
  66. package/src/daemon/dev-auto-implement.d.ts +43 -0
  67. package/src/daemon/dev-cdp-handlers.d.ts +22 -0
  68. package/src/daemon/dev-cli-debug.d.ts +106 -0
  69. package/src/daemon/dev-server-types.d.ts +43 -0
  70. package/src/daemon/dev-server.d.ts +140 -0
  71. package/src/daemon/scaffold-template.d.ts +32 -0
  72. package/src/daemon-core.d.ts +36 -0
  73. package/src/detection/cli-detector.d.ts +31 -0
  74. package/src/detection/ide-detector.d.ts +35 -0
  75. package/src/index.d.ts +83 -0
  76. package/src/index.ts +34 -1
  77. package/src/installer.d.ts +50 -0
  78. package/src/ipc-protocol.d.ts +111 -0
  79. package/src/launch.d.ts +46 -0
  80. package/src/logging/command-log.d.ts +31 -0
  81. package/src/logging/logger.d.ts +89 -0
  82. package/src/providers/acp-provider-instance.d.ts +102 -0
  83. package/src/providers/approval-utils.d.ts +7 -0
  84. package/src/providers/cli-provider-instance.d.ts +86 -0
  85. package/src/providers/contracts.d.ts +193 -1
  86. package/src/providers/control-effects.d.ts +4 -0
  87. package/src/providers/extension-provider-instance.d.ts +61 -0
  88. package/src/providers/ide-provider-instance.d.ts +70 -0
  89. package/src/providers/provider-instance-manager.d.ts +84 -0
  90. package/src/providers/provider-instance.d.ts +7 -1
  91. package/src/providers/provider-loader.d.ts +299 -0
  92. package/src/providers/status-monitor.d.ts +48 -0
  93. package/src/providers/version-archive.d.ts +52 -0
  94. package/src/session-host/runtime-support.d.ts +8 -0
  95. package/src/sessions/reconcile.d.ts +22 -0
  96. package/src/sessions/registry.d.ts +24 -0
  97. package/src/shared-types-extra.d.ts +29 -0
  98. package/src/shared-types.d.ts +204 -38
  99. package/src/shared-types.ts +319 -16
  100. package/src/status/builders.d.ts +33 -0
  101. package/src/status/builders.ts +110 -54
  102. package/src/status/normalize.ts +54 -19
  103. package/src/status/reporter.d.ts +69 -0
  104. package/src/status/reporter.ts +104 -26
  105. package/src/status/snapshot.d.ts +58 -0
  106. package/src/status/snapshot.ts +79 -41
  107. package/src/system/host-memory.d.ts +19 -0
  108. package/src/types.d.ts +3 -7
  109. package/src/types.ts +1 -1
@@ -33,45 +33,179 @@ export interface AgentSessionStream {
33
33
  buttons: string[];
34
34
  } | null;
35
35
  }
36
+ export type ReadChatSyncMode = 'full' | 'append' | 'replace_tail' | 'noop';
37
+ export interface ReadChatCursor {
38
+ knownMessageCount?: number;
39
+ lastMessageSignature?: string;
40
+ tailLimit?: number;
41
+ }
42
+ export interface ReadChatSyncResult {
43
+ messages: ChatMessage[];
44
+ status: string;
45
+ title?: string;
46
+ activeModal?: {
47
+ message: string;
48
+ buttons: string[];
49
+ } | null;
50
+ syncMode: ReadChatSyncMode;
51
+ replaceFrom: number;
52
+ totalMessages: number;
53
+ lastMessageSignature: string;
54
+ }
55
+ export type TransportTopic = 'session.chat_tail' | 'machine.runtime' | 'session_host.diagnostics' | 'session.modal' | 'daemon.metadata';
56
+ export interface SessionChatTailSubscriptionParams extends ReadChatCursor {
57
+ targetSessionId: string;
58
+ historySessionId?: string;
59
+ }
60
+ export interface MachineRuntimeSubscriptionParams {
61
+ intervalMs?: number;
62
+ }
63
+ export interface SessionModalSubscriptionParams {
64
+ targetSessionId: string;
65
+ }
66
+ export interface DaemonMetadataSubscriptionParams {
67
+ includeSessions?: boolean;
68
+ }
69
+ export interface SessionHostDiagnosticsSubscriptionParams {
70
+ includeSessions?: boolean;
71
+ limit?: number;
72
+ intervalMs?: number;
73
+ }
74
+ export interface SessionChatTailUpdate extends ReadChatSyncResult {
75
+ topic: 'session.chat_tail';
76
+ key: string;
77
+ sessionId: string;
78
+ historySessionId?: string;
79
+ seq: number;
80
+ timestamp: number;
81
+ }
82
+ export interface MachineRuntimeUpdate {
83
+ topic: 'machine.runtime';
84
+ key: string;
85
+ machine: MachineInfo;
86
+ seq: number;
87
+ timestamp: number;
88
+ }
89
+ export interface SessionHostDiagnosticsUpdate {
90
+ topic: 'session_host.diagnostics';
91
+ key: string;
92
+ diagnostics: SessionHostDiagnosticsSnapshot;
93
+ seq: number;
94
+ timestamp: number;
95
+ }
96
+ export interface SessionModalUpdate {
97
+ topic: 'session.modal';
98
+ key: string;
99
+ sessionId: string;
100
+ status: string;
101
+ title?: string;
102
+ modalMessage?: string;
103
+ modalButtons?: string[];
104
+ seq: number;
105
+ timestamp: number;
106
+ }
107
+ export interface DaemonMetadataUpdate {
108
+ topic: 'daemon.metadata';
109
+ key: string;
110
+ daemonId: string;
111
+ status: StatusReportPayload;
112
+ userName?: string;
113
+ seq: number;
114
+ timestamp: number;
115
+ }
116
+ export interface TopicUpdateEnvelopeMap {
117
+ 'session.chat_tail': SessionChatTailUpdate;
118
+ 'machine.runtime': MachineRuntimeUpdate;
119
+ 'session_host.diagnostics': SessionHostDiagnosticsUpdate;
120
+ 'session.modal': SessionModalUpdate;
121
+ 'daemon.metadata': DaemonMetadataUpdate;
122
+ }
123
+ export type TopicUpdateEnvelope = TopicUpdateEnvelopeMap[TransportTopic];
124
+ export interface SubscribeRequestMap {
125
+ 'session.chat_tail': SessionChatTailSubscriptionParams;
126
+ 'machine.runtime': MachineRuntimeSubscriptionParams;
127
+ 'session_host.diagnostics': SessionHostDiagnosticsSubscriptionParams;
128
+ 'session.modal': SessionModalSubscriptionParams;
129
+ 'daemon.metadata': DaemonMetadataSubscriptionParams;
130
+ }
131
+ export type SubscribeRequest = {
132
+ [K in TransportTopic]: {
133
+ type: 'subscribe';
134
+ topic: K;
135
+ key: string;
136
+ params: SubscribeRequestMap[K];
137
+ };
138
+ }[TransportTopic];
139
+ export type UnsubscribeRequest = {
140
+ [K in TransportTopic]: {
141
+ type: 'unsubscribe';
142
+ topic: K;
143
+ key: string;
144
+ };
145
+ }[TransportTopic];
146
+ export type StandaloneWsStatusPayload = StatusReportPayload;
36
147
  export type SessionTransport = 'cdp-page' | 'cdp-webview' | 'pty' | 'acp';
37
148
  export type SessionKind = 'workspace' | 'agent';
38
149
  export type SessionCapability = 'read_chat' | 'send_message' | 'new_session' | 'list_sessions' | 'switch_session' | 'resolve_action' | 'terminal_io' | 'resize_terminal' | 'change_model' | 'set_mode' | 'set_thought_level';
150
+ import type { RuntimeWriteOwner, RuntimeAttachedClient, SessionStatus } from './shared-types-extra.js';
151
+ export type { RuntimeWriteOwner, RuntimeAttachedClient, SessionStatus } from './shared-types-extra.js';
39
152
  export interface SessionEntry {
40
153
  id: string;
41
154
  parentId: string | null;
42
155
  providerType: string;
43
- providerName: string;
156
+ providerName?: string;
44
157
  providerSessionId?: string;
45
158
  kind: SessionKind;
46
159
  transport: SessionTransport;
47
- status: 'idle' | 'generating' | 'waiting_approval' | 'error' | 'stopped' | 'starting' | 'panel_hidden' | 'not_monitored' | 'disconnected';
160
+ status: SessionStatus;
48
161
  title: string;
49
- workspace: string | null;
162
+ workspace?: string | null;
50
163
  runtimeKey?: string;
51
164
  runtimeDisplayName?: string;
52
165
  runtimeWorkspaceLabel?: string;
53
- runtimeWriteOwner?: {
54
- clientId: string;
55
- ownerType: 'agent' | 'user';
56
- } | null;
57
- runtimeAttachedClients?: {
58
- clientId: string;
59
- type: 'daemon' | 'web' | 'local-terminal';
60
- readOnly: boolean;
61
- }[];
166
+ /** CLI only: active presentation mode */
167
+ mode?: 'terminal' | 'chat';
168
+ runtimeWriteOwner?: RuntimeWriteOwner | null;
169
+ runtimeAttachedClients?: RuntimeAttachedClient[];
62
170
  resume?: ProviderResumeCapability;
63
171
  activeChat: _ActiveChatData | null;
64
- capabilities: SessionCapability[];
172
+ capabilities?: SessionCapability[];
65
173
  cdpConnected?: boolean;
66
174
  currentModel?: string;
67
175
  currentPlan?: string;
68
176
  currentAutoApprove?: string;
69
177
  acpConfigOptions?: AcpConfigOption[];
70
178
  acpModes?: AcpMode[];
179
+ /** Dynamic control current values (generic key-value) */
71
180
  controlValues?: Record<string, string | number | boolean>;
181
+ /** Provider-declared controls schema (transmitted once, cached by frontend) */
72
182
  providerControls?: ProviderControlSchema[];
73
183
  errorMessage?: string;
74
184
  errorReason?: _ProviderErrorReason;
185
+ lastUpdated?: number;
186
+ unread?: boolean;
187
+ lastSeenAt?: number;
188
+ inboxBucket?: RecentSessionBucket;
189
+ surfaceHidden?: boolean;
190
+ }
191
+ /**
192
+ * Compact session metadata stored in UserSessionDO and reused by server-side
193
+ * status/convenience APIs. This intentionally excludes rich UI-only fields.
194
+ */
195
+ export interface CompactSessionEntry {
196
+ id: string;
197
+ parentId: string | null;
198
+ providerType: string;
199
+ providerName: string;
200
+ kind: SessionKind;
201
+ transport: SessionTransport;
202
+ status: SessionStatus;
203
+ title: string;
204
+ workspace: string | null;
205
+ cdpConnected?: boolean;
206
+ currentModel?: string;
207
+ currentPlan?: string;
208
+ currentAutoApprove?: string;
75
209
  }
76
210
  /** Available provider information */
77
211
  export interface AvailableProviderInfo {
@@ -80,6 +214,8 @@ export interface AvailableProviderInfo {
80
214
  category: 'ide' | 'extension' | 'cli' | 'acp';
81
215
  displayName: string;
82
216
  icon: string;
217
+ installed?: boolean;
218
+ detectedPath?: string | null;
83
219
  }
84
220
  /** ACP config option (model/mode/thought_level selection) */
85
221
  export interface AcpConfigOption {
@@ -99,39 +235,54 @@ export interface AcpMode {
99
235
  name: string;
100
236
  description?: string;
101
237
  }
102
- /** Provider control schema (daemon frontend) */
238
+ /** Provider control schema transmitted to frontend */
103
239
  export interface ProviderControlSchema {
104
240
  id: string;
105
- type: 'select' | 'toggle' | 'cycle' | 'slider' | 'action';
241
+ type: 'select' | 'toggle' | 'cycle' | 'slider' | 'action' | 'display';
106
242
  label: string;
107
243
  icon?: string;
108
244
  placement: 'bar' | 'header' | 'menu';
109
- options?: { value: string; label: string; description?: string; group?: string }[];
245
+ /** Static options (for select/cycle) */
246
+ options?: {
247
+ value: string;
248
+ label: string;
249
+ description?: string;
250
+ group?: string;
251
+ }[];
252
+ /** Dynamic options — frontend should call listScript to load */
110
253
  dynamic?: boolean;
254
+ /** Script name to list options */
111
255
  listScript?: string;
256
+ /** Script name to change value (value-based controls) */
112
257
  setScript?: string;
258
+ /** Field name in readChat result for current value */
113
259
  readFrom?: string;
260
+ /** Default value */
114
261
  defaultValue?: string | number | boolean;
262
+ /** Script name to invoke (action type) */
115
263
  invokeScript?: string;
264
+ /** How to display action result */
116
265
  resultDisplay?: 'toast' | 'inline' | 'none';
266
+ /** Slider range */
117
267
  min?: number;
118
268
  max?: number;
119
269
  step?: number;
270
+ /** Sort order */
120
271
  order?: number;
121
272
  }
122
273
  /** Machine hardware/OS info (reported by daemon, displayed by web) */
123
274
  export interface MachineInfo {
124
275
  hostname: string;
125
276
  platform: string;
126
- arch: string;
127
- cpus: number;
128
- totalMem: number;
129
- freeMem: number;
277
+ arch?: string;
278
+ cpus?: number;
279
+ totalMem?: number;
280
+ freeMem?: number;
130
281
  /** macOS: reclaimable-inclusive; prefer for UI used% */
131
282
  availableMem?: number;
132
- loadavg: number[];
133
- uptime: number;
134
- release: string;
283
+ loadavg?: number[];
284
+ uptime?: number;
285
+ release?: string;
135
286
  }
136
287
  /** Detected IDE on a machine */
137
288
  export interface DetectedIdeInfo {
@@ -141,13 +292,9 @@ export interface DetectedIdeInfo {
141
292
  running: boolean;
142
293
  path?: string;
143
294
  }
144
- /** Workspace recent activity */
145
- export interface WorkspaceActivity {
146
- path: string;
147
- lastUsedAt: number;
148
- kind?: string;
149
- agentType?: string;
150
- }
295
+ export type { RecentSessionBucket, TerminalBackendStatus } from './shared-types-extra.js';
296
+ import type { RecentSessionBucket } from './shared-types-extra.js';
297
+ import type { TerminalBackendStatus } from './shared-types-extra.js';
151
298
  export interface RecentLaunchEntry {
152
299
  id: string;
153
300
  providerType: string;
@@ -159,21 +306,38 @@ export interface RecentLaunchEntry {
159
306
  currentModel?: string;
160
307
  lastLaunchedAt: number;
161
308
  }
309
+ /** Compact machine payload broadcast by UserSessionDO to cloud dashboards. */
310
+ export interface CompactDaemonEntry {
311
+ id: string;
312
+ type?: string;
313
+ machineId?: string;
314
+ platform?: string;
315
+ hostname?: string;
316
+ nickname?: string;
317
+ p2p?: StatusReportPayload['p2p'];
318
+ cdpConnected?: boolean;
319
+ timestamp?: number;
320
+ version?: string;
321
+ serverVersion?: string;
322
+ versionMismatch?: boolean;
323
+ terminalBackend?: TerminalBackendStatus;
324
+ detectedIdes?: DetectedIdeInfo[];
325
+ availableProviders?: AvailableProviderInfo[];
326
+ sessions?: CompactSessionEntry[];
327
+ }
162
328
  export interface StatusReportPayload {
163
- /** Daemon instance ID */
329
+ /** Unique daemon instance identifier */
164
330
  instanceId: string;
165
- /** Daemon version */
166
- version: string;
167
- /** Daemon mode flag */
168
- daemonMode: boolean;
331
+ /** Daemon version (metadata/full snapshots only) */
332
+ version?: string;
169
333
  /** Machine info */
170
334
  machine: MachineInfo;
171
335
  /** Machine nickname (user-set) */
172
336
  machineNickname?: string | null;
173
337
  /** Timestamp */
174
338
  timestamp: number;
175
- /** Detected IDEs on this machine */
176
- detectedIdes: DetectedIdeInfo[];
339
+ /** Detected IDEs on this machine (metadata snapshot only) */
340
+ detectedIdes?: DetectedIdeInfo[];
177
341
  /** P2P state */
178
342
  p2p?: {
179
343
  available: boolean;
@@ -188,6 +352,8 @@ export interface StatusReportPayload {
188
352
  defaultWorkspaceId?: string | null;
189
353
  defaultWorkspacePath?: string | null;
190
354
  terminalSizingMode?: 'measured' | 'fit';
191
- workspaceActivity?: WorkspaceActivity[];
192
355
  recentLaunches?: RecentLaunchEntry[];
356
+ terminalBackend?: TerminalBackendStatus;
357
+ /** Available providers (present in StatusSnapshot, optional in raw payload) */
358
+ availableProviders?: AvailableProviderInfo[];
193
359
  }