@adhdev/daemon-core 0.7.38 → 0.7.40

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 (95) hide show
  1. package/dist/agent-stream/forward.d.ts +8 -0
  2. package/dist/agent-stream/index.d.ts +6 -0
  3. package/dist/agent-stream/manager.d.ts +59 -0
  4. package/dist/agent-stream/poller.d.ts +41 -0
  5. package/dist/agent-stream/provider-adapter.d.ts +29 -0
  6. package/dist/agent-stream/types.d.ts +62 -0
  7. package/dist/boot/daemon-lifecycle.d.ts +97 -0
  8. package/dist/cdp/devtools.d.ts +51 -0
  9. package/dist/cdp/initializer.d.ts +50 -0
  10. package/dist/cdp/manager.d.ts +145 -0
  11. package/dist/cdp/scanner.d.ts +58 -0
  12. package/dist/cdp/setup.d.ts +58 -0
  13. package/dist/cli-adapter-types.d.ts +25 -0
  14. package/dist/cli-adapters/provider-cli-adapter.d.ts +229 -0
  15. package/dist/cli-adapters/pty-transport.d.ts +43 -0
  16. package/dist/cli-adapters/session-host-transport.d.ts +19 -0
  17. package/dist/cli-adapters/terminal-backends/ghostty-vt-backend.d.ts +12 -0
  18. package/dist/cli-adapters/terminal-backends/types.d.ts +14 -0
  19. package/dist/cli-adapters/terminal-backends/xterm-backend.d.ts +13 -0
  20. package/dist/cli-adapters/terminal-screen.d.ts +27 -0
  21. package/dist/commands/cdp-commands.d.ts +15 -0
  22. package/dist/commands/chat-commands.d.ts +15 -0
  23. package/dist/commands/cli-manager.d.ts +82 -0
  24. package/dist/commands/handler.d.ts +101 -0
  25. package/dist/commands/router.d.ts +69 -0
  26. package/dist/commands/stream-commands.d.ts +13 -0
  27. package/dist/commands/workspace-commands.d.ts +11 -0
  28. package/dist/config/chat-history.d.ts +60 -0
  29. package/dist/config/config.d.ts +103 -0
  30. package/dist/config/recent-activity.d.ts +27 -0
  31. package/dist/config/workspaces.d.ts +82 -0
  32. package/dist/daemon/dev-auto-implement.d.ts +26 -0
  33. package/dist/daemon/dev-cdp-handlers.d.ts +22 -0
  34. package/dist/daemon/dev-cli-debug.d.ts +24 -0
  35. package/dist/daemon/dev-server-types.d.ts +43 -0
  36. package/dist/daemon/dev-server.d.ts +133 -0
  37. package/dist/daemon/scaffold-template.d.ts +32 -0
  38. package/dist/daemon-core.d.ts +36 -0
  39. package/dist/detection/cli-detector.d.ts +27 -0
  40. package/dist/detection/ide-detector.d.ts +34 -0
  41. package/dist/index.d.ts +72 -2499
  42. package/dist/index.js +673 -879
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +680 -884
  45. package/dist/index.mjs.map +1 -1
  46. package/dist/installer.d.ts +50 -0
  47. package/dist/ipc-protocol.d.ts +111 -0
  48. package/dist/launch.d.ts +46 -0
  49. package/dist/logging/command-log.d.ts +31 -0
  50. package/dist/logging/logger.d.ts +87 -0
  51. package/dist/providers/acp-provider-instance.d.ts +101 -0
  52. package/dist/providers/cli-provider-instance.d.ts +43 -0
  53. package/dist/providers/contracts.d.ts +483 -0
  54. package/dist/providers/extension-provider-instance.d.ts +44 -0
  55. package/dist/providers/ide-provider-instance.d.ts +61 -0
  56. package/dist/providers/index.d.ts +5 -0
  57. package/dist/providers/provider-instance-manager.d.ts +84 -0
  58. package/dist/providers/provider-instance.d.ts +148 -0
  59. package/dist/providers/provider-loader.d.ts +270 -0
  60. package/dist/providers/status-monitor.d.ts +48 -0
  61. package/dist/providers/version-archive.d.ts +52 -0
  62. package/dist/session-host/runtime-support.d.ts +8 -0
  63. package/dist/sessions/registry.d.ts +24 -0
  64. package/dist/shared-types-extra.d.ts +29 -0
  65. package/dist/shared-types.d.ts +205 -0
  66. package/dist/status/builders.d.ts +33 -0
  67. package/dist/status/normalize.d.ts +14 -1
  68. package/dist/status/reporter.d.ts +69 -0
  69. package/dist/status/snapshot.d.ts +51 -0
  70. package/dist/system/host-memory.d.ts +19 -0
  71. package/dist/types.d.ts +123 -0
  72. package/node_modules/@adhdev/session-host-core/package.json +1 -1
  73. package/package.json +3 -2
  74. package/src/commands/cli-manager.ts +1 -26
  75. package/src/commands/handler.ts +0 -31
  76. package/src/commands/router.ts +27 -34
  77. package/src/commands/stream-commands.ts +2 -4
  78. package/src/commands/workspace-commands.ts +9 -23
  79. package/src/config/config.ts +7 -81
  80. package/src/config/recent-activity.ts +24 -12
  81. package/src/config/workspaces.ts +0 -24
  82. package/src/index.ts +16 -15
  83. package/src/providers/provider-loader.ts +13 -5
  84. package/src/shared-types-extra.ts +34 -0
  85. package/src/shared-types.d.ts +4 -6
  86. package/src/shared-types.ts +17 -38
  87. package/src/status/builders.ts +12 -0
  88. package/src/status/reporter.ts +2 -1
  89. package/src/status/snapshot.ts +70 -87
  90. package/src/types.ts +3 -8
  91. package/dist/index.d.mts +0 -2504
  92. package/dist/normalize-DVI4Lo5I.d.mts +0 -947
  93. package/dist/normalize-DVI4Lo5I.d.ts +0 -947
  94. package/dist/status/normalize.d.mts +0 -1
  95. package/src/config/workspace-activity.ts +0 -65
