@sandblocks/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +21 -0
  2. package/dist/agents.js +209 -0
  3. package/dist/bin.js +59 -0
  4. package/dist/index.js +1018 -0
  5. package/dist/output.js +54 -0
  6. package/dist/providers/custom.js +49 -0
  7. package/dist/providers/docker.js +257 -0
  8. package/dist/providers/podman.js +257 -0
  9. package/dist/providers/remote.js +341 -0
  10. package/dist/providers/unsafe-host.js +126 -0
  11. package/dist/types/agents.d.ts +63 -0
  12. package/dist/types/agents.d.ts.map +1 -0
  13. package/dist/types/bin.d.ts +3 -0
  14. package/dist/types/bin.d.ts.map +1 -0
  15. package/dist/types/index.d.ts +262 -0
  16. package/dist/types/index.d.ts.map +1 -0
  17. package/dist/types/init.d.ts +6 -0
  18. package/dist/types/init.d.ts.map +1 -0
  19. package/dist/types/orchestration.d.ts +94 -0
  20. package/dist/types/orchestration.d.ts.map +1 -0
  21. package/dist/types/output.d.ts +12 -0
  22. package/dist/types/output.d.ts.map +1 -0
  23. package/dist/types/process.d.ts +6 -0
  24. package/dist/types/process.d.ts.map +1 -0
  25. package/dist/types/providers/custom.d.ts +15 -0
  26. package/dist/types/providers/custom.d.ts.map +1 -0
  27. package/dist/types/providers/docker.d.ts +7 -0
  28. package/dist/types/providers/docker.d.ts.map +1 -0
  29. package/dist/types/providers/oci.d.ts +37 -0
  30. package/dist/types/providers/oci.d.ts.map +1 -0
  31. package/dist/types/providers/podman.d.ts +7 -0
  32. package/dist/types/providers/podman.d.ts.map +1 -0
  33. package/dist/types/providers/remote.d.ts +31 -0
  34. package/dist/types/providers/remote.d.ts.map +1 -0
  35. package/dist/types/providers/unsafe-host.d.ts +14 -0
  36. package/dist/types/providers/unsafe-host.d.ts.map +1 -0
  37. package/dist/types/types.d.ts +196 -0
  38. package/dist/types/types.d.ts.map +1 -0
  39. package/package.json +48 -0
