@viewportai/daemon 0.1.0

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 (350) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +157 -0
  3. package/bin/vpd.js +3 -0
  4. package/dist/adapters/claude.d.ts +119 -0
  5. package/dist/adapters/claude.d.ts.map +1 -0
  6. package/dist/adapters/claude.js +621 -0
  7. package/dist/adapters/claude.js.map +1 -0
  8. package/dist/adapters/codex-event-normalizers.d.ts +10 -0
  9. package/dist/adapters/codex-event-normalizers.d.ts.map +1 -0
  10. package/dist/adapters/codex-event-normalizers.js +208 -0
  11. package/dist/adapters/codex-event-normalizers.js.map +1 -0
  12. package/dist/adapters/codex-sdk-loader.d.ts +47 -0
  13. package/dist/adapters/codex-sdk-loader.d.ts.map +1 -0
  14. package/dist/adapters/codex-sdk-loader.js +19 -0
  15. package/dist/adapters/codex-sdk-loader.js.map +1 -0
  16. package/dist/adapters/codex.d.ts +56 -0
  17. package/dist/adapters/codex.d.ts.map +1 -0
  18. package/dist/adapters/codex.js +267 -0
  19. package/dist/adapters/codex.js.map +1 -0
  20. package/dist/adapters/gemini-cli.d.ts +49 -0
  21. package/dist/adapters/gemini-cli.d.ts.map +1 -0
  22. package/dist/adapters/gemini-cli.js +181 -0
  23. package/dist/adapters/gemini-cli.js.map +1 -0
  24. package/dist/adapters/pty.d.ts +56 -0
  25. package/dist/adapters/pty.d.ts.map +1 -0
  26. package/dist/adapters/pty.js +223 -0
  27. package/dist/adapters/pty.js.map +1 -0
  28. package/dist/agents/aider.d.ts +9 -0
  29. package/dist/agents/aider.d.ts.map +1 -0
  30. package/dist/agents/aider.js +37 -0
  31. package/dist/agents/aider.js.map +1 -0
  32. package/dist/agents/built-in.d.ts +4 -0
  33. package/dist/agents/built-in.d.ts.map +1 -0
  34. package/dist/agents/built-in.js +6 -0
  35. package/dist/agents/built-in.js.map +1 -0
  36. package/dist/agents/claude.d.ts +12 -0
  37. package/dist/agents/claude.d.ts.map +1 -0
  38. package/dist/agents/claude.js +93 -0
  39. package/dist/agents/claude.js.map +1 -0
  40. package/dist/agents/codex.d.ts +6 -0
  41. package/dist/agents/codex.d.ts.map +1 -0
  42. package/dist/agents/codex.js +64 -0
  43. package/dist/agents/codex.js.map +1 -0
  44. package/dist/agents/command-detection.d.ts +6 -0
  45. package/dist/agents/command-detection.d.ts.map +1 -0
  46. package/dist/agents/command-detection.js +12 -0
  47. package/dist/agents/command-detection.js.map +1 -0
  48. package/dist/agents/gemini.d.ts +6 -0
  49. package/dist/agents/gemini.d.ts.map +1 -0
  50. package/dist/agents/gemini.js +36 -0
  51. package/dist/agents/gemini.js.map +1 -0
  52. package/dist/cli/agent-commands.d.ts +2 -0
  53. package/dist/cli/agent-commands.d.ts.map +1 -0
  54. package/dist/cli/agent-commands.js +87 -0
  55. package/dist/cli/agent-commands.js.map +1 -0
  56. package/dist/cli/args.d.ts +9 -0
  57. package/dist/cli/args.d.ts.map +1 -0
  58. package/dist/cli/args.js +34 -0
  59. package/dist/cli/args.js.map +1 -0
  60. package/dist/cli/command-shared.d.ts +53 -0
  61. package/dist/cli/command-shared.d.ts.map +1 -0
  62. package/dist/cli/command-shared.js +239 -0
  63. package/dist/cli/command-shared.js.map +1 -0
  64. package/dist/cli/commands.d.ts +20 -0
  65. package/dist/cli/commands.d.ts.map +1 -0
  66. package/dist/cli/commands.js +20 -0
  67. package/dist/cli/commands.js.map +1 -0
  68. package/dist/cli/daemon-client.d.ts +30 -0
  69. package/dist/cli/daemon-client.d.ts.map +1 -0
  70. package/dist/cli/daemon-client.js +161 -0
  71. package/dist/cli/daemon-client.js.map +1 -0
  72. package/dist/cli/daemon-lifecycle.d.ts +47 -0
  73. package/dist/cli/daemon-lifecycle.d.ts.map +1 -0
  74. package/dist/cli/daemon-lifecycle.js +262 -0
  75. package/dist/cli/daemon-lifecycle.js.map +1 -0
  76. package/dist/cli/daemon-settings.d.ts +9 -0
  77. package/dist/cli/daemon-settings.d.ts.map +1 -0
  78. package/dist/cli/daemon-settings.js +168 -0
  79. package/dist/cli/daemon-settings.js.map +1 -0
  80. package/dist/cli/directory-commands.d.ts +4 -0
  81. package/dist/cli/directory-commands.d.ts.map +1 -0
  82. package/dist/cli/directory-commands.js +190 -0
  83. package/dist/cli/directory-commands.js.map +1 -0
  84. package/dist/cli/hook-command.d.ts +14 -0
  85. package/dist/cli/hook-command.d.ts.map +1 -0
  86. package/dist/cli/hook-command.js +96 -0
  87. package/dist/cli/hook-command.js.map +1 -0
  88. package/dist/cli/install-command.d.ts +2 -0
  89. package/dist/cli/install-command.d.ts.map +1 -0
  90. package/dist/cli/install-command.js +91 -0
  91. package/dist/cli/install-command.js.map +1 -0
  92. package/dist/cli/lifecycle-commands.d.ts +10 -0
  93. package/dist/cli/lifecycle-commands.d.ts.map +1 -0
  94. package/dist/cli/lifecycle-commands.js +524 -0
  95. package/dist/cli/lifecycle-commands.js.map +1 -0
  96. package/dist/cli/listen-target.d.ts +13 -0
  97. package/dist/cli/listen-target.d.ts.map +1 -0
  98. package/dist/cli/listen-target.js +102 -0
  99. package/dist/cli/listen-target.js.map +1 -0
  100. package/dist/cli/orchestration-commands.d.ts +8 -0
  101. package/dist/cli/orchestration-commands.d.ts.map +1 -0
  102. package/dist/cli/orchestration-commands.js +340 -0
  103. package/dist/cli/orchestration-commands.js.map +1 -0
  104. package/dist/cli/permission-commands.d.ts +2 -0
  105. package/dist/cli/permission-commands.d.ts.map +1 -0
  106. package/dist/cli/permission-commands.js +138 -0
  107. package/dist/cli/permission-commands.js.map +1 -0
  108. package/dist/cli/runtime-toolchain.d.ts +35 -0
  109. package/dist/cli/runtime-toolchain.d.ts.map +1 -0
  110. package/dist/cli/runtime-toolchain.js +184 -0
  111. package/dist/cli/runtime-toolchain.js.map +1 -0
  112. package/dist/cli/service-commands.d.ts +19 -0
  113. package/dist/cli/service-commands.d.ts.map +1 -0
  114. package/dist/cli/service-commands.js +273 -0
  115. package/dist/cli/service-commands.js.map +1 -0
  116. package/dist/cli/session-commands.d.ts +3 -0
  117. package/dist/cli/session-commands.d.ts.map +1 -0
  118. package/dist/cli/session-commands.js +146 -0
  119. package/dist/cli/session-commands.js.map +1 -0
  120. package/dist/cli/setup-command.d.ts +12 -0
  121. package/dist/cli/setup-command.d.ts.map +1 -0
  122. package/dist/cli/setup-command.js +223 -0
  123. package/dist/cli/setup-command.js.map +1 -0
  124. package/dist/cli/supervisor-protocol.d.ts +20 -0
  125. package/dist/cli/supervisor-protocol.d.ts.map +1 -0
  126. package/dist/cli/supervisor-protocol.js +5 -0
  127. package/dist/cli/supervisor-protocol.js.map +1 -0
  128. package/dist/cli/supervisor.d.ts +10 -0
  129. package/dist/cli/supervisor.d.ts.map +1 -0
  130. package/dist/cli/supervisor.js +218 -0
  131. package/dist/cli/supervisor.js.map +1 -0
  132. package/dist/cli/worktree-commands.d.ts +2 -0
  133. package/dist/cli/worktree-commands.d.ts.map +1 -0
  134. package/dist/cli/worktree-commands.js +250 -0
  135. package/dist/cli/worktree-commands.js.map +1 -0
  136. package/dist/cli/ws-client.d.ts +20 -0
  137. package/dist/cli/ws-client.d.ts.map +1 -0
  138. package/dist/cli/ws-client.js +103 -0
  139. package/dist/cli/ws-client.js.map +1 -0
  140. package/dist/core/agent-registry.d.ts +128 -0
  141. package/dist/core/agent-registry.d.ts.map +1 -0
  142. package/dist/core/agent-registry.js +131 -0
  143. package/dist/core/agent-registry.js.map +1 -0
  144. package/dist/core/config-schema.d.ts +77 -0
  145. package/dist/core/config-schema.d.ts.map +1 -0
  146. package/dist/core/config-schema.js +66 -0
  147. package/dist/core/config-schema.js.map +1 -0
  148. package/dist/core/config.d.ts +111 -0
  149. package/dist/core/config.d.ts.map +1 -0
  150. package/dist/core/config.js +244 -0
  151. package/dist/core/config.js.map +1 -0
  152. package/dist/core/daemon.d.ts +113 -0
  153. package/dist/core/daemon.d.ts.map +1 -0
  154. package/dist/core/daemon.js +197 -0
  155. package/dist/core/daemon.js.map +1 -0
  156. package/dist/core/discovered-sessions.d.ts +7 -0
  157. package/dist/core/discovered-sessions.d.ts.map +1 -0
  158. package/dist/core/discovered-sessions.js +39 -0
  159. package/dist/core/discovered-sessions.js.map +1 -0
  160. package/dist/core/error-codes.d.ts +31 -0
  161. package/dist/core/error-codes.d.ts.map +1 -0
  162. package/dist/core/error-codes.js +30 -0
  163. package/dist/core/error-codes.js.map +1 -0
  164. package/dist/core/errors.d.ts +16 -0
  165. package/dist/core/errors.d.ts.map +1 -0
  166. package/dist/core/errors.js +43 -0
  167. package/dist/core/errors.js.map +1 -0
  168. package/dist/core/events.d.ts +183 -0
  169. package/dist/core/events.d.ts.map +1 -0
  170. package/dist/core/events.js +61 -0
  171. package/dist/core/events.js.map +1 -0
  172. package/dist/core/interfaces.d.ts +115 -0
  173. package/dist/core/interfaces.d.ts.map +1 -0
  174. package/dist/core/interfaces.js +9 -0
  175. package/dist/core/interfaces.js.map +1 -0
  176. package/dist/core/logger.d.ts +11 -0
  177. package/dist/core/logger.d.ts.map +1 -0
  178. package/dist/core/logger.js +17 -0
  179. package/dist/core/logger.js.map +1 -0
  180. package/dist/core/metrics.d.ts +24 -0
  181. package/dist/core/metrics.d.ts.map +1 -0
  182. package/dist/core/metrics.js +32 -0
  183. package/dist/core/metrics.js.map +1 -0
  184. package/dist/core/output.d.ts +13 -0
  185. package/dist/core/output.d.ts.map +1 -0
  186. package/dist/core/output.js +22 -0
  187. package/dist/core/output.js.map +1 -0
  188. package/dist/core/permission-coordinator.d.ts +67 -0
  189. package/dist/core/permission-coordinator.d.ts.map +1 -0
  190. package/dist/core/permission-coordinator.js +209 -0
  191. package/dist/core/permission-coordinator.js.map +1 -0
  192. package/dist/core/session-manager.d.ts +121 -0
  193. package/dist/core/session-manager.d.ts.map +1 -0
  194. package/dist/core/session-manager.js +354 -0
  195. package/dist/core/session-manager.js.map +1 -0
  196. package/dist/core/session-state-file.d.ts +20 -0
  197. package/dist/core/session-state-file.d.ts.map +1 -0
  198. package/dist/core/session-state-file.js +49 -0
  199. package/dist/core/session-state-file.js.map +1 -0
  200. package/dist/core/types.d.ts +250 -0
  201. package/dist/core/types.d.ts.map +1 -0
  202. package/dist/core/types.js +88 -0
  203. package/dist/core/types.js.map +1 -0
  204. package/dist/directories/manager.d.ts +32 -0
  205. package/dist/directories/manager.d.ts.map +1 -0
  206. package/dist/directories/manager.js +86 -0
  207. package/dist/directories/manager.js.map +1 -0
  208. package/dist/discovery/claude.d.ts +29 -0
  209. package/dist/discovery/claude.d.ts.map +1 -0
  210. package/dist/discovery/claude.js +55 -0
  211. package/dist/discovery/claude.js.map +1 -0
  212. package/dist/discovery/codex.d.ts +11 -0
  213. package/dist/discovery/codex.d.ts.map +1 -0
  214. package/dist/discovery/codex.js +365 -0
  215. package/dist/discovery/codex.js.map +1 -0
  216. package/dist/discovery/gemini.d.ts +15 -0
  217. package/dist/discovery/gemini.d.ts.map +1 -0
  218. package/dist/discovery/gemini.js +151 -0
  219. package/dist/discovery/gemini.js.map +1 -0
  220. package/dist/discovery/jsonl-reader.d.ts +122 -0
  221. package/dist/discovery/jsonl-reader.d.ts.map +1 -0
  222. package/dist/discovery/jsonl-reader.js +622 -0
  223. package/dist/discovery/jsonl-reader.js.map +1 -0
  224. package/dist/discovery/watcher.d.ts +29 -0
  225. package/dist/discovery/watcher.d.ts.map +1 -0
  226. package/dist/discovery/watcher.js +383 -0
  227. package/dist/discovery/watcher.js.map +1 -0
  228. package/dist/hooks/index.d.ts +10 -0
  229. package/dist/hooks/index.d.ts.map +1 -0
  230. package/dist/hooks/index.js +8 -0
  231. package/dist/hooks/index.js.map +1 -0
  232. package/dist/hooks/installers/base.d.ts +27 -0
  233. package/dist/hooks/installers/base.d.ts.map +1 -0
  234. package/dist/hooks/installers/base.js +9 -0
  235. package/dist/hooks/installers/base.js.map +1 -0
  236. package/dist/hooks/installers/claude.d.ts +18 -0
  237. package/dist/hooks/installers/claude.d.ts.map +1 -0
  238. package/dist/hooks/installers/claude.js +120 -0
  239. package/dist/hooks/installers/claude.js.map +1 -0
  240. package/dist/hooks/router.d.ts +63 -0
  241. package/dist/hooks/router.d.ts.map +1 -0
  242. package/dist/hooks/router.js +259 -0
  243. package/dist/hooks/router.js.map +1 -0
  244. package/dist/hooks/supervision.d.ts +27 -0
  245. package/dist/hooks/supervision.d.ts.map +1 -0
  246. package/dist/hooks/supervision.js +67 -0
  247. package/dist/hooks/supervision.js.map +1 -0
  248. package/dist/hooks/types.d.ts +171 -0
  249. package/dist/hooks/types.d.ts.map +1 -0
  250. package/dist/hooks/types.js +148 -0
  251. package/dist/hooks/types.js.map +1 -0
  252. package/dist/index.d.ts +17 -0
  253. package/dist/index.d.ts.map +1 -0
  254. package/dist/index.js +117 -0
  255. package/dist/index.js.map +1 -0
  256. package/dist/permissions/engine.d.ts +23 -0
  257. package/dist/permissions/engine.d.ts.map +1 -0
  258. package/dist/permissions/engine.js +43 -0
  259. package/dist/permissions/engine.js.map +1 -0
  260. package/dist/plugins/loader.d.ts +44 -0
  261. package/dist/plugins/loader.d.ts.map +1 -0
  262. package/dist/plugins/loader.js +177 -0
  263. package/dist/plugins/loader.js.map +1 -0
  264. package/dist/server/auth.d.ts +32 -0
  265. package/dist/server/auth.d.ts.map +1 -0
  266. package/dist/server/auth.js +78 -0
  267. package/dist/server/auth.js.map +1 -0
  268. package/dist/server/discovered-watch-key.d.ts +5 -0
  269. package/dist/server/discovered-watch-key.d.ts.map +1 -0
  270. package/dist/server/discovered-watch-key.js +31 -0
  271. package/dist/server/discovered-watch-key.js.map +1 -0
  272. package/dist/server/hello-builder.d.ts +17 -0
  273. package/dist/server/hello-builder.d.ts.map +1 -0
  274. package/dist/server/hello-builder.js +71 -0
  275. package/dist/server/hello-builder.js.map +1 -0
  276. package/dist/server/http-server.d.ts +30 -0
  277. package/dist/server/http-server.d.ts.map +1 -0
  278. package/dist/server/http-server.js +561 -0
  279. package/dist/server/http-server.js.map +1 -0
  280. package/dist/server/message-normalizers.d.ts +11 -0
  281. package/dist/server/message-normalizers.d.ts.map +1 -0
  282. package/dist/server/message-normalizers.js +104 -0
  283. package/dist/server/message-normalizers.js.map +1 -0
  284. package/dist/server/pairing-offers.d.ts +78 -0
  285. package/dist/server/pairing-offers.d.ts.map +1 -0
  286. package/dist/server/pairing-offers.js +502 -0
  287. package/dist/server/pairing-offers.js.map +1 -0
  288. package/dist/server/rate-limiter.d.ts +21 -0
  289. package/dist/server/rate-limiter.d.ts.map +1 -0
  290. package/dist/server/rate-limiter.js +61 -0
  291. package/dist/server/rate-limiter.js.map +1 -0
  292. package/dist/server/ring-buffer.d.ts +34 -0
  293. package/dist/server/ring-buffer.d.ts.map +1 -0
  294. package/dist/server/ring-buffer.js +73 -0
  295. package/dist/server/ring-buffer.js.map +1 -0
  296. package/dist/server/security.d.ts +22 -0
  297. package/dist/server/security.d.ts.map +1 -0
  298. package/dist/server/security.js +123 -0
  299. package/dist/server/security.js.map +1 -0
  300. package/dist/server/ws-command-handlers.d.ts +25 -0
  301. package/dist/server/ws-command-handlers.d.ts.map +1 -0
  302. package/dist/server/ws-command-handlers.js +218 -0
  303. package/dist/server/ws-command-handlers.js.map +1 -0
  304. package/dist/server/ws-daemon-event-bridge.d.ts +22 -0
  305. package/dist/server/ws-daemon-event-bridge.d.ts.map +1 -0
  306. package/dist/server/ws-daemon-event-bridge.js +321 -0
  307. package/dist/server/ws-daemon-event-bridge.js.map +1 -0
  308. package/dist/server/ws-limits.d.ts +2 -0
  309. package/dist/server/ws-limits.d.ts.map +1 -0
  310. package/dist/server/ws-limits.js +12 -0
  311. package/dist/server/ws-limits.js.map +1 -0
  312. package/dist/server/ws-protocol.d.ts +248 -0
  313. package/dist/server/ws-protocol.d.ts.map +1 -0
  314. package/dist/server/ws-protocol.js +157 -0
  315. package/dist/server/ws-protocol.js.map +1 -0
  316. package/dist/server/ws-server.d.ts +26 -0
  317. package/dist/server/ws-server.d.ts.map +1 -0
  318. package/dist/server/ws-server.js +290 -0
  319. package/dist/server/ws-server.js.map +1 -0
  320. package/dist/startup-agents.d.ts +6 -0
  321. package/dist/startup-agents.d.ts.map +1 -0
  322. package/dist/startup-agents.js +97 -0
  323. package/dist/startup-agents.js.map +1 -0
  324. package/dist/startup-prereqs.d.ts +29 -0
  325. package/dist/startup-prereqs.d.ts.map +1 -0
  326. package/dist/startup-prereqs.js +209 -0
  327. package/dist/startup-prereqs.js.map +1 -0
  328. package/dist/startup-watchers.d.ts +7 -0
  329. package/dist/startup-watchers.d.ts.map +1 -0
  330. package/dist/startup-watchers.js +196 -0
  331. package/dist/startup-watchers.js.map +1 -0
  332. package/dist/startup.d.ts +20 -0
  333. package/dist/startup.d.ts.map +1 -0
  334. package/dist/startup.js +335 -0
  335. package/dist/startup.js.map +1 -0
  336. package/dist/tracking/git-tracker.d.ts +52 -0
  337. package/dist/tracking/git-tracker.d.ts.map +1 -0
  338. package/dist/tracking/git-tracker.js +277 -0
  339. package/dist/tracking/git-tracker.js.map +1 -0
  340. package/dist/tracking/noop-tracker.d.ts +27 -0
  341. package/dist/tracking/noop-tracker.d.ts.map +1 -0
  342. package/dist/tracking/noop-tracker.js +42 -0
  343. package/dist/tracking/noop-tracker.js.map +1 -0
  344. package/docs/configuration.md +75 -0
  345. package/docs/developer-workflows.md +107 -0
  346. package/docs/protocol-matrix.json +155 -0
  347. package/docs/releasing.md +65 -0
  348. package/docs/security.md +48 -0
  349. package/docs/testing.md +112 -0
  350. package/package.json +84 -0
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Core type definitions for the Viewport daemon.
3
+ *
4
+ * These types are the shared vocabulary across all modules — adapters, trackers,
5
+ * permissions, server, and UI protocol. Keep them stable.
6
+ */
7
+ export type SessionState = 'starting' | 'running' | 'waiting_permission' | 'idle' | 'completed' | 'errored';
8
+ export type SessionTrust = 'operator' | 'automated' | 'external';
9
+ export type SessionAgentMode = 'detect' | 'bypass';
10
+ export type AttentionReason = 'permission' | 'completed' | 'errored' | 'idle_timeout';
11
+ export interface AttentionState {
12
+ requiresAttention: boolean;
13
+ reason?: AttentionReason;
14
+ /** Tool name if reason is 'permission'. */
15
+ toolName?: string;
16
+ timestamp?: number;
17
+ }
18
+ export interface StreamStats {
19
+ messagesPerSec: number;
20
+ bytesPerSec: number;
21
+ bufferDepth: number;
22
+ streaming: boolean;
23
+ lastUpdated: number;
24
+ }
25
+ export interface Step {
26
+ /** Sequential step number within the session. */
27
+ step: number;
28
+ /** Git commit SHA, or null if the commit is pending/skipped. */
29
+ sha: string | null;
30
+ /** Message type that triggered this step (e.g. 'tool_call'). */
31
+ type: string;
32
+ /** Tool name if this step was triggered by a tool call. */
33
+ toolName?: string;
34
+ /** Human-readable description of what happened. */
35
+ description: string;
36
+ /** Unix timestamp (ms) when this step occurred. */
37
+ timestamp: number;
38
+ }
39
+ export type SessionMessage = UserMessage | AgentMessage | AgentMessageChunk | AgentThoughtChunk | ToolCall | ToolCallUpdate | TokenUsage | SystemStatus;
40
+ export interface UserMessage {
41
+ type: 'user_message';
42
+ text: string;
43
+ messageId: string;
44
+ timestamp: number;
45
+ }
46
+ export interface AgentMessage {
47
+ type: 'agent_message';
48
+ text: string;
49
+ messageId: string;
50
+ timestamp: number;
51
+ }
52
+ export interface AgentMessageChunk {
53
+ type: 'agent_message_chunk';
54
+ text: string;
55
+ messageId: string;
56
+ timestamp: number;
57
+ }
58
+ export interface AgentThoughtChunk {
59
+ type: 'agent_thought_chunk';
60
+ text: string;
61
+ messageId: string;
62
+ timestamp: number;
63
+ }
64
+ export type ToolCallDetail = {
65
+ kind: 'shell';
66
+ command: string;
67
+ cwd?: string;
68
+ output?: string;
69
+ exitCode?: number;
70
+ timeout?: number;
71
+ } | {
72
+ kind: 'read';
73
+ filePath: string;
74
+ offset?: number;
75
+ limit?: number;
76
+ output?: string;
77
+ } | {
78
+ kind: 'edit';
79
+ filePath: string;
80
+ oldString?: string;
81
+ newString?: string;
82
+ replaceAll?: boolean;
83
+ output?: string;
84
+ } | {
85
+ kind: 'write';
86
+ filePath: string;
87
+ content?: string;
88
+ output?: string;
89
+ } | {
90
+ kind: 'search';
91
+ pattern: string;
92
+ path?: string;
93
+ glob?: string;
94
+ type?: string;
95
+ outputMode?: string;
96
+ output?: string;
97
+ } | {
98
+ kind: 'glob';
99
+ pattern: string;
100
+ path?: string;
101
+ output?: string;
102
+ } | {
103
+ kind: 'agent';
104
+ subagentType?: string;
105
+ description?: string;
106
+ prompt?: string;
107
+ output?: string;
108
+ } | {
109
+ kind: 'web';
110
+ url?: string;
111
+ query?: string;
112
+ prompt?: string;
113
+ output?: string;
114
+ } | {
115
+ kind: 'notebook';
116
+ notebookPath?: string;
117
+ editMode?: string;
118
+ cellType?: string;
119
+ output?: string;
120
+ } | {
121
+ kind: 'unknown';
122
+ toolName: string;
123
+ input?: Record<string, unknown>;
124
+ output?: string;
125
+ };
126
+ /**
127
+ * Map a tool name + input to a typed ToolCallDetail.
128
+ * Centralizes the SDK → structured detail mapping so both adapters
129
+ * and message normalizers use the same logic.
130
+ */
131
+ export declare function toToolCallDetail(toolName: string, input?: Record<string, unknown>): ToolCallDetail;
132
+ export interface ToolCall {
133
+ type: 'tool_call';
134
+ toolCallId: string;
135
+ toolName: string;
136
+ title: string;
137
+ input?: Record<string, unknown>;
138
+ detail?: ToolCallDetail;
139
+ status: 'in_progress' | 'completed' | 'error';
140
+ timestamp: number;
141
+ }
142
+ export interface ToolCallUpdate {
143
+ type: 'tool_call_update';
144
+ toolCallId: string;
145
+ toolName?: string;
146
+ status: 'completed' | 'error';
147
+ title?: string;
148
+ output?: string;
149
+ timestamp: number;
150
+ }
151
+ export interface TokenUsage {
152
+ type: 'token_usage';
153
+ inputTokens: number;
154
+ outputTokens: number;
155
+ totalCostUsd?: number;
156
+ modelUsage?: Record<string, {
157
+ inputTokens: number;
158
+ outputTokens: number;
159
+ costUsd: number;
160
+ }>;
161
+ durationMs?: number;
162
+ numTurns?: number;
163
+ timestamp: number;
164
+ }
165
+ export interface SystemStatus {
166
+ type: 'system_status';
167
+ status: string;
168
+ sessionId: string;
169
+ timestamp: number;
170
+ }
171
+ export interface PermissionRequest {
172
+ /** Unique ID for this permission request. */
173
+ requestId: string;
174
+ /** The tool requesting permission. */
175
+ toolName: string;
176
+ /** Human-readable description of what the tool wants to do. */
177
+ description: string;
178
+ /** Raw tool input (shown to user for context). */
179
+ input?: Record<string, unknown>;
180
+ /** Reason the SDK gives for why this needs permission. */
181
+ decisionReason?: string;
182
+ /** File path that triggered the permission request, if applicable. */
183
+ blockedPath?: string;
184
+ }
185
+ export interface PendingPermissionRequest {
186
+ sessionId: string;
187
+ requestId: string;
188
+ toolName: string;
189
+ description: string;
190
+ input?: Record<string, unknown>;
191
+ decisionReason?: string;
192
+ blockedPath?: string;
193
+ createdAt: number;
194
+ }
195
+ /**
196
+ * User's response to a permission request.
197
+ * Note: SDK only supports 'allow' | 'deny'. No 'allow-always' at the SDK level.
198
+ * "Always allow" is implemented by passing updatedPermissions back to the SDK.
199
+ */
200
+ export type PermissionDecision = {
201
+ behavior: 'allow';
202
+ updatedInput?: Record<string, unknown>;
203
+ } | {
204
+ behavior: 'deny';
205
+ message?: string;
206
+ };
207
+ export interface SessionConfig {
208
+ agent: string;
209
+ model?: string;
210
+ gitTracker: GitTrackerConfig;
211
+ permissions: PermissionsConfig;
212
+ costCapUsd?: number;
213
+ trust: SessionTrust;
214
+ }
215
+ export interface GitTrackerConfig {
216
+ enabled: boolean;
217
+ /** Tool names that trigger a micro-commit (e.g. ['Edit', 'Write', 'Bash']). */
218
+ commitOn: string[];
219
+ /** Glob patterns to exclude from commits. */
220
+ ignore: string[];
221
+ /** Automatically squash-merge viewport branch when session completes. */
222
+ autoSquashOnComplete: boolean;
223
+ /** Branch name prefix for viewport tracking branches. */
224
+ branchPrefix: string;
225
+ /** Git author string for viewport commits. */
226
+ commitAuthor: string;
227
+ /** Stop committing after this many commits per session. */
228
+ maxCommitsPerSession: number;
229
+ /** Root directory for worktrees, relative to project root. */
230
+ worktreeRoot: string;
231
+ }
232
+ export interface PermissionsConfig {
233
+ /** Tools that are auto-approved without prompting. */
234
+ autoApprove: string[];
235
+ /** Tools that require explicit user approval. */
236
+ requireApproval: string[];
237
+ /** Tools that are always denied. */
238
+ deny: string[];
239
+ }
240
+ export interface DirectoryInfo {
241
+ /** Unique identifier (derived from path). */
242
+ id: string;
243
+ /** Absolute filesystem path. */
244
+ path: string;
245
+ /** Per-directory config overrides. */
246
+ config?: Partial<SessionConfig>;
247
+ /** Active session IDs in this directory. */
248
+ activeSessions: string[];
249
+ }
250
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Core type definitions for the Viewport daemon.
3
+ *
4
+ * These types are the shared vocabulary across all modules — adapters, trackers,
5
+ * permissions, server, and UI protocol. Keep them stable.
6
+ */
7
+ /**
8
+ * Map a tool name + input to a typed ToolCallDetail.
9
+ * Centralizes the SDK → structured detail mapping so both adapters
10
+ * and message normalizers use the same logic.
11
+ */
12
+ export function toToolCallDetail(toolName, input) {
13
+ switch (toolName) {
14
+ case 'Bash':
15
+ return {
16
+ kind: 'shell',
17
+ command: String(input?.command ?? ''),
18
+ cwd: input?.cwd ? String(input.cwd) : undefined,
19
+ timeout: typeof input?.timeout === 'number' ? input.timeout : undefined,
20
+ };
21
+ case 'Read':
22
+ return {
23
+ kind: 'read',
24
+ filePath: String(input?.file_path ?? ''),
25
+ offset: typeof input?.offset === 'number' ? input.offset : undefined,
26
+ limit: typeof input?.limit === 'number' ? input.limit : undefined,
27
+ };
28
+ case 'Edit':
29
+ case 'MultiEdit':
30
+ return {
31
+ kind: 'edit',
32
+ filePath: String(input?.file_path ?? ''),
33
+ oldString: input?.old_string ? String(input.old_string) : undefined,
34
+ newString: input?.new_string ? String(input.new_string) : undefined,
35
+ replaceAll: input?.replace_all === true,
36
+ };
37
+ case 'Write':
38
+ return {
39
+ kind: 'write',
40
+ filePath: String(input?.file_path ?? ''),
41
+ content: input?.content ? String(input.content) : undefined,
42
+ };
43
+ case 'Grep':
44
+ return {
45
+ kind: 'search',
46
+ pattern: String(input?.pattern ?? ''),
47
+ path: input?.path ? String(input.path) : undefined,
48
+ glob: input?.glob ? String(input.glob) : undefined,
49
+ type: input?.type ? String(input.type) : undefined,
50
+ outputMode: input?.output_mode ? String(input.output_mode) : undefined,
51
+ };
52
+ case 'Glob':
53
+ return {
54
+ kind: 'glob',
55
+ pattern: String(input?.pattern ?? ''),
56
+ path: input?.path ? String(input.path) : undefined,
57
+ };
58
+ case 'Agent':
59
+ case 'Task':
60
+ return {
61
+ kind: 'agent',
62
+ subagentType: input?.subagent_type ? String(input.subagent_type) : undefined,
63
+ description: input?.description ? String(input.description) : undefined,
64
+ prompt: input?.prompt ? String(input.prompt) : undefined,
65
+ };
66
+ case 'WebSearch':
67
+ return {
68
+ kind: 'web',
69
+ query: input?.query ? String(input.query) : undefined,
70
+ };
71
+ case 'WebFetch':
72
+ return {
73
+ kind: 'web',
74
+ url: input?.url ? String(input.url) : undefined,
75
+ prompt: input?.prompt ? String(input.prompt) : undefined,
76
+ };
77
+ case 'NotebookEdit':
78
+ return {
79
+ kind: 'notebook',
80
+ notebookPath: input?.notebook_path ? String(input.notebook_path) : undefined,
81
+ editMode: input?.edit_mode ? String(input.edit_mode) : undefined,
82
+ cellType: input?.cell_type ? String(input.cell_type) : undefined,
83
+ };
84
+ default:
85
+ return { kind: 'unknown', toolName, input };
86
+ }
87
+ }
88
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * DirectoryManager — registers and manages project directories.
3
+ *
4
+ * Each directory gets a unique ID (hash of its path), optional per-directory
5
+ * config overrides, and tracks active session IDs. Persistence is delegated
6
+ * to ConfigManager.
7
+ */
8
+ import type { ConfigManager } from '../core/config.js';
9
+ import type { DirectoryInfo, SessionConfig } from '../core/types.js';
10
+ export declare class DirectoryManager {
11
+ private configManager;
12
+ private activeSessionsByDir;
13
+ constructor(configManager: ConfigManager);
14
+ /** Generate a stable, short ID from a directory path. */
15
+ static idFromPath(dirPath: string): string;
16
+ /** Register a directory for monitoring. */
17
+ register(dirPath: string, config?: Partial<SessionConfig>): Promise<DirectoryInfo>;
18
+ /** Unregister a directory. */
19
+ unregister(directoryId: string): Promise<void>;
20
+ /** List all registered directories. */
21
+ list(): DirectoryInfo[];
22
+ /** Get a directory by ID. */
23
+ get(directoryId: string): DirectoryInfo | undefined;
24
+ /** Find a directory by its filesystem path. */
25
+ getByPath(dirPath: string): DirectoryInfo | undefined;
26
+ /** Track a session as active in a directory. */
27
+ addSession(directoryId: string, sessionId: string): void;
28
+ /** Remove a session from a directory's active list. */
29
+ removeSession(directoryId: string, sessionId: string): void;
30
+ private toDirectoryInfo;
31
+ }
32
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/directories/manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE,qBAAa,gBAAgB;IAGf,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,mBAAmB,CAAkC;gBAEzC,aAAa,EAAE,aAAa;IAEhD,yDAAyD;IACzD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK1C,2CAA2C;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAexF,8BAA8B;IACxB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD,uCAAuC;IACvC,IAAI,IAAI,aAAa,EAAE;IAOvB,6BAA6B;IAC7B,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAOnD,+CAA+C;IAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAKrD,gDAAgD;IAChD,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IASxD,uDAAuD;IACvD,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D,OAAO,CAAC,eAAe;CAaxB"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * DirectoryManager — registers and manages project directories.
3
+ *
4
+ * Each directory gets a unique ID (hash of its path), optional per-directory
5
+ * config overrides, and tracks active session IDs. Persistence is delegated
6
+ * to ConfigManager.
7
+ */
8
+ import crypto from 'node:crypto';
9
+ import fs from 'node:fs/promises';
10
+ import path from 'node:path';
11
+ export class DirectoryManager {
12
+ configManager;
13
+ activeSessionsByDir = new Map();
14
+ constructor(configManager) {
15
+ this.configManager = configManager;
16
+ }
17
+ /** Generate a stable, short ID from a directory path. */
18
+ static idFromPath(dirPath) {
19
+ const normalized = path.resolve(dirPath);
20
+ return crypto.createHash('sha256').update(normalized).digest('hex').slice(0, 12);
21
+ }
22
+ /** Register a directory for monitoring. */
23
+ async register(dirPath, config) {
24
+ const resolved = path.resolve(dirPath);
25
+ // Verify directory exists
26
+ const stat = await fs.stat(resolved);
27
+ if (!stat.isDirectory()) {
28
+ throw new Error(`Not a directory: ${resolved}`);
29
+ }
30
+ const id = DirectoryManager.idFromPath(resolved);
31
+ await this.configManager.registerDirectory(id, resolved, config);
32
+ return this.toDirectoryInfo(id, resolved, config);
33
+ }
34
+ /** Unregister a directory. */
35
+ async unregister(directoryId) {
36
+ this.activeSessionsByDir.delete(directoryId);
37
+ await this.configManager.unregisterDirectory(directoryId);
38
+ }
39
+ /** List all registered directories. */
40
+ list() {
41
+ const dirs = this.configManager.getDirectories();
42
+ return Object.entries(dirs).map(([id, entry]) => this.toDirectoryInfo(id, entry.path, entry.config));
43
+ }
44
+ /** Get a directory by ID. */
45
+ get(directoryId) {
46
+ const dirs = this.configManager.getDirectories();
47
+ const entry = dirs[directoryId];
48
+ if (!entry)
49
+ return undefined;
50
+ return this.toDirectoryInfo(directoryId, entry.path, entry.config);
51
+ }
52
+ /** Find a directory by its filesystem path. */
53
+ getByPath(dirPath) {
54
+ const id = DirectoryManager.idFromPath(dirPath);
55
+ return this.get(id);
56
+ }
57
+ /** Track a session as active in a directory. */
58
+ addSession(directoryId, sessionId) {
59
+ let sessions = this.activeSessionsByDir.get(directoryId);
60
+ if (!sessions) {
61
+ sessions = new Set();
62
+ this.activeSessionsByDir.set(directoryId, sessions);
63
+ }
64
+ sessions.add(sessionId);
65
+ }
66
+ /** Remove a session from a directory's active list. */
67
+ removeSession(directoryId, sessionId) {
68
+ const sessions = this.activeSessionsByDir.get(directoryId);
69
+ if (sessions) {
70
+ sessions.delete(sessionId);
71
+ if (sessions.size === 0) {
72
+ this.activeSessionsByDir.delete(directoryId);
73
+ }
74
+ }
75
+ }
76
+ toDirectoryInfo(id, dirPath, config) {
77
+ const sessions = this.activeSessionsByDir.get(id);
78
+ return {
79
+ id,
80
+ path: dirPath,
81
+ config,
82
+ activeSessions: sessions ? [...sessions] : [],
83
+ };
84
+ }
85
+ }
86
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/directories/manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,OAAO,gBAAgB;IAGP;IAFZ,mBAAmB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE7D,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD,yDAAyD;IACzD,MAAM,CAAC,UAAU,CAAC,OAAe;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,MAA+B;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvC,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEjE,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,UAAU,CAAC,WAAmB;QAClC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,uCAAuC;IACvC,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAC9C,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CACnD,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,GAAG,CAAC,WAAmB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,+CAA+C;IAC/C,SAAS,CAAC,OAAe;QACvB,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED,gDAAgD;IAChD,UAAU,CAAC,WAAmB,EAAE,SAAiB;QAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,uDAAuD;IACvD,aAAa,CAAC,WAAmB,EAAE,SAAiB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,eAAe,CACrB,EAAU,EACV,OAAe,EACf,MAA+B;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO;YACL,EAAE;YACF,IAAI,EAAE,OAAO;YACb,MAAM;YACN,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9C,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * ClaudeDiscovery — discovers existing Claude Code sessions.
3
+ *
4
+ * Reads ~/.claude/projects/ JSONL files to find sessions for registered
5
+ * project directories. This is the same approach ClaudeCodeUI uses.
6
+ *
7
+ * Two discovery modes:
8
+ * 1. discoverSessions(projectPath) — find sessions for a specific project
9
+ * 2. discoverAllProjects() — scan all Claude Code projects
10
+ */
11
+ import type { SessionDiscovery, DiscoveredSession } from '../core/interfaces.js';
12
+ export declare class ClaudeDiscovery implements SessionDiscovery {
13
+ readonly agentId = "claude";
14
+ /**
15
+ * Discover sessions for a specific project path.
16
+ * Encodes the path to find the matching ~/.claude/projects/ directory.
17
+ */
18
+ discoverSessions(projectPath: string): Promise<DiscoveredSession[]>;
19
+ /**
20
+ * Discover ALL Claude Code projects and their sessions.
21
+ * Used for auto-registration on daemon startup.
22
+ */
23
+ discoverAllProjects(): Promise<Array<{
24
+ fsPath: string;
25
+ dirName: string;
26
+ sessions: DiscoveredSession[];
27
+ }>>;
28
+ }
29
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/discovery/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAQjF,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,QAAQ,CAAC,OAAO,YAAY;IAE5B;;;OAGG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAMzE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAClC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC,CAC1E;CAiBF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * ClaudeDiscovery — discovers existing Claude Code sessions.
3
+ *
4
+ * Reads ~/.claude/projects/ JSONL files to find sessions for registered
5
+ * project directories. This is the same approach ClaudeCodeUI uses.
6
+ *
7
+ * Two discovery modes:
8
+ * 1. discoverSessions(projectPath) — find sessions for a specific project
9
+ * 2. discoverAllProjects() — scan all Claude Code projects
10
+ */
11
+ import { encodeProjectDir, listProjectSessions, listProjects, } from './jsonl-reader.js';
12
+ export class ClaudeDiscovery {
13
+ agentId = 'claude';
14
+ /**
15
+ * Discover sessions for a specific project path.
16
+ * Encodes the path to find the matching ~/.claude/projects/ directory.
17
+ */
18
+ async discoverSessions(projectPath) {
19
+ const dirName = encodeProjectDir(projectPath);
20
+ const sessions = await listProjectSessions(dirName);
21
+ return sessions.map(toDiscoveredSession);
22
+ }
23
+ /**
24
+ * Discover ALL Claude Code projects and their sessions.
25
+ * Used for auto-registration on daemon startup.
26
+ */
27
+ async discoverAllProjects() {
28
+ const projects = await listProjects();
29
+ const results = [];
30
+ for (const project of projects) {
31
+ const sessions = await listProjectSessions(project.dirName);
32
+ if (sessions.length > 0) {
33
+ results.push({
34
+ fsPath: project.fsPath,
35
+ dirName: project.dirName,
36
+ sessions: sessions.map(toDiscoveredSession),
37
+ });
38
+ }
39
+ }
40
+ return results;
41
+ }
42
+ }
43
+ function toDiscoveredSession(s) {
44
+ return {
45
+ agentId: 'claude',
46
+ sessionId: s.sessionId,
47
+ summary: s.summary,
48
+ lastModified: new Date(s.lastActivity).getTime(),
49
+ cwd: s.cwd,
50
+ gitBranch: s.gitBranch,
51
+ resumable: s.resumable,
52
+ messageCount: s.messageCount,
53
+ };
54
+ }
55
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/discovery/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,eAAe;IACjB,OAAO,GAAG,QAAQ,CAAC;IAE5B;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QAGvB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,MAAM,OAAO,GAA8E,EAAE,CAAC;QAE9F,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,SAAS,mBAAmB,CAAC,CAAiB;IAC5C,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;QAChD,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,YAAY,EAAE,CAAC,CAAC,YAAY;KAC7B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DiscoveredSession, SessionDiscovery } from '../core/interfaces.js';
2
+ import { type RichSessionMessage } from './jsonl-reader.js';
3
+ export declare class CodexDiscovery implements SessionDiscovery {
4
+ readonly agentId = "codex";
5
+ discoverSessions(projectPath: string): Promise<DiscoveredSession[]>;
6
+ }
7
+ export declare function codexHomeDir(): string;
8
+ export declare function codexSessionsDir(): string;
9
+ export declare function findCodexSessionFile(sessionId: string, preferredSourcePath?: string): Promise<string | null>;
10
+ export declare function readCodexSessionMessagesRich(sessionId: string, preferredSourcePath?: string): Promise<RichSessionMessage[]>;
11
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/discovery/codex.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAa7F,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,OAAO,WAAW;IAErB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CA0B1E;AAED,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB;AAED,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAM/B"}