@agentuity/server 0.1.15 → 0.1.16

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.
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { APIClient } from '../api';
3
+ declare const _OrgEnvDeleteRequestSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ env: z.ZodOptional<z.ZodArray<z.ZodString>>;
6
+ secrets: z.ZodOptional<z.ZodArray<z.ZodString>>;
7
+ }, z.core.$strip>;
8
+ type OrgEnvDeleteRequest = z.infer<typeof _OrgEnvDeleteRequestSchema>;
9
+ /**
10
+ * Delete environment variables and/or secrets from an organization.
11
+ * Provide arrays of keys to delete.
12
+ * Requires admin/owner role.
13
+ */
14
+ export declare function orgEnvDelete(client: APIClient, request: OrgEnvDeleteRequest): Promise<void>;
15
+ export {};
16
+ //# sourceMappingURL=env-delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-delete.d.ts","sourceRoot":"","sources":["../../../src/api/org/env-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAA2B,MAAM,QAAQ,CAAC;AAG5D,QAAA,MAAM,0BAA0B;;;;iBAI9B,CAAC;AAIH,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAGtE;;;;GAIG;AACH,wBAAsB,YAAY,CACjC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ import { APIResponseSchemaNoData } from '../api';
3
+ import { OrgResponseError } from './util';
4
+ const _OrgEnvDeleteRequestSchema = z.object({
5
+ id: z.string().describe('the organization id'),
6
+ env: z.array(z.string()).optional().describe('environment variable keys to delete'),
7
+ secrets: z.array(z.string()).optional().describe('secret keys to delete'),
8
+ });
9
+ const OrgEnvDeleteResponseSchema = APIResponseSchemaNoData();
10
+ /**
11
+ * Delete environment variables and/or secrets from an organization.
12
+ * Provide arrays of keys to delete.
13
+ * Requires admin/owner role.
14
+ */
15
+ export async function orgEnvDelete(client, request) {
16
+ const { id, env, secrets } = request;
17
+ const resp = await client.request('DELETE', `/cli/organization/${id}/env`, OrgEnvDeleteResponseSchema, {
18
+ env,
19
+ secrets,
20
+ });
21
+ if (!resp.success) {
22
+ throw new OrgResponseError({ message: resp.message ?? 'failed to delete org env' });
23
+ }
24
+ }
25
+ //# sourceMappingURL=env-delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-delete.js","sourceRoot":"","sources":["../../../src/api/org/env-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC9C,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACnF,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACzE,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,uBAAuB,EAAE,CAAC;AAK7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,MAAiB,EACjB,OAA4B;IAE5B,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAErC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAChC,QAAQ,EACR,qBAAqB,EAAE,MAAM,EAC7B,0BAA0B,EAC1B;QACC,GAAG;QACH,OAAO;KACP,CACD,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,0BAA0B,EAAE,CAAC,CAAC;IACrF,CAAC;AACF,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ import { APIClient } from '../api';
3
+ declare const OrgEnvDataSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
6
+ secrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
7
+ }, z.core.$strip>;
8
+ interface OrgEnvGetRequest {
9
+ id: string;
10
+ mask?: boolean;
11
+ }
12
+ export type OrgEnv = z.infer<typeof OrgEnvDataSchema>;
13
+ /**
14
+ * Get environment variables and secrets for an organization.
15
+ * Secrets are masked by default unless mask=false is specified.
16
+ * Note: Unmasked values require admin/owner role.
17
+ */
18
+ export declare function orgEnvGet(client: APIClient, request: OrgEnvGetRequest): Promise<OrgEnv>;
19
+ export {};
20
+ //# sourceMappingURL=env-get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-get.d.ts","sourceRoot":"","sources":["../../../src/api/org/env-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAqB,MAAM,QAAQ,CAAC;AAGtD,QAAA,MAAM,gBAAgB;;;;iBAIpB,CAAC;AAIH,UAAU,gBAAgB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAGD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEtD;;;;GAIG;AACH,wBAAsB,SAAS,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { APIResponseSchema } from '../api';
3
+ import { OrgResponseError } from './util';
4
+ const OrgEnvDataSchema = z.object({
5
+ id: z.string().describe('the organization id'),
6
+ env: z.record(z.string(), z.string()).optional().describe('environment variables'),
7
+ secrets: z.record(z.string(), z.string()).optional().describe('secrets (may be masked)'),
8
+ });
9
+ const OrgEnvGetResponseSchema = APIResponseSchema(OrgEnvDataSchema);
10
+ /**
11
+ * Get environment variables and secrets for an organization.
12
+ * Secrets are masked by default unless mask=false is specified.
13
+ * Note: Unmasked values require admin/owner role.
14
+ */
15
+ export async function orgEnvGet(client, request) {
16
+ const { id, mask = true } = request;
17
+ const resp = await client.get(`/cli/organization/${id}/env?mask=${mask}`, OrgEnvGetResponseSchema);
18
+ if (!resp.success) {
19
+ throw new OrgResponseError({ message: resp.message ?? 'failed to get org env' });
20
+ }
21
+ if (!resp.data) {
22
+ throw new OrgResponseError({ message: 'failed to get org env: no data returned' });
23
+ }
24
+ return resp.data;
25
+ }
26
+ //# sourceMappingURL=env-get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-get.js","sourceRoot":"","sources":["../../../src/api/org/env-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC9C,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAClF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACxF,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AAUpE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,MAAiB,EACjB,OAAyB;IAEzB,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAC5B,qBAAqB,EAAE,aAAa,IAAI,EAAE,EAC1C,uBAAuB,CACvB,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,uBAAuB,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC;AAClB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ import { APIClient } from '../api';
3
+ declare const _OrgEnvUpdateRequestSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
6
+ secrets: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
7
+ }, z.core.$strip>;
8
+ type OrgEnvUpdateRequest = z.infer<typeof _OrgEnvUpdateRequestSchema>;
9
+ /**
10
+ * Update environment variables and/or secrets for an organization.
11
+ * This will merge the provided env/secrets with existing values.
12
+ * Requires admin/owner role.
13
+ * Keys starting with 'AGENTUITY_' (except AGENTUITY_PUBLIC_) are filtered out.
14
+ */
15
+ export declare function orgEnvUpdate(client: APIClient, request: OrgEnvUpdateRequest): Promise<void>;
16
+ export {};
17
+ //# sourceMappingURL=env-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-update.d.ts","sourceRoot":"","sources":["../../../src/api/org/env-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAA2B,MAAM,QAAQ,CAAC;AAG5D,QAAA,MAAM,0BAA0B;;;;iBAI9B,CAAC;AAIH,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAGtE;;;;;GAKG;AACH,wBAAsB,YAAY,CACjC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { APIResponseSchemaNoData } from '../api';
3
+ import { OrgResponseError } from './util';
4
+ const _OrgEnvUpdateRequestSchema = z.object({
5
+ id: z.string().describe('the organization id'),
6
+ env: z.record(z.string(), z.string()).optional().describe('environment variables to set/update'),
7
+ secrets: z.record(z.string(), z.string()).optional().describe('secrets to set/update'),
8
+ });
9
+ const OrgEnvUpdateResponseSchema = APIResponseSchemaNoData();
10
+ /**
11
+ * Update environment variables and/or secrets for an organization.
12
+ * This will merge the provided env/secrets with existing values.
13
+ * Requires admin/owner role.
14
+ * Keys starting with 'AGENTUITY_' (except AGENTUITY_PUBLIC_) are filtered out.
15
+ */
16
+ export async function orgEnvUpdate(client, request) {
17
+ const { id, env, secrets } = request;
18
+ const resp = await client.request('PUT', `/cli/organization/${id}/env`, OrgEnvUpdateResponseSchema, {
19
+ env,
20
+ secrets,
21
+ });
22
+ if (!resp.success) {
23
+ throw new OrgResponseError({ message: resp.message ?? 'failed to update org env' });
24
+ }
25
+ }
26
+ //# sourceMappingURL=env-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-update.js","sourceRoot":"","sources":["../../../src/api/org/env-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC9C,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAChG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACtF,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,uBAAuB,EAAE,CAAC;AAK7D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,MAAiB,EACjB,OAA4B;IAE5B,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAErC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAChC,KAAK,EACL,qBAAqB,EAAE,MAAM,EAC7B,0BAA0B,EAC1B;QACC,GAAG;QACH,OAAO;KACP,CACD,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,0BAA0B,EAAE,CAAC,CAAC;IACrF,CAAC;AACF,CAAC"}
@@ -1,3 +1,6 @@
1
+ export * from './env-delete';
2
+ export * from './env-get';
3
+ export * from './env-update';
1
4
  export * from './list';