@@ -0,0 +1,196 @@
1
+ export interface SandboxCapabilities {
2
+ bindMounts: boolean;
3
+ isolatedFilesystem: boolean;
4
+ persistent: boolean;
5
+ networks: boolean;
6
+ devices: boolean;
7
+ snapshots: boolean;
8
+ reconnect: boolean;
9
+ remote: boolean;
10
+ }
11
+ export interface SandboxMount {
12
+ source?: string;
13
+ resource?: string;
14
+ target: string;
15
+ readonly?: boolean;
16
+ }
17
+ export interface SandboxCreateInput {
18
+ id: string;
19
+ cwd: string;
20
+ image?: string;
21
+ env?: Record<string, string>;
22
+ mounts?: SandboxMount[];
23
+ network?: string | string[];
24
+ groups?: Array<string | number>;
25
+ devices?: string[];
26
+ cpus?: number;
27
+ memoryMb?: number;
28
+ pids?: number;
29
+ tmpfsMb?: number;
30
+ signal?: AbortSignal;
31
+ idempotencyKey?: string;
32
+ metadata?: Record<string, string>;
33
+ }
34
+ export interface SandboxReconnectInput {
35
+ id: string;
36
+ cwd?: string;
37
+ signal?: AbortSignal;
38
+ }
39
+ export interface SandboxExecOptions {
40
+ cwd?: string;
41
+ env?: Record<string, string>;
42
+ stdin?: string;
43
+ timeoutMs?: number;
44
+ signal?: AbortSignal;
45
+ onStdout?: (chunk: string) => void | Promise<void>;
46
+ onStderr?: (chunk: string) => void | Promise<void>;
47
+ }
48
+ export interface SandboxExecResult {
49
+ exitCode: number;
50
+ stdout: string;
51
+ stderr: string;
52
+ timedOut: boolean;
53
+ startedAt: string;
54
+ finishedAt: string;
55
+ }
56
+ export interface SandboxRuntime {
57
+ readonly id: string;
58
+ readonly provider: string;
59
+ readonly cwd: string;
60
+ exec(command: string[], options?: SandboxExecOptions): Promise<SandboxExecResult>;
61
+ upload?(source: string, destination: string): Promise<void>;
62
+ download?(source: string, destination: string): Promise<void>;
63
+ /** Reconcile isolated-provider changes back into the host worktree. */
64
+ syncToHost?(): Promise<void>;
65
+ stop(reason?: string): Promise<void>;
66
+ destroy(): Promise<void>;
67
+ }
68
+ export interface SandboxProvider {
69
+ readonly kind: string;
70
+ readonly capabilities: SandboxCapabilities;
71
+ create(input: SandboxCreateInput): Promise<SandboxRuntime>;
72
+ reconnect?(input: SandboxReconnectInput): Promise<SandboxRuntime>;
73
+ }
74
+ export type AgentStreamEvent = {
75
+ type: "text";
76
+ text: string;
77
+ iteration: number;
78
+ timestamp: string;
79
+ } | {
80
+ type: "toolCall";
81
+ name: string;
82
+ input?: unknown;
83
+ iteration: number;
84
+ timestamp: string;
85
+ } | {
86
+ type: "raw";
87
+ line: string;
88
+ iteration: number;
89
+ timestamp: string;
90
+ };
91
+ export interface AgentContext {
92
+ runtime: SandboxRuntime;
93
+ prompt: string;
94
+ iteration: number;
95
+ signal?: AbortSignal;
96
+ emit(event: AgentStreamEvent): Promise<void>;
97
+ idleTimeoutSeconds: number;
98
+ completionTimeoutSeconds: number;
99
+ completionSignal: string[];
100
+ }
101
+ export interface AgentIterationResult {
102
+ iteration: number;
103
+ exitCode: number;
104
+ stdout: string;
105
+ stderr: string;
106
+ sessionId?: string;
107
+ completionSignal?: string;
108
+ startedAt: string;
109
+ finishedAt: string;
110
+ }
111
+ export interface AgentProvider {
112
+ readonly id: string;
113
+ run(context: AgentContext): Promise<AgentIterationResult>;
114
+ }
115
+ export interface CommandHook {
116
+ command?: string[];
117
+ shell?: string;
118
+ cwd?: string;
119
+ env?: Record<string, string>;
120
+ timeoutMs?: number;
121
+ }
122
+ export interface RunHooks {
123
+ host?: {
124
+ beforeCreate?: CommandHook[];
125
+ onWorktreeReady?: CommandHook[];
126
+ onSandboxReady?: CommandHook[];
127
+ afterCreate?: CommandHook[];
128
+ beforeDestroy?: CommandHook[];
129
+ };
130
+ sandbox?: {
131
+ onSandboxReady?: CommandHook[];
132
+ afterCreate?: CommandHook[];
133
+ beforeAgent?: CommandHook[];
134
+ afterAgent?: CommandHook[];
135
+ };
136
+ }
137
+ export type BranchStrategy = {
138
+ type: "head";
139
+ } | {
140
+ type: "branch";
141
+ name: string;
142
+ } | {
143
+ type: "worktree";
144
+ name: string;
145
+ } | {
146
+ type: "merge-to-head";
147
+ name?: string;
148
+ };
149
+ export type RetentionPolicy = "destroy" | "on-failure" | "always";
150
+ export interface LoggingOptions {
151
+ type?: "file" | "stdout" | "silent";
152
+ path?: string;
153
+ verbose?: boolean;
154
+ onAgentStreamEvent?: (event: AgentStreamEvent) => void | Promise<void>;
155
+ }
156
+ export interface StandardSchema<T> {
157
+ readonly "~standard"?: {
158
+ validate(value: unknown): {
159
+ value?: T;
160
+ issues?: readonly unknown[];
161
+ } | Promise<{
162
+ value?: T;
163
+ issues?: readonly unknown[];
164
+ }>;
165
+ };
166
+ parse?: (value: unknown) => T;
167
+ safeParse?: (value: unknown) => {
168
+ success: boolean;
169
+ data?: T;
170
+ error?: unknown;
171
+ };
172
+ }
173
+ export type OutputSpec<T = unknown> = {
174
+ kind: "string";
175
+ tag: string;
176
+ } | {
177
+ kind: "object";
178
+ tag: string;
179
+ schema: StandardSchema<T>;
180
+ };
181
+ export interface CommitInfo {
182
+ sha: string;
183
+ message?: string;
184
+ }
185
+ export interface AgentRunResult<T = unknown> {
186
+ sandboxId: string;
187
+ provider: string;
188
+ iterations: AgentIterationResult[];
189
+ commits: CommitInfo[];
190
+ branch?: string;
191
+ completionSignal?: string;
192
+ output?: T;
193
+ startedAt: string;
194
+ finishedAt: string;
195
+ }
196
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@sandblocks/sdk",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/types/index.d.ts",
7
+ "bin": { "sandblocks-sdk": "dist/bin.js" },
8
+ "files": ["dist", "README.md"],
9
+ "exports": {
10
+ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/index.js" },
11
+ "./agents": {
12
+ "types": "./dist/types/agents.d.ts",
13
+ "import": "./dist/agents.js"
14
+ },
15
+ "./output": {
16
+ "types": "./dist/types/output.d.ts",
17
+ "import": "./dist/output.js"
18
+ },
19
+ "./providers/docker": {
20
+ "types": "./dist/types/providers/docker.d.ts",
21
+ "import": "./dist/providers/docker.js"
22
+ },
23
+ "./providers/podman": {
24
+ "types": "./dist/types/providers/podman.d.ts",
25
+ "import": "./dist/providers/podman.js"
26
+ },
27
+ "./providers/remote": {
28
+ "types": "./dist/types/providers/remote.d.ts",
29
+ "import": "./dist/providers/remote.js"
30
+ },
31
+ "./providers/unsafe-host": {
32
+ "types": "./dist/types/providers/unsafe-host.d.ts",
33
+ "import": "./dist/providers/unsafe-host.js"
34
+ },
35
+ "./providers/custom": {
36
+ "types": "./dist/types/providers/custom.d.ts",
37
+ "import": "./dist/providers/custom.js"
38
+ }
39
+ },
40
+ "scripts": {
41
+ "build": "rm -rf dist && bun build src/index.ts src/agents.ts src/output.ts src/providers/docker.ts src/providers/podman.ts src/providers/remote.ts src/providers/unsafe-host.ts src/providers/custom.ts src/bin.ts --outdir dist --root src --target=node --format=esm && bunx tsc -p tsconfig.build.json",
42
+ "test": "bun test",
43
+ "typecheck": "tsc --noEmit",
44
+ "prepack": "bun run build && bun run test"
45
+ },
46
+ "publishConfig": { "access": "public" },
47
+ "engines": { "node": ">=20" }
48
+ }