@astroanywhere/agent 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 (203) hide show
  1. package/LICENSE +76 -0
  2. package/README.md +178 -0
  3. package/dist/cli.d.ts +15 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +401 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/index.d.ts +9 -0
  8. package/dist/commands/index.d.ts.map +1 -0
  9. package/dist/commands/index.js +9 -0
  10. package/dist/commands/index.js.map +1 -0
  11. package/dist/commands/mcp.d.ts +16 -0
  12. package/dist/commands/mcp.d.ts.map +1 -0
  13. package/dist/commands/mcp.js +19 -0
  14. package/dist/commands/mcp.js.map +1 -0
  15. package/dist/commands/setup.d.ts +20 -0
  16. package/dist/commands/setup.d.ts.map +1 -0
  17. package/dist/commands/setup.js +585 -0
  18. package/dist/commands/setup.js.map +1 -0
  19. package/dist/commands/start.d.ts +16 -0
  20. package/dist/commands/start.d.ts.map +1 -0
  21. package/dist/commands/start.js +638 -0
  22. package/dist/commands/start.js.map +1 -0
  23. package/dist/commands/status.d.ts +5 -0
  24. package/dist/commands/status.d.ts.map +1 -0
  25. package/dist/commands/status.js +63 -0
  26. package/dist/commands/status.js.map +1 -0
  27. package/dist/commands/stop.d.ts +5 -0
  28. package/dist/commands/stop.d.ts.map +1 -0
  29. package/dist/commands/stop.js +85 -0
  30. package/dist/commands/stop.js.map +1 -0
  31. package/dist/execution/direct-strategy.d.ts +18 -0
  32. package/dist/execution/direct-strategy.d.ts.map +1 -0
  33. package/dist/execution/direct-strategy.js +156 -0
  34. package/dist/execution/direct-strategy.js.map +1 -0
  35. package/dist/execution/docker-strategy.d.ts +26 -0
  36. package/dist/execution/docker-strategy.d.ts.map +1 -0
  37. package/dist/execution/docker-strategy.js +222 -0
  38. package/dist/execution/docker-strategy.js.map +1 -0
  39. package/dist/execution/index.d.ts +14 -0
  40. package/dist/execution/index.d.ts.map +1 -0
  41. package/dist/execution/index.js +13 -0
  42. package/dist/execution/index.js.map +1 -0
  43. package/dist/execution/kubernetes-exec-strategy.d.ts +23 -0
  44. package/dist/execution/kubernetes-exec-strategy.d.ts.map +1 -0
  45. package/dist/execution/kubernetes-exec-strategy.js +232 -0
  46. package/dist/execution/kubernetes-exec-strategy.js.map +1 -0
  47. package/dist/execution/registry.d.ts +41 -0
  48. package/dist/execution/registry.d.ts.map +1 -0
  49. package/dist/execution/registry.js +84 -0
  50. package/dist/execution/registry.js.map +1 -0
  51. package/dist/execution/slurm-strategy.d.ts +22 -0
  52. package/dist/execution/slurm-strategy.d.ts.map +1 -0
  53. package/dist/execution/slurm-strategy.js +219 -0
  54. package/dist/execution/slurm-strategy.js.map +1 -0
  55. package/dist/execution/types.d.ts +72 -0
  56. package/dist/execution/types.d.ts.map +1 -0
  57. package/dist/execution/types.js +10 -0
  58. package/dist/execution/types.js.map +1 -0
  59. package/dist/index.d.ts +22 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +22 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/lib/api-client.d.ts +35 -0
  64. package/dist/lib/api-client.d.ts.map +1 -0
  65. package/dist/lib/api-client.js +126 -0
  66. package/dist/lib/api-client.js.map +1 -0
  67. package/dist/lib/config.d.ts +174 -0
  68. package/dist/lib/config.d.ts.map +1 -0
  69. package/dist/lib/config.js +399 -0
  70. package/dist/lib/config.js.map +1 -0
  71. package/dist/lib/copy-worktree.d.ts +73 -0
  72. package/dist/lib/copy-worktree.d.ts.map +1 -0
  73. package/dist/lib/copy-worktree.js +374 -0
  74. package/dist/lib/copy-worktree.js.map +1 -0
  75. package/dist/lib/git-pr.d.ts +63 -0
  76. package/dist/lib/git-pr.d.ts.map +1 -0
  77. package/dist/lib/git-pr.js +224 -0
  78. package/dist/lib/git-pr.js.map +1 -0
  79. package/dist/lib/hardware-id.d.ts +25 -0
  80. package/dist/lib/hardware-id.d.ts.map +1 -0
  81. package/dist/lib/hardware-id.js +186 -0
  82. package/dist/lib/hardware-id.js.map +1 -0
  83. package/dist/lib/hpc-context.d.ts +35 -0
  84. package/dist/lib/hpc-context.d.ts.map +1 -0
  85. package/dist/lib/hpc-context.js +167 -0
  86. package/dist/lib/hpc-context.js.map +1 -0
  87. package/dist/lib/prompt-templates.d.ts +195 -0
  88. package/dist/lib/prompt-templates.d.ts.map +1 -0
  89. package/dist/lib/prompt-templates.js +353 -0
  90. package/dist/lib/prompt-templates.js.map +1 -0
  91. package/dist/lib/providers.d.ts +27 -0
  92. package/dist/lib/providers.d.ts.map +1 -0
  93. package/dist/lib/providers.js +372 -0
  94. package/dist/lib/providers.js.map +1 -0
  95. package/dist/lib/repo-context.d.ts +18 -0
  96. package/dist/lib/repo-context.d.ts.map +1 -0
  97. package/dist/lib/repo-context.js +61 -0
  98. package/dist/lib/repo-context.js.map +1 -0
  99. package/dist/lib/repo-utils.d.ts +35 -0
  100. package/dist/lib/repo-utils.d.ts.map +1 -0
  101. package/dist/lib/repo-utils.js +222 -0
  102. package/dist/lib/repo-utils.js.map +1 -0
  103. package/dist/lib/resources.d.ts +17 -0
  104. package/dist/lib/resources.d.ts.map +1 -0
  105. package/dist/lib/resources.js +227 -0
  106. package/dist/lib/resources.js.map +1 -0
  107. package/dist/lib/slurm-detect.d.ts +15 -0
  108. package/dist/lib/slurm-detect.d.ts.map +1 -0
  109. package/dist/lib/slurm-detect.js +148 -0
  110. package/dist/lib/slurm-detect.js.map +1 -0
  111. package/dist/lib/slurm-executor.d.ts +70 -0
  112. package/dist/lib/slurm-executor.d.ts.map +1 -0
  113. package/dist/lib/slurm-executor.js +402 -0
  114. package/dist/lib/slurm-executor.js.map +1 -0
  115. package/dist/lib/slurm-job-monitor.d.ts +52 -0
  116. package/dist/lib/slurm-job-monitor.d.ts.map +1 -0
  117. package/dist/lib/slurm-job-monitor.js +212 -0
  118. package/dist/lib/slurm-job-monitor.js.map +1 -0
  119. package/dist/lib/ssh-discovery.d.ts +17 -0
  120. package/dist/lib/ssh-discovery.d.ts.map +1 -0
  121. package/dist/lib/ssh-discovery.js +287 -0
  122. package/dist/lib/ssh-discovery.js.map +1 -0
  123. package/dist/lib/ssh-installer.d.ts +69 -0
  124. package/dist/lib/ssh-installer.d.ts.map +1 -0
  125. package/dist/lib/ssh-installer.js +230 -0
  126. package/dist/lib/ssh-installer.js.map +1 -0
  127. package/dist/lib/streaming-prompt.d.ts +48 -0
  128. package/dist/lib/streaming-prompt.d.ts.map +1 -0
  129. package/dist/lib/streaming-prompt.js +91 -0
  130. package/dist/lib/streaming-prompt.js.map +1 -0
  131. package/dist/lib/task-executor.d.ts +114 -0
  132. package/dist/lib/task-executor.d.ts.map +1 -0
  133. package/dist/lib/task-executor.js +753 -0
  134. package/dist/lib/task-executor.js.map +1 -0
  135. package/dist/lib/websocket-client.d.ts +200 -0
  136. package/dist/lib/websocket-client.d.ts.map +1 -0
  137. package/dist/lib/websocket-client.js +781 -0
  138. package/dist/lib/websocket-client.js.map +1 -0
  139. package/dist/lib/workdir-safety.d.ts +63 -0
  140. package/dist/lib/workdir-safety.d.ts.map +1 -0
  141. package/dist/lib/workdir-safety.js +247 -0
  142. package/dist/lib/workdir-safety.js.map +1 -0
  143. package/dist/lib/worktree-include.d.ts +14 -0
  144. package/dist/lib/worktree-include.d.ts.map +1 -0
  145. package/dist/lib/worktree-include.js +68 -0
  146. package/dist/lib/worktree-include.js.map +1 -0
  147. package/dist/lib/worktree-setup.d.ts +18 -0
  148. package/dist/lib/worktree-setup.d.ts.map +1 -0
  149. package/dist/lib/worktree-setup.js +60 -0
  150. package/dist/lib/worktree-setup.js.map +1 -0
  151. package/dist/lib/worktree.d.ts +37 -0
  152. package/dist/lib/worktree.d.ts.map +1 -0
  153. package/dist/lib/worktree.js +411 -0
  154. package/dist/lib/worktree.js.map +1 -0
  155. package/dist/mcp/index.d.ts +8 -0
  156. package/dist/mcp/index.d.ts.map +1 -0
  157. package/dist/mcp/index.js +8 -0
  158. package/dist/mcp/index.js.map +1 -0
  159. package/dist/mcp/server.d.ts +45 -0
  160. package/dist/mcp/server.d.ts.map +1 -0
  161. package/dist/mcp/server.js +153 -0
  162. package/dist/mcp/server.js.map +1 -0
  163. package/dist/mcp/session-bridge.d.ts +87 -0
  164. package/dist/mcp/session-bridge.d.ts.map +1 -0
  165. package/dist/mcp/session-bridge.js +317 -0
  166. package/dist/mcp/session-bridge.js.map +1 -0
  167. package/dist/mcp/tools.d.ts +70 -0
  168. package/dist/mcp/tools.d.ts.map +1 -0
  169. package/dist/mcp/tools.js +234 -0
  170. package/dist/mcp/tools.js.map +1 -0
  171. package/dist/mcp/types.d.ts +197 -0
  172. package/dist/mcp/types.d.ts.map +1 -0
  173. package/dist/mcp/types.js +16 -0
  174. package/dist/mcp/types.js.map +1 -0
  175. package/dist/providers/base-adapter.d.ts +56 -0
  176. package/dist/providers/base-adapter.d.ts.map +1 -0
  177. package/dist/providers/base-adapter.js +5 -0
  178. package/dist/providers/base-adapter.js.map +1 -0
  179. package/dist/providers/claude-code-adapter.d.ts +27 -0
  180. package/dist/providers/claude-code-adapter.d.ts.map +1 -0
  181. package/dist/providers/claude-code-adapter.js +298 -0
  182. package/dist/providers/claude-code-adapter.js.map +1 -0
  183. package/dist/providers/claude-sdk-adapter.d.ts +60 -0
  184. package/dist/providers/claude-sdk-adapter.d.ts.map +1 -0
  185. package/dist/providers/claude-sdk-adapter.js +632 -0
  186. package/dist/providers/claude-sdk-adapter.js.map +1 -0
  187. package/dist/providers/codex-adapter.d.ts +21 -0
  188. package/dist/providers/codex-adapter.d.ts.map +1 -0
  189. package/dist/providers/codex-adapter.js +197 -0
  190. package/dist/providers/codex-adapter.js.map +1 -0
  191. package/dist/providers/index.d.ts +26 -0
  192. package/dist/providers/index.d.ts.map +1 -0
  193. package/dist/providers/index.js +58 -0
  194. package/dist/providers/index.js.map +1 -0
  195. package/dist/providers/slurm-adapter.d.ts +26 -0
  196. package/dist/providers/slurm-adapter.d.ts.map +1 -0
  197. package/dist/providers/slurm-adapter.js +146 -0
  198. package/dist/providers/slurm-adapter.js.map +1 -0
  199. package/dist/types.d.ts +592 -0
  200. package/dist/types.d.ts.map +1 -0
  201. package/dist/types.js +5 -0
  202. package/dist/types.js.map +1 -0
  203. package/package.json +77 -0