2
5
  export * from './resources';
3
6
  export * from './util';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/org/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/org/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
@@ -1,3 +1,6 @@
1
+ export * from './env-delete';
2
+ export * from './env-get';
3
+ export * from './env-update';
1
4
  export * from './list';
2
5
  export * from './resources';
3
6
  export * from './util';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/org/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/org/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { Logger, SandboxCreateOptions, SandboxInfo, ExecuteOptions as CoreExecuteOptions, Execution, FileToWrite } from '@agentuity/core';
2
- import type { Writable } from 'node:stream';
1
+ import type { Logger, SandboxCreateOptions, SandboxInfo, ExecuteOptions as CoreExecuteOptions, Execution, FileToWrite, SandboxRunOptions, SandboxRunResult } from '@agentuity/core';
2
+ import type { Readable, Writable } from 'node:stream';
3
3
  import { type SandboxCreateResponse } from './create';
4
4
  /**
5
5
  * Extended execute options that support piping output to writable streams
@@ -36,6 +36,31 @@ export interface SandboxClientOptions {
36
36
  */
37
37
  logger?: Logger;
38
38
  }
39
+ /**
40
+ * I/O options for one-shot sandbox execution via run()
41
+ */
42
+ export interface SandboxClientRunIO {
43
+ /**
44
+ * AbortSignal to cancel the execution
45
+ */
46
+ signal?: AbortSignal;
47
+ /**
48
+ * Readable stream for stdin input
49
+ */
50
+ stdin?: Readable;
51
+ /**
52
+ * Writable stream for stdout output
53
+ */
54
+ stdout?: Writable;
55
+ /**
56
+ * Writable stream for stderr output
57
+ */
58
+ stderr?: Writable;
59
+ /**
60
+ * Optional logger override for this run
61
+ */
62
+ logger?: Logger;
63
+ }
39
64
  /**
40
65
  * A sandbox instance returned by SandboxClient.create()
41
66
  */
