@adhdev/daemon-core 0.8.29 → 0.8.31

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/agent-stream/manager.d.ts +1 -0
  2. package/dist/agent-stream/provider-adapter.d.ts +1 -0
  3. package/dist/agent-stream/types.d.ts +3 -0
  4. package/dist/boot/daemon-lifecycle.d.ts +2 -1
  5. package/dist/cdp/manager.d.ts +2 -0
  6. package/dist/cli-adapter-types.d.ts +34 -5
  7. package/dist/cli-adapters/provider-cli-adapter.d.ts +4 -158
  8. package/dist/cli-adapters/provider-cli-config.d.ts +30 -0
  9. package/dist/cli-adapters/provider-cli-parse.d.ts +42 -0
  10. package/dist/cli-adapters/provider-cli-runtime.d.ts +29 -0
  11. package/dist/cli-adapters/provider-cli-shared.d.ts +158 -0
  12. package/dist/commands/handler.d.ts +4 -3
  13. package/dist/config/config.d.ts +4 -3
  14. package/dist/index.js +1033 -621
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +1035 -624
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/providers/acp-provider-instance.d.ts +1 -0
  19. package/dist/providers/approval-utils.d.ts +7 -0
  20. package/dist/providers/cli-provider-instance.d.ts +2 -0
  21. package/dist/providers/contracts.d.ts +12 -1
  22. package/dist/providers/ide-provider-instance.d.ts +1 -0
  23. package/dist/providers/provider-loader.d.ts +3 -0
  24. package/dist/status/reporter.d.ts +2 -3
  25. package/dist/status/snapshot.d.ts +2 -1
  26. package/node_modules/@adhdev/session-host-core/package.json +1 -1
  27. package/package.json +3 -1
  28. package/src/agent-stream/manager.ts +8 -2
  29. package/src/agent-stream/poller.ts +57 -6
  30. package/src/agent-stream/provider-adapter.ts +11 -7
  31. package/src/agent-stream/types.ts +3 -0
  32. package/src/boot/daemon-lifecycle.ts +7 -6
  33. package/src/cdp/initializer.ts +2 -2
  34. package/src/cdp/manager.ts +5 -0
  35. package/src/cdp/setup.ts +1 -1
  36. package/src/cli-adapter-types.ts +37 -5
  37. package/src/cli-adapters/provider-cli-adapter.ts +212 -795
  38. package/src/cli-adapters/provider-cli-config.ts +66 -0
  39. package/src/cli-adapters/provider-cli-parse.ts +202 -0
  40. package/src/cli-adapters/provider-cli-runtime.ts +142 -0
  41. package/src/cli-adapters/provider-cli-shared.ts +439 -0
  42. package/src/cli-adapters/terminal-backends/ghostty-vt-backend.ts +1 -1
  43. package/src/commands/cdp-commands.ts +6 -1
  44. package/src/commands/chat-commands.ts +45 -29
  45. package/src/commands/cli-manager.ts +28 -9
  46. package/src/commands/handler.ts +14 -10
  47. package/src/commands/router.ts +23 -10
  48. package/src/commands/stream-commands.ts +11 -5
  49. package/src/config/config.ts +4 -10
  50. package/src/daemon/dev-auto-implement.ts +22 -18
  51. package/src/daemon/dev-cli-debug.ts +59 -16
  52. package/src/daemon/dev-server.ts +67 -43
  53. package/src/providers/acp-provider-instance.ts +18 -3
  54. package/src/providers/approval-utils.ts +66 -0
  55. package/src/providers/cli-provider-instance.ts +32 -6
  56. package/src/providers/contracts.d.ts +1 -0
  57. package/src/providers/contracts.ts +15 -2
  58. package/src/providers/extension-provider-instance.ts +1 -1
  59. package/src/providers/ide-provider-instance.ts +67 -41
  60. package/src/providers/provider-loader.ts +110 -55
  61. package/src/providers/version-archive.ts +23 -5
  62. package/src/status/reporter.ts +18 -14
  63. package/src/status/snapshot.ts +5 -4
@@ -6,6 +6,8 @@
6
6
  */
7
7
 
8
8
  import { LOG } from '../logging/logger.js';
9
+ import type { DaemonCdpManager } from '../cdp/manager.js';
10
+ import type { MachineInfo } from '../shared-types.js';
9
11
  import { buildSessionEntries } from './builders.js';
10
12
  import { buildStatusSnapshot } from './snapshot.js';
11
13
  import type {
@@ -19,7 +21,7 @@ import type {
19
21
 
20
22
  export interface StatusReporterDeps {
21
23
  serverConn: { isConnected(): boolean; sendMessage(type: string, data: any): void; getUserPlan(): string } | null;
22
- cdpManagers: Map<string, { isConnected: boolean }>;
24
+ cdpManagers: Map<string, DaemonCdpManager>;
23
25
  p2p: { isConnected: boolean; isAvailable: boolean; connectionState: string; connectedPeerCount: number; screenshotActive: boolean; sendStatus(data: any): void } | null;
24
26
  providerLoader: { resolve(type: string): any; getAll(): any[] };
25
27
  detectedIdes: any[];
@@ -65,7 +67,7 @@ export class DaemonStatusReporter {
65
67
  if (this.deps.p2p?.isConnected) {
66
68
  this.sendUnifiedStatusReport({ p2pOnly: true }).catch(e => LOG.warn('Status', `P2P status send failed: ${e?.message}`));
67
69
  }
68
- }, 5_000) as any;
70
+ }, 5_000);
69
71
  }
70
72
 