@@ -0,0 +1,399 @@
1
+ /**
2
+ * Configuration management using conf (electron-conf compatible)
3
+ */
4
+ import Conf from 'conf';
5
+ import { randomUUID } from 'node:crypto';
6
+ import { getHardwareId } from './hardware-id.js';
7
+ // Production defaults (Fly.io backend)
8
+ const DEFAULT_API_URL = 'https://api.astroanywhere.com';
9
+ const DEFAULT_RELAY_URL = 'wss://relay.astroanywhere.com:3002';
10
+ /**
11
+ * Derive API and relay URLs from environment variables.
12
+ *
13
+ * Priority (highest first):
14
+ * 1. ASTRO_SERVER_URL / ASTRO_RELAY_URL — explicit agent-runner env vars
15
+ * 2. VITE_API_BASE_URL — set in .env.prod (points to Fly.io backend)
16
+ * 3. CLOUDFLARED_DOMAIN — dev mode with Cloudflare tunnel
17
+ * 4. Defaults — Fly.io production backend
18
+ *
19
+ * Relay URL derivation:
20
+ * - Fly.io backend exposes relay on port 3002 with TLS → wss://<fly-app>.fly.dev:3002
21
+ * - Cloudflare tunnel maps astro-relay.<domain> → wss://astro-relay.<domain>
22
+ * - Local dev → ws://localhost:3002
23
+ */
24
+ function resolveApiUrlFromEnv() {
25
+ // Explicit override
26
+ if (process.env.ASTRO_SERVER_URL)
27
+ return process.env.ASTRO_SERVER_URL;
28
+ // Prod mode: VITE_API_BASE_URL points to the Fly.io backend
29
+ if (process.env.VITE_API_BASE_URL)
30
+ return process.env.VITE_API_BASE_URL;
31
+ // Dev mode with tunnel: derive from CLOUDFLARED_DOMAIN
32
+ if (process.env.CLOUDFLARED_DOMAIN) {
33
+ return `https://astro-api.${process.env.CLOUDFLARED_DOMAIN}`;
34
+ }
35
+ return DEFAULT_API_URL;
36
+ }
37
+ function resolveRelayUrlFromEnv() {
38
+ // Explicit override
39
+ if (process.env.ASTRO_RELAY_URL)
40
+ return process.env.ASTRO_RELAY_URL;
41
+ // Prod mode: derive WSS relay from VITE_API_BASE_URL (Fly.io exposes relay on :3002)
42
+ if (process.env.VITE_API_BASE_URL) {
43
+ const flyHost = process.env.VITE_API_BASE_URL
44
+ .replace(/^https?:\/\//, '')
45
+ .replace(/\/+$/, '');
46
+ return `wss://${flyHost}:3002`;
47
+ }
48
+ // Dev mode with tunnel: derive from CLOUDFLARED_DOMAIN
49
+ if (process.env.CLOUDFLARED_DOMAIN) {
50
+ return `wss://astro-relay.${process.env.CLOUDFLARED_DOMAIN}`;
51
+ }
52
+ return DEFAULT_RELAY_URL;
53
+ }
54
+ class ConfigManager {
55
+ conf;
56
+ constructor() {
57
+ this.conf = new Conf({
58
+ projectName: 'astro-agent',
59
+ projectVersion: '0.1.0',
60
+ defaults: {
61
+ runnerId: '',
62
+ machineId: '',
63
+ deviceToken: undefined,
64
+ apiUrl: DEFAULT_API_URL,
65
+ accessToken: undefined,
66
+ refreshToken: undefined,
67
+ wsToken: undefined,
68
+ claudeOauthToken: undefined,
69
+ relayUrl: DEFAULT_RELAY_URL,
70
+ providers: [],
71
+ autoStart: false,
72
+ logLevel: 'info',
73
+ lastConnected: undefined,
74
+ setupCompleted: false,
75
+ },
76
+ });
77
+ }
78
+ /**
79
+ * Check if initial setup has been completed
80
+ */
81
+ isSetupComplete() {
82
+ return this.conf.get('setupCompleted');
83
+ }
84
+ /**
85
+ * Get all stored configuration
86
+ */
87
+ getConfig() {
88
+ return {
89
+ runnerId: this.conf.get('runnerId'),
90
+ machineId: this.conf.get('machineId'),
91
+ deviceToken: this.conf.get('deviceToken'),
92
+ apiUrl: this.conf.get('apiUrl'),
93
+ accessToken: this.conf.get('accessToken'),
94
+ refreshToken: this.conf.get('refreshToken'),
95
+ wsToken: this.conf.get('wsToken'),
96
+ relayUrl: this.conf.get('relayUrl'),
97
+ providers: this.conf.get('providers'),
98
+ autoStart: this.conf.get('autoStart'),
99
+ logLevel: this.conf.get('logLevel'),
100
+ mcpServers: this.conf.get('mcpServers'),
101
+ };
102
+ }
103
+ /**
104
+ * Get runner ID, generating one if not set
105
+ */
106
+ getRunnerId() {
107
+ let runnerId = this.conf.get('runnerId');
108
+ if (!runnerId) {
109
+ runnerId = `runner-${randomUUID().slice(0, 8)}`;
110
+ this.conf.set('runnerId', runnerId);
111
+ }
112
+ return runnerId;
113
+ }
114
+ /**
115
+ * Initialize machine ID using hardware-based identifier
116
+ * Should be called during setup - async operation
117
+ */
118
+ async initializeMachineId() {
119
+ const existing = this.conf.get('machineId');
120
+ if (existing) {
121
+ // Already initialized - determine source from prefix
122
+ const source = existing.startsWith('mac-') ? 'mac' :
123
+ existing.startsWith('rand-') ? 'random' : 'uuid';
124
+ return { id: existing, source };
125
+ }
126
+ // Get hardware-based ID (network-agnostic)
127
+ const { id, source } = await getHardwareId();
128
+ this.conf.set('machineId', id);
129
+ return { id, source };
130
+ }
131
+ /**
132
+ * Get machine ID (synchronous)
133
+ * Returns existing ID or generates a temporary one if not initialized
134
+ * Call initializeMachineId() during setup for proper hardware-based ID
135
+ */
136
+ getMachineId() {
137
+ let machineId = this.conf.get('machineId');
138
+ if (!machineId) {
139
+ // Fallback for legacy cases - use random UUID
140
+ // This should rarely happen if initializeMachineId() is called during setup
141
+ machineId = `rand-${randomUUID()}`;
142
+ this.conf.set('machineId', machineId);
143
+ }
144
+ return machineId;
145
+ }
146
+ /**
147
+ * Get machine display name (e.g., SSH alias like "nebius-2")
148
+ */
149
+ getMachineName() {
150
+ return this.conf.get('machineName');
151
+ }
152
+ /**
153
+ * Set machine display name
154
+ */
155
+ setMachineName(name) {
156
+ this.conf.set('machineName', name);
157
+ }
158
+ /**
159
+ * Get relay URL.
160
+ * Returns stored value unless it's the hardcoded default, in which case
161
+ * env-based resolution takes precedence (allows mode switching without re-setup).
162
+ */
163
+ getRelayUrl() {
164
+ const stored = this.conf.get('relayUrl');
165
+ if (stored !== DEFAULT_RELAY_URL)
166
+ return stored;
167
+ return resolveRelayUrlFromEnv();
168
+ }
169
+ /**
170
+ * Set relay URL
171
+ */
172
+ setRelayUrl(url) {
173
+ this.conf.set('relayUrl', url);
174
+ }
175
+ /**
176
+ * Get API URL.
177
+ * Returns stored value unless it's the hardcoded default, in which case
178
+ * env-based resolution takes precedence (allows mode switching without re-setup).
179
+ */
180
+ getApiUrl() {
181
+ const stored = this.conf.get('apiUrl');
182
+ if (stored !== DEFAULT_API_URL)
183
+ return stored;
184
+ return resolveApiUrlFromEnv();
185
+ }
186
+ /**
187
+ * Set API URL
188
+ */
189
+ setApiUrl(url) {
190
+ this.conf.set('apiUrl', url);
191
+ }
192
+ /**
193
+ * Get access token
194
+ */
195
+ getAccessToken() {
196
+ return this.conf.get('accessToken');
197
+ }
198
+ /**
199
+ * Set access token
200
+ * Validates token format to prevent storing invalid values
201
+ */
202
+ setAccessToken(token) {
203
+ // Reject null, "null" string, undefined, or empty values
204
+ if (!token || token === 'null' || token === 'undefined') {
205
+ console.warn('[config] Refusing to set invalid accessToken:', token);
206
+ this.conf.delete('accessToken');
207
+ return;
208
+ }
209
+ // Validate JWT format
210
+ if (!token.match(/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/)) {
211
+ console.error('[config] accessToken does not appear to be a valid JWT format');
212
+ console.error('[config] Token preview:', token.substring(0, 50) + '...');
213
+ this.conf.delete('accessToken');
214
+ return;
215
+ }
216
+ this.conf.set('accessToken', token);
217
+ }
218
+ /**
219
+ * Get refresh token
220
+ */
221
+ getRefreshToken() {
222
+ return this.conf.get('refreshToken');
223
+ }
224
+ /**
225
+ * Set refresh token
226
+ * Validates token format to prevent storing invalid values
227
+ */
228
+ setRefreshToken(token) {
229
+ // Reject null, "null" string, undefined, or empty values
230
+ if (!token || token === 'null' || token === 'undefined') {
231
+ console.warn('[config] Refusing to set invalid refreshToken:', token);
232
+ this.conf.delete('refreshToken');
233
+ return;
234
+ }
235
+ // Validate JWT format
236
+ if (!token.match(/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/)) {
237
+ console.error('[config] refreshToken does not appear to be a valid JWT format');
238
+ console.error('[config] Token preview:', token.substring(0, 50) + '...');
239
+ this.conf.delete('refreshToken');
240
+ return;
241
+ }
242
+ this.conf.set('refreshToken', token);
243
+ }
244
+ /**
245
+ * Get WebSocket token
246
+ */
247
+ getWsToken() {
248
+ return this.conf.get('wsToken');
249
+ }
250
+ /**
251
+ * Set WebSocket token
252
+ * Validates token format to prevent storing invalid values
253
+ */
254
+ setWsToken(token) {
255
+ // Reject null, "null" string, undefined, or empty values
256
+ if (!token || token === 'null' || token === 'undefined') {
257
+ console.warn('[config] Refusing to set invalid wsToken:', token);
258
+ // Clear any existing invalid token
259
+ this.conf.delete('wsToken');
260
+ return;
261
+ }
262
+ // Validate JWT format (should have 3 base64url-encoded parts separated by dots)
263
+ // Example: eyJhbGc...header.eyJzdWI...payload.signature...
264
+ if (!token.match(/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/)) {
265
+ console.error('[config] wsToken does not appear to be a valid JWT format');
266
+ console.error('[config] Token preview:', token.substring(0, 50) + '...');
267
+ this.conf.delete('wsToken');
268
+ return;
269
+ }
270
+ this.conf.set('wsToken', token);
271
+ }
272
+ /**
273
+ * Get Claude OAuth token (from `claude setup-token`)
274
+ */
275
+ getClaudeOauthToken() {
276
+ return this.conf.get('claudeOauthToken');
277
+ }
278
+ /**
279
+ * Set Claude OAuth token
280
+ */
281
+ setClaudeOauthToken(token) {
282
+ this.conf.set('claudeOauthToken', token);
283
+ }
284
+ /**
285
+ * Clear Claude OAuth token
286
+ */
287
+ clearClaudeOauthToken() {
288
+ this.conf.delete('claudeOauthToken');
289
+ }
290
+ /**
291
+ * Set machine ID (e.g., from backend registration response)
292
+ * Validates ID to prevent storing invalid values
293
+ */
294
+ setMachineId(id) {
295
+ // Reject null, "null" string, undefined, or empty values
296
+ if (!id || id === 'null' || id === 'undefined') {
297
+ console.warn('[config] Refusing to set invalid machineId:', id);
298
+ // Don't auto-generate - let the setup process handle it
299
+ this.conf.delete('machineId');
300
+ return;
301
+ }
302
+ this.conf.set('machineId', id);
303
+ }
304
+ /**
305
+ * Get device token
306
+ */
307
+ getDeviceToken() {
308
+ return this.conf.get('deviceToken');
309
+ }
310
+ /**
311
+ * Set device token
312
+ */
313
+ setDeviceToken(token) {
314
+ this.conf.set('deviceToken', token);
315
+ }
316
+ /**
317
+ * Get configured providers
318
+ */
319
+ getProviders() {
320
+ return this.conf.get('providers');
321
+ }
322
+ /**
323
+ * Set configured providers
324
+ */
325
+ setProviders(providers) {
326
+ this.conf.set('providers', providers);
327
+ }
328
+ /**
329
+ * Get auto-start setting
330
+ */
331
+ getAutoStart() {
332
+ return this.conf.get('autoStart');
333
+ }
334
+ /**
335
+ * Set auto-start setting
336
+ */
337
+ setAutoStart(autoStart) {
338
+ this.conf.set('autoStart', autoStart);
339
+ }
340
+ /**
341
+ * Get log level
342
+ */
343
+ getLogLevel() {
344
+ return this.conf.get('logLevel');
345
+ }
346
+ /**
347
+ * Set log level
348
+ */
349
+ setLogLevel(level) {
350
+ this.conf.set('logLevel', level);
351
+ }
352
+ /**
353
+ * Update last connected timestamp
354
+ */
355
+ updateLastConnected() {
356
+ this.conf.set('lastConnected', new Date().toISOString());
357
+ }
358
+ /**
359
+ * Get last connected timestamp
360
+ */
361
+ getLastConnected() {
362
+ return this.conf.get('lastConnected');
363
+ }
364
+ /**
365
+ * Mark setup as complete
366
+ */
367
+ completeSetup() {
368
+ this.conf.set('setupCompleted', true);
369
+ }
370
+ /**
371
+ * Get stored remote hosts (from SSH discovery + install)
372
+ */
373
+ getRemoteHosts() {
374
+ return this.conf.get('remoteHosts') ?? [];
375
+ }
376
+ /**
377
+ * Set stored remote hosts
378
+ */
379
+ setRemoteHosts(hosts) {
380
+ this.conf.set('remoteHosts', hosts);
381
+ }
382
+ /**
383
+ * Reset all configuration
384
+ */
385
+ reset() {
386
+ this.conf.clear();
387
+ }
388
+ /**
389
+ * Get the configuration file path
390
+ */
391
+ getConfigPath() {
392
+ return this.conf.path;
393
+ }
394
+ }
395
+ // Export singleton instance
396
+ export const config = new ConfigManager();
397
+ // Also export class for testing
398
+ export { ConfigManager };
399
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,uCAAuC;AACvC,MAAM,eAAe,GAAG,+BAA+B,CAAC;AACxD,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;AAE/D;;;;;;;;;;;;;GAaG;AACH,SAAS,oBAAoB;IAC3B,oBAAoB;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAEtE,4DAA4D;IAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAExE,uDAAuD;IACvD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACnC,OAAO,qBAAqB,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IAC/D,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,sBAAsB;IAC7B,oBAAoB;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAEpE,qFAAqF;IACrF,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB;aAC1C,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;aAC3B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvB,OAAO,SAAS,OAAO,OAAO,CAAC;IACjC,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACnC,OAAO,qBAAqB,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IAC/D,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AA0BD,MAAM,aAAa;IACT,IAAI,CAAqB;IAEjC;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAe;YACjC,WAAW,EAAE,aAAa;YAC1B,cAAc,EAAE,OAAO;YACvB,QAAQ,EAAE;gBACR,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,SAAS;gBACtB,MAAM,EAAE,eAAe;gBACvB,WAAW,EAAE,SAAS;gBACtB,YAAY,EAAE,SAAS;gBACvB,OAAO,EAAE,SAAS;gBAClB,gBAAgB,EAAE,SAAS;gBAC3B,QAAQ,EAAE,iBAAiB;gBAC3B,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,MAAM;gBAChB,aAAa,EAAE,SAAS;gBACxB,cAAc,EAAE,KAAK;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACnC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YACrC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;YACzC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACnC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACnC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;SACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,UAAU,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,qDAAqD;YACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAChE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAClC,CAAC;QAED,2CAA2C;QAC3C,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,8CAA8C;YAC9C,4EAA4E;YAC5E,SAAS,GAAG,QAAQ,UAAU,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,iBAAiB;YAAE,OAAO,MAAM,CAAC;QAChD,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,eAAe;YAAE,OAAO,MAAM,CAAC;QAC9C,OAAO,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,KAAa;QAC1B,yDAAyD;QACzD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAC/E,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,KAAa;QAC3B,yDAAyD;QACzD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YAChF,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,KAAa;QACtB,yDAAyD;QACzD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YACjE,mCAAmC;YACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,gFAAgF;QAChF,2DAA2D;QAC3D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,EAAU;QACrB,yDAAyD;QACzD,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,CAAC,CAAC;YAChE,wDAAwD;YACxD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAyB;QACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAkB;QAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAA0C;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAuB;QACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;AAE1C,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,73 @@
1
+ export interface CopyWorktreeResult {
2
+ worktreePath: string;
3
+ cleanup: () => Promise<void>;
4
+ }
5
+ export interface ReferenceWorktreeResult {
6
+ worktreePath: string;
7
+ fileMap: FileMapEntry[];
8
+ cleanup: () => Promise<void>;
9
+ }
10
+ export interface FileMapEntry {
11
+ relativePath: string;
12
+ sizeBytes: number;
13
+ classification: 'code' | 'data';
14
+ }
15
+ export interface ApplyChangesResult {
16
+ created: string[];
17
+ modified: string[];
18
+ deleted: string[];
19
+ }
20
+ /**
21
+ * Load .gitignore patterns from a directory.
22
+ * Returns an empty array if no .gitignore exists.
23
+ */
24
+ export declare function loadGitignorePatterns(sourceDir: string): Promise<string[]>;
25
+ /**
26
+ * Parse raw .gitignore content into an array of usable patterns.
27
+ * Strips comments, blank lines, and negation patterns (for simplicity).
28
+ */
29
+ export declare function parseGitignoreContent(content: string): string[];
30
+ /**
31
+ * Check whether a relative path matches any gitignore pattern.
32
+ *
33
+ * Supported pattern features:
34
+ * - `*` matches any sequence of characters except `/`
35
+ * - `**` matches everything (including `/`)
36
+ * - Trailing `/` means the pattern only matches directories
37
+ * - Leading `/` anchors the pattern to the root
38
+ * - Bare name without `/` matches any basename in the tree
39
+ * - Patterns with an interior `/` (non-leading, non-trailing) are anchored
40
+ */
41
+ export declare function isIgnoredByPattern(
42
+ /** Path relative to the project root, using `/` separators */
43
+ relativePath: string, patterns: string[],
44
+ /** Whether the path is a directory */
45
+ isDirectory: boolean): boolean;
46
+ /**
47
+ * Copy project directory to a worktree-like path for non-git execution.
48
+ * Excludes the agent directory and respects .gitignore patterns.
49
+ */
50
+ export declare function createCopyWorktree(sourceDir: string, agentDirName: string, taskId: string): Promise<CopyWorktreeResult>;
51
+ /**
52
+ * Create a reference worktree (empty directory with file map).
53
+ * Used for large projects where copying would be too slow.
54
+ */
55
+ export declare function createReferenceWorktree(sourceDir: string, agentDirName: string, taskId: string): Promise<ReferenceWorktreeResult>;
56
+ /**
57
+ * Generate a file listing with size classifications.
58
+ * Files < 1MB are classified as 'code', >= 1MB as 'data'.
59
+ */
60
+ export declare function generateFileMap(sourceDir: string, agentDirName: string): Promise<FileMapEntry[]>;
61
+ /**
62
+ * Compare a worktree copy against the original directory and apply changes back.
63
+ *
64
+ * - New files (exist in worktree but not original): copied to original
65
+ * - Modified files (different content): copied to original
66
+ * - Deleted files (exist in original but not worktree): reported but NOT deleted
67
+ *
68
+ * Excludes the agent dir, .git, and node_modules from comparison.
69
+ *
70
+ * Returns lists of created, modified, and deleted (pending) relative paths.
71
+ */
72
+ export declare function applyChangesFromCopy(worktreePath: string, originalDir: string, agentDirName: string): Promise<ApplyChangesResult>;
73
+ //# sourceMappingURL=copy-worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-worktree.d.ts","sourceRoot":"","sources":["../../src/lib/copy-worktree.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAWD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWhF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB;AAChC,8DAA8D;AAC9D,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE;AAClB,sCAAsC;AACtC,WAAW,EAAE,OAAO,GACnB,OAAO,CAOT;AAiID;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAuB7B;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,uBAAuB,CAAC,CAkBlC;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiCzB;AA+CD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAmE7B"}