@inquir/compute 0.4.4 → 0.4.5
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 +58 -0
- package/dist/apps.d.ts +242 -10
- package/dist/apps.d.ts.map +1 -1
- package/dist/apps.js +26 -0
- package/dist/apps.js.map +1 -1
- package/dist/compose.d.ts +51 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +13 -0
- package/dist/compose.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/replica-roles.d.ts +51 -0
- package/dist/replica-roles.d.ts.map +1 -0
- package/dist/replica-roles.js +8 -0
- package/dist/replica-roles.js.map +1 -0
- package/dist/sandboxes.d.ts +434 -0
- package/dist/sandboxes.d.ts.map +1 -0
- package/dist/sandboxes.js +359 -0
- package/dist/sandboxes.js.map +1 -0
- package/dist/system-packages.d.ts +2152 -1
- package/dist/system-packages.d.ts.map +1 -1
- package/dist/system-packages.js +427 -1
- package/dist/system-packages.js.map +1 -1
- package/dist/transport.d.ts +26 -13
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +5 -1
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +3 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inquir-compose.yaml: multi-service stacks (docs/roadmap/INQUIR_COMPOSE.md).
|
|
3
|
+
* `validateCompose` asks the platform's own validator, so the CLI, MCP and
|
|
4
|
+
* the dashboard show exactly the messages a deploy would.
|
|
5
|
+
*/
|
|
6
|
+
import { type TransportClient } from './transport.js';
|
|
7
|
+
/** The file names a stack root may use. */
|
|
8
|
+
export declare const COMPOSE_FILENAMES: readonly ["inquir-compose.yaml", "inquir-compose.yml"];
|
|
9
|
+
export interface ComposeIssue {
|
|
10
|
+
/** Dotted path into the document (`services.api.variables.DATABASE_URL`); empty for the whole file. */
|
|
11
|
+
path: string;
|
|
12
|
+
message: string;
|
|
13
|
+
severity: 'error' | 'warning';
|
|
14
|
+
}
|
|
15
|
+
/** The stack's footprint, what admission judges against the workspace's plan. */
|
|
16
|
+
export interface ComposePlan {
|
|
17
|
+
services: number;
|
|
18
|
+
volumes: number;
|
|
19
|
+
ordinals: number;
|
|
20
|
+
cpuVCpus: number;
|
|
21
|
+
memoryMb: number;
|
|
22
|
+
storageMb: number;
|
|
23
|
+
defaultSizedVolumes: number;
|
|
24
|
+
/** Deploy order: dependencies first. */
|
|
25
|
+
order: string[];
|
|
26
|
+
}
|
|
27
|
+
export interface ValidateComposeInput {
|
|
28
|
+
/** inquir-compose.yaml as text (YAML or JSON), or the parsed bundle. */
|
|
29
|
+
document: string | Record<string, unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* Files next to the document (folder form): each path service's inquir.yaml
|
|
32
|
+
* and Dockerfile, each inline build context's Dockerfile, path → content.
|
|
33
|
+
*/
|
|
34
|
+
files?: Record<string, string>;
|
|
35
|
+
/** The stack name a deploy would use (`<name>-<service>` names the applications). */
|
|
36
|
+
name?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ComposeValidation {
|
|
39
|
+
ok: boolean;
|
|
40
|
+
issues: ComposeIssue[];
|
|
41
|
+
/**
|
|
42
|
+
* The files the checks consulted (folder form): send those you have in
|
|
43
|
+
* `files` and ask again, until nothing new is wanted.
|
|
44
|
+
*/
|
|
45
|
+
wanted?: string[];
|
|
46
|
+
/** Present when the document has no errors. */
|
|
47
|
+
plan?: ComposePlan;
|
|
48
|
+
}
|
|
49
|
+
/** `POST /v1/compose/validate`: every problem at once, and the plan. No side effects. */
|
|
50
|
+
export declare function validateCompose(client: TransportClient, input: ValidateComposeInput): Promise<ComposeValidation>;
|
|
51
|
+
//# sourceMappingURL=compose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElE,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,wDAAyD,CAAC;AAExF,MAAM,WAAW,YAAY;IAC3B,uGAAuG;IACvG,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,yFAAyF;AACzF,wBAAsB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAEtH"}
|
package/dist/compose.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inquir-compose.yaml: multi-service stacks (docs/roadmap/INQUIR_COMPOSE.md).
|
|
3
|
+
* `validateCompose` asks the platform's own validator, so the CLI, MCP and
|
|
4
|
+
* the dashboard show exactly the messages a deploy would.
|
|
5
|
+
*/
|
|
6
|
+
import { rawRequest } from './transport.js';
|
|
7
|
+
/** The file names a stack root may use. */
|
|
8
|
+
export const COMPOSE_FILENAMES = ['inquir-compose.yaml', 'inquir-compose.yml'];
|
|
9
|
+
/** `POST /v1/compose/validate`: every problem at once, and the plan. No side effects. */
|
|
10
|
+
export async function validateCompose(client, input) {
|
|
11
|
+
return rawRequest(client, 'POST', '/v1/compose/validate', input);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAwB,MAAM,gBAAgB,CAAC;AAElE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAU,CAAC;AA8CxF,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAuB,EAAE,KAA2B;IACxF,OAAO,UAAU,CAAoB,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACtF,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './apps.js';
|
|
2
|
+
export * from './compose.js';
|
|
2
3
|
export * from './build-timeout-policy.js';
|
|
3
4
|
export * from './app-observability.js';
|
|
4
5
|
export * from './config.js';
|
|
@@ -9,10 +10,12 @@ export * from './discovery.js';
|
|
|
9
10
|
export * from './hashing.js';
|
|
10
11
|
export * from './local-runner.js';
|
|
11
12
|
export * from './projects.js';
|
|
13
|
+
export * from './sandboxes.js';
|
|
12
14
|
export * from './transport.js';
|
|
13
15
|
export * from './source-commands.js';
|
|
14
16
|
export * from './types.js';
|
|
15
17
|
export * from './system-packages.js';
|
|
18
|
+
export * from './replica-roles.js';
|
|
16
19
|
export { createSourceArchive, createZipBase64, isIgnoredByRules, isSecretLikeFile, manifestBuildContext, parseIgnoreRules, SOURCE_IGNORE_FILES, type ExcludedSecretFile, type IgnoreRule, type SourceArchive, type SourceArchiveOptions } from './zip.js';
|
|
17
20
|
export * from './invocation-observation.js';
|
|
18
21
|
export { prepareReleaseCommand, restoreReleaseCommand, ReleaseCommandObservationEndedError } from './release-commands.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE1P,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAC1H,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE1P,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AAC1H,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './apps.js';
|
|
2
|
+
export * from './compose.js';
|
|
2
3
|
export * from './build-timeout-policy.js';
|
|
3
4
|
export * from './app-observability.js';
|
|
4
5
|
export * from './config.js';
|
|
@@ -9,10 +10,12 @@ export * from './discovery.js';
|
|
|
9
10
|
export * from './hashing.js';
|
|
10
11
|
export * from './local-runner.js';
|
|
11
12
|
export * from './projects.js';
|
|
13
|
+
export * from './sandboxes.js';
|
|
12
14
|
export * from './transport.js';
|
|
13
15
|
export * from './source-commands.js';
|
|
14
16
|
export * from './types.js';
|
|
15
17
|
export * from './system-packages.js';
|
|
18
|
+
export * from './replica-roles.js';
|
|
16
19
|
export { createSourceArchive, createZipBase64, isIgnoredByRules, isSecretLikeFile, manifestBuildContext, parseIgnoreRules, SOURCE_IGNORE_FILES } from './zip.js';
|
|
17
20
|
export * from './invocation-observation.js';
|
|
18
21
|
export { prepareReleaseCommand, restoreReleaseCommand, ReleaseCommandObservationEndedError } from './release-commands.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAA2F,MAAM,UAAU,CAAC;AAE1P,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAA2F,MAAM,UAAU,CAAC;AAE1P,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Roles and role endpoints of a stateful application's replicas, as
|
|
3
|
+
* `GET /v1/apps/:id/replicas` returns them (docs/roadmap/STATEFUL_REPLICAS.md
|
|
4
|
+
* §3.5, §3.8). Every surface (the CLI's `inquir apps replicas`, `inquir mcp`,
|
|
5
|
+
* the dashboard) reads these same fields.
|
|
6
|
+
*/
|
|
7
|
+
/** A K4 condition of the application or of one ordinal (derived, never stored). */
|
|
8
|
+
export interface AppReplicaCondition {
|
|
9
|
+
type: string;
|
|
10
|
+
status: 'True' | 'False';
|
|
11
|
+
/** PascalCase, stable: e.g. `SingleWriterConflict` for `RoleConflict`. */
|
|
12
|
+
reason: string;
|
|
13
|
+
message: string;
|
|
14
|
+
lastTransitionTime?: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** The role fields each ordinal of `GET /v1/apps/:id/replicas` carries while role endpoints run. */
|
|
17
|
+
export interface AppReplicaRoleFields {
|
|
18
|
+
/** The role its probe (or `runtime.roles.byOrdinal`/`default`) gives it now; null: none known. */
|
|
19
|
+
role?: string | null;
|
|
20
|
+
roleObservedAt?: string | null;
|
|
21
|
+
/** Not reported for 30 s: the endpoints count it as `unknown`. */
|
|
22
|
+
roleStale?: boolean;
|
|
23
|
+
/** Includes `RoleConflict` while it claims a single-writer role together with another ordinal. */
|
|
24
|
+
conditions?: AppReplicaCondition[];
|
|
25
|
+
}
|
|
26
|
+
/** One declared `scale.endpoints` entry and who it names now. */
|
|
27
|
+
export interface AppRoleEndpoint {
|
|
28
|
+
name: string;
|
|
29
|
+
/** `<name>.<slug>.<private suffix>`: what clients inside the workspace dial. */
|
|
30
|
+
hostname: string;
|
|
31
|
+
/** serving: has members; empty: none holds its role now; conflict: a single-writer role claimed twice (no member). */
|
|
32
|
+
status: 'serving' | 'empty' | 'conflict';
|
|
33
|
+
members: Array<{
|
|
34
|
+
ordinal: number;
|
|
35
|
+
address: string;
|
|
36
|
+
}>;
|
|
37
|
+
conflict: number[] | null;
|
|
38
|
+
conflictSince: string | null;
|
|
39
|
+
/** The members are this fallback endpoint's (this one had none). */
|
|
40
|
+
viaFallback: string | null;
|
|
41
|
+
/** False under APPS_ROLE_ENDPOINTS=report: computed and shown, the name is not served. */
|
|
42
|
+
published: boolean;
|
|
43
|
+
updatedAt: string;
|
|
44
|
+
}
|
|
45
|
+
/** The fields `GET /v1/apps/:id/replicas` adds for role endpoints. */
|
|
46
|
+
export interface AppReplicaRoles {
|
|
47
|
+
endpoints?: AppRoleEndpoint[];
|
|
48
|
+
/** Application-level K4 conditions, e.g. `RoleConflict` per endpoint in conflict. */
|
|
49
|
+
conditions?: AppReplicaCondition[];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=replica-roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replica-roles.d.ts","sourceRoot":"","sources":["../src/replica-roles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,oGAAoG;AACpG,MAAM,WAAW,oBAAoB;IACnC,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kGAAkG;IAClG,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,sHAAsH;IACtH,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0FAA0F;IAC1F,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,qFAAqF;IACrF,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Roles and role endpoints of a stateful application's replicas, as
|
|
3
|
+
* `GET /v1/apps/:id/replicas` returns them (docs/roadmap/STATEFUL_REPLICAS.md
|
|
4
|
+
* §3.5, §3.8). Every surface (the CLI's `inquir apps replicas`, `inquir mcp`,
|
|
5
|
+
* the dashboard) reads these same fields.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=replica-roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replica-roles.js","sourceRoot":"","sources":["../src/replica-roles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `client.sandboxes`: isolated, short-lived Linux environments for agents,
|
|
3
|
+
* builds and untrusted code (docs/roadmap/SANDBOXES.md §5, §6.3).
|
|
4
|
+
*
|
|
5
|
+
* The spec is the one `SandboxSpec` every surface speaks (REST body, CLI
|
|
6
|
+
* flags, MCP tool input, dashboard form): no SDK-only shape. Every call maps
|
|
7
|
+
* onto one /v1/sandboxes endpoint:
|
|
8
|
+
*
|
|
9
|
+
* create POST /v1/sandboxes (?wait=running, Idempotency-Key)
|
|
10
|
+
* list GET /v1/sandboxes (?status=all, ?limit, ?cursor)
|
|
11
|
+
* get GET /v1/sandboxes/:id
|
|
12
|
+
* exec POST /v1/sandboxes/:id/exec (NDJSON stream: start, stdout/stderr, exit | error)
|
|
13
|
+
* files.* PUT/GET /v1/sandboxes/:id/files?path= (a file, or a directory as tar)
|
|
14
|
+
* keepAlive POST /v1/sandboxes/:id/keepalive
|
|
15
|
+
* destroy DELETE /v1/sandboxes/:id
|
|
16
|
+
*
|
|
17
|
+
* `create` and `get` return a {@link Sandbox} handle bound to one sandbox;
|
|
18
|
+
* with `await using` it is destroyed when the block exits.
|
|
19
|
+
*/
|
|
20
|
+
import { type TransportClient } from './transport.js';
|
|
21
|
+
/** The SandboxSpec (§5.1). Every field is optional; the plan supplies defaults. */
|
|
22
|
+
export interface SandboxSpec {
|
|
23
|
+
/** Unique among the workspace's live sandboxes: lowercase letters, digits and dashes, 1-63. */
|
|
24
|
+
name?: string;
|
|
25
|
+
/** An image alias configured on the platform (default: the platform image). */
|
|
26
|
+
image?: string;
|
|
27
|
+
region?: 'auto' | 'ru' | 'nl';
|
|
28
|
+
resources?: {
|
|
29
|
+
vcpu?: number;
|
|
30
|
+
memoryMb?: number;
|
|
31
|
+
diskGb?: number;
|
|
32
|
+
};
|
|
33
|
+
/** `none` (default): no network. `proxy`: fetch-only access to `allow` (presets such as npm, pypi, github, or hostnames). */
|
|
34
|
+
network?: {
|
|
35
|
+
mode?: 'none' | 'proxy' | 'open';
|
|
36
|
+
allow?: string[];
|
|
37
|
+
};
|
|
38
|
+
/** Plain values. Never pass platform credentials or secrets. */
|
|
39
|
+
env?: Record<string, string>;
|
|
40
|
+
/** Seconds, or `90s`, `15m`, `1h`, `1h30m`. */
|
|
41
|
+
lifetime?: {
|
|
42
|
+
idle?: number | string;
|
|
43
|
+
max?: number | string;
|
|
44
|
+
};
|
|
45
|
+
project?: string;
|
|
46
|
+
}
|
|
47
|
+
export type SandboxStatus = 'PENDING' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'DESTROYED' | 'FAILED';
|
|
48
|
+
/** A sandbox as the API reports it (env values never leave the control plane: only `envKeys`). */
|
|
49
|
+
export interface SandboxInfo {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string | null;
|
|
52
|
+
status: SandboxStatus;
|
|
53
|
+
image: string;
|
|
54
|
+
imageRef?: string;
|
|
55
|
+
region: string;
|
|
56
|
+
resources: {
|
|
57
|
+
vcpu: number;
|
|
58
|
+
memoryMb: number;
|
|
59
|
+
diskGb: number;
|
|
60
|
+
};
|
|
61
|
+
network: {
|
|
62
|
+
mode: string;
|
|
63
|
+
allow: string[];
|
|
64
|
+
};
|
|
65
|
+
envKeys: string[];
|
|
66
|
+
lifetime: {
|
|
67
|
+
idleSeconds: number;
|
|
68
|
+
maxSeconds: number;
|
|
69
|
+
};
|
|
70
|
+
project?: string | null;
|
|
71
|
+
createdAt: string;
|
|
72
|
+
startedAt: string | null;
|
|
73
|
+
lastActivityAt?: string;
|
|
74
|
+
idleExpiresAt: string;
|
|
75
|
+
expiresAt: string;
|
|
76
|
+
endedAt: string | null;
|
|
77
|
+
endReason: string | null;
|
|
78
|
+
failureCode: string | null;
|
|
79
|
+
execCount: number;
|
|
80
|
+
/** What this sandbox has used so far (recorded for billing, not charged). */
|
|
81
|
+
usage?: SandboxUsage;
|
|
82
|
+
}
|
|
83
|
+
export interface SandboxUsage {
|
|
84
|
+
seconds: number;
|
|
85
|
+
vcpuSeconds: number;
|
|
86
|
+
memoryGibSeconds: number;
|
|
87
|
+
diskGibSeconds: number;
|
|
88
|
+
}
|
|
89
|
+
/** GET /v1/sandboxes/usage: this calendar month (UTC) next to the plan's allowance. */
|
|
90
|
+
export interface SandboxUsageReport {
|
|
91
|
+
period: {
|
|
92
|
+
start: string;
|
|
93
|
+
end: string;
|
|
94
|
+
};
|
|
95
|
+
plan: string | null;
|
|
96
|
+
limits: {
|
|
97
|
+
concurrent: number;
|
|
98
|
+
hoursPerMonth: number;
|
|
99
|
+
maxVcpu: number;
|
|
100
|
+
maxMemoryMb: number;
|
|
101
|
+
maxDiskGb: number;
|
|
102
|
+
maxLifetimeSeconds: number;
|
|
103
|
+
networkModes: string[];
|
|
104
|
+
};
|
|
105
|
+
live: number;
|
|
106
|
+
usage: SandboxUsage & {
|
|
107
|
+
hours: number;
|
|
108
|
+
};
|
|
109
|
+
/** null: the plan has no monthly allowance. */
|
|
110
|
+
remainingSeconds: number | null;
|
|
111
|
+
}
|
|
112
|
+
/** A one-use, 60 s shell ticket: open `shellUrl(id)` offering `protocol` as the WebSocket subprotocol. */
|
|
113
|
+
export interface SandboxShellTicket {
|
|
114
|
+
ticket: string;
|
|
115
|
+
protocol: string;
|
|
116
|
+
expiresAt: string;
|
|
117
|
+
}
|
|
118
|
+
/** Client frames of the shell WebSocket. */
|
|
119
|
+
export type SandboxShellClientFrame = {
|
|
120
|
+
type: 'input';
|
|
121
|
+
data: string;
|
|
122
|
+
} | {
|
|
123
|
+
type: 'input';
|
|
124
|
+
dataBase64: string;
|
|
125
|
+
} | {
|
|
126
|
+
type: 'resize';
|
|
127
|
+
cols: number;
|
|
128
|
+
rows: number;
|
|
129
|
+
} | {
|
|
130
|
+
type: 'close';
|
|
131
|
+
};
|
|
132
|
+
/** Server frames of the shell WebSocket. */
|
|
133
|
+
export type SandboxShellServerFrame = {
|
|
134
|
+
type: 'ready';
|
|
135
|
+
sandboxId: string;
|
|
136
|
+
shellId: string;
|
|
137
|
+
shell: string;
|
|
138
|
+
} | {
|
|
139
|
+
type: 'output';
|
|
140
|
+
dataBase64: string;
|
|
141
|
+
} | {
|
|
142
|
+
type: 'exit';
|
|
143
|
+
exitCode: number | null;
|
|
144
|
+
} | {
|
|
145
|
+
type: 'error';
|
|
146
|
+
error: {
|
|
147
|
+
code: string;
|
|
148
|
+
message: string;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
/** GET /v1/sandboxes/:id/exec/:execId: the recorded outcome, and for a detached exec the tail of its output. */
|
|
152
|
+
export interface SandboxExecRecord {
|
|
153
|
+
id: string;
|
|
154
|
+
sandboxId: string;
|
|
155
|
+
status: string;
|
|
156
|
+
exitCode: number | null;
|
|
157
|
+
timedOut: boolean;
|
|
158
|
+
truncated: boolean;
|
|
159
|
+
stdoutBytes: number;
|
|
160
|
+
stderrBytes: number;
|
|
161
|
+
durationMs: number | null;
|
|
162
|
+
errorCode: string | null;
|
|
163
|
+
createdAt: string;
|
|
164
|
+
completedAt: string | null;
|
|
165
|
+
/** null for a streamed exec, or once the process that ran it no longer keeps it (10 min). */
|
|
166
|
+
output?: {
|
|
167
|
+
encoding: 'utf8' | 'base64';
|
|
168
|
+
stdout: string;
|
|
169
|
+
stderr: string;
|
|
170
|
+
droppedBytes: {
|
|
171
|
+
stdout: number;
|
|
172
|
+
stderr: number;
|
|
173
|
+
};
|
|
174
|
+
} | null;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Machine-readable refusals of the sandbox API (`ApiError.code`). Not
|
|
178
|
+
* exhaustive: a newer server may send a code this list does not have yet.
|
|
179
|
+
* `SANDBOX_PLAN_REQUIRED` (402): the workspace's plan does not include
|
|
180
|
+
* sandboxes (Pro and Enterprise only); `ApiError.payload.error.details` is
|
|
181
|
+
* {@link SandboxPlanRequiredDetails}.
|
|
182
|
+
*/
|
|
183
|
+
export type SandboxErrorCode = 'SANDBOXES_NOT_ENABLED' | 'SANDBOX_PLAN_REQUIRED' | 'SANDBOX_SCOPE_REQUIRED' | 'SANDBOX_QUOTA_EXCEEDED' | 'SANDBOX_NETWORK_MODE_UNAVAILABLE' | 'SANDBOX_IMAGE_UNAVAILABLE' | 'SANDBOX_CAPACITY_UNAVAILABLE' | 'SANDBOXES_DRAINING' | 'SANDBOX_NOT_FOUND' | 'SANDBOX_NOT_RUNNING' | 'SANDBOX_NAME_TAKEN' | 'IDEMPOTENCY_KEY_REUSED' | 'SANDBOX_RATE_LIMITED' | 'SANDBOX_RUNNER_UNAVAILABLE' | 'SANDBOX_FILE_TOO_LARGE' | 'SANDBOX_SHELL_UNAVAILABLE' | 'SANDBOX_SHELL_TICKET_INVALID' | 'SANDBOX_SHELL_TICKET_MISMATCH' | 'SANDBOX_SHELL_LIMIT' | 'SANDBOX_SHELL_IDLE_TIMEOUT' | 'SANDBOX_SHELL_OUTPUT_LIMIT' | 'SANDBOX_ENV_ENCRYPTION_UNAVAILABLE' | 'SANDBOX_DETACHED_LIMIT' | 'PLAN_CAPACITY_EXCEEDED';
|
|
184
|
+
/** `error.details` of a 402 SANDBOX_PLAN_REQUIRED. */
|
|
185
|
+
export interface SandboxPlanRequiredDetails {
|
|
186
|
+
/** Plan codes that include sandboxes, e.g. ["pro", "enterprise"]. */
|
|
187
|
+
requiredPlans: string[];
|
|
188
|
+
/** The console's plan page, relative to the console origin ("/billing"). */
|
|
189
|
+
billingPath: string;
|
|
190
|
+
}
|
|
191
|
+
export interface SandboxPage {
|
|
192
|
+
items: SandboxInfo[];
|
|
193
|
+
nextCursor: string | null;
|
|
194
|
+
}
|
|
195
|
+
/** S/M/L, the same presets as `inquir sandbox create --size` and the dashboard form. */
|
|
196
|
+
export declare const SANDBOX_SIZES: Readonly<Record<'s' | 'm' | 'l', {
|
|
197
|
+
vcpu: number;
|
|
198
|
+
memoryMb: number;
|
|
199
|
+
diskGb: number;
|
|
200
|
+
}>>;
|
|
201
|
+
export declare const LIVE_SANDBOX_STATUSES: readonly SandboxStatus[];
|
|
202
|
+
export interface SandboxExecOptions {
|
|
203
|
+
/** Working directory inside the sandbox (default: the image's, `/workspace`). */
|
|
204
|
+
cwd?: string;
|
|
205
|
+
env?: Record<string, string>;
|
|
206
|
+
/** 1 s to 15 min. */
|
|
207
|
+
timeoutMs?: number;
|
|
208
|
+
/** UTF-8 text fed to stdin, then EOF (at most 256 KiB). */
|
|
209
|
+
stdin?: string;
|
|
210
|
+
/** Aborting closes the stream, which cancels the exec on the server. */
|
|
211
|
+
signal?: AbortSignal;
|
|
212
|
+
}
|
|
213
|
+
export interface SandboxRunOptions extends SandboxExecOptions {
|
|
214
|
+
onStdout?: (text: string) => void;
|
|
215
|
+
onStderr?: (text: string) => void;
|
|
216
|
+
/**
|
|
217
|
+
* Keep stdout/stderr in the result (default true). Kept text is capped at
|
|
218
|
+
* `maxBufferedBytes` of UTF-8 per stream (default 16 MiB, the server's own
|
|
219
|
+
* cap), cut between characters; the callbacks still see everything.
|
|
220
|
+
*/
|
|
221
|
+
buffer?: boolean;
|
|
222
|
+
maxBufferedBytes?: number;
|
|
223
|
+
}
|
|
224
|
+
/** One frame of the exec stream. */
|
|
225
|
+
export type SandboxExecFrame = {
|
|
226
|
+
type: 'start';
|
|
227
|
+
execId: string;
|
|
228
|
+
} | {
|
|
229
|
+
type: 'stdout';
|
|
230
|
+
data: string;
|
|
231
|
+
} | {
|
|
232
|
+
type: 'stderr';
|
|
233
|
+
data: string;
|
|
234
|
+
} | {
|
|
235
|
+
type: 'exit';
|
|
236
|
+
exitCode: number | null;
|
|
237
|
+
timedOut: boolean;
|
|
238
|
+
truncated: boolean;
|
|
239
|
+
durationMs: number;
|
|
240
|
+
stdoutBytes: number;
|
|
241
|
+
stderrBytes: number;
|
|
242
|
+
} | {
|
|
243
|
+
type: 'error';
|
|
244
|
+
code: string;
|
|
245
|
+
message: string;
|
|
246
|
+
};
|
|
247
|
+
export interface SandboxExecResult {
|
|
248
|
+
execId: string | null;
|
|
249
|
+
/** null when the process was killed by a signal (timeout, cancel, output cap) or never reported a status. */
|
|
250
|
+
exitCode: number | null;
|
|
251
|
+
timedOut: boolean;
|
|
252
|
+
truncated: boolean;
|
|
253
|
+
durationMs: number;
|
|
254
|
+
stdout: string;
|
|
255
|
+
stderr: string;
|
|
256
|
+
/** Set when the exec ended without an exit status (`error` frame, or the stream ended early). */
|
|
257
|
+
errorCode?: string;
|
|
258
|
+
errorMessage?: string;
|
|
259
|
+
}
|
|
260
|
+
export type SandboxFileData = string | Uint8Array | ArrayBuffer | Blob;
|
|
261
|
+
/** What the dashboard reads before it shows the Sandboxes page; see `client.sandboxes.capabilities()`. */
|
|
262
|
+
export type SandboxCapabilities =
|
|
263
|
+
/** One reason for every "no": the platform's mode is not disclosed. */
|
|
264
|
+
{
|
|
265
|
+
enabled: false;
|
|
266
|
+
reason: 'unavailable';
|
|
267
|
+
}
|
|
268
|
+
/** The platform serves the workspace, its plan does not include sandboxes: nothing else is disclosed. */
|
|
269
|
+
| {
|
|
270
|
+
enabled: true;
|
|
271
|
+
planEligible: false;
|
|
272
|
+
requiredPlans: string[];
|
|
273
|
+
} | {
|
|
274
|
+
enabled: true;
|
|
275
|
+
/** Absent from servers before the plan gate. */
|
|
276
|
+
planEligible?: true;
|
|
277
|
+
draining: boolean;
|
|
278
|
+
canWrite: boolean;
|
|
279
|
+
images: string[];
|
|
280
|
+
networkModes: Array<'none' | 'proxy'>;
|
|
281
|
+
proxyPresets: string[];
|
|
282
|
+
limits: {
|
|
283
|
+
concurrent: number;
|
|
284
|
+
minVcpu: number;
|
|
285
|
+
maxVcpu: number;
|
|
286
|
+
maxMemoryMb: number;
|
|
287
|
+
maxDiskGb: number;
|
|
288
|
+
idleDefaultSeconds: number;
|
|
289
|
+
idleMaxSeconds: number;
|
|
290
|
+
lifetimeDefaultSeconds: number;
|
|
291
|
+
lifetimeMaxSeconds: number;
|
|
292
|
+
hoursPerMonth: number;
|
|
293
|
+
maxFileBytes: number;
|
|
294
|
+
};
|
|
295
|
+
};
|
|
296
|
+
export interface SandboxFilesApi {
|
|
297
|
+
/** Write one file (parents must exist; `/workspace` does). */
|
|
298
|
+
write(path: string, data: SandboxFileData, options?: {
|
|
299
|
+
signal?: AbortSignal;
|
|
300
|
+
}): Promise<{
|
|
301
|
+
path: string;
|
|
302
|
+
bytes: number;
|
|
303
|
+
}>;
|
|
304
|
+
read(path: string, options?: {
|
|
305
|
+
signal?: AbortSignal;
|
|
306
|
+
}): Promise<Uint8Array>;
|
|
307
|
+
readText(path: string, options?: {
|
|
308
|
+
signal?: AbortSignal;
|
|
309
|
+
}): Promise<string>;
|
|
310
|
+
/** Unpack a tar into a directory (no links, devices, absolute names or `..`). */
|
|
311
|
+
upload(directory: string, tar: SandboxFileData, options?: {
|
|
312
|
+
signal?: AbortSignal;
|
|
313
|
+
}): Promise<{
|
|
314
|
+
path: string;
|
|
315
|
+
bytes: number;
|
|
316
|
+
}>;
|
|
317
|
+
/** A directory as a tar. */
|
|
318
|
+
download(directory: string, options?: {
|
|
319
|
+
signal?: AbortSignal;
|
|
320
|
+
}): Promise<Uint8Array>;
|
|
321
|
+
}
|
|
322
|
+
/** One sandbox: its last known state and every operation on it. */
|
|
323
|
+
export interface Sandbox extends AsyncDisposable {
|
|
324
|
+
readonly id: string;
|
|
325
|
+
/** The state as of the last call that returned it (create, get, refresh, keepAlive, destroy). */
|
|
326
|
+
readonly info: SandboxInfo;
|
|
327
|
+
refresh(): Promise<SandboxInfo>;
|
|
328
|
+
/** Run a command and wait for it: `cmd` as argv, or a string for `sh -c`. */
|
|
329
|
+
exec(cmd: string | string[], options?: SandboxRunOptions): Promise<SandboxExecResult>;
|
|
330
|
+
/** The raw frames, as they arrive. Leaving the loop early cancels the exec. */
|
|
331
|
+
stream(cmd: string | string[], options?: SandboxExecOptions): AsyncGenerator<SandboxExecFrame, void, undefined>;
|
|
332
|
+
readonly files: SandboxFilesApi;
|
|
333
|
+
keepAlive(): Promise<SandboxInfo>;
|
|
334
|
+
/** Start a command nobody streams; read its outcome with `getExec`. */
|
|
335
|
+
execDetached(cmd: string | string[], options?: Omit<SandboxExecOptions, 'signal'>): Promise<{
|
|
336
|
+
execId: string;
|
|
337
|
+
status: string;
|
|
338
|
+
}>;
|
|
339
|
+
getExec(execId: string, options?: {
|
|
340
|
+
encoding?: 'utf8' | 'base64';
|
|
341
|
+
}): Promise<SandboxExecRecord>;
|
|
342
|
+
/** A one-use ticket for the shell WebSocket at `shellUrl`. */
|
|
343
|
+
shellTicket(size?: {
|
|
344
|
+
cols?: number;
|
|
345
|
+
rows?: number;
|
|
346
|
+
}): Promise<SandboxShellTicket>;
|
|
347
|
+
readonly shellUrl: string;
|
|
348
|
+
/** Idempotent; the sandbox goes STOPPING, then DESTROYED. */
|
|
349
|
+
destroy(): Promise<SandboxInfo>;
|
|
350
|
+
}
|
|
351
|
+
export interface SandboxCreateOptions {
|
|
352
|
+
/** Wait (up to 30 s on the server) until the sandbox runs. Default true. */
|
|
353
|
+
wait?: boolean;
|
|
354
|
+
/** Repeat-safe create: the same key with the same spec returns the same sandbox. Default: a random UUID. */
|
|
355
|
+
idempotencyKey?: string;
|
|
356
|
+
signal?: AbortSignal;
|
|
357
|
+
}
|
|
358
|
+
export interface SandboxListOptions {
|
|
359
|
+
/** Ended sandboxes too (DESTROYED, FAILED). */
|
|
360
|
+
all?: boolean;
|
|
361
|
+
limit?: number;
|
|
362
|
+
cursor?: string;
|
|
363
|
+
signal?: AbortSignal;
|
|
364
|
+
}
|
|
365
|
+
export interface SandboxesClient {
|
|
366
|
+
create(spec?: SandboxSpec, options?: SandboxCreateOptions): Promise<Sandbox>;
|
|
367
|
+
get(id: string, options?: {
|
|
368
|
+
signal?: AbortSignal;
|
|
369
|
+
}): Promise<Sandbox>;
|
|
370
|
+
/** One page. */
|
|
371
|
+
list(options?: SandboxListOptions): Promise<SandboxPage>;
|
|
372
|
+
/** Every sandbox, page after page. */
|
|
373
|
+
iterate(options?: Omit<SandboxListOptions, 'cursor'>): AsyncGenerator<SandboxInfo, void, undefined>;
|
|
374
|
+
exec(id: string, cmd: string | string[], options?: SandboxRunOptions): Promise<SandboxExecResult>;
|
|
375
|
+
stream(id: string, cmd: string | string[], options?: SandboxExecOptions): AsyncGenerator<SandboxExecFrame, void, undefined>;
|
|
376
|
+
files: {
|
|
377
|
+
write(id: string, path: string, data: SandboxFileData, options?: {
|
|
378
|
+
signal?: AbortSignal;
|
|
379
|
+
}): Promise<{
|
|
380
|
+
path: string;
|
|
381
|
+
bytes: number;
|
|
382
|
+
}>;
|
|
383
|
+
read(id: string, path: string, options?: {
|
|
384
|
+
signal?: AbortSignal;
|
|
385
|
+
}): Promise<Uint8Array>;
|
|
386
|
+
readText(id: string, path: string, options?: {
|
|
387
|
+
signal?: AbortSignal;
|
|
388
|
+
}): Promise<string>;
|
|
389
|
+
upload(id: string, directory: string, tar: SandboxFileData, options?: {
|
|
390
|
+
signal?: AbortSignal;
|
|
391
|
+
}): Promise<{
|
|
392
|
+
path: string;
|
|
393
|
+
bytes: number;
|
|
394
|
+
}>;
|
|
395
|
+
download(id: string, directory: string, options?: {
|
|
396
|
+
signal?: AbortSignal;
|
|
397
|
+
}): Promise<Uint8Array>;
|
|
398
|
+
};
|
|
399
|
+
keepAlive(id: string, options?: {
|
|
400
|
+
signal?: AbortSignal;
|
|
401
|
+
}): Promise<SandboxInfo>;
|
|
402
|
+
destroy(id: string, options?: {
|
|
403
|
+
signal?: AbortSignal;
|
|
404
|
+
}): Promise<SandboxInfo>;
|
|
405
|
+
/** `?detach=1`: 202 at once; the exec runs to its own end (at most 15 min). */
|
|
406
|
+
execDetached(id: string, cmd: string | string[], options?: Omit<SandboxExecOptions, 'signal'>): Promise<{
|
|
407
|
+
execId: string;
|
|
408
|
+
status: string;
|
|
409
|
+
}>;
|
|
410
|
+
getExec(id: string, execId: string, options?: {
|
|
411
|
+
encoding?: 'utf8' | 'base64';
|
|
412
|
+
signal?: AbortSignal;
|
|
413
|
+
}): Promise<SandboxExecRecord>;
|
|
414
|
+
/** POST /v1/sandboxes/:id/shell-ticket (cols/rows 1-1000, default 80x24). */
|
|
415
|
+
shellTicket(id: string, size?: {
|
|
416
|
+
cols?: number;
|
|
417
|
+
rows?: number;
|
|
418
|
+
}, options?: {
|
|
419
|
+
signal?: AbortSignal;
|
|
420
|
+
}): Promise<SandboxShellTicket>;
|
|
421
|
+
/** The shell WebSocket URL (ws/wss of the client's base URL); offer the ticket's `protocol`. */
|
|
422
|
+
shellUrl(id: string): string;
|
|
423
|
+
/** This month's usage next to the plan's allowance. */
|
|
424
|
+
usage(options?: {
|
|
425
|
+
signal?: AbortSignal;
|
|
426
|
+
}): Promise<SandboxUsageReport>;
|
|
427
|
+
/** Whether this workspace may use sandboxes, and the plan's figures. */
|
|
428
|
+
capabilities(options?: {
|
|
429
|
+
signal?: AbortSignal;
|
|
430
|
+
}): Promise<SandboxCapabilities>;
|
|
431
|
+
}
|
|
432
|
+
/** The sandboxes API on a transport client; `createClient()` exposes it as `client.sandboxes`. */
|
|
433
|
+
export declare function createSandboxesClient(client: TransportClient): SandboxesClient;
|
|
434
|
+
//# sourceMappingURL=sandboxes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxes.d.ts","sourceRoot":"","sources":["../src/sandboxes.ts"],"names":[],"mappings":"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"}
|