71
73
  stopReporting(): void {
@@ -174,14 +176,14 @@ export class DaemonStatusReporter {
174
176
  // IDE/CLI/ACP states → managed entries (shared builder)
175
177
  const sessions = buildSessionEntries(
176
178
  allStates,
177
- this.deps.cdpManagers as Map<string, any>,
179
+ this.deps.cdpManagers,
178
180
  );
179
181
 
180
182
  // ═══ Assemble payload (P2P — required data only) ═══
181
183
  const payload: Record<string, any> = {
182
184
  ...buildStatusSnapshot({
183
185
  allStates,
184
- cdpManagers: this.deps.cdpManagers as Map<string, unknown>,
186
+ cdpManagers: this.deps.cdpManagers,
185
187
  providerLoader: this.deps.providerLoader,
186
188
  detectedIdes: this.deps.detectedIdes || [],
187
189
  instanceId: this.deps.instanceId,
@@ -231,10 +233,10 @@ export class DaemonStatusReporter {
231
233
  currentPlan: session.currentPlan,
232
234
  currentAutoApprove: session.currentAutoApprove,
233
235
  lastUpdated: session.lastUpdated,
234
- unread: (session as any).unread,
235
- lastSeenAt: (session as any).lastSeenAt,
236
- inboxBucket: (session as any).inboxBucket,
237
- surfaceHidden: (session as any).surfaceHidden,
236
+ unread: session.unread,
237
+ lastSeenAt: session.lastSeenAt,
238
+ inboxBucket: session.inboxBucket,
239
+ surfaceHidden: session.surfaceHidden,
238
240
  controlValues: session.controlValues,
239
241
  providerControls: session.providerControls,
240
242
  acpConfigOptions: session.acpConfigOptions,
@@ -251,13 +253,15 @@ export class DaemonStatusReporter {
251
253
 
252
254
  // ─── P2P ─────────────────────────────────────────
253
255
 
254
- private sendP2PPayload(payload: Record<string, any>): boolean {
256
+ private sendP2PPayload(payload: { timestamp?: number; system?: unknown; machine?: MachineInfo; [key: string]: unknown }): boolean {
255
257
  const { timestamp: _ts, system: _sys, ...hashTarget } = payload;
256
- if (hashTarget.machine) {
257
- const { freeMem: _f, availableMem: _a, loadavg: _l, uptime: _u, ...stableMachine } = hashTarget.machine as any;
258
- hashTarget.machine = stableMachine;
259
- }
260
- const h = this.simpleHash(JSON.stringify(hashTarget));
258
+ const hashPayload = hashTarget.machine
259
+ ? (() => {
260
+ const { freeMem: _f, availableMem: _a, loadavg: _l, uptime: _u, ...stableMachine } = hashTarget.machine;
261
+ return { ...hashTarget, machine: stableMachine };
262
+ })()
263
+ : hashTarget;
264
+ const h = this.simpleHash(JSON.stringify(hashPayload));
261
265
  if (h !== this.lastP2PStatusHash) {
262
266
  this.lastP2PStatusHash = h;
263
267
  this.deps.p2p?.sendStatus(payload);
@@ -14,6 +14,7 @@ import { getWorkspaceState } from '../config/workspaces.js';
14
14
  import { getHostMemorySnapshot } from '../system/host-memory.js';
15
15
  import { getTerminalBackendRuntimeStatus } from '../cli-adapters/terminal-screen.js';
16
16
  import { LOG } from '../logging/logger.js';
17
+ import type { DaemonCdpManager } from '../cdp/manager.js';
17
18
  import { buildSessionEntries, isCdpConnected } from './builders.js';
18
19
  import type { ProviderState } from '../providers/provider-instance.js';
19
20
  import type {
@@ -27,7 +28,7 @@ import type {
27
28
 
28
29
  export interface StatusSnapshotOptions {
29
30
  allStates: ProviderState[];
30
- cdpManagers: Map<string, unknown>;
31
+ cdpManagers: Map<string, DaemonCdpManager>;
31
32
  providerLoader: {
32
33
  getAll(): Array<{
33
34
  type: string;
@@ -75,7 +76,7 @@ function buildDetectedIdeInfos(
75
76
  id: ide.id,
76
77
  type: ide.id,
77
78
  name: ide.displayName || ide.name || ide.id,
78
- running: isCdpConnected(cdpManagers as Map<string, any>, ide.id),
79
+ running: isCdpConnected(cdpManagers, ide.id),
79
80
  ...(ide.path ? { path: ide.path } : {}),
80
81
  }));
81
82
  }
@@ -132,7 +133,7 @@ export function getSessionCompletionMarker(session: {
132
133
  }> | null
133
134
  } | null
134
135
  }) {
135
- const lastMessage = session.activeChat?.messages?.at?.(-1) as any;
136
+ const lastMessage = session.activeChat?.messages?.at?.(-1);
136
137
  if (!lastMessage) return '';
137
138
  const role = typeof lastMessage.role === 'string' ? lastMessage.role : '';
138
139
  if (role === 'user' || role === 'human' || role === 'system') return '';
@@ -213,7 +214,7 @@ export function buildStatusSnapshot(options: StatusSnapshotOptions): StatusSnaps
213
214
  const recentActivity = getRecentActivity(state, 20);
214
215
  const sessions = buildSessionEntries(
215
216
  options.allStates,
216
- options.cdpManagers as Map<string, any>,
217
+ options.cdpManagers,
217
218
  );
218
219
  for (const session of sessions) {
219
220
  const lastSeenAt = getSessionSeenAt(state, session.id);