@intella/sdk 0.0.7 → 0.0.9
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/README.md +70 -6
- package/dist/agent-manager.d.ts +4 -4
- package/dist/agent-manager.d.ts.map +1 -1
- package/dist/agent-manager.js +12 -7
- package/dist/agent-manager.js.map +1 -1
- package/dist/agents/base-agent.d.ts +35 -2
- package/dist/agents/base-agent.d.ts.map +1 -1
- package/dist/agents/base-agent.js +280 -24
- package/dist/agents/base-agent.js.map +1 -1
- package/dist/agents/claude-agent.d.ts +1 -1
- package/dist/agents/claude-agent.d.ts.map +1 -1
- package/dist/agents/claude-agent.js +2 -1
- package/dist/agents/claude-agent.js.map +1 -1
- package/dist/agents/codex-agent.d.ts +1 -1
- package/dist/agents/codex-agent.d.ts.map +1 -1
- package/dist/agents/codex-agent.js +2 -1
- package/dist/agents/codex-agent.js.map +1 -1
- package/dist/agents/intella-lite-agent.d.ts +1 -1
- package/dist/agents/intella-lite-agent.d.ts.map +1 -1
- package/dist/agents/intella-lite-agent.js +2 -1
- package/dist/agents/intella-lite-agent.js.map +1 -1
- package/dist/agents/opencode-agent.d.ts +1 -1
- package/dist/agents/opencode-agent.d.ts.map +1 -1
- package/dist/agents/opencode-agent.js +2 -3
- package/dist/agents/opencode-agent.js.map +1 -1
- package/dist/index.d.ts +22 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -11
- package/dist/index.js.map +1 -1
- package/dist/sandbox/{agent-installers.d.ts → agents/agent-installers.d.ts} +1 -1
- package/dist/sandbox/agents/agent-installers.d.ts.map +1 -0
- package/dist/sandbox/{agent-installers.js → agents/agent-installers.js} +5 -4
- package/dist/sandbox/agents/agent-installers.js.map +1 -0
- package/dist/sandbox/{agent-setup.d.ts → agents/agent-setup.d.ts} +1 -1
- package/dist/sandbox/agents/agent-setup.d.ts.map +1 -0
- package/dist/sandbox/{agent-setup.js → agents/agent-setup.js} +3 -2
- package/dist/sandbox/agents/agent-setup.js.map +1 -0
- package/dist/sandbox/agents/agents.d.ts +49 -0
- package/dist/sandbox/agents/agents.d.ts.map +1 -0
- package/dist/sandbox/agents/agents.js +71 -0
- package/dist/sandbox/agents/agents.js.map +1 -0
- package/dist/sandbox/config.d.ts +1 -1
- package/dist/sandbox/config.d.ts.map +1 -1
- package/dist/sandbox/config.js +26 -18
- package/dist/sandbox/config.js.map +1 -1
- package/dist/sandbox/file-utils.d.ts +20 -0
- package/dist/sandbox/file-utils.d.ts.map +1 -0
- package/dist/sandbox/file-utils.js +101 -0
- package/dist/sandbox/file-utils.js.map +1 -0
- package/dist/sandbox/operations/code-operations.d.ts +68 -0
- package/dist/sandbox/operations/code-operations.d.ts.map +1 -0
- package/dist/sandbox/operations/code-operations.js +208 -0
- package/dist/sandbox/operations/code-operations.js.map +1 -0
- package/dist/sandbox/operations/git-operations.d.ts +27 -0
- package/dist/sandbox/operations/git-operations.d.ts.map +1 -0
- package/dist/sandbox/operations/git-operations.js +235 -0
- package/dist/sandbox/operations/git-operations.js.map +1 -0
- package/dist/sandbox/providers/base-provider.d.ts +283 -0
- package/dist/sandbox/providers/base-provider.d.ts.map +1 -0
- package/dist/sandbox/providers/base-provider.js +816 -0
- package/dist/sandbox/providers/base-provider.js.map +1 -0
- package/dist/sandbox/{daytona-provider.d.ts → providers/daytona-provider.d.ts} +19 -16
- package/dist/sandbox/providers/daytona-provider.d.ts.map +1 -0
- package/dist/sandbox/{daytona-provider.js → providers/daytona-provider.js} +96 -27
- package/dist/sandbox/providers/daytona-provider.js.map +1 -0
- package/dist/sandbox/{e2b-provider.d.ts → providers/e2b-provider.d.ts} +16 -10
- package/dist/sandbox/providers/e2b-provider.d.ts.map +1 -0
- package/dist/sandbox/{e2b-provider.js → providers/e2b-provider.js} +51 -29
- package/dist/sandbox/providers/e2b-provider.js.map +1 -0
- package/dist/sandbox/{local-provider.d.ts → providers/local-provider.d.ts} +12 -6
- package/dist/sandbox/providers/local-provider.d.ts.map +1 -0
- package/dist/sandbox/{local-provider.js → providers/local-provider.js} +24 -21
- package/dist/sandbox/providers/local-provider.js.map +1 -0
- package/dist/sandbox/{modal-provider.d.ts → providers/modal-provider.d.ts} +18 -12
- package/dist/sandbox/providers/modal-provider.d.ts.map +1 -0
- package/dist/sandbox/{modal-provider.js → providers/modal-provider.js} +49 -29
- package/dist/sandbox/providers/modal-provider.js.map +1 -0
- package/dist/sandbox/{vercel-provider.d.ts → providers/vercel-provider.d.ts} +19 -14
- package/dist/sandbox/providers/vercel-provider.d.ts.map +1 -0
- package/dist/sandbox/{vercel-provider.js → providers/vercel-provider.js} +41 -42
- package/dist/sandbox/providers/vercel-provider.js.map +1 -0
- package/dist/sandbox/utils/detector.d.ts +28 -0
- package/dist/sandbox/utils/detector.d.ts.map +1 -0
- package/dist/sandbox/utils/detector.js +243 -0
- package/dist/sandbox/utils/detector.js.map +1 -0
- package/dist/sandbox-manager.js +5 -5
- package/dist/sandbox-manager.js.map +1 -1
- package/dist/sdk.d.ts +4 -3
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +7 -3
- package/dist/sdk.js.map +1 -1
- package/dist/session/execution-store.d.ts +71 -0
- package/dist/session/execution-store.d.ts.map +1 -0
- package/dist/session/execution-store.js +156 -0
- package/dist/session/execution-store.js.map +1 -0
- package/dist/session/index.d.ts +14 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +20 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +164 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +493 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/store.d.ts +20 -0
- package/dist/session/store.d.ts.map +1 -0
- package/dist/session/store.js +69 -0
- package/dist/session/store.js.map +1 -0
- package/dist/session/types.d.ts +57 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +2 -0
- package/dist/session/types.js.map +1 -0
- package/dist/types.d.ts +622 -19
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +35 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/cli-daemon.d.ts.map +1 -1
- package/dist/utils/cli-daemon.js +1 -3
- package/dist/utils/cli-daemon.js.map +1 -1
- package/dist/utils/machine-id.d.ts +8 -0
- package/dist/utils/machine-id.d.ts.map +1 -0
- package/dist/utils/machine-id.js +19 -0
- package/dist/utils/machine-id.js.map +1 -0
- package/dist/utils/redis/client.d.ts +18 -0
- package/dist/utils/redis/client.d.ts.map +1 -0
- package/dist/utils/redis/client.js +52 -0
- package/dist/utils/redis/client.js.map +1 -0
- package/dist/utils/redis/index.d.ts +2 -0
- package/dist/utils/redis/index.d.ts.map +1 -0
- package/dist/utils/redis/index.js +2 -0
- package/dist/utils/redis/index.js.map +1 -0
- package/dist/utils/{redis-stream.d.ts → redis/stream.d.ts} +41 -74
- package/dist/utils/redis/stream.d.ts.map +1 -0
- package/dist/utils/{redis-stream.js → redis/stream.js} +133 -69
- package/dist/utils/redis/stream.js.map +1 -0
- package/dist/utils/repo-context.d.ts +16 -0
- package/dist/utils/repo-context.d.ts.map +1 -0
- package/dist/utils/repo-context.js +65 -0
- package/dist/utils/repo-context.js.map +1 -0
- package/dist/utils/tool-response.d.ts +20 -0
- package/dist/utils/tool-response.d.ts.map +1 -0
- package/dist/utils/tool-response.js +68 -0
- package/dist/utils/tool-response.js.map +1 -0
- package/package.json +23 -8
- package/dist/sandbox/agent-installers.d.ts.map +0 -1
- package/dist/sandbox/agent-installers.js.map +0 -1
- package/dist/sandbox/agent-setup.d.ts.map +0 -1
- package/dist/sandbox/agent-setup.js.map +0 -1
- package/dist/sandbox/base-provider.d.ts +0 -106
- package/dist/sandbox/base-provider.d.ts.map +0 -1
- package/dist/sandbox/base-provider.js +0 -74
- package/dist/sandbox/base-provider.js.map +0 -1
- package/dist/sandbox/daytona-provider.d.ts.map +0 -1
- package/dist/sandbox/daytona-provider.js.map +0 -1
- package/dist/sandbox/e2b-provider.d.ts.map +0 -1
- package/dist/sandbox/e2b-provider.js.map +0 -1
- package/dist/sandbox/local-provider.d.ts.map +0 -1
- package/dist/sandbox/local-provider.js.map +0 -1
- package/dist/sandbox/modal-provider.d.ts.map +0 -1
- package/dist/sandbox/modal-provider.js.map +0 -1
- package/dist/sandbox/vercel-provider.d.ts.map +0 -1
- package/dist/sandbox/vercel-provider.js.map +0 -1
- package/dist/utils/redis-stream.d.ts.map +0 -1
- package/dist/utils/redis-stream.js.map +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
function escapeForDoubleQuoted(s) {
|
|
2
|
+
return s
|
|
3
|
+
.replace(/\\/g, '\\\\')
|
|
4
|
+
.replace(/"/g, '\\"')
|
|
5
|
+
.replace(/\$/g, '\\$')
|
|
6
|
+
.replace(/`/g, '\\`');
|
|
7
|
+
}
|
|
8
|
+
function assertSuccess(result, context) {
|
|
9
|
+
const stderr = typeof result.stderr === 'string' ? result.stderr : String(result.stderr ?? '');
|
|
10
|
+
console.log(`[git-operations] ${context}: ${result.stdout || result.stderr}`);
|
|
11
|
+
if (result.exitCode !== 0) {
|
|
12
|
+
throw new Error(`${context}: ${stderr || 'command failed'}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function buildGitAuthUrl(url, username, password) {
|
|
16
|
+
if (!username && !password)
|
|
17
|
+
return url;
|
|
18
|
+
try {
|
|
19
|
+
const u = new URL(url);
|
|
20
|
+
u.username = username ?? '';
|
|
21
|
+
u.password = password ?? '';
|
|
22
|
+
return u.toString();
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return url;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extract repository name from a git URL.
|
|
30
|
+
* Handles HTTPS and SSH URLs like:
|
|
31
|
+
* - https://github.com/user/repo.git
|
|
32
|
+
* - https://github.com/user/repo
|
|
33
|
+
* - git@github.com:user/repo.git
|
|
34
|
+
*/
|
|
35
|
+
export function extractRepoName(url) {
|
|
36
|
+
// Remove trailing slashes and .git suffix
|
|
37
|
+
const cleaned = url.replace(/\/+$/, '').replace(/\.git$/, '');
|
|
38
|
+
// Extract the last path segment
|
|
39
|
+
const match = cleaned.match(/[/:]([^/:]+)$/);
|
|
40
|
+
return match ? match[1] : 'repo';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Creates the default git implementation that uses executeCommand and createDirectory.
|
|
44
|
+
* Used by E2B, Modal, Vercel, and Local providers.
|
|
45
|
+
*/
|
|
46
|
+
export function createDefaultGitOperations(provider) {
|
|
47
|
+
return {
|
|
48
|
+
async clone(url, path, options) {
|
|
49
|
+
const branch = options?.branch;
|
|
50
|
+
const commitId = options?.commitId;
|
|
51
|
+
const username = options?.username;
|
|
52
|
+
const password = options?.password;
|
|
53
|
+
// Extract repo name from URL and use path as the parent directory
|
|
54
|
+
const repoName = extractRepoName(url);
|
|
55
|
+
const parent = path.replace(/\/+$/, '') || '.';
|
|
56
|
+
const dest = repoName;
|
|
57
|
+
// Create the parent directory if needed
|
|
58
|
+
if (parent !== '.') {
|
|
59
|
+
await provider.createDirectory(parent, { recursive: true });
|
|
60
|
+
}
|
|
61
|
+
// check if the repo already exists at path/repoName
|
|
62
|
+
const existsCmd = `test -d "${escapeForDoubleQuoted(dest)}/.git" && echo "exists" || echo "not_exists"`;
|
|
63
|
+
const existsResult = await provider.executeCommand(existsCmd, { cwd: parent });
|
|
64
|
+
const existsOutput = (typeof existsResult.stdout === 'string' ? existsResult.stdout : String(existsResult.stdout ?? '')).trim();
|
|
65
|
+
const repoExists = existsOutput === 'exists';
|
|
66
|
+
let shouldClone = true;
|
|
67
|
+
if (repoExists) {
|
|
68
|
+
const fullPath = parent === '.' ? dest : `${parent}/${dest}`;
|
|
69
|
+
console.info(`[git-operations] Repo already exists at ${fullPath}, skipping clone`);
|
|
70
|
+
if (options?.pullOnExists) {
|
|
71
|
+
// check current branch, if its different from the branch we want to checkout, fetch all remote branches and checkout the branch
|
|
72
|
+
// else just pull
|
|
73
|
+
// fetch all remote branches
|
|
74
|
+
const currentBranchCmd = `git -C "${escapeForDoubleQuoted(fullPath)}" branch --show-current`;
|
|
75
|
+
const currentBranchResult = await provider.executeCommand(currentBranchCmd);
|
|
76
|
+
assertSuccess(currentBranchResult, 'git branch --show-current');
|
|
77
|
+
const currentBranch = (typeof currentBranchResult.stdout === 'string' ? currentBranchResult.stdout : String(currentBranchResult.stdout ?? '')).trim();
|
|
78
|
+
if (currentBranch !== branch) {
|
|
79
|
+
const fetchCmd = `git -C "${escapeForDoubleQuoted(fullPath)}" fetch --all`;
|
|
80
|
+
const fetchResult = await provider.executeCommand(fetchCmd);
|
|
81
|
+
assertSuccess(fetchResult, 'git fetch --all');
|
|
82
|
+
// checkout the branch
|
|
83
|
+
if (branch) {
|
|
84
|
+
const checkoutCmd = `git -C "${escapeForDoubleQuoted(fullPath)}" checkout "${escapeForDoubleQuoted(branch)}"`;
|
|
85
|
+
const checkoutResult = await provider.executeCommand(checkoutCmd);
|
|
86
|
+
assertSuccess(checkoutResult, 'git checkout');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const pullCmd = `git -C "${escapeForDoubleQuoted(fullPath)}" pull`;
|
|
91
|
+
const pullResult = await provider.executeCommand(pullCmd);
|
|
92
|
+
assertSuccess(pullResult, 'git pull');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
shouldClone = false;
|
|
96
|
+
}
|
|
97
|
+
if (shouldClone) {
|
|
98
|
+
const authUrl = buildGitAuthUrl(url, username, password);
|
|
99
|
+
const branchFlag = branch ? `--branch "${escapeForDoubleQuoted(branch)}"` : '';
|
|
100
|
+
const cloneCmd = `git clone ${branchFlag} "${escapeForDoubleQuoted(authUrl)}" "${escapeForDoubleQuoted(dest)}"`;
|
|
101
|
+
const inner = `cd "${escapeForDoubleQuoted(parent)}" && ${cloneCmd}`;
|
|
102
|
+
const cmd = `sh -c "${inner.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
103
|
+
const targetPath = parent === '.' ? dest : `${parent}/${dest}`;
|
|
104
|
+
console.info(`[git-operations] Cloning ${url} to ${targetPath}`);
|
|
105
|
+
console.log(cmd);
|
|
106
|
+
const result = await provider.executeCommand(cmd);
|
|
107
|
+
assertSuccess(result, 'git clone');
|
|
108
|
+
}
|
|
109
|
+
if (commitId) {
|
|
110
|
+
const fullPath = parent === '.' ? dest : `${parent}/${dest}`;
|
|
111
|
+
const checkCmd = `git -C "${escapeForDoubleQuoted(fullPath)}" checkout "${escapeForDoubleQuoted(commitId)}"`;
|
|
112
|
+
const checkResult = await provider.executeCommand(checkCmd);
|
|
113
|
+
assertSuccess(checkResult, 'git checkout (commitId)');
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
async status(path) {
|
|
117
|
+
const esc = escapeForDoubleQuoted(path);
|
|
118
|
+
const sbResult = await provider.executeCommand(`git -C "${esc}" status -sb`);
|
|
119
|
+
const shortResult = await provider.executeCommand(`git -C "${esc}" status --short`);
|
|
120
|
+
const sb = typeof sbResult.stdout === 'string' ? sbResult.stdout : String(sbResult.stdout ?? '');
|
|
121
|
+
const short = typeof shortResult.stdout === 'string' ? shortResult.stdout : String(shortResult.stdout ?? '');
|
|
122
|
+
let currentBranch = 'HEAD';
|
|
123
|
+
let ahead = 0;
|
|
124
|
+
let behind = 0;
|
|
125
|
+
const branchMatch = sb.match(/^##\s+(.+?)(?:\s+\.\.\.|\s*$)/m);
|
|
126
|
+
if (branchMatch) {
|
|
127
|
+
currentBranch = branchMatch[1].trim();
|
|
128
|
+
}
|
|
129
|
+
const aheadMatch = sb.match(/\[ahead\s+(\d+)/);
|
|
130
|
+
if (aheadMatch)
|
|
131
|
+
ahead = parseInt(aheadMatch[1], 10);
|
|
132
|
+
const behindMatch = sb.match(/behind\s+(\d+)\]/);
|
|
133
|
+
if (behindMatch)
|
|
134
|
+
behind = parseInt(behindMatch[1], 10);
|
|
135
|
+
const fileStatus = short
|
|
136
|
+
.split('\n')
|
|
137
|
+
.map((line) => line.trim())
|
|
138
|
+
.filter(Boolean)
|
|
139
|
+
.map((line) => {
|
|
140
|
+
const match = line.match(/^(.{2})\s+(.+)$/);
|
|
141
|
+
const staging = match ? match[1].trim().split('')[0] ?? undefined : undefined;
|
|
142
|
+
const worktree = match ? match[1].trim().split('')[1] ?? undefined : undefined;
|
|
143
|
+
const name = match ? match[2].trim() : line;
|
|
144
|
+
return { name, staging, worktree };
|
|
145
|
+
});
|
|
146
|
+
return { currentBranch, ahead, behind, fileStatus };
|
|
147
|
+
},
|
|
148
|
+
async branches(path) {
|
|
149
|
+
const esc = escapeForDoubleQuoted(path);
|
|
150
|
+
const result = await provider.executeCommand(`git -C "${esc}" branch`);
|
|
151
|
+
assertSuccess(result, 'git branch');
|
|
152
|
+
const out = typeof result.stdout === 'string' ? result.stdout : String(result.stdout ?? '');
|
|
153
|
+
const branches = out
|
|
154
|
+
.split('\n')
|
|
155
|
+
.map((line) => line.replace(/^\*?\s*/, '').trim())
|
|
156
|
+
.filter(Boolean);
|
|
157
|
+
return { branches };
|
|
158
|
+
},
|
|
159
|
+
async createBranch(path, name) {
|
|
160
|
+
const esc = escapeForDoubleQuoted(path);
|
|
161
|
+
const nameEsc = escapeForDoubleQuoted(name);
|
|
162
|
+
const result = await provider.executeCommand(`git -C "${esc}" branch "${nameEsc}"`);
|
|
163
|
+
assertSuccess(result, 'git branch (create)');
|
|
164
|
+
},
|
|
165
|
+
async checkoutBranch(path, branch) {
|
|
166
|
+
const esc = escapeForDoubleQuoted(path);
|
|
167
|
+
const branchEsc = escapeForDoubleQuoted(branch);
|
|
168
|
+
const result = await provider.executeCommand(`git -C "${esc}" checkout "${branchEsc}"`);
|
|
169
|
+
assertSuccess(result, 'git checkout');
|
|
170
|
+
},
|
|
171
|
+
async deleteBranch(path, name) {
|
|
172
|
+
const esc = escapeForDoubleQuoted(path);
|
|
173
|
+
const nameEsc = escapeForDoubleQuoted(name);
|
|
174
|
+
const result = await provider.executeCommand(`git -C "${esc}" branch -d "${nameEsc}"`);
|
|
175
|
+
assertSuccess(result, 'git branch -d');
|
|
176
|
+
},
|
|
177
|
+
async add(path, files) {
|
|
178
|
+
const esc = escapeForDoubleQuoted(path);
|
|
179
|
+
const filesEsc = files.map((f) => `"${escapeForDoubleQuoted(f)}"`).join(' ');
|
|
180
|
+
const result = await provider.executeCommand(`git -C "${esc}" add -- ${filesEsc}`);
|
|
181
|
+
assertSuccess(result, 'git add');
|
|
182
|
+
},
|
|
183
|
+
async commit(path, message, author, email, allowEmpty) {
|
|
184
|
+
const esc = escapeForDoubleQuoted(path);
|
|
185
|
+
const msgEsc = escapeForDoubleQuoted(message);
|
|
186
|
+
const authorEsc = escapeForDoubleQuoted(`${author} <${email}>`);
|
|
187
|
+
const allow = allowEmpty ? ' --allow-empty' : '';
|
|
188
|
+
const result = await provider.executeCommand(`git -C "${esc}" commit -m "${msgEsc}" --author="${authorEsc}"${allow}`);
|
|
189
|
+
assertSuccess(result, 'git commit');
|
|
190
|
+
const revResult = await provider.executeCommand(`git -C "${esc}" rev-parse HEAD`);
|
|
191
|
+
assertSuccess(revResult, 'git rev-parse');
|
|
192
|
+
const sha = (typeof revResult.stdout === 'string' ? revResult.stdout : String(revResult.stdout ?? '')).trim();
|
|
193
|
+
return { sha };
|
|
194
|
+
},
|
|
195
|
+
async push(path, username, password) {
|
|
196
|
+
const esc = escapeForDoubleQuoted(path);
|
|
197
|
+
if (username !== undefined || password !== undefined) {
|
|
198
|
+
const urlResult = await provider.executeCommand(`git -C "${esc}" config --get remote.origin.url`);
|
|
199
|
+
if (urlResult.exitCode !== 0)
|
|
200
|
+
throw new Error('git push: no remote origin');
|
|
201
|
+
const originUrl = (typeof urlResult.stdout === 'string' ? urlResult.stdout : String(urlResult.stdout ?? '')).trim();
|
|
202
|
+
const authUrl = buildGitAuthUrl(originUrl, username, password);
|
|
203
|
+
const branchResult = await provider.executeCommand(`git -C "${esc}" branch --show-current`);
|
|
204
|
+
assertSuccess(branchResult, 'git branch --show-current');
|
|
205
|
+
const branch = (typeof branchResult.stdout === 'string' ? branchResult.stdout : String(branchResult.stdout ?? '')).trim();
|
|
206
|
+
const pushResult = await provider.executeCommand(`git -C "${esc}" push "${escapeForDoubleQuoted(authUrl)}" "${escapeForDoubleQuoted(branch)}"`);
|
|
207
|
+
assertSuccess(pushResult, 'git push');
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const result = await provider.executeCommand(`git -C "${esc}" push`);
|
|
211
|
+
assertSuccess(result, 'git push');
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
async pull(path, username, password) {
|
|
215
|
+
const esc = escapeForDoubleQuoted(path);
|
|
216
|
+
if (username !== undefined || password !== undefined) {
|
|
217
|
+
const urlResult = await provider.executeCommand(`git -C "${esc}" config --get remote.origin.url`);
|
|
218
|
+
if (urlResult.exitCode !== 0)
|
|
219
|
+
throw new Error('git pull: no remote origin');
|
|
220
|
+
const originUrl = (typeof urlResult.stdout === 'string' ? urlResult.stdout : String(urlResult.stdout ?? '')).trim();
|
|
221
|
+
const authUrl = buildGitAuthUrl(originUrl, username, password);
|
|
222
|
+
const branchResult = await provider.executeCommand(`git -C "${esc}" branch --show-current`);
|
|
223
|
+
assertSuccess(branchResult, 'git branch --show-current');
|
|
224
|
+
const branch = (typeof branchResult.stdout === 'string' ? branchResult.stdout : String(branchResult.stdout ?? '')).trim();
|
|
225
|
+
const pullResult = await provider.executeCommand(`git -C "${esc}" pull "${escapeForDoubleQuoted(authUrl)}" "${escapeForDoubleQuoted(branch)}"`);
|
|
226
|
+
assertSuccess(pullResult, 'git pull');
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
const result = await provider.executeCommand(`git -C "${esc}" pull`);
|
|
230
|
+
assertSuccess(result, 'git pull');
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=git-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-operations.js","sourceRoot":"","sources":["../../../src/sandbox/operations/git-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import type { SandboxProviderType, SandboxConfig, CommandResult, CodeExecutionResult, ISandboxProvider, SandboxInfo, SandboxCommand, WriteFileContent, WriteFileEntry, UploadFileEntry, ReadFileOptions, IGitOperations, RunCmdEntry, NpmInstallEntry, BunInstallEntry, AptInstallEntry, PipInstallEntry, GitCloneEntry, SessionMetadata, SessionInitSetup, TaskRequest, SandboxAgentStreamChunk, SessionMetadataCallable } from '../../types.js';
|
|
2
|
+
import { AgentType, StreamEventType } from '../../types.js';
|
|
3
|
+
import type { SandboxCommandResult, StreamEventsOptions } from '../../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Base sandbox provider
|
|
6
|
+
* Abstract implementation that provides common functionality
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class BaseSandboxProvider implements ISandboxProvider {
|
|
9
|
+
protected initialized: boolean;
|
|
10
|
+
protected config: SandboxConfig;
|
|
11
|
+
protected sandboxId: string | null;
|
|
12
|
+
protected client: any | null;
|
|
13
|
+
readonly type: SandboxProviderType;
|
|
14
|
+
protected _git: IGitOperations;
|
|
15
|
+
constructor(type: SandboxProviderType, config?: SandboxConfig);
|
|
16
|
+
get git(): IGitOperations;
|
|
17
|
+
abstract getClient(): any;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize/create a sandbox
|
|
20
|
+
* If fromSandboxId is provided in config, will call fromSandbox instead
|
|
21
|
+
* After initialization, runs any setup commands defined in config (runCmd, npmInstall, etc.)
|
|
22
|
+
*/
|
|
23
|
+
initialize(config?: SandboxConfig): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Provider-specific initialization (creates new sandbox)
|
|
26
|
+
*/
|
|
27
|
+
protected abstract initializeSandbox(config?: SandboxConfig): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Connect to an existing sandbox by ID
|
|
30
|
+
*/
|
|
31
|
+
abstract fromSandbox(sandboxId: string, config?: SandboxConfig): Promise<any>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if sandbox is initialized
|
|
34
|
+
*/
|
|
35
|
+
isInitialized(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Close/cleanup the sandbox
|
|
38
|
+
*/
|
|
39
|
+
abstract close(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Get sandbox ID
|
|
42
|
+
*/
|
|
43
|
+
getSandboxId(): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Execute a command in the sandbox
|
|
46
|
+
* Handles detach option by wrapping with nohup if specified
|
|
47
|
+
*/
|
|
48
|
+
executeCommand(command: string, options?: {
|
|
49
|
+
cwd?: string;
|
|
50
|
+
env?: Record<string, string>;
|
|
51
|
+
timeout?: number;
|
|
52
|
+
detach?: boolean;
|
|
53
|
+
}): Promise<CommandResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Provider-specific command execution (implemented by each provider)
|
|
56
|
+
*/
|
|
57
|
+
protected abstract executeCommandRaw(command: string, options?: {
|
|
58
|
+
cwd?: string;
|
|
59
|
+
env?: Record<string, string>;
|
|
60
|
+
timeout?: number;
|
|
61
|
+
}): Promise<CommandResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Run code (e.g., Python, JavaScript) in the sandbox
|
|
64
|
+
*/
|
|
65
|
+
abstract runCode(code: string, options?: {
|
|
66
|
+
language?: string;
|
|
67
|
+
env?: Record<string, string>;
|
|
68
|
+
timeout?: number;
|
|
69
|
+
onStdout?: (data: string) => void;
|
|
70
|
+
onStderr?: (data: string) => void;
|
|
71
|
+
}): Promise<CodeExecutionResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Upload a file to the sandbox (single: source path or URL, remotePath; or batch entries).
|
|
74
|
+
* Resolves source to bytes in base, then calls writeFileSingle so providers need not duplicate fetch/read logic.
|
|
75
|
+
*/
|
|
76
|
+
uploadFile(sourceOrEntries: string | UploadFileEntry[], remotePath?: string): Promise<void>;
|
|
77
|
+
/** Resolve source (path or URL) to bytes and write via writeFileSingle. Override only if provider needs different behavior. */
|
|
78
|
+
protected uploadFileSingle(source: string, remotePath: string): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Download a file from the sandbox
|
|
81
|
+
*/
|
|
82
|
+
abstract downloadFile(remotePath: string, localPath: string): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Read a file from the sandbox (default format: text).
|
|
85
|
+
* Resolves bytes via readFileRaw, then converts to requested format via bytesToReadResult.
|
|
86
|
+
*/
|
|
87
|
+
readFile(path: string, options?: ReadFileOptions): Promise<string | Uint8Array | Blob | ReadableStream<Uint8Array>>;
|
|
88
|
+
/** Provider implements reading file as raw bytes (Uint8Array). */
|
|
89
|
+
protected abstract readFileRaw(path: string): Promise<Uint8Array>;
|
|
90
|
+
/**
|
|
91
|
+
* Write file(s) to the sandbox (single path+content or batch entries)
|
|
92
|
+
*/
|
|
93
|
+
writeFile(pathOrEntries: string | WriteFileEntry[], content?: WriteFileContent): Promise<void>;
|
|
94
|
+
/** Provider implements single-file write */
|
|
95
|
+
protected abstract writeFileSingle(path: string, content: WriteFileContent): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Create a directory (recursive by default)
|
|
98
|
+
*/
|
|
99
|
+
abstract createDirectory(path: string, options?: {
|
|
100
|
+
recursive?: boolean;
|
|
101
|
+
}): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* List files in a directory
|
|
104
|
+
*/
|
|
105
|
+
abstract listFiles(path: string): Promise<string[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Check if a file exists
|
|
108
|
+
*/
|
|
109
|
+
abstract fileExists(path: string): Promise<boolean>;
|
|
110
|
+
/**
|
|
111
|
+
* Delete a file
|
|
112
|
+
*/
|
|
113
|
+
abstract deleteFile(path: string): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Get host URL for a service running on the specified port
|
|
116
|
+
* @param port - The port number to get the host for
|
|
117
|
+
* @returns A URL string (e.g., "localhost:3000" or "https://sandbox-id.provider.com")
|
|
118
|
+
*/
|
|
119
|
+
abstract getHost(port: number, timeout?: number): Promise<string>;
|
|
120
|
+
/**
|
|
121
|
+
* Get sandbox status
|
|
122
|
+
*/
|
|
123
|
+
abstract getStatus(): Promise<{
|
|
124
|
+
isRunning: boolean;
|
|
125
|
+
createdAt?: number;
|
|
126
|
+
[key: string]: unknown;
|
|
127
|
+
}>;
|
|
128
|
+
/**
|
|
129
|
+
* Get detailed sandbox information
|
|
130
|
+
*/
|
|
131
|
+
abstract getInfo(sandboxId?: string): Promise<SandboxInfo>;
|
|
132
|
+
/**
|
|
133
|
+
* Ensure sandbox is initialized before operation
|
|
134
|
+
*/
|
|
135
|
+
protected ensureInitialized(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Normalize path (remove leading/trailing slashes, handle ..)
|
|
138
|
+
*/
|
|
139
|
+
protected normalizePath(path: string): string;
|
|
140
|
+
/**
|
|
141
|
+
* Run all config setup steps (runCmd, npmInstall, bunInstall, aptInstall, pipInstall, gitClone)
|
|
142
|
+
* Filters by run option (creation, resume, default) based on isResume flag
|
|
143
|
+
* Background entries are fired without awaiting
|
|
144
|
+
*/
|
|
145
|
+
protected runConfigSetup(config: SandboxConfig, isResume: boolean): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Run a command or batch of commands
|
|
148
|
+
* If detach is true, runs with nohup and pipes output to {command_name}.log
|
|
149
|
+
*/
|
|
150
|
+
runCmd(entryOrEntries: RunCmdEntry | RunCmdEntry[]): Promise<CommandResult | CommandResult[]>;
|
|
151
|
+
/**
|
|
152
|
+
* Install npm package(s)
|
|
153
|
+
* If detach is true, runs with nohup and pipes output to log file
|
|
154
|
+
*/
|
|
155
|
+
npmInstall(entryOrEntries: NpmInstallEntry | NpmInstallEntry[]): Promise<CommandResult | CommandResult[]>;
|
|
156
|
+
/**
|
|
157
|
+
* Track if bun has been installed in this session
|
|
158
|
+
*/
|
|
159
|
+
private bunInstalled;
|
|
160
|
+
/**
|
|
161
|
+
* Ensure bun is installed, installing it if necessary
|
|
162
|
+
*/
|
|
163
|
+
protected ensureBunInstalled(): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* Install bun package(s) - ensures bun is installed first
|
|
166
|
+
* If detach is true, runs with nohup and pipes output to log file
|
|
167
|
+
*/
|
|
168
|
+
bunInstall(entryOrEntries: BunInstallEntry | BunInstallEntry[]): Promise<CommandResult | CommandResult[]>;
|
|
169
|
+
/**
|
|
170
|
+
* Track if apt-get update has been run in this session
|
|
171
|
+
*/
|
|
172
|
+
private aptUpdated;
|
|
173
|
+
/**
|
|
174
|
+
* Install apt package(s)
|
|
175
|
+
* If detach is true, runs with nohup and pipes output to log file
|
|
176
|
+
*/
|
|
177
|
+
aptInstall(entryOrEntries: AptInstallEntry | AptInstallEntry[]): Promise<CommandResult | CommandResult[]>;
|
|
178
|
+
/**
|
|
179
|
+
* Install pip package(s)
|
|
180
|
+
* If packages is empty array or empty string, uses -r requirements.txt
|
|
181
|
+
* If venv option is true, creates/uses .venv and updates .gitignore
|
|
182
|
+
* If detach is true, runs with nohup and pipes output to log file
|
|
183
|
+
*/
|
|
184
|
+
pipInstall(entryOrEntries: PipInstallEntry | PipInstallEntry[]): Promise<CommandResult | CommandResult[]>;
|
|
185
|
+
/**
|
|
186
|
+
* Clone git repository(ies)
|
|
187
|
+
* - Uses options.path for target directory (from SetupExecutionOptions)
|
|
188
|
+
* - Supports autoInstall to auto-detect and install dependencies
|
|
189
|
+
* - Supports onSuccess to run commands after successful clone
|
|
190
|
+
*/
|
|
191
|
+
gitCloneRepo(entryOrEntries: GitCloneEntry | GitCloneEntry[]): Promise<void>;
|
|
192
|
+
/**
|
|
193
|
+
* Check if the CLI daemon is running in this sandbox.
|
|
194
|
+
*
|
|
195
|
+
* @returns True if daemon is running, false otherwise
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```typescript
|
|
199
|
+
* const isRunning = await sandbox.checkDaemonStatus();
|
|
200
|
+
* if (!isRunning) {
|
|
201
|
+
* await sandbox.ensureDaemonRunning();
|
|
202
|
+
* }
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
checkDaemonStatus(): Promise<boolean>;
|
|
206
|
+
/**
|
|
207
|
+
* Ensure the CLI daemon is running in this sandbox.
|
|
208
|
+
* Checks status first, then starts the daemon if not running.
|
|
209
|
+
*
|
|
210
|
+
* @param options - Optional configuration
|
|
211
|
+
* @param options.startTimeout - Timeout in ms to wait for daemon to start (default: 3000)
|
|
212
|
+
* @param options.setSandboxId - Whether to set SANDBOX_ID env var (default: true)
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```typescript
|
|
216
|
+
* await sandbox.ensureDaemonRunning();
|
|
217
|
+
* // Daemon is now running and ready to accept commands
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
ensureDaemonRunning(options?: {
|
|
221
|
+
startTimeout?: number;
|
|
222
|
+
setSandboxId?: boolean;
|
|
223
|
+
}): Promise<void>;
|
|
224
|
+
/**
|
|
225
|
+
* Create a session in the sandbox by running the intella CLI command.
|
|
226
|
+
*
|
|
227
|
+
* This method executes `intella session:init` inside the sandbox to create
|
|
228
|
+
* a new session with the specified configuration.
|
|
229
|
+
*
|
|
230
|
+
* @param options - Session creation options
|
|
231
|
+
* @returns The created session metadata
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```typescript
|
|
235
|
+
* const session = await sandbox.createSession({
|
|
236
|
+
* agentType: AgentType.CLAUDE,
|
|
237
|
+
* model: 'sonnet',
|
|
238
|
+
* });
|
|
239
|
+
* console.log('Session created:', session.id);
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
createSession(options: {
|
|
243
|
+
sessionId?: string;
|
|
244
|
+
agentType: AgentType;
|
|
245
|
+
model?: string;
|
|
246
|
+
metadata?: Record<string, unknown>;
|
|
247
|
+
setup?: SessionInitSetup;
|
|
248
|
+
}): Promise<SessionMetadataCallable>;
|
|
249
|
+
/**
|
|
250
|
+
* Run setup steps for a session (git clone, npm install, etc.)
|
|
251
|
+
*
|
|
252
|
+
* @param sessionId - Session ID
|
|
253
|
+
* @param setup - Setup configuration
|
|
254
|
+
*/
|
|
255
|
+
runSessionSetup(sessionId: string, setup: SessionInitSetup): Promise<void>;
|
|
256
|
+
/**
|
|
257
|
+
* End a session in the sandbox by running the intella CLI command.
|
|
258
|
+
*
|
|
259
|
+
* @param sessionId - Session ID to end
|
|
260
|
+
* @returns The ended session metadata
|
|
261
|
+
*/
|
|
262
|
+
endSession(sessionId: string): Promise<SessionMetadata | null>;
|
|
263
|
+
/**
|
|
264
|
+
* Get a session from the sandbox by running the intella CLI command.
|
|
265
|
+
*
|
|
266
|
+
* @param sessionId - Session ID to get
|
|
267
|
+
* @returns The session metadata or null if not found
|
|
268
|
+
*/
|
|
269
|
+
getSession(sessionId: string): Promise<SessionMetadata | null>;
|
|
270
|
+
/** Publish a command to this sandbox's Redis stream */
|
|
271
|
+
publishCommand(command: SandboxCommand, redisUrl?: string): Promise<string>;
|
|
272
|
+
/** Stream events from Session or Sandbox Redis stream (Sandbox uses this instance's ID) */
|
|
273
|
+
streamEvents(eventType: StreamEventType, options?: StreamEventsOptions): AsyncIterable<SandboxAgentStreamChunk | SandboxCommandResult>;
|
|
274
|
+
/**
|
|
275
|
+
* Publish agent:execute command and stream response from session (requires taskRequest.sessionId).
|
|
276
|
+
* Convenience wrapper around publishCommand + readFromSession.
|
|
277
|
+
*/
|
|
278
|
+
executeAgent(taskRequest: TaskRequest, agentType?: AgentType, options?: {
|
|
279
|
+
redisUrl?: string;
|
|
280
|
+
apiKeys?: Record<string, string>;
|
|
281
|
+
}): AsyncIterable<SandboxAgentStreamChunk>;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=base-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-provider.d.ts","sourceRoot":"","sources":["../../../src/sandbox/providers/base-provider.ts"],"names":[],"mappings":"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"}
|