@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 @@
1
+ {"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../src/lib/websocket-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Working directory safety checks for agent runner.
3
+ *
4
+ * Prevents data loss by:
5
+ * - Detecting git repos vs non-git directories
6
+ * - Blocking parallel execution in non-git directories
7
+ * - Warning about uncommitted changes
8
+ * - Providing sandbox mode for risky operations
9
+ */
10
+ export declare enum WorkdirSafetyTier {
11
+ SAFE = "safe",// Git repo with clean state
12
+ GUARDED = "guarded",// Git repo with uncommitted changes (warn)
13
+ RISKY = "risky",// Non-git directory (warn + require confirmation)
14
+ UNSAFE = "unsafe"
15
+ }
16
+ export interface SafetyCheckResult {
17
+ tier: WorkdirSafetyTier;
18
+ warning?: string;
19
+ blockReason?: string;
20
+ isGitRepo: boolean;
21
+ hasUncommittedChanges: boolean;
22
+ parallelTaskCount: number;
23
+ }
24
+ export interface SandboxOptions {
25
+ workdir: string;
26
+ taskId: string;
27
+ maxSize?: number;
28
+ }
29
+ export interface SandboxSetup {
30
+ sandboxPath: string;
31
+ originalPath: string;
32
+ cleanup: () => Promise<void>;
33
+ copyBack: () => Promise<void>;
34
+ }
35
+ /**
36
+ * Check if a directory is a git repository
37
+ */
38
+ export declare function isGitRepo(workdir: string): Promise<boolean>;
39
+ /**
40
+ * Check if a git repository has uncommitted changes
41
+ */
42
+ export declare function hasUncommittedChanges(workdir: string): Promise<boolean>;
43
+ /**
44
+ * Check if git is installed on the system
45
+ */
46
+ export declare function isGitAvailable(): Promise<boolean>;
47
+ /**
48
+ * Get the size of a directory in bytes
49
+ */
50
+ export declare function getDirectorySize(dirPath: string): Promise<number>;
51
+ /**
52
+ * Check working directory safety for task execution
53
+ */
54
+ export declare function checkWorkdirSafety(workdir: string, activeTasksInDir: number, gitAvailable: boolean): Promise<SafetyCheckResult>;
55
+ /**
56
+ * Create a sandbox copy of the working directory for isolated execution
57
+ */
58
+ export declare function createSandbox(options: SandboxOptions): Promise<SandboxSetup>;
59
+ /**
60
+ * Format directory size for human reading
61
+ */
62
+ export declare function formatSize(bytes: number): string;
63
+ //# sourceMappingURL=workdir-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workdir-safety.d.ts","sourceRoot":"","sources":["../../src/lib/workdir-safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,oBAAY,iBAAiB;IAC3B,IAAI,SAAS,CAAY,4BAA4B;IACrD,OAAO,YAAY,CAAM,2CAA2C;IACpE,KAAK,UAAU,CAAU,kDAAkD;IAC3E,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAID;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUjE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU7E;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAOvD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BvE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,iBAAiB,CAAC,CA4E5B;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAoElF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Working directory safety checks for agent runner.
3
+ *
4
+ * Prevents data loss by:
5
+ * - Detecting git repos vs non-git directories
6
+ * - Blocking parallel execution in non-git directories
7
+ * - Warning about uncommitted changes
8
+ * - Providing sandbox mode for risky operations
9
+ */
10
+ import { execFile } from 'node:child_process';
11
+ import { promisify } from 'node:util';
12
+ import { stat, cp, rm, readdir } from 'node:fs/promises';
13
+ import { join } from 'node:path';
14
+ import { homedir } from 'node:os';
15
+ const execFileAsync = promisify(execFile);
16
+ export var WorkdirSafetyTier;
17
+ (function (WorkdirSafetyTier) {
18
+ WorkdirSafetyTier["SAFE"] = "safe";
19
+ WorkdirSafetyTier["GUARDED"] = "guarded";
20
+ WorkdirSafetyTier["RISKY"] = "risky";
21
+ WorkdirSafetyTier["UNSAFE"] = "unsafe";
22
+ })(WorkdirSafetyTier || (WorkdirSafetyTier = {}));
23
+ const DEFAULT_MAX_SANDBOX_SIZE = 100 * 1024 * 1024; // 100MB
24
+ /**
25
+ * Check if a directory is a git repository
26
+ */
27
+ export async function isGitRepo(workdir) {
28
+ try {
29
+ await execFileAsync('git', ['rev-parse', '--show-toplevel'], {
30
+ cwd: workdir,
31
+ timeout: 5_000,
32
+ });
33
+ return true;
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ /**
40
+ * Check if a git repository has uncommitted changes
41
+ */
42
+ export async function hasUncommittedChanges(workdir) {
43
+ try {
44
+ const { stdout } = await execFileAsync('git', ['status', '--porcelain'], {
45
+ cwd: workdir,
46
+ timeout: 5_000,
47
+ });
48
+ return stdout.trim().length > 0;
49
+ }
50
+ catch {
51
+ return false; // If git command fails, assume no changes
52
+ }
53
+ }
54
+ /**
55
+ * Check if git is installed on the system
56
+ */
57
+ export async function isGitAvailable() {
58
+ try {
59
+ await execFileAsync('git', ['--version'], { timeout: 5_000 });
60
+ return true;
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ }
66
+ /**
67
+ * Get the size of a directory in bytes
68
+ */
69
+ export async function getDirectorySize(dirPath) {
70
+ let totalSize = 0;
71
+ async function traverse(currentPath) {
72
+ const entries = await readdir(currentPath, { withFileTypes: true });
73
+ for (const entry of entries) {
74
+ const fullPath = join(currentPath, entry.name);
75
+ if (entry.isDirectory()) {
76
+ // Skip common large directories and hidden folders
77
+ if (entry.name === 'node_modules' ||
78
+ entry.name === '.git' ||
79
+ entry.name === 'venv' ||
80
+ entry.name === '__pycache__' ||
81
+ entry.name === 'build' ||
82
+ entry.name === 'dist' ||
83
+ entry.name === '.next') {
84
+ continue;
85
+ }
86
+ await traverse(fullPath);
87
+ }
88
+ else if (entry.isFile()) {
89
+ const stats = await stat(fullPath);
90
+ totalSize += stats.size;
91
+ }
92
+ }
93
+ }
94
+ await traverse(dirPath);
95
+ return totalSize;
96
+ }
97
+ /**
98
+ * Check working directory safety for task execution
99
+ */
100
+ export async function checkWorkdirSafety(workdir, activeTasksInDir, gitAvailable) {
101
+ const isGit = gitAvailable && await isGitRepo(workdir);
102
+ const hasUncommitted = isGit && await hasUncommittedChanges(workdir);
103
+ // UNSAFE: Non-git directory with parallel execution
104
+ if (!isGit && activeTasksInDir > 0) {
105
+ return {
106
+ tier: WorkdirSafetyTier.UNSAFE,
107
+ blockReason: [
108
+ '🛑 PARALLEL EXECUTION BLOCKED',
109
+ '',
110
+ 'Multiple agents cannot run in the same non-git directory.',
111
+ 'This would cause file conflicts and potential data loss.',
112
+ '',
113
+ `Active tasks in this directory: ${activeTasksInDir}`,
114
+ '',
115
+ 'Solutions:',
116
+ ' 1. Wait for other tasks to complete',
117
+ ' 2. Initialize git in this directory',
118
+ ' 3. Use a different working directory',
119
+ ' 4. Enable --sandbox-mode to execute in isolation',
120
+ ].join('\n'),
121
+ isGitRepo: false,
122
+ hasUncommittedChanges: false,
123
+ parallelTaskCount: activeTasksInDir,
124
+ };
125
+ }
126
+ // RISKY: Non-git directory (warn but allow with confirmation)
127
+ if (!isGit) {
128
+ return {
129
+ tier: WorkdirSafetyTier.RISKY,
130
+ warning: [
131
+ '⚠️ NO GIT REPOSITORY DETECTED',
132
+ '',
133
+ 'AI agents may modify or delete files without version control.',
134
+ 'You will NOT be able to revert changes if something goes wrong.',
135
+ '',
136
+ 'Recommendations:',
137
+ ' 1. Initialize git: cd ' + workdir + ' && git init',
138
+ ' 2. Use --sandbox-mode to work on a copy',
139
+ ' 3. Ensure you have backups of important files',
140
+ '',
141
+ '⚠️ Continue at your own risk.',
142
+ ].join('\n'),
143
+ isGitRepo: false,
144
+ hasUncommittedChanges: false,
145
+ parallelTaskCount: activeTasksInDir,
146
+ };
147
+ }
148
+ // GUARDED: Git repo with uncommitted changes
149
+ if (hasUncommitted) {
150
+ return {
151
+ tier: WorkdirSafetyTier.GUARDED,
152
+ warning: [
153
+ '⚠️ UNCOMMITTED CHANGES DETECTED',
154
+ '',
155
+ 'The working directory has uncommitted changes.',
156
+ 'The agent may modify, stage, or commit these changes.',
157
+ '',
158
+ 'Recommendation: Commit or stash changes before proceeding.',
159
+ ].join('\n'),
160
+ isGitRepo: true,
161
+ hasUncommittedChanges: true,
162
+ parallelTaskCount: activeTasksInDir,
163
+ };
164
+ }
165
+ // SAFE: Git repo with clean state
166
+ return {
167
+ tier: WorkdirSafetyTier.SAFE,
168
+ isGitRepo: true,
169
+ hasUncommittedChanges: false,
170
+ parallelTaskCount: activeTasksInDir,
171
+ };
172
+ }
173
+ /**
174
+ * Create a sandbox copy of the working directory for isolated execution
175
+ */
176
+ export async function createSandbox(options) {
177
+ const { workdir, taskId, maxSize = DEFAULT_MAX_SANDBOX_SIZE } = options;
178
+ // Check directory size
179
+ const dirSize = await getDirectorySize(workdir);
180
+ if (dirSize > maxSize) {
181
+ const sizeMB = (dirSize / 1024 / 1024).toFixed(1);
182
+ const maxMB = (maxSize / 1024 / 1024).toFixed(1);
183
+ throw new Error(`Directory size (${sizeMB}MB) exceeds sandbox limit (${maxMB}MB). ` +
184
+ `Use --max-sandbox-size to increase or exclude large directories.`);
185
+ }
186
+ const sandboxRoot = join(homedir(), '.astro', 'sandbox');
187
+ const sandboxPath = join(sandboxRoot, taskId);
188
+ // Remove existing sandbox if present
189
+ await rm(sandboxPath, { recursive: true, force: true });
190
+ // Copy directory to sandbox
191
+ await cp(workdir, sandboxPath, {
192
+ recursive: true,
193
+ filter: (src) => {
194
+ const name = src.split('/').pop() || '';
195
+ // Skip large/unnecessary directories
196
+ return !(name === 'node_modules' ||
197
+ name === '.git' ||
198
+ name === 'venv' ||
199
+ name === '__pycache__' ||
200
+ name === 'build' ||
201
+ name === 'dist' ||
202
+ name === '.next' ||
203
+ name === '.venv');
204
+ },
205
+ });
206
+ return {
207
+ sandboxPath,
208
+ originalPath: workdir,
209
+ cleanup: async () => {
210
+ await rm(sandboxPath, { recursive: true, force: true });
211
+ },
212
+ copyBack: async () => {
213
+ // WARNING: Copy modified files back to original location
214
+ // This operation can overwrite existing work. Consider requiring explicit approval.
215
+ // Skip .git directory to avoid corrupting git state
216
+ console.warn('[sandbox] Copying back from sandbox to original directory. This may overwrite files.');
217
+ // Verify sandbox still exists before copying
218
+ try {
219
+ await stat(sandboxPath);
220
+ }
221
+ catch {
222
+ throw new Error(`Sandbox path no longer exists: ${sandboxPath}`);
223
+ }
224
+ await cp(sandboxPath, workdir, {
225
+ recursive: true,
226
+ force: true,
227
+ filter: (src) => {
228
+ const name = src.split('/').pop() || '';
229
+ return name !== '.git';
230
+ },
231
+ });
232
+ },
233
+ };
234
+ }
235
+ /**
236
+ * Format directory size for human reading
237
+ */
238
+ export function formatSize(bytes) {
239
+ if (bytes < 1024)
240
+ return `${bytes}B`;
241
+ if (bytes < 1024 * 1024)
242
+ return `${(bytes / 1024).toFixed(1)}KB`;
243
+ if (bytes < 1024 * 1024 * 1024)
244
+ return `${(bytes / 1024 / 1024).toFixed(1)}MB`;
245
+ return `${(bytes / 1024 / 1024 / 1024).toFixed(1)}GB`;
246
+ }
247
+ //# sourceMappingURL=workdir-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workdir-safety.js","sourceRoot":"","sources":["../../src/lib/workdir-safety.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * .worktreeinclude support
3
+ *
4
+ * Copies files that match both .worktreeinclude AND .gitignore patterns
5
+ * into the worktree. This allows env files, secrets, and other gitignored
6
+ * files to be available in isolated worktrees.
7
+ */
8
+ export interface WorktreeIncludeOptions {
9
+ gitRoot: string;
10
+ worktreePath: string;
11
+ log?: (msg: string) => void;
12
+ }
13
+ export declare function applyWorktreeInclude({ gitRoot, worktreePath, log, }: WorktreeIncludeOptions): Promise<void>;
14
+ //# sourceMappingURL=worktree-include.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-include.d.ts","sourceRoot":"","sources":["../../src/lib/worktree-include.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,YAAY,EACZ,GAAG,GACJ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BxC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * .worktreeinclude support
3
+ *
4
+ * Copies files that match both .worktreeinclude AND .gitignore patterns
5
+ * into the worktree. This allows env files, secrets, and other gitignored
6
+ * files to be available in isolated worktrees.
7
+ */
8
+ import { readFile, readdir, copyFile, mkdir } from 'node:fs/promises';
9
+ import { join, relative } from 'node:path';
10
+ import { createRequire } from 'node:module';
11
+ const require = createRequire(import.meta.url);
12
+ const ignore = require('ignore');
13
+ export async function applyWorktreeInclude({ gitRoot, worktreePath, log, }) {
14
+ const includeContent = await readFileSafe(join(gitRoot, '.worktreeinclude'));
15
+ if (!includeContent) {
16
+ return; // No .worktreeinclude — nothing to do
17
+ }
18
+ const gitignoreContent = await readFileSafe(join(gitRoot, '.gitignore'));
19
+ if (!gitignoreContent) {
20
+ return; // No .gitignore — nothing would be both included and ignored
21
+ }
22
+ const includeMatcher = ignore.default().add(includeContent);
23
+ const ignoreMatcher = ignore.default().add(gitignoreContent);
24
+ const filesToCopy = await walkAndMatch(gitRoot, includeMatcher, ignoreMatcher);
25
+ for (const relPath of filesToCopy) {
26
+ try {
27
+ const src = join(gitRoot, relPath);
28
+ const dest = join(worktreePath, relPath);
29
+ await mkdir(join(dest, '..'), { recursive: true });
30
+ await copyFile(src, dest);
31
+ log?.(`worktree-include: copied ${relPath}`);
32
+ }
33
+ catch (err) {
34
+ const msg = err instanceof Error ? err.message : String(err);
35
+ log?.(`worktree-include: failed to copy ${relPath}: ${msg}`);
36
+ }
37
+ }
38
+ }
39
+ async function readFileSafe(path) {
40
+ try {
41
+ return await readFile(path, 'utf-8');
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ const SKIP_DIRS = new Set(['.git', 'node_modules']);
48
+ async function walkAndMatch(root, includeMatcher, ignoreMatcher, dir = root) {
49
+ const results = [];
50
+ const entries = await readdir(dir, { withFileTypes: true });
51
+ for (const entry of entries) {
52
+ if (SKIP_DIRS.has(entry.name))
53
+ continue;
54
+ const fullPath = join(dir, entry.name);
55
+ const relPath = relative(root, fullPath);
56
+ if (entry.isDirectory()) {
57
+ const children = await walkAndMatch(root, includeMatcher, ignoreMatcher, fullPath);
58
+ results.push(...children);
59
+ }
60
+ else if (entry.isFile()) {
61
+ if (includeMatcher.ignores(relPath) && ignoreMatcher.ignores(relPath)) {
62
+ results.push(relPath);
63
+ }
64
+ }
65
+ }
66
+ return results;
67
+ }
68
+ //# sourceMappingURL=worktree-include.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-include.js","sourceRoot":"","sources":["../../src/lib/worktree-include.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Worktree setup script execution
3
+ *
4
+ * Runs `astro-setup.sh` (if present) inside the worktree to perform
5
+ * environment-specific setup like `npm install`, venv creation, etc.
6
+ */
7
+ export interface SetupScriptOptions {
8
+ gitRoot: string;
9
+ worktreePath: string;
10
+ taskId: string;
11
+ projectId?: string;
12
+ nodeId?: string;
13
+ stdout?: (data: string) => void;
14
+ stderr?: (data: string) => void;
15
+ timeout?: number;
16
+ }
17
+ export declare function runSetupScript(options: SetupScriptOptions): Promise<void>;
18
+ //# sourceMappingURL=worktree-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-setup.d.ts","sourceRoot":"","sources":["../../src/lib/worktree-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D/E"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Worktree setup script execution
3
+ *
4
+ * Runs `astro-setup.sh` (if present) inside the worktree to perform
5
+ * environment-specific setup like `npm install`, venv creation, etc.
6
+ */
7
+ import { spawn } from 'node:child_process';
8
+ import { access } from 'node:fs/promises';
9
+ import { join } from 'node:path';
10
+ const SETUP_SCRIPT = 'astro-setup.sh';
11
+ const DEFAULT_TIMEOUT = 5 * 60 * 1000; // 5 minutes
12
+ const KILL_GRACE = 5_000; // 5s after SIGTERM before SIGKILL
13
+ export async function runSetupScript(options) {
14
+ const { gitRoot, worktreePath, taskId, projectId, nodeId, stdout, stderr, timeout = DEFAULT_TIMEOUT, } = options;
15
+ const scriptPath = join(gitRoot, SETUP_SCRIPT);
16
+ try {
17
+ await access(scriptPath);
18
+ }
19
+ catch {
20
+ return; // No setup script — nothing to do
21
+ }
22
+ return new Promise((resolve) => {
23
+ const child = spawn('bash', [scriptPath], {
24
+ cwd: worktreePath,
25
+ env: {
26
+ ...process.env,
27
+ ASTRO_TASK_ID: taskId,
28
+ ASTRO_PROJECT_ID: projectId ?? '',
29
+ ASTRO_NODE_ID: nodeId ?? '',
30
+ },
31
+ stdio: ['ignore', 'pipe', 'pipe'],
32
+ });
33
+ let settled = false;
34
+ const settle = () => {
35
+ if (!settled) {
36
+ settled = true;
37
+ resolve();
38
+ }
39
+ };
40
+ child.stdout.on('data', (chunk) => {
41
+ stdout?.(chunk.toString());
42
+ });
43
+ child.stderr.on('data', (chunk) => {
44
+ stderr?.(chunk.toString());
45
+ });
46
+ child.on('close', settle);
47
+ child.on('error', settle);
48
+ // Timeout: SIGTERM then SIGKILL
49
+ const timer = setTimeout(() => {
50
+ child.kill('SIGTERM');
51
+ setTimeout(() => {
52
+ if (!settled) {
53
+ child.kill('SIGKILL');
54
+ }
55
+ }, KILL_GRACE);
56
+ }, timeout);
57
+ child.on('close', () => clearTimeout(timer));
58
+ });
59
+ }
60
+ //# sourceMappingURL=worktree-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-setup.js","sourceRoot":"","sources":["../../src/lib/worktree-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAajC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AACnD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,kCAAkC;AAE5D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA2B;IAC9D,MAAM,EACJ,OAAO,EACP,YAAY,EACZ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,GAAG,eAAe,GAC1B,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,kCAAkC;IAC5C,CAAC;IAED,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;YACxC,GAAG,EAAE,YAAY;YACjB,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,aAAa,EAAE,MAAM;gBACrB,gBAAgB,EAAE,SAAS,IAAI,EAAE;gBACjC,aAAa,EAAE,MAAM,IAAI,EAAE;aAC5B;YACD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE1B,gCAAgC;QAChC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,EAAE,UAAU,CAAC,CAAC;QACjB,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,37 @@
1
+ export interface WorktreeOptions {
2
+ workingDirectory: string;
3
+ taskId: string;
4
+ rootOverride?: string;
5
+ projectId?: string;
6
+ nodeId?: string;
7
+ agentDir?: string;
8
+ stdout?: (data: string) => void;
9
+ stderr?: (data: string) => void;
10
+ }
11
+ export interface WorktreeSetup {
12
+ workingDirectory: string;
13
+ branchName: string;
14
+ cleanup: (options?: {
15
+ keepBranch?: boolean;
16
+ }) => Promise<void>;
17
+ }
18
+ export declare function createWorktree(options: WorktreeOptions): Promise<WorktreeSetup | null>;
19
+ /**
20
+ * Parse `git worktree list --porcelain` and remove any worktree
21
+ * that has the target branch checked out. This prevents
22
+ * "branch already checked out" errors on re-execution.
23
+ */
24
+ export declare function removeLingeringWorktrees(gitRoot: string, branchName: string): Promise<void>;
25
+ /**
26
+ * Ensure CLAUDE.md is available in the worktree.
27
+ *
28
+ * If CLAUDE.md is tracked by git it will already appear in the worktree
29
+ * automatically. But if it is untracked or gitignored in the source repo
30
+ * we need to copy it explicitly so the agent has access to project
31
+ * instructions inside the isolated worktree.
32
+ *
33
+ * This is intentionally non-fatal: a missing CLAUDE.md should never block
34
+ * task execution.
35
+ */
36
+ export declare function ensureClaudeMdInWorktree(gitRoot: string, worktreePath: string): Promise<void>;
37
+ //# sourceMappingURL=worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/lib/worktree.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA+H/B;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CjG;AA6HD;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAsBf"}