@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
package/dist/sandbox/config.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
import { AgentType } from '../types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Validate that an agent type requires a binary
|
|
3
4
|
*/
|
|
4
5
|
export function agentRequiresBinary(agentType) {
|
|
5
|
-
return agentType ===
|
|
6
|
+
return agentType === AgentType.CLAUDE || agentType === AgentType.CODEX || agentType === AgentType.OPENCODE;
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
8
9
|
* Get the npm package name for an agent binary
|
|
9
10
|
*/
|
|
10
11
|
export function getAgentBinaryPackage(agentType) {
|
|
11
12
|
switch (agentType) {
|
|
12
|
-
case
|
|
13
|
+
case AgentType.CLAUDE:
|
|
13
14
|
return '@anthropic-ai/claude-code';
|
|
14
|
-
case
|
|
15
|
+
case AgentType.CODEX:
|
|
15
16
|
return '@openai/codex';
|
|
16
|
-
case
|
|
17
|
+
case AgentType.OPENCODE:
|
|
17
18
|
return 'opencode-ai';
|
|
18
|
-
case
|
|
19
|
+
case AgentType.INTELLA_LITE:
|
|
19
20
|
return null;
|
|
20
21
|
default:
|
|
21
22
|
return null;
|
|
@@ -26,13 +27,13 @@ export function getAgentBinaryPackage(agentType) {
|
|
|
26
27
|
*/
|
|
27
28
|
export function getAgentBinaryCommand(agentType) {
|
|
28
29
|
switch (agentType) {
|
|
29
|
-
case
|
|
30
|
+
case AgentType.CLAUDE:
|
|
30
31
|
return 'claude';
|
|
31
|
-
case
|
|
32
|
+
case AgentType.CODEX:
|
|
32
33
|
return 'codex';
|
|
33
|
-
case
|
|
34
|
+
case AgentType.OPENCODE:
|
|
34
35
|
return 'opencode';
|
|
35
|
-
case
|
|
36
|
+
case AgentType.INTELLA_LITE:
|
|
36
37
|
return null;
|
|
37
38
|
default:
|
|
38
39
|
return null;
|
|
@@ -43,13 +44,13 @@ export function getAgentBinaryCommand(agentType) {
|
|
|
43
44
|
*/
|
|
44
45
|
export function getRequiredApiKeys(agentType) {
|
|
45
46
|
switch (agentType) {
|
|
46
|
-
case
|
|
47
|
+
case AgentType.CLAUDE:
|
|
47
48
|
return ['ANTHROPIC_API_KEY'];
|
|
48
|
-
case
|
|
49
|
+
case AgentType.CODEX:
|
|
49
50
|
return ['OPENAI_API_KEY', 'AI_GATEWAY_API_KEY']; // Either one works
|
|
50
|
-
case
|
|
51
|
-
return ['OPENAI_API_KEY', 'ANTHROPIC_API_KEY']; // At least one
|
|
52
|
-
case
|
|
51
|
+
case AgentType.OPENCODE:
|
|
52
|
+
return ['OPENAI_API_KEY', 'ANTHROPIC_API_KEY', 'AI_GATEWAY_API_KEY']; // At least one
|
|
53
|
+
case AgentType.INTELLA_LITE:
|
|
53
54
|
return ['OPENAI_API_KEY'];
|
|
54
55
|
default:
|
|
55
56
|
return [];
|
|
@@ -69,19 +70,26 @@ export function validateApiKeys(agentType, apiKeys) {
|
|
|
69
70
|
missing.push(key);
|
|
70
71
|
}
|
|
71
72
|
}
|
|
73
|
+
// Special handling for claude (ANTHROPIC_API_KEY)
|
|
74
|
+
if (agentType === AgentType.CLAUDE) {
|
|
75
|
+
if (apiKeys.ANTHROPIC_API_KEY) {
|
|
76
|
+
return { valid: true, missing: [] };
|
|
77
|
+
}
|
|
78
|
+
return { valid: false, missing: ['ANTHROPIC_API_KEY'] };
|
|
79
|
+
}
|
|
72
80
|
// Special handling for codex (either OPENAI_API_KEY or AI_GATEWAY_API_KEY)
|
|
73
|
-
if (agentType ===
|
|
81
|
+
if (agentType === AgentType.CODEX) {
|
|
74
82
|
if (apiKeys.OPENAI_API_KEY || apiKeys.AI_GATEWAY_API_KEY) {
|
|
75
83
|
return { valid: true, missing: [] };
|
|
76
84
|
}
|
|
77
85
|
return { valid: false, missing: ['OPENAI_API_KEY or AI_GATEWAY_API_KEY'] };
|
|
78
86
|
}
|
|
79
87
|
// Special handling for opencode (at least one API key)
|
|
80
|
-
if (agentType ===
|
|
81
|
-
if (apiKeys.OPENAI_API_KEY || apiKeys.ANTHROPIC_API_KEY) {
|
|
88
|
+
if (agentType === AgentType.OPENCODE) {
|
|
89
|
+
if (apiKeys.OPENAI_API_KEY || apiKeys.ANTHROPIC_API_KEY || apiKeys.GEMINI_API_KEY || apiKeys.AI_GATEWAY_API_KEY) {
|
|
82
90
|
return { valid: true, missing: [] };
|
|
83
91
|
}
|
|
84
|
-
return { valid: false, missing: ['OPENAI_API_KEY or ANTHROPIC_API_KEY'] };
|
|
92
|
+
return { valid: false, missing: ['OPENAI_API_KEY or ANTHROPIC_API_KEY or GEMINI_API_KEY'] };
|
|
85
93
|
}
|
|
86
94
|
return {
|
|
87
95
|
valid: missing.length === 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/sandbox/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/sandbox/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { WriteFileContent, ReadFileFormat } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Normalize WriteFileContent to Uint8Array for use in sandbox file operations.
|
|
4
|
+
*/
|
|
5
|
+
export declare function contentToBytes(content: WriteFileContent): Promise<Uint8Array>;
|
|
6
|
+
/**
|
|
7
|
+
* Detect if source string is a URL (http, https, or file).
|
|
8
|
+
*/
|
|
9
|
+
export declare function isUrlSource(source: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve a source (local path or http(s)/file URL) to bytes.
|
|
12
|
+
* Used by base uploadFileSingle so providers only implement writeFileSingle.
|
|
13
|
+
*/
|
|
14
|
+
export declare function sourceToBytes(source: string): Promise<Uint8Array>;
|
|
15
|
+
/**
|
|
16
|
+
* Convert raw bytes (base format) to the requested readFile format.
|
|
17
|
+
* Used by base readFile so providers only implement readFileRaw.
|
|
18
|
+
*/
|
|
19
|
+
export declare function bytesToReadResult(bytes: Uint8Array, format: ReadFileFormat): string | Uint8Array | Blob | ReadableStream<Uint8Array>;
|
|
20
|
+
//# sourceMappingURL=file-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/sandbox/file-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwCnF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAMnD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,cAAc,GACrB,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAkBzD"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize WriteFileContent to Uint8Array for use in sandbox file operations.
|
|
3
|
+
*/
|
|
4
|
+
export async function contentToBytes(content) {
|
|
5
|
+
if (typeof content === 'string') {
|
|
6
|
+
return new TextEncoder().encode(content);
|
|
7
|
+
}
|
|
8
|
+
if (content instanceof ArrayBuffer) {
|
|
9
|
+
return new Uint8Array(content);
|
|
10
|
+
}
|
|
11
|
+
if (content instanceof Uint8Array) {
|
|
12
|
+
return content;
|
|
13
|
+
}
|
|
14
|
+
if (typeof Buffer !== 'undefined' && Buffer.isBuffer(content)) {
|
|
15
|
+
return new Uint8Array(content);
|
|
16
|
+
}
|
|
17
|
+
if (content instanceof Blob) {
|
|
18
|
+
const ab = await content.arrayBuffer();
|
|
19
|
+
return new Uint8Array(ab);
|
|
20
|
+
}
|
|
21
|
+
if (typeof content.getReader === 'function') {
|
|
22
|
+
const stream = content;
|
|
23
|
+
const reader = stream.getReader();
|
|
24
|
+
const chunks = [];
|
|
25
|
+
try {
|
|
26
|
+
while (true) {
|
|
27
|
+
const { done, value } = await reader.read();
|
|
28
|
+
if (done)
|
|
29
|
+
break;
|
|
30
|
+
if (value)
|
|
31
|
+
chunks.push(value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
reader.releaseLock();
|
|
36
|
+
}
|
|
37
|
+
const totalLength = chunks.reduce((acc, c) => acc + c.length, 0);
|
|
38
|
+
const out = new Uint8Array(totalLength);
|
|
39
|
+
let offset = 0;
|
|
40
|
+
for (const chunk of chunks) {
|
|
41
|
+
out.set(chunk, offset);
|
|
42
|
+
offset += chunk.length;
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
throw new Error('Unsupported content type for writeFile');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Detect if source string is a URL (http, https, or file).
|
|
50
|
+
*/
|
|
51
|
+
export function isUrlSource(source) {
|
|
52
|
+
return (source.startsWith('http://') ||
|
|
53
|
+
source.startsWith('https://') ||
|
|
54
|
+
source.startsWith('file://'));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve a source (local path or http(s)/file URL) to bytes.
|
|
58
|
+
* Used by base uploadFileSingle so providers only implement writeFileSingle.
|
|
59
|
+
*/
|
|
60
|
+
export async function sourceToBytes(source) {
|
|
61
|
+
if (source.startsWith('http://') || source.startsWith('https://')) {
|
|
62
|
+
const res = await fetch(source);
|
|
63
|
+
if (!res.ok)
|
|
64
|
+
throw new Error(`Failed to fetch ${source}: ${res.status}`);
|
|
65
|
+
return new Uint8Array(await res.arrayBuffer());
|
|
66
|
+
}
|
|
67
|
+
if (source.startsWith('file://')) {
|
|
68
|
+
const { fileURLToPath } = await import('url');
|
|
69
|
+
const fs = await import('fs/promises');
|
|
70
|
+
const localPath = fileURLToPath(source);
|
|
71
|
+
const buf = await fs.readFile(localPath);
|
|
72
|
+
return new Uint8Array(buf);
|
|
73
|
+
}
|
|
74
|
+
const fs = await import('fs/promises');
|
|
75
|
+
const buf = await fs.readFile(source);
|
|
76
|
+
return new Uint8Array(buf);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Convert raw bytes (base format) to the requested readFile format.
|
|
80
|
+
* Used by base readFile so providers only implement readFileRaw.
|
|
81
|
+
*/
|
|
82
|
+
export function bytesToReadResult(bytes, format) {
|
|
83
|
+
switch (format) {
|
|
84
|
+
case 'text':
|
|
85
|
+
return new TextDecoder().decode(bytes);
|
|
86
|
+
case 'bytes':
|
|
87
|
+
return bytes;
|
|
88
|
+
case 'blob':
|
|
89
|
+
return new Blob([new Uint8Array(bytes)]);
|
|
90
|
+
case 'stream':
|
|
91
|
+
return new ReadableStream({
|
|
92
|
+
start(controller) {
|
|
93
|
+
controller.enqueue(bytes);
|
|
94
|
+
controller.close();
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
default:
|
|
98
|
+
return new TextDecoder().decode(bytes);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=file-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/sandbox/file-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { CommandResult, ISandboxProvider } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detected package manager type
|
|
4
|
+
*/
|
|
5
|
+
export type PackageManagerType = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'pip' | 'pipenv' | 'poetry' | 'none';
|
|
6
|
+
/**
|
|
7
|
+
* Detection result for a codebase
|
|
8
|
+
*/
|
|
9
|
+
export interface CodebaseDetectionResult {
|
|
10
|
+
/** Detected package managers */
|
|
11
|
+
packageManagers: PackageManagerType[];
|
|
12
|
+
/** Has package.json */
|
|
13
|
+
hasPackageJson: boolean;
|
|
14
|
+
/** Has requirements.txt */
|
|
15
|
+
hasRequirementsTxt: boolean;
|
|
16
|
+
/** Has Pipfile */
|
|
17
|
+
hasPipfile: boolean;
|
|
18
|
+
/** Has pyproject.toml (poetry) */
|
|
19
|
+
hasPyprojectToml: boolean;
|
|
20
|
+
/** Lockfile detected */
|
|
21
|
+
lockfile?: 'package-lock.json' | 'yarn.lock' | 'pnpm-lock.yaml' | 'bun.lockb' | 'Pipfile.lock' | 'poetry.lock';
|
|
22
|
+
/** Primary package manager (best guess based on lockfile) */
|
|
23
|
+
primary: PackageManagerType;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Auto-install result
|
|
27
|
+
*/
|
|
28
|
+
export interface AutoInstallResult {
|
|
29
|
+
/** Whether install was successful */
|
|
30
|
+
success: boolean;
|
|
31
|
+
/** Package manager used */
|
|
32
|
+
packageManager: PackageManagerType;
|
|
33
|
+
/** Command result */
|
|
34
|
+
result?: CommandResult;
|
|
35
|
+
/** Error message if failed */
|
|
36
|
+
error?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Detect the package manager(s) used in a codebase
|
|
40
|
+
*/
|
|
41
|
+
export declare function detectCodebase(provider: ISandboxProvider, path: string): Promise<CodebaseDetectionResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Get the install command for a package manager
|
|
44
|
+
*/
|
|
45
|
+
export declare function getInstallCommand(packageManager: PackageManagerType): string;
|
|
46
|
+
/**
|
|
47
|
+
* Auto-install a codebase by detecting and running the appropriate package manager
|
|
48
|
+
*/
|
|
49
|
+
export declare function autoInstallCodebase(provider: ISandboxProvider, path: string, options?: {
|
|
50
|
+
/** Prefer a specific package manager if multiple are detected */
|
|
51
|
+
prefer?: PackageManagerType;
|
|
52
|
+
/** Timeout for install command */
|
|
53
|
+
timeout?: number;
|
|
54
|
+
/** Use venv for Python projects */
|
|
55
|
+
useVenv?: boolean;
|
|
56
|
+
}): Promise<AutoInstallResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Ensure a Python virtual environment exists
|
|
59
|
+
*/
|
|
60
|
+
export declare function ensureVenv(provider: ISandboxProvider, path: string): Promise<{
|
|
61
|
+
created: boolean;
|
|
62
|
+
venvPath: string;
|
|
63
|
+
}>;
|
|
64
|
+
/**
|
|
65
|
+
* Ensure a .gitignore entry exists
|
|
66
|
+
*/
|
|
67
|
+
export declare function ensureGitignoreEntry(provider: ISandboxProvider, path: string, entry: string): Promise<void>;
|
|
68
|
+
//# sourceMappingURL=code-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-operations.d.ts","sourceRoot":"","sources":["../../../src/sandbox/operations/code-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExG;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,uBAAuB;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,mBAAmB,GAAG,WAAW,GAAG,gBAAgB,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC;IAC/G,6DAA6D;IAC7D,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,cAAc,EAAE,kBAAkB,CAAC;IACnC,qBAAqB;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,uBAAuB,CAAC,CAkFlC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,CAmB5E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,iEAAiE;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,OAAO,CAAC,iBAAiB,CAAC,CA2D5B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBjD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect the package manager(s) used in a codebase
|
|
3
|
+
*/
|
|
4
|
+
export async function detectCodebase(provider, path) {
|
|
5
|
+
const result = {
|
|
6
|
+
packageManagers: [],
|
|
7
|
+
hasPackageJson: false,
|
|
8
|
+
hasRequirementsTxt: false,
|
|
9
|
+
hasPipfile: false,
|
|
10
|
+
hasPyprojectToml: false,
|
|
11
|
+
primary: 'none',
|
|
12
|
+
};
|
|
13
|
+
// Check for files in parallel
|
|
14
|
+
const [hasPackageJson, hasRequirementsTxt, hasPipfile, hasPyprojectToml, hasPackageLock, hasYarnLock, hasPnpmLock, hasBunLock, hasPipfileLock, hasPoetryLock,] = await Promise.all([
|
|
15
|
+
provider.fileExists(`${path}/package.json`),
|
|
16
|
+
provider.fileExists(`${path}/requirements.txt`),
|
|
17
|
+
provider.fileExists(`${path}/Pipfile`),
|
|
18
|
+
provider.fileExists(`${path}/pyproject.toml`),
|
|
19
|
+
provider.fileExists(`${path}/package-lock.json`),
|
|
20
|
+
provider.fileExists(`${path}/yarn.lock`),
|
|
21
|
+
provider.fileExists(`${path}/pnpm-lock.yaml`),
|
|
22
|
+
provider.fileExists(`${path}/bun.lockb`),
|
|
23
|
+
provider.fileExists(`${path}/Pipfile.lock`),
|
|
24
|
+
provider.fileExists(`${path}/poetry.lock`),
|
|
25
|
+
]);
|
|
26
|
+
result.hasPackageJson = hasPackageJson;
|
|
27
|
+
result.hasRequirementsTxt = hasRequirementsTxt;
|
|
28
|
+
result.hasPipfile = hasPipfile;
|
|
29
|
+
result.hasPyprojectToml = hasPyprojectToml;
|
|
30
|
+
// Detect lockfile and infer package manager
|
|
31
|
+
if (hasBunLock) {
|
|
32
|
+
result.lockfile = 'bun.lockb';
|
|
33
|
+
result.packageManagers.push('bun');
|
|
34
|
+
result.primary = 'bun';
|
|
35
|
+
}
|
|
36
|
+
else if (hasPnpmLock) {
|
|
37
|
+
result.lockfile = 'pnpm-lock.yaml';
|
|
38
|
+
result.packageManagers.push('pnpm');
|
|
39
|
+
result.primary = 'pnpm';
|
|
40
|
+
}
|
|
41
|
+
else if (hasYarnLock) {
|
|
42
|
+
result.lockfile = 'yarn.lock';
|
|
43
|
+
result.packageManagers.push('yarn');
|
|
44
|
+
result.primary = 'yarn';
|
|
45
|
+
}
|
|
46
|
+
else if (hasPackageLock) {
|
|
47
|
+
result.lockfile = 'package-lock.json';
|
|
48
|
+
result.packageManagers.push('npm');
|
|
49
|
+
result.primary = 'npm';
|
|
50
|
+
}
|
|
51
|
+
else if (hasPackageJson) {
|
|
52
|
+
// No lockfile but has package.json - default to npm
|
|
53
|
+
result.packageManagers.push('npm');
|
|
54
|
+
result.primary = 'npm';
|
|
55
|
+
}
|
|
56
|
+
// Python package managers
|
|
57
|
+
if (hasPoetryLock) {
|
|
58
|
+
result.lockfile = 'poetry.lock';
|
|
59
|
+
result.packageManagers.push('poetry');
|
|
60
|
+
if (result.primary === 'none')
|
|
61
|
+
result.primary = 'poetry';
|
|
62
|
+
}
|
|
63
|
+
else if (hasPipfileLock || hasPipfile) {
|
|
64
|
+
if (hasPipfileLock)
|
|
65
|
+
result.lockfile = 'Pipfile.lock';
|
|
66
|
+
result.packageManagers.push('pipenv');
|
|
67
|
+
if (result.primary === 'none')
|
|
68
|
+
result.primary = 'pipenv';
|
|
69
|
+
}
|
|
70
|
+
else if (hasRequirementsTxt) {
|
|
71
|
+
result.packageManagers.push('pip');
|
|
72
|
+
if (result.primary === 'none')
|
|
73
|
+
result.primary = 'pip';
|
|
74
|
+
}
|
|
75
|
+
else if (hasPyprojectToml) {
|
|
76
|
+
// pyproject.toml without poetry.lock - could be pip or poetry
|
|
77
|
+
result.packageManagers.push('pip');
|
|
78
|
+
if (result.primary === 'none')
|
|
79
|
+
result.primary = 'pip';
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get the install command for a package manager
|
|
85
|
+
*/
|
|
86
|
+
export function getInstallCommand(packageManager) {
|
|
87
|
+
switch (packageManager) {
|
|
88
|
+
case 'npm':
|
|
89
|
+
return 'npm install';
|
|
90
|
+
case 'yarn':
|
|
91
|
+
return 'yarn install';
|
|
92
|
+
case 'pnpm':
|
|
93
|
+
return 'pnpm install';
|
|
94
|
+
case 'bun':
|
|
95
|
+
return 'bun install';
|
|
96
|
+
case 'pip':
|
|
97
|
+
return 'pip3 install -r requirements.txt';
|
|
98
|
+
case 'pipenv':
|
|
99
|
+
return 'pipenv install';
|
|
100
|
+
case 'poetry':
|
|
101
|
+
return 'poetry install';
|
|
102
|
+
default:
|
|
103
|
+
return '';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Auto-install a codebase by detecting and running the appropriate package manager
|
|
108
|
+
*/
|
|
109
|
+
export async function autoInstallCodebase(provider, path, options) {
|
|
110
|
+
const detection = await detectCodebase(provider, path);
|
|
111
|
+
console.log(`Auto-install detected package manager: ${detection.primary}`);
|
|
112
|
+
if (detection.primary === 'none') {
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
packageManager: 'none',
|
|
116
|
+
error: 'No package manager detected in codebase',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// Determine which package manager to use
|
|
120
|
+
let packageManager = detection.primary;
|
|
121
|
+
if (options?.prefer && options.prefer !== 'none' && detection.packageManagers.includes(options.prefer)) {
|
|
122
|
+
packageManager = options.prefer;
|
|
123
|
+
}
|
|
124
|
+
// Handle Python venv if requested
|
|
125
|
+
if (options?.useVenv && ['pip', 'pipenv', 'poetry'].includes(packageManager)) {
|
|
126
|
+
await ensureVenv(provider, path);
|
|
127
|
+
}
|
|
128
|
+
const installCmd = getInstallCommand(packageManager);
|
|
129
|
+
if (!installCmd) {
|
|
130
|
+
return {
|
|
131
|
+
success: false,
|
|
132
|
+
packageManager,
|
|
133
|
+
error: `No install command for package manager: ${packageManager}`,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
// For Python with venv, activate venv first
|
|
138
|
+
let cmd = installCmd;
|
|
139
|
+
if (options?.useVenv && ['pip', 'pipenv', 'poetry'].includes(packageManager)) {
|
|
140
|
+
// Use venv's pip directly
|
|
141
|
+
if (packageManager === 'pip') {
|
|
142
|
+
cmd = '.venv/bin/pip3 install -r requirements.txt';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const result = await provider.executeCommand(cmd, {
|
|
146
|
+
cwd: path,
|
|
147
|
+
timeout: options?.timeout,
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
success: result.exitCode === 0,
|
|
151
|
+
packageManager,
|
|
152
|
+
result,
|
|
153
|
+
error: result.exitCode !== 0 ? String(result.stderr) : undefined,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
return {
|
|
158
|
+
success: false,
|
|
159
|
+
packageManager,
|
|
160
|
+
error: err instanceof Error ? err.message : String(err),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Ensure a Python virtual environment exists
|
|
166
|
+
*/
|
|
167
|
+
export async function ensureVenv(provider, path) {
|
|
168
|
+
// Check for existing venv
|
|
169
|
+
const hasVenv = await provider.fileExists(`${path}/.venv`);
|
|
170
|
+
const hasVenvAlt = await provider.fileExists(`${path}/venv`);
|
|
171
|
+
if (hasVenv) {
|
|
172
|
+
return { created: false, venvPath: `${path}/.venv` };
|
|
173
|
+
}
|
|
174
|
+
if (hasVenvAlt) {
|
|
175
|
+
return { created: false, venvPath: `${path}/venv` };
|
|
176
|
+
}
|
|
177
|
+
// Create venv
|
|
178
|
+
await provider.executeCommand('python3 -m venv .venv', { cwd: path });
|
|
179
|
+
// Update .gitignore to include .venv
|
|
180
|
+
await ensureGitignoreEntry(provider, path, '.venv');
|
|
181
|
+
return { created: true, venvPath: `${path}/.venv` };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Ensure a .gitignore entry exists
|
|
185
|
+
*/
|
|
186
|
+
export async function ensureGitignoreEntry(provider, path, entry) {
|
|
187
|
+
const gitignorePath = `${path}/.gitignore`;
|
|
188
|
+
const hasGitignore = await provider.fileExists(gitignorePath);
|
|
189
|
+
if (hasGitignore) {
|
|
190
|
+
// Read existing .gitignore
|
|
191
|
+
const content = await provider.readFile(gitignorePath);
|
|
192
|
+
const lines = content.split('\n').map((l) => l.trim());
|
|
193
|
+
// Check if entry already exists
|
|
194
|
+
if (lines.includes(entry) || lines.includes(`${entry}/`)) {
|
|
195
|
+
return; // Already present
|
|
196
|
+
}
|
|
197
|
+
// Append entry
|
|
198
|
+
const newContent = content.endsWith('\n')
|
|
199
|
+
? `${content}${entry}\n`
|
|
200
|
+
: `${content}\n${entry}\n`;
|
|
201
|
+
await provider.writeFile(gitignorePath, newContent);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
// Create new .gitignore
|
|
205
|
+
await provider.writeFile(gitignorePath, `${entry}\n`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=code-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-operations.js","sourceRoot":"","sources":["../../../src/sandbox/operations/code-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IGitOperations, CommandResult } from '../../types.js';
|
|
2
|
+
/** Minimal provider surface for default git impl (executeCommand + createDirectory). */
|
|
3
|
+
export interface GitOperationsProvider {
|
|
4
|
+
executeCommand(command: string, options?: {
|
|
5
|
+
cwd?: string;
|
|
6
|
+
env?: Record<string, string>;
|
|
7
|
+
timeout?: number;
|
|
8
|
+
}): Promise<CommandResult>;
|
|
9
|
+
createDirectory(path: string, options?: {
|
|
10
|
+
recursive?: boolean;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare function buildGitAuthUrl(url: string, username?: string, password?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Extract repository name from a git URL.
|
|
16
|
+
* Handles HTTPS and SSH URLs like:
|
|
17
|
+
* - https://github.com/user/repo.git
|
|
18
|
+
* - https://github.com/user/repo
|
|
19
|
+
* - git@github.com:user/repo.git
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractRepoName(url: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Creates the default git implementation that uses executeCommand and createDirectory.
|
|
24
|
+
* Used by E2B, Modal, Vercel, and Local providers.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createDefaultGitOperations(provider: GitOperationsProvider): IGitOperations;
|
|
27
|
+
//# sourceMappingURL=git-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-operations.d.ts","sourceRoot":"","sources":["../../../src/sandbox/operations/git-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAMd,aAAa,EACd,MAAM,gBAAgB,CAAC;AAExB,wFAAwF;AACxF,MAAM,WAAW,qBAAqB;IACpC,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjF;AAkBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAUzF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,cAAc,CA4N1F"}
|