@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.
Files changed (163) hide show
  1. package/README.md +70 -6
  2. package/dist/agent-manager.d.ts +4 -4
  3. package/dist/agent-manager.d.ts.map +1 -1
  4. package/dist/agent-manager.js +12 -7
  5. package/dist/agent-manager.js.map +1 -1
  6. package/dist/agents/base-agent.d.ts +35 -2
  7. package/dist/agents/base-agent.d.ts.map +1 -1
  8. package/dist/agents/base-agent.js +280 -24
  9. package/dist/agents/base-agent.js.map +1 -1
  10. package/dist/agents/claude-agent.d.ts +1 -1
  11. package/dist/agents/claude-agent.d.ts.map +1 -1
  12. package/dist/agents/claude-agent.js +2 -1
  13. package/dist/agents/claude-agent.js.map +1 -1
  14. package/dist/agents/codex-agent.d.ts +1 -1
  15. package/dist/agents/codex-agent.d.ts.map +1 -1
  16. package/dist/agents/codex-agent.js +2 -1
  17. package/dist/agents/codex-agent.js.map +1 -1
  18. package/dist/agents/intella-lite-agent.d.ts +1 -1
  19. package/dist/agents/intella-lite-agent.d.ts.map +1 -1
  20. package/dist/agents/intella-lite-agent.js +2 -1
  21. package/dist/agents/intella-lite-agent.js.map +1 -1
  22. package/dist/agents/opencode-agent.d.ts +1 -1
  23. package/dist/agents/opencode-agent.d.ts.map +1 -1
  24. package/dist/agents/opencode-agent.js +2 -3
  25. package/dist/agents/opencode-agent.js.map +1 -1
  26. package/dist/index.d.ts +22 -12
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +31 -11
  29. package/dist/index.js.map +1 -1
  30. package/dist/sandbox/{agent-installers.d.ts → agents/agent-installers.d.ts} +1 -1
  31. package/dist/sandbox/agents/agent-installers.d.ts.map +1 -0
  32. package/dist/sandbox/{agent-installers.js → agents/agent-installers.js} +5 -4
  33. package/dist/sandbox/agents/agent-installers.js.map +1 -0
  34. package/dist/sandbox/{agent-setup.d.ts → agents/agent-setup.d.ts} +1 -1
  35. package/dist/sandbox/agents/agent-setup.d.ts.map +1 -0
  36. package/dist/sandbox/{agent-setup.js → agents/agent-setup.js} +3 -2
  37. package/dist/sandbox/agents/agent-setup.js.map +1 -0
  38. package/dist/sandbox/agents/agents.d.ts +49 -0
  39. package/dist/sandbox/agents/agents.d.ts.map +1 -0
  40. package/dist/sandbox/agents/agents.js +71 -0
  41. package/dist/sandbox/agents/agents.js.map +1 -0
  42. package/dist/sandbox/config.d.ts +1 -1
  43. package/dist/sandbox/config.d.ts.map +1 -1
  44. package/dist/sandbox/config.js +26 -18
  45. package/dist/sandbox/config.js.map +1 -1
  46. package/dist/sandbox/file-utils.d.ts +20 -0
  47. package/dist/sandbox/file-utils.d.ts.map +1 -0
  48. package/dist/sandbox/file-utils.js +101 -0
  49. package/dist/sandbox/file-utils.js.map +1 -0
  50. package/dist/sandbox/operations/code-operations.d.ts +68 -0
  51. package/dist/sandbox/operations/code-operations.d.ts.map +1 -0
  52. package/dist/sandbox/operations/code-operations.js +208 -0
  53. package/dist/sandbox/operations/code-operations.js.map +1 -0
  54. package/dist/sandbox/operations/git-operations.d.ts +27 -0
  55. package/dist/sandbox/operations/git-operations.d.ts.map +1 -0
  56. package/dist/sandbox/operations/git-operations.js +235 -0
  57. package/dist/sandbox/operations/git-operations.js.map +1 -0
  58. package/dist/sandbox/providers/base-provider.d.ts +283 -0
  59. package/dist/sandbox/providers/base-provider.d.ts.map +1 -0
  60. package/dist/sandbox/providers/base-provider.js +816 -0
  61. package/dist/sandbox/providers/base-provider.js.map +1 -0
  62. package/dist/sandbox/{daytona-provider.d.ts → providers/daytona-provider.d.ts} +19 -16
  63. package/dist/sandbox/providers/daytona-provider.d.ts.map +1 -0
  64. package/dist/sandbox/{daytona-provider.js → providers/daytona-provider.js} +96 -27
  65. package/dist/sandbox/providers/daytona-provider.js.map +1 -0
  66. package/dist/sandbox/{e2b-provider.d.ts → providers/e2b-provider.d.ts} +16 -10
  67. package/dist/sandbox/providers/e2b-provider.d.ts.map +1 -0
  68. package/dist/sandbox/{e2b-provider.js → providers/e2b-provider.js} +51 -29
  69. package/dist/sandbox/providers/e2b-provider.js.map +1 -0
  70. package/dist/sandbox/{local-provider.d.ts → providers/local-provider.d.ts} +12 -6
  71. package/dist/sandbox/providers/local-provider.d.ts.map +1 -0
  72. package/dist/sandbox/{local-provider.js → providers/local-provider.js} +24 -21
  73. package/dist/sandbox/providers/local-provider.js.map +1 -0
  74. package/dist/sandbox/{modal-provider.d.ts → providers/modal-provider.d.ts} +18 -12
  75. package/dist/sandbox/providers/modal-provider.d.ts.map +1 -0
  76. package/dist/sandbox/{modal-provider.js → providers/modal-provider.js} +49 -29
  77. package/dist/sandbox/providers/modal-provider.js.map +1 -0
  78. package/dist/sandbox/{vercel-provider.d.ts → providers/vercel-provider.d.ts} +19 -14
  79. package/dist/sandbox/providers/vercel-provider.d.ts.map +1 -0
  80. package/dist/sandbox/{vercel-provider.js → providers/vercel-provider.js} +41 -42
  81. package/dist/sandbox/providers/vercel-provider.js.map +1 -0
  82. package/dist/sandbox/utils/detector.d.ts +28 -0
  83. package/dist/sandbox/utils/detector.d.ts.map +1 -0
  84. package/dist/sandbox/utils/detector.js +243 -0
  85. package/dist/sandbox/utils/detector.js.map +1 -0
  86. package/dist/sandbox-manager.js +5 -5
  87. package/dist/sandbox-manager.js.map +1 -1
  88. package/dist/sdk.d.ts +4 -3
  89. package/dist/sdk.d.ts.map +1 -1
  90. package/dist/sdk.js +7 -3
  91. package/dist/sdk.js.map +1 -1
  92. package/dist/session/execution-store.d.ts +71 -0
  93. package/dist/session/execution-store.d.ts.map +1 -0
  94. package/dist/session/execution-store.js +156 -0
  95. package/dist/session/execution-store.js.map +1 -0
  96. package/dist/session/index.d.ts +14 -0
  97. package/dist/session/index.d.ts.map +1 -0
  98. package/dist/session/index.js +20 -0
  99. package/dist/session/index.js.map +1 -0
  100. package/dist/session/manager.d.ts +164 -0
  101. package/dist/session/manager.d.ts.map +1 -0
  102. package/dist/session/manager.js +493 -0
  103. package/dist/session/manager.js.map +1 -0
  104. package/dist/session/store.d.ts +20 -0
  105. package/dist/session/store.d.ts.map +1 -0
  106. package/dist/session/store.js +69 -0
  107. package/dist/session/store.js.map +1 -0
  108. package/dist/session/types.d.ts +57 -0
  109. package/dist/session/types.d.ts.map +1 -0
  110. package/dist/session/types.js +2 -0
  111. package/dist/session/types.js.map +1 -0
  112. package/dist/types.d.ts +622 -19
  113. package/dist/types.d.ts.map +1 -1
  114. package/dist/types.js +35 -0
  115. package/dist/types.js.map +1 -1
  116. package/dist/utils/cli-daemon.d.ts.map +1 -1
  117. package/dist/utils/cli-daemon.js +1 -3
  118. package/dist/utils/cli-daemon.js.map +1 -1
  119. package/dist/utils/machine-id.d.ts +8 -0
  120. package/dist/utils/machine-id.d.ts.map +1 -0
  121. package/dist/utils/machine-id.js +19 -0
  122. package/dist/utils/machine-id.js.map +1 -0
  123. package/dist/utils/redis/client.d.ts +18 -0
  124. package/dist/utils/redis/client.d.ts.map +1 -0
  125. package/dist/utils/redis/client.js +52 -0
  126. package/dist/utils/redis/client.js.map +1 -0
  127. package/dist/utils/redis/index.d.ts +2 -0
  128. package/dist/utils/redis/index.d.ts.map +1 -0
  129. package/dist/utils/redis/index.js +2 -0
  130. package/dist/utils/redis/index.js.map +1 -0
  131. package/dist/utils/{redis-stream.d.ts → redis/stream.d.ts} +41 -74
  132. package/dist/utils/redis/stream.d.ts.map +1 -0
  133. package/dist/utils/{redis-stream.js → redis/stream.js} +133 -69
  134. package/dist/utils/redis/stream.js.map +1 -0
  135. package/dist/utils/repo-context.d.ts +16 -0
  136. package/dist/utils/repo-context.d.ts.map +1 -0
  137. package/dist/utils/repo-context.js +65 -0
  138. package/dist/utils/repo-context.js.map +1 -0
  139. package/dist/utils/tool-response.d.ts +20 -0
  140. package/dist/utils/tool-response.d.ts.map +1 -0
  141. package/dist/utils/tool-response.js +68 -0
  142. package/dist/utils/tool-response.js.map +1 -0
  143. package/package.json +23 -8
  144. package/dist/sandbox/agent-installers.d.ts.map +0 -1
  145. package/dist/sandbox/agent-installers.js.map +0 -1
  146. package/dist/sandbox/agent-setup.d.ts.map +0 -1
  147. package/dist/sandbox/agent-setup.js.map +0 -1
  148. package/dist/sandbox/base-provider.d.ts +0 -106
  149. package/dist/sandbox/base-provider.d.ts.map +0 -1
  150. package/dist/sandbox/base-provider.js +0 -74
  151. package/dist/sandbox/base-provider.js.map +0 -1
  152. package/dist/sandbox/daytona-provider.d.ts.map +0 -1
  153. package/dist/sandbox/daytona-provider.js.map +0 -1
  154. package/dist/sandbox/e2b-provider.d.ts.map +0 -1
  155. package/dist/sandbox/e2b-provider.js.map +0 -1
  156. package/dist/sandbox/local-provider.d.ts.map +0 -1
  157. package/dist/sandbox/local-provider.js.map +0 -1
  158. package/dist/sandbox/modal-provider.d.ts.map +0 -1
  159. package/dist/sandbox/modal-provider.js.map +0 -1
  160. package/dist/sandbox/vercel-provider.d.ts.map +0 -1
  161. package/dist/sandbox/vercel-provider.js.map +0 -1
  162. package/dist/utils/redis-stream.d.ts.map +0 -1
  163. 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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"}