@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.
- package/LICENSE +76 -0
- package/README.md +178 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +401 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +9 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/mcp.d.ts +16 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +19 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/setup.d.ts +20 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +585 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/start.d.ts +16 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +638 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +63 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +5 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +85 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/execution/direct-strategy.d.ts +18 -0
- package/dist/execution/direct-strategy.d.ts.map +1 -0
- package/dist/execution/direct-strategy.js +156 -0
- package/dist/execution/direct-strategy.js.map +1 -0
- package/dist/execution/docker-strategy.d.ts +26 -0
- package/dist/execution/docker-strategy.d.ts.map +1 -0
- package/dist/execution/docker-strategy.js +222 -0
- package/dist/execution/docker-strategy.js.map +1 -0
- package/dist/execution/index.d.ts +14 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +13 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/kubernetes-exec-strategy.d.ts +23 -0
- package/dist/execution/kubernetes-exec-strategy.d.ts.map +1 -0
- package/dist/execution/kubernetes-exec-strategy.js +232 -0
- package/dist/execution/kubernetes-exec-strategy.js.map +1 -0
- package/dist/execution/registry.d.ts +41 -0
- package/dist/execution/registry.d.ts.map +1 -0
- package/dist/execution/registry.js +84 -0
- package/dist/execution/registry.js.map +1 -0
- package/dist/execution/slurm-strategy.d.ts +22 -0
- package/dist/execution/slurm-strategy.d.ts.map +1 -0
- package/dist/execution/slurm-strategy.js +219 -0
- package/dist/execution/slurm-strategy.js.map +1 -0
- package/dist/execution/types.d.ts +72 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +10 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +35 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +126 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/config.d.ts +174 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +399 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/copy-worktree.d.ts +73 -0
- package/dist/lib/copy-worktree.d.ts.map +1 -0
- package/dist/lib/copy-worktree.js +374 -0
- package/dist/lib/copy-worktree.js.map +1 -0
- package/dist/lib/git-pr.d.ts +63 -0
- package/dist/lib/git-pr.d.ts.map +1 -0
- package/dist/lib/git-pr.js +224 -0
- package/dist/lib/git-pr.js.map +1 -0
- package/dist/lib/hardware-id.d.ts +25 -0
- package/dist/lib/hardware-id.d.ts.map +1 -0
- package/dist/lib/hardware-id.js +186 -0
- package/dist/lib/hardware-id.js.map +1 -0
- package/dist/lib/hpc-context.d.ts +35 -0
- package/dist/lib/hpc-context.d.ts.map +1 -0
- package/dist/lib/hpc-context.js +167 -0
- package/dist/lib/hpc-context.js.map +1 -0
- package/dist/lib/prompt-templates.d.ts +195 -0
- package/dist/lib/prompt-templates.d.ts.map +1 -0
- package/dist/lib/prompt-templates.js +353 -0
- package/dist/lib/prompt-templates.js.map +1 -0
- package/dist/lib/providers.d.ts +27 -0
- package/dist/lib/providers.d.ts.map +1 -0
- package/dist/lib/providers.js +372 -0
- package/dist/lib/providers.js.map +1 -0
- package/dist/lib/repo-context.d.ts +18 -0
- package/dist/lib/repo-context.d.ts.map +1 -0
- package/dist/lib/repo-context.js +61 -0
- package/dist/lib/repo-context.js.map +1 -0
- package/dist/lib/repo-utils.d.ts +35 -0
- package/dist/lib/repo-utils.d.ts.map +1 -0
- package/dist/lib/repo-utils.js +222 -0
- package/dist/lib/repo-utils.js.map +1 -0
- package/dist/lib/resources.d.ts +17 -0
- package/dist/lib/resources.d.ts.map +1 -0
- package/dist/lib/resources.js +227 -0
- package/dist/lib/resources.js.map +1 -0
- package/dist/lib/slurm-detect.d.ts +15 -0
- package/dist/lib/slurm-detect.d.ts.map +1 -0
- package/dist/lib/slurm-detect.js +148 -0
- package/dist/lib/slurm-detect.js.map +1 -0
- package/dist/lib/slurm-executor.d.ts +70 -0
- package/dist/lib/slurm-executor.d.ts.map +1 -0
- package/dist/lib/slurm-executor.js +402 -0
- package/dist/lib/slurm-executor.js.map +1 -0
- package/dist/lib/slurm-job-monitor.d.ts +52 -0
- package/dist/lib/slurm-job-monitor.d.ts.map +1 -0
- package/dist/lib/slurm-job-monitor.js +212 -0
- package/dist/lib/slurm-job-monitor.js.map +1 -0
- package/dist/lib/ssh-discovery.d.ts +17 -0
- package/dist/lib/ssh-discovery.d.ts.map +1 -0
- package/dist/lib/ssh-discovery.js +287 -0
- package/dist/lib/ssh-discovery.js.map +1 -0
- package/dist/lib/ssh-installer.d.ts +69 -0
- package/dist/lib/ssh-installer.d.ts.map +1 -0
- package/dist/lib/ssh-installer.js +230 -0
- package/dist/lib/ssh-installer.js.map +1 -0
- package/dist/lib/streaming-prompt.d.ts +48 -0
- package/dist/lib/streaming-prompt.d.ts.map +1 -0
- package/dist/lib/streaming-prompt.js +91 -0
- package/dist/lib/streaming-prompt.js.map +1 -0
- package/dist/lib/task-executor.d.ts +114 -0
- package/dist/lib/task-executor.d.ts.map +1 -0
- package/dist/lib/task-executor.js +753 -0
- package/dist/lib/task-executor.js.map +1 -0
- package/dist/lib/websocket-client.d.ts +200 -0
- package/dist/lib/websocket-client.d.ts.map +1 -0
- package/dist/lib/websocket-client.js +781 -0
- package/dist/lib/websocket-client.js.map +1 -0
- package/dist/lib/workdir-safety.d.ts +63 -0
- package/dist/lib/workdir-safety.d.ts.map +1 -0
- package/dist/lib/workdir-safety.js +247 -0
- package/dist/lib/workdir-safety.js.map +1 -0
- package/dist/lib/worktree-include.d.ts +14 -0
- package/dist/lib/worktree-include.d.ts.map +1 -0
- package/dist/lib/worktree-include.js +68 -0
- package/dist/lib/worktree-include.js.map +1 -0
- package/dist/lib/worktree-setup.d.ts +18 -0
- package/dist/lib/worktree-setup.d.ts.map +1 -0
- package/dist/lib/worktree-setup.js +60 -0
- package/dist/lib/worktree-setup.js.map +1 -0
- package/dist/lib/worktree.d.ts +37 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +411 -0
- package/dist/lib/worktree.js.map +1 -0
- package/dist/mcp/index.d.ts +8 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +45 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +153 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/session-bridge.d.ts +87 -0
- package/dist/mcp/session-bridge.d.ts.map +1 -0
- package/dist/mcp/session-bridge.js +317 -0
- package/dist/mcp/session-bridge.js.map +1 -0
- package/dist/mcp/tools.d.ts +70 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +234 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +197 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +16 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/providers/base-adapter.d.ts +56 -0
- package/dist/providers/base-adapter.d.ts.map +1 -0
- package/dist/providers/base-adapter.js +5 -0
- package/dist/providers/base-adapter.js.map +1 -0
- package/dist/providers/claude-code-adapter.d.ts +27 -0
- package/dist/providers/claude-code-adapter.d.ts.map +1 -0
- package/dist/providers/claude-code-adapter.js +298 -0
- package/dist/providers/claude-code-adapter.js.map +1 -0
- package/dist/providers/claude-sdk-adapter.d.ts +60 -0
- package/dist/providers/claude-sdk-adapter.d.ts.map +1 -0
- package/dist/providers/claude-sdk-adapter.js +632 -0
- package/dist/providers/claude-sdk-adapter.js.map +1 -0
- package/dist/providers/codex-adapter.d.ts +21 -0
- package/dist/providers/codex-adapter.d.ts.map +1 -0
- package/dist/providers/codex-adapter.js +197 -0
- package/dist/providers/codex-adapter.js.map +1 -0
- package/dist/providers/index.d.ts +26 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +58 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/slurm-adapter.d.ts +26 -0
- package/dist/providers/slurm-adapter.d.ts.map +1 -0
- package/dist/providers/slurm-adapter.js +146 -0
- package/dist/providers/slurm-adapter.js.map +1 -0
- package/dist/types.d.ts +592 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- 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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAA2C,CAAC;AAY3E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,OAAO,EACP,YAAY,EACZ,GAAG,GACoB;IACvB,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,sCAAsC;IAChD,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,CAAC,6DAA6D;IACvE,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE7D,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAE/E,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,GAAG,EAAE,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,GAAG,EAAE,CAAC,oCAAoC,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAEpD,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,cAAsB,EACtB,aAAqB,EACrB,MAAc,IAAI;IAElB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEzC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -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"}
|