@@ -0,0 +1,148 @@
1
+ /**
2
+ * ProviderInstance — Provider runtime lifecycle
3
+ *
4
+ * provider.js = static config/scripts
5
+ * ProviderInstance = runtime status management + lifecycle
6
+ *
7
+ * Daemon only collects via ProviderInstance.getState(),
8
+ * Each Instance manages its own status.
9
+ */
10
+ import type { ProviderResumeCapability } from './contracts.js';
11
+ import type { AcpConfigOption, AcpMode, ProviderControlSchema } from '../shared-types.js';
12
+ import type { ChatMessage } from '../types.js';
13
+ export type ProviderStatus = 'idle' | 'generating' | 'waiting_approval' | 'error' | 'stopped' | 'starting';
14
+ export interface ProviderRuntimeWriteOwner {
15
+ clientId: string;
16
+ ownerType: 'agent' | 'user';
17
+ }
18
+ export interface ProviderRuntimeClient {
19
+ clientId: string;
20
+ type: 'daemon' | 'web' | 'local-terminal';
21
+ readOnly: boolean;
22
+ }
23
+ export interface ProviderRuntimeInfo {
24
+ runtimeId: string;
25
+ runtimeKey?: string;
26
+ displayName?: string;
27
+ workspaceLabel?: string;
28
+ writeOwner?: ProviderRuntimeWriteOwner | null;
29
+ attachedClients?: ProviderRuntimeClient[];
30
+ }
31
+ export interface ActiveChatData {
32
+ id: string;
33
+ title: string;
34
+ status: string;
35
+ messages: ChatMessage[];
36
+ activeModal: {
37
+ message: string;
38
+ buttons: string[];
39
+ } | null;
40
+ terminalHistory?: string;
41
+ inputContent?: string;
42
+ }
43
+ /** Standardized error reasons across all provider categories */
44
+ export type ProviderErrorReason = 'not_installed' | 'auth_failed' | 'spawn_error' | 'init_failed' | 'crash' | 'timeout' | 'cdp_error' | 'disconnected';
45
+ /** Common fields shared by all provider categories */
46
+ interface ProviderStateBase {
47
+ /** Provider type (e.g. 'gemini-cli', 'cursor', 'cline') */
48
+ type: string;
49
+ /** Provider Display name */
50
+ name: string;
51
+ /** current status */
52
+ status: ProviderStatus;
53
+ /** chat data */
54
+ activeChat: ActiveChatData | null;
55
+ /** Workspace — project path or name (all categories) */
56
+ workspace?: string | null;
57
+ /** Runtime info (real-time detection) */
58
+ currentModel?: string;
59
+ currentPlan?: string;
60
+ /** Error details (when status === 'error') */
61
+ errorMessage?: string;
62
+ errorReason?: ProviderErrorReason;
63
+ /** meta */
64
+ instanceId: string;
65
+ lastUpdated: number;
66
+ settings: Record<string, any>;
67
+ /** Event queue (cleared after daemon collects) */
68
+ pendingEvents: ProviderEvent[];
69
+ runtime?: ProviderRuntimeInfo;
70
+ resume?: ProviderResumeCapability;
71
+ /** Dynamic control current values */
72
+ controlValues?: Record<string, string | number | boolean>;
73
+ /** Provider-declared controls schema (from provider.controls) */
74
+ providerControls?: ProviderControlSchema[];
75
+ }
76
+ /** IDE provider state */
77
+ export interface IdeProviderState extends ProviderStateBase {
78
+ category: 'ide';
79
+ cdpConnected: boolean;
80
+ /** IDE child Extension Instance status */
81
+ extensions: ProviderState[];
82
+ currentAutoApprove?: string;
83
+ }
84
+ /** CLI provider state */
85
+ export interface CliProviderState extends ProviderStateBase {
86
+ category: 'cli';
87
+ /** terminal = PTY stream, chat = parsed conversation */
88
+ mode: 'terminal' | 'chat';
89
+ }
90
+ /** ACP provider state */
91
+ export interface AcpProviderState extends ProviderStateBase {
92
+ category: 'acp';
93
+ mode: 'chat';
94
+ /** ACP config options (model/mode selection) */
95
+ acpConfigOptions?: AcpConfigOption[];
96
+ /** ACP available modes */
97
+ acpModes?: AcpMode[];
98
+ }
99
+ /** Extension provider state */
100
+ export interface ExtensionProviderState extends ProviderStateBase {
101
+ category: 'extension';
102
+ agentStreams?: any[];
103
+ }
104
+ /** Discriminated union — switch on `.category` */
105
+ export type ProviderState = IdeProviderState | CliProviderState | AcpProviderState | ExtensionProviderState;
106
+ export interface ProviderEvent {
107
+ event: string;
108
+ timestamp: number;
109
+ [key: string]: any;
110
+ }
111
+ export interface InstanceContext {
112
+ /** CDP connection (IDE/Extension) */
113
+ cdp?: {
114
+ isConnected: boolean;
115
+ evaluate(script: string, timeout?: number): Promise<unknown>;
116
+ evaluateInWebviewFrame?(expression: string, matchFn?: (bodyPreview: string) => boolean): Promise<string | null>;
117
+ discoverAgentWebviews?(): Promise<any[]>;
118
+ /** Low-level CDP protocol method (e.g. Input.dispatchMouseEvent) */
119
+ send?(method: string, params?: Record<string, unknown>): Promise<unknown>;
120
+ };
121
+ /** Server log transmit */
122
+ serverConn?: {
123
+ sendMessage(type: string, data: any): void;
124
+ };
125
+ /** P2P PTY output transmit */
126
+ onPtyData?: (data: string) => void;
127
+ /** Provider configvalue (resolved) */
128
+ settings: Record<string, any>;
129
+ }
130
+ export interface ProviderInstance {
131
+ /** Provider type */
132
+ readonly type: string;
133
+ /** Provider category */
134
+ readonly category: 'cli' | 'ide' | 'extension' | 'acp';
135
+ /** initialize */
136
+ init(context: InstanceContext): Promise<void>;
137
+ /** Tick — periodic status refresh (IDE: readChat, Extension: stream collection) */
138
+ onTick(): Promise<void>;
139
+ /** Return current status */
140
+ getState(): ProviderState;
141
+ /** Receive event (external → Instance) */
142
+ onEvent(event: string, data?: any): void;
143
+ /** Update settings at runtime (called when user changes settings from dashboard) */
144
+ updateSettings?(newSettings: Record<string, any>): void;
145
+ /** cleanup */
146
+ dispose(): void;
147
+ }
148
+ export {};
@@ -0,0 +1,270 @@
1
+ /**
2
+ * ProviderLoader — Provider discovery + OS/version override resolution
3
+ *
4
+ * Role:
5
+ * 1. Load providers from upstream auto-download (~/.adhdev/providers/.upstream/)
6
+ * 2. Load user custom from ~/.adhdev/providers/ (overrides)
7
+ * 3. Apply OS/version overrides (process.platform + detected IDE version)
8
+ * 4. Hot-reload support (fs.watch)
9
+ *
10
+ * Design principles:
11
+ * - Load JS files via require() (CJS compatible)
12
+ * - User custom can override builtin
13
+ * - provider.js files are independent, so load order doesn't matter
14
+ */
15
+ import { VersionArchive } from './version-archive.js';
16
+ import type { ProviderModule, ProviderCategory, ProviderSettingSchema, ResolvedProvider } from './contracts.js';
17
+ export declare class ProviderLoader {
18
+ private providers;
19
+ private userDir;
20
+ private upstreamDir;
21
+ private disableUpstream;
22
+ private watchers;
23
+ private logFn;
24
+ private versionArchive;
25
+ private scriptsCache;
26
+ /** Inject VersionArchive so resolve() can auto-detect installed versions */
27
+ setVersionArchive(archive: VersionArchive): void;
28
+ private static readonly GITHUB_TARBALL_URL;
29
+ private static readonly META_FILE;
30
+ constructor(options?: {
31
+ userDir?: string;
32
+ logFn?: (msg: string) => void;
33
+ /** Disable upstream auto-download (for dev/testing/OSS) */
34
+ disableUpstream?: boolean;
35
+ });
36
+ private log;
37
+ /**
38
+ * User override root (~/.adhdev/providers by default).
39
+ */
40
+ getUserDir(): string;
41
+ /**
42
+ * Auto-updated upstream root (~/.adhdev/providers/.upstream by default).
43
+ */
44
+ getUpstreamDir(): string;
45
+ /**
46
+ * Provider search order for on-disk lookups.
47
+ * Highest-priority editable overrides come first.
48
+ */
49
+ getProviderRoots(): string[];
50
+ /**
51
+ * Canonical provider directory shape for a given root.
52
+ */
53
+ getProviderDir(root: string, category: ProviderCategory, type: string): string;
54
+ /**
55
+ * Canonical user override directory for a provider.
56
+ */
57
+ getUserProviderDir(category: ProviderCategory, type: string): string;
58
+ /**
59
+ * Canonical upstream directory for a provider.
60
+ */
61
+ getUpstreamProviderDir(category: ProviderCategory, type: string): string;
62
+ /**
63
+ * Find the on-disk directory for a provider by type.
64
+ * Search order: user override → upstream.
65
+ */
66
+ findProviderDir(type: string): string | null;
67
+ /**
68
+ * Resolve a file within a provider directory.
69
+ */
70
+ resolveProviderFile(type: string, ...segments: string[]): string | null;
71
+ /**
72
+ * Load all providers (3-tier priority)
73
+ * 1. .upstream/ (GitHub auto-download — primary source)
74
+ * 2. User custom (~/.adhdev/providers/ excluding .upstream)
75
+ * User custom always wins (highest priority).
76
+ * If .upstream/ is empty, call fetchLatest() before loadAll().
77
+ */
78
+ loadAll(): void;
79
+ /**
80
+ * Check if upstream directory exists and has providers.
81
+ */
82
+ hasUpstream(): boolean;
83
+ /**
84
+ * Get raw provider metadata by type (NO scripts loaded).
85
+ * Safe for: category checks, icon, displayName, targetFilter, cdpPorts.
86
+ * NOT safe for: script execution (readChat, listModels, sendMessage).
87
+ * Use resolve() when scripts are needed.
88
+ */
89
+ getMeta(type: string): ProviderModule | undefined;
90
+ /**
91
+ * Resolve provider type by alias
92
+ * 'claude' → 'claude-cli', 'codex' → 'codex-cli' etc
93
+ * Returns input as-is if no match found.
94
+ */
95
+ resolveAlias(input: string): string;
96
+ /**
97
+ * Get provider with alias resolution (get + alias fallback)
98
+ */
99
+ getByAlias(input: string): ProviderModule | undefined;
100
+ /**
101
+ * Build CLI/ACP detection list (replaces cli-detector)
102
+ * Dynamically generated from provider.js spawn.command.
103
+ */
104
+ getCliDetectionList(): {
105
+ id: string;
106
+ displayName: string;
107
+ icon: string;
108
+ command: string;
109
+ category: string;
110
+ versionCommand?: string;
111
+ }[];
112
+ /**
113
+ * List providers by category
114
+ */
115
+ getByCategory(cat: ProviderCategory): ProviderModule[];
116
+ /**
117
+ * Extension Extension providers with extensionIdPattern only
118
+ * (used by discoverAgentWebviews in daemon-cdp.ts)
119
+ */
120
+ getExtensionProviders(): ProviderModule[];
121
+ /**
122
+ * All loaded providers
123
+ */
124
+ getAll(): ProviderModule[];
125
+ /**
126
+ * Check if a provider is enabled (per-IDE)
127
+ * Checks ideSettings[ideType].extensions[type].enabled.
128
+ * Default false (disabled) — user must explicitly enable.
129
+ * Always returns true when called without ideType.
130
+ */
131
+ isEnabled(type: string, ideType?: string): boolean;
132
+ /**
133
+ * Resolve per-IDE extension enabled state using the same normalization
134
+ * that runtime attach/remove uses.
135
+ */
136
+ getIdeExtensionEnabledState(ideType: string, extensionType: string): boolean;
137
+ /**
138
+ * Save IDE extension enabled setting
139
+ */
140
+ setIdeExtensionEnabled(ideType: string, extensionType: string, enabled: boolean): boolean;
141
+ /**
142
+ * Return only enabled providers by category (per-IDE)
143
+ */
144
+ getEnabledByCategory(cat: ProviderCategory, ideType?: string): ProviderModule[];
145
+ /**
146
+ * Extension Enabled extension providers with extensionIdPattern only (per-IDE)
147
+ */
148
+ getEnabledExtensionProviders(ideType?: string): ProviderModule[];
149
+ /**
150
+ * Return CDP port map for IDE providers
151
+ * Used by launch.ts, adhdev-daemon.ts
152
+ */
153
+ getCdpPortMap(): Record<string, [number, number]>;
154
+ /**
155
+ * Return IDE process name map (macOS)
156
+ */
157
+ getMacAppIdentifiers(): Record<string, string>;
158
+ /**
159
+ * Return IDE process name map (Windows)
160
+ */
161
+ getWinProcessNames(): Record<string, string[]>;
162
+ /**
163
+ * Available IDE types (only those with cdpPorts)
164
+ */
165
+ getAvailableIdeTypes(): string[];
166
+ /**
167
+ * Register IDE providers to core/detector registry
168
+ * → Enables detectIDEs() to detect provider.js-based IDEs
169
+ */
170
+ registerToDetector(): number;
171
+ /**
172
+ * Return final provider with OS/version overrides applied.
173
+ *
174
+ * Script resolution order:
175
+ * 1. compatibility array (new format — preferred)
176
+ * Provider.json defines: "compatibility": [{ "ideVersion": ">=1.107.0", "scriptDir": "scripts/1.107" }]
177
+ * First matching range wins. Fallback: defaultScriptDir.
178
+ * 2. versions field (legacy format — backward compat)
179
+ * "versions": { "< 1.107.0": { "__dir": "scripts/legacy" } }
180
+ * 3. Root scripts.js (original format — no versioning)
181
+ *
182
+ * Version source: context.version → VersionArchive → undefined
183
+ */
184
+ resolve(type: string, context?: {
185
+ os?: string;
186
+ version?: string;
187
+ }): ResolvedProvider | undefined;
188
+ /**
189
+ * Load scripts from a scriptDir within a provider directory.
190
+ * Tries scripts.js first, then individual .js files.
191
+ */
192
+ private loadScriptsFromDir;
193
+ /**
194
+ * Hot-reload: start watching for file changes
195
+ */
196
+ watch(): void;
197
+ /**
198
+ * Stop hot-reload
199
+ */
200
+ stopWatch(): void;
201
+ /**
202
+ * Full reload
203
+ */
204
+ reload(): void;
205
+ /**
206
+ * Download latest providers tarball from GitHub → extract to .upstream/
207
+ * - ETag-based change detection (skip if unchanged)
208
+ * - Never touches user custom files in ~/.adhdev/providers/
209
+ * - Runs in background; existing providers are kept on failure
210
+ *
211
+ * @returns Whether an update occurred
212
+ */
213
+ fetchLatest(): Promise<{
214
+ updated: boolean;
215
+ error?: string;
216
+ }>;
217
+ /** HTTP(S) file download (follows redirects) */
218
+ private downloadFile;
219
+ /** Recursive directory copy */
220
+ private copyDirRecursive;
221
+ /** .meta.json save */
222
+ private writeMeta;
223
+ /** Count provider files (provider.js or provider.json) */
224
+ private countProviders;
225
+ /**
226
+ * Get public settings schema for a provider (for dashboard UI rendering)
227
+ */
228
+ getPublicSettings(type: string): ProviderSettingSchema[];
229
+ /**
230
+ * Get public settings schema for all providers
231
+ */
232
+ getAllPublicSettings(): Record<string, ProviderSettingSchema[]>;
233
+ /**
234
+ * Resolved setting value for a provider (default + user override)
235
+ */
236
+ getSettingValue(type: string, key: string): any;
237
+ /**
238
+ * All resolved settings for a provider (default + user override)
239
+ */
240
+ getSettings(type: string): Record<string, any>;
241
+ /**
242
+ * Save provider setting value (writes to config.json)
243
+ */
244
+ setSetting(type: string, key: string, value: any): boolean;
245
+ /**
246
+ * Find the on-disk directory for a provider by type.
247
+ * Canonical shape: root/category/type.
248
+ */
249
+ private findProviderDirInternal;
250
+ /**
251
+ * Build a scripts function map from individual .js files in a directory.
252
+ * Each file is wrapped as: (params?) => fs.readFileSync(filePath, 'utf-8')
253
+ * (template substitution is NOT applied here — scripts.js handles that)
254
+ */
255
+ private buildScriptWrappersFromDir;
256
+ /**
257
+ * Recursively scan directory to load provider files
258
+ * Supports two formats:
259
+ * 1. provider.json (metadata) + scripts.js (optional CDP scripts)
260
+ * 2. provider.js (legacy — everything in one file)
261
+ * Structure: dir/category/agent-name/provider.{json,js}
262
+ */
263
+ private loadDir;
264
+ /**
265
+ * Simple semver range matching
266
+ * Supported formats: '>=4.0.0', '<3.0.0', '>=2.1.0'
267
+ */
268
+ private matchesVersion;
269
+ private compareVersions;
270
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * StatusMonitor — Status monitoring notification system
3
+ *
4
+ * Common across all Provider categories (IDE/Extension/CLI/ACP).
5
+ * - Approval waiting (waiting_approval) notification
6
+ * - Notification when generating persists for extended duration
7
+ * - All config toggleable via Provider Settings
8
+ */
9
+ export interface MonitorConfig {
10
+ /** Enable awaiting-approval notification */
11
+ approvalAlert: boolean;
12
+ /** Prolonged generating notification enabled */
13
+ longGeneratingAlert: boolean;
14
+ /** Prolonged threshold (seconds) */
15
+ longGeneratingThresholdSec: number;
16
+ /** Repeat notification cooldown (seconds) */
17
+ alertCooldownSec: number;
18
+ }
19
+ export declare const DEFAULT_MONITOR_CONFIG: MonitorConfig;
20
+ export interface MonitorEvent {
21
+ type: string;
22
+ agentKey: string;
23
+ timestamp: number;
24
+ elapsedSec?: number;
25
+ message?: string;
26
+ }
27
+ export declare class StatusMonitor {
28
+ private config;
29
+ private lastAlertTime;
30
+ private generatingStartTimes;
31
+ private longGeneratingAlerted;
32
+ private lastProgressFingerprint;
33
+ private lastProgressChangeAt;
34
+ constructor(config?: Partial<MonitorConfig>);
35
+ /** Update config (called from Provider Settings) */
36
+ updateConfig(partial: Partial<MonitorConfig>): void;
37
+ /** Return current config */
38
+ getConfig(): MonitorConfig;
39
+ /**
40
+ * Check status transition → return notification event array.
41
+ * Called from each onTick() or detectStatusTransition().
42
+ */
43
+ check(agentKey: string, status: string, now: number, progressFingerprint?: string): MonitorEvent[];
44
+ /** Cooldown check — prevent sending the same notification too frequently */
45
+ private shouldAlert;
46
+ /** Reset (on agent terminate/restart) */
47
+ reset(agentKey?: string): void;
48
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Provider Version Detection & Archiving
3
+ *
4
+ * Detects installed versions for all provider categories (IDE, CLI, ACP, Extension).
5
+ * Archives version history to ~/.adhdev/version-history.json for compatibility tracking.
6
+ *
7
+ * Usage:
8
+ * const archive = new VersionArchive();
9
+ * const results = await detectAllVersions(providerLoader, archive);
10
+ */
11
+ import type { ProviderLoader } from './provider-loader.js';
12
+ export interface ProviderVersionInfo {
13
+ type: string;
14
+ name: string;
15
+ category: string;
16
+ installed: boolean;
17
+ version: string | null;
18
+ path: string | null;
19
+ binary: string | null;
20
+ detectedAt: string;
21
+ /**
22
+ * Set when the detected version is NOT listed in provider.json testedVersions.
23
+ * Means scripts may not work correctly with this version.
24
+ */
25
+ warning?: string;
26
+ }
27
+ export interface VersionHistoryEntry {
28
+ version: string;
29
+ detectedAt: string;
30
+ os: string;
31
+ }
32
+ export interface VersionHistory {
33
+ [providerType: string]: VersionHistoryEntry[];
34
+ }
35
+ export declare class VersionArchive {
36
+ private history;
37
+ constructor();
38
+ private load;
39
+ /** Record a detected version (deduplicates same version) */
40
+ record(type: string, version: string): void;
41
+ /** Get version history for a provider */
42
+ getHistory(type: string): VersionHistoryEntry[];
43
+ /** Get latest known version for a provider */
44
+ getLatest(type: string): string | null;
45
+ /** Get full archive */
46
+ getAll(): VersionHistory;
47
+ private save;
48
+ }
49
+ /**
50
+ * Detect versions for all loaded providers
51
+ */
52
+ export declare function detectAllVersions(loader: ProviderLoader, archive?: VersionArchive): Promise<ProviderVersionInfo[]>;
@@ -0,0 +1,8 @@
1
+ import { type SessionHostEndpoint } from '@adhdev/session-host-core';
2
+ import type { HostedCliRuntimeDescriptor } from '../commands/cli-manager.js';
3
+ export declare function ensureSessionHostReady(options: {
4
+ appName?: string;
5
+ spawnHost: () => void;
6
+ timeoutMs?: number;
7
+ }): Promise<SessionHostEndpoint>;
8
+ export declare function listHostedCliRuntimes(endpoint: SessionHostEndpoint): Promise<HostedCliRuntimeDescriptor[]>;
@@ -0,0 +1,24 @@
1
+ import type { SessionTransport } from '../shared-types.js';
2
+ export interface SessionRuntimeTarget {
3
+ sessionId: string;
4
+ parentSessionId: string | null;
5
+ providerType: string;
6
+ transport: SessionTransport;
7
+ cdpManagerKey?: string;
8
+ adapterKey?: string;
9
+ instanceKey?: string;
10
+ }
11
+ export declare class SessionRegistry {
12
+ private readonly bySessionId;
13
+ private readonly byManagerKey;
14
+ private readonly byInstanceKey;
15
+ private readonly byParentSessionId;
16
+ register(target: SessionRuntimeTarget): void;
17
+ get(sessionId: string | undefined | null): SessionRuntimeTarget | undefined;
18
+ unregister(sessionId: string | undefined | null): void;
19
+ unregisterByManagerKey(managerKey: string): void;
20
+ unregisterByInstanceKey(instanceKey: string): void;
21
+ listChildren(parentSessionId: string): SessionRuntimeTarget[];
22
+ private addIndex;
23
+ private removeIndex;
24
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * ADHDev Shared Types — Additional cross-package type definitions
3
+ *
4
+ * Extracted common sub-types previously inlined across multiple packages.
5
+ * Separated from shared-types.ts due to rollup-dts bundling constraints.
6
+ *
7
+ * IMPORTANT: This file must remain runtime-free (types only).
8
+ */
9
+ /** Runtime terminal write-owner descriptor */
10
+ export interface RuntimeWriteOwner {
11
+ clientId: string;
12
+ ownerType: 'agent' | 'user';
13
+ }
14
+ /** Runtime attached client descriptor */
15
+ export interface RuntimeAttachedClient {
16
+ clientId: string;
17
+ type: 'daemon' | 'web' | 'local-terminal';
18
+ readOnly: boolean;
19
+ }
20
+ /** Session status union (used by SessionEntry.status, legacy recent-launch metadata, etc.) */
21
+ export type SessionStatus = 'idle' | 'generating' | 'waiting_approval' | 'error' | 'stopped' | 'starting' | 'panel_hidden' | 'not_monitored' | 'disconnected';
22
+ /** Inbox bucket categories for recent sessions */
23
+ export type RecentSessionBucket = 'needs_attention' | 'working' | 'task_complete' | 'idle';
24
+ /** Terminal backend status */
25
+ export interface TerminalBackendStatus {
26
+ backend: 'xterm' | 'ghostty-vt';
27
+ preference: 'auto' | 'xterm' | 'ghostty-vt';
28
+ ghosttyAvailable: boolean;
29
+ }