@@ -74,15 +99,44 @@ export interface SandboxInstance {
74
99
  *
75
100
  * @example
76
101
  * ```typescript
102
+ * // Interactive sandbox usage
77
103
  * const client = new SandboxClient();
78
104
  * const sandbox = await client.create();
79
105
  * const result = await sandbox.execute({ command: ['echo', 'hello'] });
80
106
  * await sandbox.destroy();
107
+ *
108
+ * // One-shot execution with streaming
109
+ * const result = await client.run(
110
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
111
+ * { stdout: process.stdout, stderr: process.stderr }
112
+ * );
81
113
  * ```
82
114
  */
83
115
  export declare class SandboxClient {
84
116
  #private;
85
117
  constructor(options?: SandboxClientOptions);
118
+ /**
119
+ * Run a one-shot command in a new sandbox (creates, executes, destroys)
120
+ *
121
+ * This is a high-level convenience method that handles the full lifecycle:
122
+ * creating a sandbox, streaming I/O, polling for completion, and cleanup.
123
+ *
124
+ * @param options - Execution options including command and configuration
125
+ * @param io - Optional I/O streams and abort signal
126
+ * @returns The run result including exit code and duration
127
+ * @throws {Error} If stdin is provided without an API key
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const client = new SandboxClient();
132
+ * const result = await client.run(
133
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
134
+ * { stdout: process.stdout, stderr: process.stderr }
135
+ * );
136
+ * console.log('Exit code:', result.exitCode);
137
+ * ```
138
+ */
139
+ run(options: SandboxRunOptions, io?: SandboxClientRunIO): Promise<SandboxRunResult>;
86
140
  /**
87
141
  * Create a new sandbox instance
88
142
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/sandbox/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EACN,oBAAoB,EACpB,WAAW,EACX,cAAc,IAAI,kBAAkB,EACpC,SAAS,EACT,WAAW,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAiB,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAiFrE;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACzD;;OAEG;IACH,IAAI,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;KAClB,CAAC;CACF;AAED,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAErD;;OAEG;IACH,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5B;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;;gBAIb,OAAO,GAAE,oBAAyB;IAoB9C;;;;;OAKG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IA2EtE;;;;;OAKG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;;;;;;OAOG;IACG,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC;IAUlB;;;;;;;OAOG;IACG,QAAQ,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;CAQtC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/sandbox/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EACN,oBAAoB,EACpB,WAAW,EACX,cAAc,IAAI,kBAAkB,EACpC,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAiB,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAkFrE;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACzD;;OAEG;IACH,IAAI,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;KAClB,CAAC;CACF;AAED,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAExC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAErD;;OAEG;IACH,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5B;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;;gBAOb,OAAO,GAAE,oBAAyB;IAuB9C;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,GAAE,kBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkB7F;;;;;OAKG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IA2EtE;;;;;OAKG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIlD;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;;;;;;OAOG;IACG,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC;IAUlB;;;;;;;OAOG;IACG,QAAQ,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;CAQtC"}
@@ -4,6 +4,7 @@ import { sandboxDestroy } from './destroy';
4
4
  import { sandboxGet } from './get';
5
5
  import { sandboxExecute } from './execute';
6
6
  import { sandboxWriteFiles, sandboxReadFile } from './files';
7
+ import { sandboxRun } from './run';
7
8
  import { executionGet } from './execution';
8
9
  import { ConsoleLogger } from '../../logger';
9
10
  import { getServiceUrls } from '../../config';
@@ -66,15 +67,25 @@ async function pipeStreamToWritable(streamUrl, writable) {
66
67
  *
67
68
  * @example
68
69
  * ```typescript
70
+ * // Interactive sandbox usage
69
71
  * const client = new SandboxClient();
70
72
  * const sandbox = await client.create();
71
73
  * const result = await sandbox.execute({ command: ['echo', 'hello'] });
72
74
  * await sandbox.destroy();
75
+ *
76
+ * // One-shot execution with streaming
77
+ * const result = await client.run(
78
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
79
+ * { stdout: process.stdout, stderr: process.stderr }
80
+ * );
73
81
  * ```
74
82
  */
75
83
  export class SandboxClient {
76
84
  #client;
77
85
  #orgId;
86
+ #apiKey;
87
+ #region;
88
+ #logger;
78
89
  constructor(options = {}) {
79
90
  const apiKey = options.apiKey || process.env.AGENTUITY_SDK_KEY || process.env.AGENTUITY_CLI_KEY;
80
91
  const region = process.env.AGENTUITY_REGION ?? 'usc';
@@ -87,6 +98,46 @@ export class SandboxClient {
87
98
  const logger = options.logger ?? new ConsoleLogger('warn');
88
99
  this.#client = new APIClient(url, logger, apiKey ?? '', {});
89
100
  this.#orgId = options.orgId;
101
+ this.#apiKey = apiKey;
102
+ this.#region = region;
103
+ this.#logger = logger;
104
+ }
105
+ /**
106
+ * Run a one-shot command in a new sandbox (creates, executes, destroys)
107
+ *
108
+ * This is a high-level convenience method that handles the full lifecycle:
109
+ * creating a sandbox, streaming I/O, polling for completion, and cleanup.
110
+ *
111
+ * @param options - Execution options including command and configuration
112
+ * @param io - Optional I/O streams and abort signal
113
+ * @returns The run result including exit code and duration
114
+ * @throws {Error} If stdin is provided without an API key
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const client = new SandboxClient();
119
+ * const result = await client.run(
120
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
121
+ * { stdout: process.stdout, stderr: process.stderr }
122
+ * );
123
+ * console.log('Exit code:', result.exitCode);
124
+ * ```
125
+ */
126
+ async run(options, io = {}) {
127
+ if (io.stdin && !this.#apiKey) {
128
+ throw new Error('SandboxClient.run(): stdin streaming requires an API key');
129
+ }
130
+ return sandboxRun(this.#client, {
131
+ options,
132
+ orgId: this.#orgId,
133
+ region: this.#region,
134
+ apiKey: this.#apiKey,
135
+ signal: io.signal,
136
+ stdin: io.stdin,
137
+ stdout: io.stdout,
138
+ stderr: io.stderr,
139
+ logger: io.logger ?? this.#logger,
140
+ });
90
141
  }
91
142
  /**
92
143
  * Create a new sandbox instance
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/sandbox/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/sandbox/client.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export { executionGet, executionList } from './execution';
16
16
  export type { ExecutionInfo, ExecutionGetParams, ExecutionListParams, ExecutionListResponse, } from './execution';
17
17
  export { SandboxResponseError, writeAndDrain } from './util';
18
18
  export { SandboxClient } from './client';
19
- export type { SandboxClientOptions, SandboxInstance, ExecuteOptions } from './client';
19
+ export type { SandboxClientOptions, SandboxClientRunIO, SandboxInstance, ExecuteOptions } from './client';
20
20
  export { sandboxWriteFiles, sandboxReadFile, sandboxMkDir, sandboxRmDir, sandboxRmFile, sandboxListFiles, sandboxDownloadArchive, sandboxUploadArchive, sandboxSetEnv, } from './files';
21
21
  export type { WriteFilesParams, WriteFilesResult, ReadFileParams, MkDirParams, RmDirParams, RmFileParams, ListFilesParams, ListFilesResult, FileInfo, ArchiveFormat, DownloadArchiveParams, UploadArchiveParams, SetEnvParams, SetEnvResult, } from './files';
22
22
  export { snapshotCreate, snapshotGet, snapshotList, snapshotDelete, snapshotTag, snapshotBuildInit, snapshotBuildFinalize, } from './snapshot';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/sandbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtF,OAAO,EACN,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EACX,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/sandbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,YAAY,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1G,OAAO,EACN,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,YAAY,EACX,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/api/sandbox/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAqB,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAkB,MAAM,iBAAiB,CAAC;AAsBhG,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAsC/B"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/api/sandbox/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAqB,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAkB,MAAM,iBAAiB,CAAC;AAkChG,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CAyC/B"}
@@ -1,14 +1,25 @@
1
1
  import { z } from 'zod';
2
2
  import { APIResponseSchema } from '../api';
3
3
  import { SandboxResponseError, API_VERSION } from './util';
4
+ const RuntimeRequirementsSchema = z
5
+ .object({
6
+ memory: z.string().optional().describe('Memory requirement (e.g., "1Gi")'),
7
+ cpu: z.string().optional().describe('CPU requirement (e.g., "1")'),
8
+ disk: z.string().optional().describe('Disk requirement (e.g., "500Mi")'),
9
+ networkEnabled: z.boolean().describe('Whether network access is enabled'),
10
+ })
11
+ .describe('Runtime resource requirements');
4
12
  const RuntimeInfoSchema = z
5
13
  .object({
6
14
  id: z.string().describe('Unique runtime identifier'),
7
15
  name: z.string().describe('Runtime name (e.g., "bun:1", "python:3.14")'),
8
16
  description: z.string().optional().describe('Optional description'),
9
17
  iconUrl: z.string().optional().describe('URL for runtime icon'),
18
+ brandColor: z.string().optional().describe('Brand color for the runtime (hex color code)'),
10
19
  url: z.string().optional().describe('URL for runtime documentation or homepage'),
11
20
  tags: z.array(z.string()).optional().describe('Optional tags for categorization'),
21
+ requirements: RuntimeRequirementsSchema.optional().describe('Runtime resource requirements'),
22
+ readme: z.string().optional().describe('Readme content in markdown format'),
12
23
  })
13
24
  .describe('Information about a sandbox runtime');
14
25
  const ListRuntimesDataSchema = z
@@ -47,8 +58,11 @@ export async function runtimeList(client, params) {
47
58
  name: r.name,
48
59
  description: r.description,
49
60
  iconUrl: r.iconUrl,
61
+ brandColor: r.brandColor,
50
62
  url: r.url,
51
63
  tags: r.tags,
64
+ requirements: r.requirements,
65
+ readme: r.readme,
52
66
  })),
53
67
  total: resp.data.total,
54
68
  };
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/api/sandbox/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAa,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG3D,MAAM,iBAAiB,GAAG,CAAC;KACzB,MAAM,CAAC;IACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACxE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACnE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC/D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAChF,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACjF,CAAC;KACD,QAAQ,CAAC,qCAAqC,CAAC,CAAC;AAElD,MAAM,sBAAsB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACP,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CACtD,CAAC;KACD,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAEvC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;AAM7E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,MAAiB,EACjB,MAA0B;IAE1B,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;IAE1C,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QACnB,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,YAAY,WAAW,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEtF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAC5B,GAAG,EACH,0BAA0B,CAC1B,CAAC;IAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAC/B,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC;gBACvB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;aACZ,CAAC,CACF;YACD,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;SACtB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/api/sandbox/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/server",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -25,12 +25,12 @@
25
25
  "prepublishOnly": "bun run clean && bun run build"
26
26
  },
27
27
  "dependencies": {
28
- "@agentuity/core": "0.1.15",
29
- "@agentuity/schema": "0.1.15",
28
+ "@agentuity/core": "0.1.16",
29
+ "@agentuity/schema": "0.1.16",
30
30
  "zod": "^4.3.5"
31
31
  },
32
32
  "devDependencies": {
33
- "@agentuity/test-utils": "0.1.15",
33
+ "@agentuity/test-utils": "0.1.16",
34
34
  "@types/bun": "latest",
35
35
  "@types/node": "^22.0.0",
36
36
  "bun-types": "latest",
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ import { APIClient, APIResponseSchemaNoData } from '../api';
3
+ import { OrgResponseError } from './util';
4
+
5
+ const _OrgEnvDeleteRequestSchema = z.object({
6
+ id: z.string().describe('the organization id'),
7
+ env: z.array(z.string()).optional().describe('environment variable keys to delete'),
8
+ secrets: z.array(z.string()).optional().describe('secret keys to delete'),
9
+ });
10
+
11
+ const OrgEnvDeleteResponseSchema = APIResponseSchemaNoData();
12
+
13
+ type OrgEnvDeleteRequest = z.infer<typeof _OrgEnvDeleteRequestSchema>;
14
+ type OrgEnvDeleteResponse = z.infer<typeof OrgEnvDeleteResponseSchema>;
15
+
16
+ /**
17
+ * Delete environment variables and/or secrets from an organization.
18
+ * Provide arrays of keys to delete.
19
+ * Requires admin/owner role.
20
+ */
21
+ export async function orgEnvDelete(
22
+ client: APIClient,
23
+ request: OrgEnvDeleteRequest
24
+ ): Promise<void> {
25
+ const { id, env, secrets } = request;
26
+
27
+ const resp = await client.request<OrgEnvDeleteResponse, Omit<OrgEnvDeleteRequest, 'id'>>(
28
+ 'DELETE',
29
+ `/cli/organization/${id}/env`,
30
+ OrgEnvDeleteResponseSchema,
31
+ {
32
+ env,
33
+ secrets,
34
+ }
35
+ );
36
+
37
+ if (!resp.success) {
38
+ throw new OrgResponseError({ message: resp.message ?? 'failed to delete org env' });
39
+ }
40
+ }
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { APIClient, APIResponseSchema } from '../api';
3
+ import { OrgResponseError } from './util';
4
+
5
+ const OrgEnvDataSchema = z.object({
6
+ id: z.string().describe('the organization id'),
7
+ env: z.record(z.string(), z.string()).optional().describe('environment variables'),
8
+ secrets: z.record(z.string(), z.string()).optional().describe('secrets (may be masked)'),
9
+ });
10
+
11
+ const OrgEnvGetResponseSchema = APIResponseSchema(OrgEnvDataSchema);
12
+
13
+ interface OrgEnvGetRequest {
14
+ id: string;
15
+ mask?: boolean;
16
+ }
17
+ type OrgEnvGetResponse = z.infer<typeof OrgEnvGetResponseSchema>;
18
+
19
+ export type OrgEnv = z.infer<typeof OrgEnvDataSchema>;
20
+
21
+ /**
22
+ * Get environment variables and secrets for an organization.
23
+ * Secrets are masked by default unless mask=false is specified.
24
+ * Note: Unmasked values require admin/owner role.
25
+ */
26
+ export async function orgEnvGet(
27
+ client: APIClient,
28
+ request: OrgEnvGetRequest
29
+ ): Promise<OrgEnv> {
30
+ const { id, mask = true } = request;
31
+
32
+ const resp = await client.get<OrgEnvGetResponse>(
33
+ `/cli/organization/${id}/env?mask=${mask}`,
34
+ OrgEnvGetResponseSchema
35
+ );
36
+
37
+ if (!resp.success) {
38
+ throw new OrgResponseError({ message: resp.message ?? 'failed to get org env' });
39
+ }
40
+
41
+ if (!resp.data) {
42
+ throw new OrgResponseError({ message: 'failed to get org env: no data returned' });
43
+ }
44
+
45
+ return resp.data;
46
+ }
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ import { APIClient, APIResponseSchemaNoData } from '../api';
3
+ import { OrgResponseError } from './util';
4
+
5
+ const _OrgEnvUpdateRequestSchema = z.object({
6
+ id: z.string().describe('the organization id'),
7
+ env: z.record(z.string(), z.string()).optional().describe('environment variables to set/update'),
8
+ secrets: z.record(z.string(), z.string()).optional().describe('secrets to set/update'),
9
+ });
10
+
11
+ const OrgEnvUpdateResponseSchema = APIResponseSchemaNoData();
12
+
13
+ type OrgEnvUpdateRequest = z.infer<typeof _OrgEnvUpdateRequestSchema>;
14
+ type OrgEnvUpdateResponse = z.infer<typeof OrgEnvUpdateResponseSchema>;
15
+
16
+ /**
17
+ * Update environment variables and/or secrets for an organization.
18
+ * This will merge the provided env/secrets with existing values.
19
+ * Requires admin/owner role.
20
+ * Keys starting with 'AGENTUITY_' (except AGENTUITY_PUBLIC_) are filtered out.
21
+ */
22
+ export async function orgEnvUpdate(
23
+ client: APIClient,
24
+ request: OrgEnvUpdateRequest
25
+ ): Promise<void> {
26
+ const { id, env, secrets } = request;
27
+
28
+ const resp = await client.request<OrgEnvUpdateResponse, Omit<OrgEnvUpdateRequest, 'id'>>(
29
+ 'PUT',
30
+ `/cli/organization/${id}/env`,
31
+ OrgEnvUpdateResponseSchema,
32
+ {
33
+ env,
34
+ secrets,
35
+ }
36
+ );
37
+
38
+ if (!resp.success) {
39
+ throw new OrgResponseError({ message: resp.message ?? 'failed to update org env' });
40
+ }
41
+ }
@@ -1,3 +1,6 @@
1
+ export * from './env-delete';
2
+ export * from './env-get';
3
+ export * from './env-update';
1
4
  export * from './list';
2
5
  export * from './resources';
3
6
  export * from './util';
@@ -5,14 +5,17 @@ import type {
5
5
  ExecuteOptions as CoreExecuteOptions,
6
6
  Execution,
7
7
  FileToWrite,
8
+ SandboxRunOptions,
9
+ SandboxRunResult,
8
10
  } from '@agentuity/core';
9
- import type { Writable } from 'node:stream';
11
+ import type { Readable, Writable } from 'node:stream';
10
12
  import { APIClient } from '../api';
11
13
  import { sandboxCreate, type SandboxCreateResponse } from './create';
12
14
  import { sandboxDestroy } from './destroy';
13
15
  import { sandboxGet } from './get';
14
16
  import { sandboxExecute } from './execute';
15
17
  import { sandboxWriteFiles, sandboxReadFile } from './files';
18
+ import { sandboxRun } from './run';
16
19
  import { executionGet, type ExecutionInfo } from './execution';
17
20
  import { ConsoleLogger } from '../../logger';
18
21
  import { getServiceUrls } from '../../config';
@@ -129,6 +132,36 @@ export interface SandboxClientOptions {
129
132
  logger?: Logger;
130
133
  }
131
134
 
135
+ /**
136
+ * I/O options for one-shot sandbox execution via run()
137
+ */
138
+ export interface SandboxClientRunIO {
139
+ /**
140
+ * AbortSignal to cancel the execution
141
+ */
142
+ signal?: AbortSignal;
143
+
144
+ /**
145
+ * Readable stream for stdin input
146
+ */
147
+ stdin?: Readable;
148
+
149
+ /**
150
+ * Writable stream for stdout output
151
+ */
152
+ stdout?: Writable;
153
+
154
+ /**
155
+ * Writable stream for stderr output
156
+ */
157
+ stderr?: Writable;
158
+
159
+ /**
160
+ * Optional logger override for this run
161
+ */
162
+ logger?: Logger;
163
+ }
164
+
132
165
  /**
133
166
  * A sandbox instance returned by SandboxClient.create()
134
167
  */
@@ -174,15 +207,25 @@ export interface SandboxInstance {
174
207
  *
175
208
  * @example
176
209
  * ```typescript
210
+ * // Interactive sandbox usage
177
211
  * const client = new SandboxClient();
178
212
  * const sandbox = await client.create();
179
213
  * const result = await sandbox.execute({ command: ['echo', 'hello'] });
180
214
  * await sandbox.destroy();
215
+ *
216
+ * // One-shot execution with streaming
217
+ * const result = await client.run(
218
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
219
+ * { stdout: process.stdout, stderr: process.stderr }
220
+ * );
181
221
  * ```
182
222
  */
183
223
  export class SandboxClient {
184
224
  readonly #client: APIClient;
185
225
  readonly #orgId?: string;
226
+ readonly #apiKey?: string;
227
+ readonly #region: string;
228
+ readonly #logger: Logger;
186
229
 
187
230
  constructor(options: SandboxClientOptions = {}) {
188
231
  const apiKey =
@@ -202,6 +245,48 @@ export class SandboxClient {
202
245
 
203
246
  this.#client = new APIClient(url, logger, apiKey ?? '', {});
204
247
  this.#orgId = options.orgId;
248
+ this.#apiKey = apiKey;
249
+ this.#region = region;
250
+ this.#logger = logger;
251
+ }
252
+
253
+ /**
254
+ * Run a one-shot command in a new sandbox (creates, executes, destroys)
255
+ *
256
+ * This is a high-level convenience method that handles the full lifecycle:
257
+ * creating a sandbox, streaming I/O, polling for completion, and cleanup.
258
+ *
259
+ * @param options - Execution options including command and configuration
260
+ * @param io - Optional I/O streams and abort signal
261
+ * @returns The run result including exit code and duration
262
+ * @throws {Error} If stdin is provided without an API key
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * const client = new SandboxClient();
267
+ * const result = await client.run(
268
+ * { command: { exec: ['bun', 'run', 'script.ts'] } },
269
+ * { stdout: process.stdout, stderr: process.stderr }
270
+ * );
271
+ * console.log('Exit code:', result.exitCode);
272
+ * ```
273
+ */
274
+ async run(options: SandboxRunOptions, io: SandboxClientRunIO = {}): Promise<SandboxRunResult> {
275
+ if (io.stdin && !this.#apiKey) {
276
+ throw new Error('SandboxClient.run(): stdin streaming requires an API key');
277
+ }
278
+
279
+ return sandboxRun(this.#client, {
280
+ options,
281
+ orgId: this.#orgId,
282
+ region: this.#region,
283
+ apiKey: this.#apiKey,
284
+ signal: io.signal,
285
+ stdin: io.stdin,
286
+ stdout: io.stdout,
287
+ stderr: io.stderr,
288
+ logger: io.logger ?? this.#logger,
289
+ });
205
290
  }
206
291
 
207
292
  /**
@@ -21,7 +21,7 @@ export type {
21
21
  } from './execution';
22
22
  export { SandboxResponseError, writeAndDrain } from './util';
23
23
  export { SandboxClient } from './client';
24
- export type { SandboxClientOptions, SandboxInstance, ExecuteOptions } from './client';
24
+ export type { SandboxClientOptions, SandboxClientRunIO, SandboxInstance, ExecuteOptions } from './client';
25
25
  export {
26
26
  sandboxWriteFiles,
27
27
  sandboxReadFile,
@@ -3,14 +3,26 @@ import { APIClient, APIResponseSchema } from '../api';
3
3
  import { SandboxResponseError, API_VERSION } from './util';
4
4
  import type { ListRuntimesParams, ListRuntimesResponse, SandboxRuntime } from '@agentuity/core';
5
5
 
6
+ const RuntimeRequirementsSchema = z
7
+ .object({
8
+ memory: z.string().optional().describe('Memory requirement (e.g., "1Gi")'),
9
+ cpu: z.string().optional().describe('CPU requirement (e.g., "1")'),
10
+ disk: z.string().optional().describe('Disk requirement (e.g., "500Mi")'),
11
+ networkEnabled: z.boolean().describe('Whether network access is enabled'),
12
+ })
13
+ .describe('Runtime resource requirements');
14
+
6
15
  const RuntimeInfoSchema = z
7
16
  .object({
8
17
  id: z.string().describe('Unique runtime identifier'),
9
18
  name: z.string().describe('Runtime name (e.g., "bun:1", "python:3.14")'),
10
19
  description: z.string().optional().describe('Optional description'),
11
20
  iconUrl: z.string().optional().describe('URL for runtime icon'),
21
+ brandColor: z.string().optional().describe('Brand color for the runtime (hex color code)'),
12
22
  url: z.string().optional().describe('URL for runtime documentation or homepage'),
13
23
  tags: z.array(z.string()).optional().describe('Optional tags for categorization'),
24
+ requirements: RuntimeRequirementsSchema.optional().describe('Runtime resource requirements'),
25
+ readme: z.string().optional().describe('Readme content in markdown format'),
14
26
  })
15
27
  .describe('Information about a sandbox runtime');
16
28
 
@@ -67,8 +79,11 @@ export async function runtimeList(
67
79
  name: r.name,
68
80
  description: r.description,
69
81
  iconUrl: r.iconUrl,
82
+ brandColor: r.brandColor,
70
83
  url: r.url,
71
84
  tags: r.tags,
85
+ requirements: r.requirements,
86
+ readme: r.readme,
72
87
  })
73
88
  ),
74
89
  total: resp.data.total,