@solarisdk/runloop-compat 0.0.0-stage → 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 (58) hide show
  1. package/COMPAT.md +110 -0
  2. package/LICENSE +17 -0
  3. package/LICENSE-RUNLOOP +7 -0
  4. package/NOTICE +14 -0
  5. package/README.md +46 -2
  6. package/dist/blueprint-types.d.ts +522 -0
  7. package/dist/blueprint-types.d.ts.map +1 -0
  8. package/dist/blueprint-types.js +4 -0
  9. package/dist/blueprint-types.js.map +1 -0
  10. package/dist/blueprints.d.ts +71 -0
  11. package/dist/blueprints.d.ts.map +1 -0
  12. package/dist/blueprints.js +233 -0
  13. package/dist/blueprints.js.map +1 -0
  14. package/dist/client.d.ts +290 -0
  15. package/dist/client.d.ts.map +1 -0
  16. package/dist/client.js +924 -0
  17. package/dist/client.js.map +1 -0
  18. package/dist/context.d.ts +42 -0
  19. package/dist/context.d.ts.map +1 -0
  20. package/dist/context.js +198 -0
  21. package/dist/context.js.map +1 -0
  22. package/dist/dockerfile.d.ts +36 -0
  23. package/dist/dockerfile.d.ts.map +1 -0
  24. package/dist/dockerfile.js +338 -0
  25. package/dist/dockerfile.js.map +1 -0
  26. package/dist/errors.d.ts +67 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +171 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/image-ref.d.ts +35 -0
  31. package/dist/image-ref.d.ts.map +1 -0
  32. package/dist/image-ref.js +97 -0
  33. package/dist/image-ref.js.map +1 -0
  34. package/dist/index.d.ts +16 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +20 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/mapping.d.ts +49 -0
  39. package/dist/mapping.d.ts.map +1 -0
  40. package/dist/mapping.js +204 -0
  41. package/dist/mapping.js.map +1 -0
  42. package/dist/sdk.d.ts +182 -0
  43. package/dist/sdk.d.ts.map +1 -0
  44. package/dist/sdk.js +356 -0
  45. package/dist/sdk.js.map +1 -0
  46. package/dist/secrets.d.ts +41 -0
  47. package/dist/secrets.d.ts.map +1 -0
  48. package/dist/secrets.js +58 -0
  49. package/dist/secrets.js.map +1 -0
  50. package/dist/shared-types.d.ts +440 -0
  51. package/dist/shared-types.d.ts.map +1 -0
  52. package/dist/shared-types.js +4 -0
  53. package/dist/shared-types.js.map +1 -0
  54. package/dist/types.d.ts +920 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +4 -0
  57. package/dist/types.js.map +1 -0
  58. package/package.json +48 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-ref.d.ts","sourceRoot":"","sources":["../src/image-ref.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAEH,uGAAuG;AACvG,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAMrD,CAAC;AAUF,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,cAAc,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,cAAc,GAAG,yBAAyB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAMnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAwD5D"}
@@ -0,0 +1,97 @@
1
+ // Copy of gateway/src/image-ref.ts (the gateway validates the same grammar); keep the two in step.
2
+ /**
3
+ * OCI image reference validation for `fromImage` templates (blueprint level 3b).
4
+ *
5
+ * The reference comes from a tenant and ends up on a command line inside the builder VM, so it is
6
+ * parsed strictly into registry / repository / tag / digest and re-rendered from the parts. Nothing
7
+ * the caller typed is passed through verbatim. Rules:
8
+ * - the registry must be on the allowlist (public registries only);
9
+ * - no scheme, no userinfo / credentials, no port, no whitespace or control characters;
10
+ * - repository, tag and digest must match the OCI grammar;
11
+ * - a short docker.io name gets `library/` and the tag defaults to `latest`.
12
+ */
13
+ /** Registries a template may pull from. Public, anonymous pulls only: no credentials are ever sent. */
14
+ export const IMAGE_REGISTRY_ALLOWLIST = [
15
+ "docker.io",
16
+ "ghcr.io",
17
+ "public.ecr.aws",
18
+ "gcr.io",
19
+ "quay.io",
20
+ ];
21
+ /** Hostnames that mean docker.io. */
22
+ const DOCKER_HUB_ALIASES = ["docker.io", "index.docker.io", "registry-1.docker.io"];
23
+ const MAX_REF_LENGTH = 255;
24
+ const REPO_COMPONENT = /^[a-z0-9]+(?:(?:[._]|__|-+)[a-z0-9]+)*$/;
25
+ const TAG = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,127}$/;
26
+ const DIGEST = /^sha256:[a-f0-9]{64}$/;
27
+ function bad(error) {
28
+ return { ok: false, code: "InvalidImage", error };
29
+ }
30
+ export function parseImageRef(input) {
31
+ if (typeof input !== "string" || input.length === 0)
32
+ return bad("fromImage must be a non-empty string");
33
+ if (input.length > MAX_REF_LENGTH)
34
+ return bad(`fromImage is longer than ${MAX_REF_LENGTH} characters`);
35
+ // Printable ASCII only: this also rules out whitespace, newlines, NUL and unicode look-alikes.
36
+ if (!/^[\x21-\x7e]+$/.test(input))
37
+ return bad("fromImage contains whitespace or non-ASCII characters");
38
+ if (input.includes("://"))
39
+ return bad("fromImage must not include a URL scheme");
40
+ let rest = input;
41
+ let digest;
42
+ const at = rest.indexOf("@");
43
+ if (at >= 0) {
44
+ digest = rest.slice(at + 1);
45
+ rest = rest.slice(0, at);
46
+ if (!DIGEST.test(digest))
47
+ return bad("fromImage digest must be sha256:<64 hex>");
48
+ }
49
+ if (rest.includes("@"))
50
+ return bad("fromImage must not contain credentials");
51
+ // A tag is a ":" in the LAST path component (a ":" earlier would be a registry port).
52
+ let tag;
53
+ const lastSlash = rest.lastIndexOf("/");
54
+ const colon = rest.indexOf(":", lastSlash + 1);
55
+ if (colon >= 0) {
56
+ tag = rest.slice(colon + 1);
57
+ rest = rest.slice(0, colon);
58
+ if (!TAG.test(tag))
59
+ return bad("fromImage tag is not valid");
60
+ }
61
+ if (rest.includes(":"))
62
+ return bad("fromImage must not include a registry port");
63
+ const parts = rest.split("/");
64
+ let registry;
65
+ // The first component is a registry host if it contains "." (or is "localhost"); otherwise docker.io.
66
+ if (parts.length > 1 && (parts[0].includes(".") || parts[0] === "localhost")) {
67
+ registry = parts.shift().toLowerCase();
68
+ }
69
+ else {
70
+ registry = "docker.io";
71
+ }
72
+ if (DOCKER_HUB_ALIASES.includes(registry))
73
+ registry = "docker.io";
74
+ if (!IMAGE_REGISTRY_ALLOWLIST.includes(registry)) {
75
+ return {
76
+ ok: false,
77
+ code: "ImageRegistryNotAllowed",
78
+ error: `registry ${JSON.stringify(registry.slice(0, 64))} is not allowed; allowed: ${IMAGE_REGISTRY_ALLOWLIST.join(", ")}`,
79
+ };
80
+ }
81
+ if (parts.length === 0 || parts.some((p) => p === ""))
82
+ return bad("fromImage has an empty repository path");
83
+ if (!parts.every((p) => REPO_COMPONENT.test(p)))
84
+ return bad("fromImage repository path is not valid (lowercase letters, digits, . _ - and /)");
85
+ if (registry === "docker.io" && parts.length === 1)
86
+ parts.unshift("library");
87
+ const repository = parts.join("/");
88
+ if (tag === undefined && digest === undefined)
89
+ tag = "latest";
90
+ const name = `${registry}/${repository}`;
91
+ const canonical = `${name}${tag !== undefined ? `:${tag}` : ""}${digest ? `@${digest}` : ""}`;
92
+ return {
93
+ ok: true,
94
+ ref: { registry, repository, ...(tag !== undefined ? { tag } : {}), ...(digest ? { digest } : {}), name, canonical },
95
+ };
96
+ }
97
+ //# sourceMappingURL=image-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-ref.js","sourceRoot":"","sources":["../src/image-ref.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Runloop } from "./client.js";
2
+ export * from "./types.js";
3
+ export * from "./blueprint-types.js";
4
+ export { Secrets, type SecretView, type SecretCreateParams, type SecretUpdateParams, type SecretListParams, type SecretListView } from "./secrets.js";
5
+ export { Blueprint, BlueprintOps, Blueprints, type BlueprintCreateInput } from "./blueprints.js";
6
+ export { StorageObject, StorageObjectOps, tarGzDir, MAX_CONTEXT_BYTES } from "./context.js";
7
+ export { compileDockerfile, IMPORT_ARG } from "./dockerfile.js";
8
+ export type * as Shared from "./shared-types.js";
9
+ export { Runloop, Devboxes, DiskSnapshots, Executions, DevboxesCursorIDPage, type ClientOptions, type PollingOptions, type RequestOptions, DEFAULT_BASE_URL, } from "./client.js";
10
+ export { RunloopSDK, Devbox, DevboxCmdOps, DevboxFileOps, DevboxNetOps, DevboxOps, Snapshot, SnapshotOps, Execution, ExecutionResult, type ExecuteStreamingCallbacks, } from "./sdk.js";
11
+ export { RunloopError, APIError, APIUserAbortError, APIConnectionError, APIConnectionTimeoutError, APITimeoutError, BadRequestError, AuthenticationError, PermissionDeniedError, NotFoundError, ConflictError, UnprocessableEntityError, RateLimitError, InternalServerError, SolariCompatUnsupported, } from "./errors.js";
12
+ /** Runloop's `toFile` helper: wrap bytes as a `File` (Node 20+) or `Blob`. */
13
+ export declare function toFile(value: Blob | Uint8Array | ArrayBuffer | string | Response, name?: string): Promise<Blob>;
14
+ export { STATUS_MAP, RUNLOOP_SIZES, resolveSize, mapStatus } from "./mapping.js";
15
+ export default Runloop;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACtJ,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,KAAK,MAAM,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,OAAO,EACP,QAAQ,EACR,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,UAAU,EACV,MAAM,EACN,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,eAAe,EACf,KAAK,yBAAyB,GAC/B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,8EAA8E;AAC9E,wBAAsB,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrH;AACD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEjF,eAAe,OAAO,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ // @solarisdk/runloop-compat: a Runloop-compatible API on Solari Sandbox.
2
+ // Not affiliated with Runloop. See README.md, COMPAT.md and NOTICE.
3
+ import { Runloop } from "./client.js";
4
+ export * from "./types.js";
5
+ export * from "./blueprint-types.js";
6
+ export { Secrets } from "./secrets.js";
7
+ export { Blueprint, BlueprintOps, Blueprints } from "./blueprints.js";
8
+ export { StorageObject, StorageObjectOps, tarGzDir, MAX_CONTEXT_BYTES } from "./context.js";
9
+ export { compileDockerfile, IMPORT_ARG } from "./dockerfile.js";
10
+ export { Runloop, Devboxes, DiskSnapshots, Executions, DevboxesCursorIDPage, DEFAULT_BASE_URL, } from "./client.js";
11
+ export { RunloopSDK, Devbox, DevboxCmdOps, DevboxFileOps, DevboxNetOps, DevboxOps, Snapshot, SnapshotOps, Execution, ExecutionResult, } from "./sdk.js";
12
+ export { RunloopError, APIError, APIUserAbortError, APIConnectionError, APIConnectionTimeoutError, APITimeoutError, BadRequestError, AuthenticationError, PermissionDeniedError, NotFoundError, ConflictError, UnprocessableEntityError, RateLimitError, InternalServerError, SolariCompatUnsupported, } from "./errors.js";
13
+ /** Runloop's `toFile` helper: wrap bytes as a `File` (Node 20+) or `Blob`. */
14
+ export async function toFile(value, name) {
15
+ const blob = value instanceof Response ? await value.blob() : value instanceof Blob ? value : new Blob([value]);
16
+ return typeof File === "function" ? new File([blob], name ?? "file") : blob;
17
+ }
18
+ export { STATUS_MAP, RUNLOOP_SIZES, resolveSize, mapStatus } from "./mapping.js";
19
+ export default Runloop;
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,oEAAoE;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAiH,MAAM,cAAc,CAAC;AACtJ,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAA6B,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EACL,OAAO,EACP,QAAQ,EACR,aAAa,EACb,UAAU,EACV,oBAAoB,EAIpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,UAAU,EACV,MAAM,EACN,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,eAAe,GAEhB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAA0D,EAAE,IAAa;IACpG,MAAM,IAAI,GAAG,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAiB,CAAC,CAAC,CAAC;IAC5H,OAAO,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AACD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEjF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { CreateSandboxOptions, SandboxState, SandboxView, SnapshotView } from "@solarisdk/core";
2
+ import type { DevboxCreateParams, DevboxSnapshotView, DevboxView } from "./types.js";
3
+ export type RunloopStatus = DevboxView["status"];
4
+ /** Solari state → Runloop devbox status. */
5
+ export declare const STATUS_MAP: Record<SandboxState, RunloopStatus>;
6
+ export declare function mapStatus(state: string): RunloopStatus;
7
+ /** Runloop statuses accepted by `list({status})` → Solari states. */
8
+ export declare function statusToState(status: string): SandboxState | undefined;
9
+ /** Solari host limits the size mapping caps to. */
10
+ export declare const MAX_VCPU = 8;
11
+ export declare const MAX_MEM_MB: number;
12
+ /** Runloop's documented sizes (LaunchParameters.resource_size_request, 2.0.0): [cpu cores, GiB memory]. Disk is not forwarded. */
13
+ export declare const RUNLOOP_SIZES: Record<string, [number, number]>;
14
+ type Warn = (msg: string) => void;
15
+ /**
16
+ * `launch_parameters` sizing → Solari cpu / memMb / diskGb. CPU rounds up to a whole vCPU; anything above
17
+ * Solari's limits (8 vCPU / 16 GiB) is capped with a warning, never an error. Unset = Solari's defaults.
18
+ */
19
+ export declare function resolveSize(lp: DevboxCreateParams["launch_parameters"] | null | undefined, warn?: Warn): {
20
+ cpu?: number;
21
+ memMb?: number;
22
+ diskGb?: number;
23
+ };
24
+ /** Metadata key carrying Runloop's `name` (hidden from `metadata`); first-class once the gateway has `name`. */
25
+ export declare const NAME_METADATA_KEY = "runloop.name";
26
+ export interface TranslatedCreate {
27
+ opts: CreateSandboxOptions;
28
+ /** Files to write once the sandbox is up. */
29
+ fileMounts: Record<string, string>;
30
+ launchCommands: string[];
31
+ entrypoint?: string;
32
+ }
33
+ /** Translate `devboxes.create` params. Unsupported fields throw; nothing is silently ignored. */
34
+ export declare function translateCreate(params?: DevboxCreateParams, warn?: Warn): TranslatedCreate;
35
+ /** Fallback home when the guest does not report $HOME. */
36
+ export declare const DEFAULT_HOME = "/root";
37
+ export declare function absPath(home: string, p: string): string;
38
+ /** Synthesize a Runloop `DevboxView` from a Solari sandbox view. */
39
+ export declare function toDevboxView(v: SandboxView, extra?: {
40
+ createdAtMs?: number;
41
+ keepAliveSeconds?: number;
42
+ snapshotId?: string;
43
+ }): DevboxView;
44
+ export declare function toSnapshotView(s: SnapshotView, devboxId?: string, extra?: {
45
+ metadata?: Record<string, string> | null;
46
+ commitMessage?: string | null;
47
+ }): DevboxSnapshotView;
48
+ export {};
49
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAErG,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEjD,4CAA4C;AAC5C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,CAO1D,CAAC;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAEtD;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAgBtE;AAED,mDAAmD;AACnD,eAAO,MAAM,QAAQ,IAAI,CAAC;AAC1B,eAAO,MAAM,UAAU,QAAY,CAAC;AAEpC,kIAAkI;AAClI,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAO1D,CAAC;AAEF,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;AAGlC;;;GAGG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9D,IAAI,GAAE,IAAkB,GACvB;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAgCnD;AAED,gHAAgH;AAChH,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,MAAM,GAAE,kBAAuB,EAAE,IAAI,GAAE,IAAkB,GAAG,gBAAgB,CAqD3G;AAED,0DAA0D;AAC1D,eAAO,MAAM,YAAY,UAAU,CAAC;AACpC,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,UAAU,CA0B7I;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAAG,kBAAkB,CAU9K"}
@@ -0,0 +1,204 @@
1
+ // Translation rules between Runloop's view/param shapes and Solari's. One place so
2
+ // the Python package can mirror it (see COMPAT.md).
3
+ import { BadRequestError, SolariCompatUnsupported } from "./errors.js";
4
+ /** Solari state → Runloop devbox status. */
5
+ export const STATUS_MAP = {
6
+ starting: "initializing",
7
+ running: "running",
8
+ paused: "suspended",
9
+ archived: "suspended",
10
+ releasing: "shutdown",
11
+ gone: "shutdown",
12
+ };
13
+ export function mapStatus(state) {
14
+ return STATUS_MAP[state] ?? "failure";
15
+ }
16
+ /** Runloop statuses accepted by `list({status})` → Solari states. */
17
+ export function statusToState(status) {
18
+ switch (status) {
19
+ case "running":
20
+ return "running";
21
+ case "suspended":
22
+ return "paused";
23
+ case "initializing":
24
+ case "provisioning":
25
+ case "queued":
26
+ case "scheduled":
27
+ return "starting";
28
+ case "shutdown":
29
+ return "gone";
30
+ default:
31
+ return undefined;
32
+ }
33
+ }
34
+ /** Solari host limits the size mapping caps to. */
35
+ export const MAX_VCPU = 8;
36
+ export const MAX_MEM_MB = 16 * 1024;
37
+ /** Runloop's documented sizes (LaunchParameters.resource_size_request, 2.0.0): [cpu cores, GiB memory]. Disk is not forwarded. */
38
+ export const RUNLOOP_SIZES = {
39
+ X_SMALL: [0.5, 1],
40
+ SMALL: [1, 2],
41
+ MEDIUM: [2, 4],
42
+ LARGE: [2, 8],
43
+ X_LARGE: [4, 16],
44
+ XX_LARGE: [8, 32],
45
+ };
46
+ const defaultWarn = (m) => console.warn(`@solarisdk/runloop-compat: ${m}`);
47
+ /**
48
+ * `launch_parameters` sizing → Solari cpu / memMb / diskGb. CPU rounds up to a whole vCPU; anything above
49
+ * Solari's limits (8 vCPU / 16 GiB) is capped with a warning, never an error. Unset = Solari's defaults.
50
+ */
51
+ export function resolveSize(lp, warn = defaultWarn) {
52
+ const l = lp ?? {};
53
+ const size = l.resource_size_request;
54
+ let cpuF;
55
+ let memGib;
56
+ if (size && size !== "CUSTOM_SIZE") {
57
+ const s = RUNLOOP_SIZES[size];
58
+ if (!s)
59
+ throw new BadRequestError(400, { message: `Unknown resource_size_request ${JSON.stringify(size)}` }, `Unknown resource_size_request ${JSON.stringify(size)}`, {});
60
+ [cpuF, memGib] = s;
61
+ }
62
+ else if (size === "CUSTOM_SIZE" || l.custom_cpu_cores || l.custom_gb_memory) {
63
+ cpuF = l.custom_cpu_cores;
64
+ memGib = l.custom_gb_memory;
65
+ }
66
+ const out = {};
67
+ if (cpuF) {
68
+ let cpu = Math.max(1, Math.ceil(cpuF));
69
+ if (cpu > MAX_VCPU) {
70
+ warn(`requested ${cpu} vCPU exceeds Solari's limit; capped to ${MAX_VCPU}`);
71
+ cpu = MAX_VCPU;
72
+ }
73
+ out.cpu = cpu;
74
+ }
75
+ if (memGib) {
76
+ let mem = Math.trunc(memGib * 1024);
77
+ if (mem > MAX_MEM_MB) {
78
+ warn(`requested ${mem} MiB memory exceeds Solari's limit; capped to ${MAX_MEM_MB}`);
79
+ mem = MAX_MEM_MB;
80
+ }
81
+ out.memMb = mem;
82
+ }
83
+ if (l.custom_disk_size)
84
+ out.diskGb = Math.trunc(l.custom_disk_size);
85
+ return out;
86
+ }
87
+ /** Metadata key carrying Runloop's `name` (hidden from `metadata`); first-class once the gateway has `name`. */
88
+ export const NAME_METADATA_KEY = "runloop.name";
89
+ const UNSUPPORTED_CREATE = {
90
+ code_mounts: "code_mounts (clone inside the devbox with `git clone` for now)",
91
+ mounts: "mounts",
92
+ gateways: "agent gateways",
93
+ mcp: "MCP configs",
94
+ };
95
+ const KNOWN_CREATE = new Set(["name", "metadata", "environment_variables", "blueprint_name", "snapshot_id", "launch_parameters", "file_mounts", "entrypoint", "secrets", "tunnel"]);
96
+ /** Translate `devboxes.create` params. Unsupported fields throw; nothing is silently ignored. */
97
+ export function translateCreate(params = {}, warn = defaultWarn) {
98
+ const p = params;
99
+ for (const [key, label] of Object.entries(UNSUPPORTED_CREATE)) {
100
+ const v = p[key];
101
+ if (v && !(Array.isArray(v) && v.length === 0) && !(typeof v === "object" && Object.keys(v).length === 0)) {
102
+ throw new SolariCompatUnsupported(label);
103
+ }
104
+ }
105
+ const unknown = Object.keys(p).filter((k) => p[k] != null && !KNOWN_CREATE.has(k) && !(k in UNSUPPORTED_CREATE));
106
+ if (unknown.length > 0)
107
+ throw new SolariCompatUnsupported(`create parameter(s) ${unknown.sort().join(", ")}`);
108
+ const lp = params.launch_parameters ?? {};
109
+ for (const [key, label] of [
110
+ ["network_policy_id", "network policies"],
111
+ ["user_parameters", "user_parameters"],
112
+ ["required_services", "required_services"],
113
+ ]) {
114
+ const v = lp[key];
115
+ if (v && !(Array.isArray(v) && v.length === 0))
116
+ throw new SolariCompatUnsupported(label);
117
+ }
118
+ const opts = { ...resolveSize(lp, warn) };
119
+ if (params.blueprint_name)
120
+ opts.template = params.blueprint_name;
121
+ if (params.snapshot_id)
122
+ opts.fromSnapshot = params.snapshot_id;
123
+ if (params.environment_variables && Object.keys(params.environment_variables).length > 0) {
124
+ opts.envs = { ...params.environment_variables };
125
+ }
126
+ const secrets = params.secrets;
127
+ if (secrets && Object.keys(secrets).length > 0) {
128
+ for (const [env, name] of Object.entries(secrets)) {
129
+ if (typeof name !== "string" || !name)
130
+ throw new SolariCompatUnsupported(`secrets.${env}: a secret name (string) is required`);
131
+ if (params.environment_variables && env in params.environment_variables) {
132
+ throw new SolariCompatUnsupported(`secrets.${env}: also set in environment_variables`);
133
+ }
134
+ }
135
+ opts.secrets = { ...secrets };
136
+ }
137
+ const metadata = { ...(params.metadata ?? {}) };
138
+ if (params.name != null)
139
+ metadata[NAME_METADATA_KEY] = params.name;
140
+ if (Object.keys(metadata).length > 0)
141
+ opts.metadata = metadata;
142
+ const idle = lp.after_idle ?? lp.lifecycle?.after_idle ?? null;
143
+ const ka = lp.keep_alive_time_seconds;
144
+ if (idle?.idle_time_seconds) {
145
+ opts.idleTimeoutMs = Math.trunc(idle.idle_time_seconds) * 1000;
146
+ opts.lifecycle = { onTimeout: idle.on_idle === "suspend" ? "pause" : "kill" };
147
+ }
148
+ else if (ka) {
149
+ opts.idleTimeoutMs = Math.trunc(ka) * 1000;
150
+ opts.lifecycle = { onTimeout: "kill" };
151
+ }
152
+ return {
153
+ opts,
154
+ fileMounts: params.file_mounts ?? {},
155
+ launchCommands: lp.launch_commands ?? [],
156
+ ...(params.entrypoint ? { entrypoint: params.entrypoint } : {}),
157
+ };
158
+ }
159
+ /** Fallback home when the guest does not report $HOME. */
160
+ export const DEFAULT_HOME = "/root";
161
+ export function absPath(home, p) {
162
+ return p.startsWith("/") ? p : `${home.replace(/\/+$/, "")}/${p}`;
163
+ }
164
+ /** Synthesize a Runloop `DevboxView` from a Solari sandbox view. */
165
+ export function toDevboxView(v, extra = {}) {
166
+ const status = mapStatus(v.state);
167
+ const created = Date.parse(v.createdAt ?? "") || extra.createdAtMs || Date.now();
168
+ const metadata = { ...(v.metadata ?? {}) };
169
+ const name = v.name || metadata[NAME_METADATA_KEY];
170
+ delete metadata[NAME_METADATA_KEY];
171
+ const view = {
172
+ id: v.sandboxId,
173
+ status,
174
+ create_time_ms: created,
175
+ end_time_ms: status === "shutdown" ? Date.now() : null,
176
+ metadata,
177
+ launch_parameters: {
178
+ resource_size_request: "CUSTOM_SIZE",
179
+ ...(v.cpu ? { custom_cpu_cores: v.cpu } : {}),
180
+ ...(v.memMb ? { custom_gb_memory: Math.floor(v.memMb / 1024) } : {}),
181
+ ...(v.diskGb ? { custom_disk_size: v.diskGb } : {}),
182
+ ...(extra.keepAliveSeconds ? { keep_alive_time_seconds: extra.keepAliveSeconds } : {}),
183
+ },
184
+ capabilities: [],
185
+ state_transitions: [{ status, transition_time_ms: created }],
186
+ };
187
+ if (name)
188
+ view.name = name;
189
+ if (extra.snapshotId)
190
+ view.snapshot_id = extra.snapshotId;
191
+ return view;
192
+ }
193
+ export function toSnapshotView(s, devboxId, extra = {}) {
194
+ return {
195
+ id: s.id,
196
+ create_time_ms: Date.parse(s.createdAt) || Date.now(),
197
+ metadata: { ...(extra.metadata ?? {}) },
198
+ ...(extra.commitMessage ? { commit_message: extra.commitMessage } : {}),
199
+ source_devbox_id: devboxId ?? "",
200
+ size_bytes: s.sizeBytes,
201
+ ...(s.name ? { name: s.name } : {}),
202
+ };
203
+ }
204
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
package/dist/sdk.d.ts ADDED
@@ -0,0 +1,182 @@
1
+ import * as Errors from "./errors.js";
2
+ import { BlueprintOps } from "./blueprints.js";
3
+ import { StorageObjectOps } from "./context.js";
4
+ import { Runloop, type ClientOptions, type DevboxesCursorIDPage, type ExecRecord, type RequestOptions, type StreamCallbacks } from "./client.js";
5
+ import type { DevboxLogsListView } from "./blueprint-types.js";
6
+ import type { DevboxAsyncExecutionDetailView, DevboxCreateParams, DevboxDownloadFileParams, DevboxExecutionDetailView, DevboxKeepAliveResponse, DevboxListParams, DevboxReadFileContentsParams, DevboxSnapshotDiskParams, DevboxSnapshotView, DevboxUploadFileParams, DevboxView, DevboxWriteFileContentsParams, TunnelView } from "./types.js";
7
+ export type ExecuteStreamingCallbacks = StreamCallbacks;
8
+ type ExecParams = StreamCallbacks & {
9
+ shell_name?: string | null;
10
+ };
11
+ /** Terminal result of a command (`devbox.cmd.exec`). */
12
+ export declare class ExecutionResult {
13
+ private readonly _devboxId;
14
+ private readonly _executionId;
15
+ private readonly _result;
16
+ constructor(_devboxId: string, _executionId: string, _result: DevboxAsyncExecutionDetailView);
17
+ get exitCode(): number | null;
18
+ get executionId(): string;
19
+ get devboxId(): string;
20
+ stdout(numLines?: number): Promise<string>;
21
+ stderr(numLines?: number): Promise<string>;
22
+ get result(): DevboxAsyncExecutionDetailView;
23
+ get success(): boolean;
24
+ get failed(): boolean;
25
+ }
26
+ /** A running command started with `devbox.cmd.execAsync`. Live-handle only (see COMPAT.md). */
27
+ export declare class Execution {
28
+ private readonly client;
29
+ private readonly rec;
30
+ constructor(client: Runloop, rec: ExecRecord);
31
+ get executionId(): string;
32
+ get devboxId(): string;
33
+ sendStdIn(input: string, _options?: RequestOptions): Promise<void>;
34
+ closeStdIn(_options?: RequestOptions): Promise<void>;
35
+ result(_options?: RequestOptions): Promise<ExecutionResult>;
36
+ getState(_options?: RequestOptions): Promise<DevboxAsyncExecutionDetailView>;
37
+ kill(_options?: RequestOptions): Promise<void>;
38
+ }
39
+ export declare class DevboxCmdOps {
40
+ private readonly client;
41
+ private readonly devboxId;
42
+ constructor(client: Runloop, devboxId: string);
43
+ exec(command: string, params?: ExecParams, _options?: RequestOptions): Promise<ExecutionResult>;
44
+ execAsync(command: string, params?: ExecParams, _options?: RequestOptions): Promise<Execution>;
45
+ }
46
+ export declare class DevboxFileOps {
47
+ private readonly client;
48
+ private readonly devboxId;
49
+ constructor(client: Runloop, devboxId: string);
50
+ read(params: DevboxReadFileContentsParams, options?: RequestOptions): Promise<string>;
51
+ write(params: DevboxWriteFileContentsParams, options?: RequestOptions): Promise<DevboxExecutionDetailView>;
52
+ download(params: DevboxDownloadFileParams, options?: RequestOptions): Promise<Response>;
53
+ upload(params: DevboxUploadFileParams, options?: RequestOptions): Promise<unknown>;
54
+ }
55
+ export declare class DevboxNetOps {
56
+ private readonly client;
57
+ private readonly devboxId;
58
+ constructor(client: Runloop, devboxId: string);
59
+ createSSHKey(): never;
60
+ /** `authenticated` (default, returns `auth_token`) or `open`; `wake_on_http` needs `authenticated`. */
61
+ enableTunnel(params?: {
62
+ auth_mode?: string;
63
+ wake_on_http?: boolean;
64
+ http_keep_alive?: boolean;
65
+ }, options?: RequestOptions): Promise<TunnelView>;
66
+ removeTunnel(options?: RequestOptions): Promise<void>;
67
+ }
68
+ export declare class Devbox {
69
+ private readonly client;
70
+ private readonly _id;
71
+ readonly net: DevboxNetOps;
72
+ readonly cmd: DevboxCmdOps;
73
+ readonly file: DevboxFileOps;
74
+ private constructor();
75
+ static create(client: Runloop, params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
76
+ static createFromBlueprintId(client: Runloop, blueprintId: string, params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
77
+ /** `blueprintName` is a Solari template: a built-in (`base`) or a blueprint built with `blueprint.create`. */
78
+ static createFromBlueprintName(client: Runloop, blueprintName: string, params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
79
+ static createFromSnapshot(client: Runloop, snapshotId: string, params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
80
+ static fromId(client: Runloop, id: string): Devbox;
81
+ get id(): string;
82
+ shell(_name?: string): never;
83
+ getInfo(options?: RequestOptions): Promise<DevboxView>;
84
+ /** The devbox's tunnel, or `null` when none is enabled. */
85
+ getTunnel(_options?: RequestOptions): Promise<TunnelView | null>;
86
+ /** Returns Solari's public preview URL for the port. */
87
+ getTunnelUrl(port: number, _options?: RequestOptions): Promise<string>;
88
+ logs(params?: {
89
+ execution_id?: string;
90
+ shell_name?: string;
91
+ text?: string;
92
+ }, options?: RequestOptions): Promise<DevboxLogsListView>;
93
+ update(params: {
94
+ name?: string | null;
95
+ metadata?: Record<string, string> | null;
96
+ }, options?: RequestOptions): Promise<DevboxView>;
97
+ awaitRunning(options?: RequestOptions): Promise<DevboxView>;
98
+ awaitSuspended(options?: RequestOptions): Promise<DevboxView>;
99
+ snapshotDisk(params?: DevboxSnapshotDiskParams, options?: RequestOptions): Promise<Snapshot>;
100
+ snapshotDiskAsync(params?: DevboxSnapshotDiskParams, options?: RequestOptions): Promise<Snapshot>;
101
+ shutdown(options?: RequestOptions): Promise<DevboxView>;
102
+ suspend(options?: RequestOptions): Promise<DevboxView>;
103
+ resume(options?: RequestOptions): Promise<DevboxView>;
104
+ resumeAsync(options?: RequestOptions): Promise<DevboxView>;
105
+ keepAlive(options?: RequestOptions): Promise<DevboxKeepAliveResponse>;
106
+ onEvict(): never;
107
+ cancelOnEvict(): never;
108
+ /** Stop local resources (closes the control channel). Does not shut the devbox down. */
109
+ close(): void;
110
+ [Symbol.asyncDispose](): Promise<void>;
111
+ }
112
+ export declare class Snapshot {
113
+ private readonly client;
114
+ private readonly _id;
115
+ private constructor();
116
+ static fromId(client: Runloop, id: string): Snapshot;
117
+ static list(client: Runloop, params?: {
118
+ limit?: number;
119
+ starting_after?: string;
120
+ }): Promise<Snapshot[]>;
121
+ get id(): string;
122
+ getInfo(_options?: RequestOptions): Promise<DevboxSnapshotView>;
123
+ /** Same as {@link getInfo}: Solari snapshots are complete when created. */
124
+ queryStatus(): Promise<DevboxSnapshotView>;
125
+ awaitCompleted(): Promise<DevboxSnapshotView>;
126
+ update(params?: {
127
+ name?: string | null;
128
+ commit_message?: string | null;
129
+ metadata?: Record<string, string> | null;
130
+ }, _options?: RequestOptions): Promise<void>;
131
+ delete(_options?: RequestOptions): Promise<unknown>;
132
+ createDevbox(params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
133
+ }
134
+ export declare class DevboxOps {
135
+ private readonly client;
136
+ constructor(client: Runloop);
137
+ create(params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
138
+ createFromBlueprintId(blueprintId: string, params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
139
+ createFromBlueprintName(blueprintName: string, params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
140
+ createFromSnapshot(snapshotId: string, params?: DevboxCreateParams, options?: RequestOptions): Promise<Devbox>;
141
+ fromId(id: string): Devbox;
142
+ list(params?: DevboxListParams, options?: RequestOptions): Promise<Devbox[]>;
143
+ }
144
+ export declare class SnapshotOps {
145
+ private readonly client;
146
+ constructor(client: Runloop);
147
+ list(params?: {
148
+ limit?: number;
149
+ starting_after?: string;
150
+ }): Promise<Snapshot[]>;
151
+ fromId(id: string): Snapshot;
152
+ }
153
+ export declare class RunloopSDK {
154
+ static RunloopError: typeof Errors.RunloopError;
155
+ static APIError: typeof Errors.APIError;
156
+ static APIConnectionError: typeof Errors.APIConnectionError;
157
+ static APIConnectionTimeoutError: typeof Errors.APIConnectionTimeoutError;
158
+ static APIUserAbortError: typeof Errors.APIUserAbortError;
159
+ static NotFoundError: typeof Errors.NotFoundError;
160
+ static ConflictError: typeof Errors.ConflictError;
161
+ static RateLimitError: typeof Errors.RateLimitError;
162
+ static BadRequestError: typeof Errors.BadRequestError;
163
+ static AuthenticationError: typeof Errors.AuthenticationError;
164
+ static PermissionDeniedError: typeof Errors.PermissionDeniedError;
165
+ static UnprocessableEntityError: typeof Errors.UnprocessableEntityError;
166
+ static InternalServerError: typeof Errors.InternalServerError;
167
+ static SolariCompatUnsupported: typeof Errors.SolariCompatUnsupported;
168
+ readonly api: Runloop;
169
+ readonly devbox: DevboxOps;
170
+ readonly snapshot: SnapshotOps;
171
+ readonly blueprint: BlueprintOps;
172
+ readonly storageObject: StorageObjectOps;
173
+ readonly agent: Record<string, (...a: unknown[]) => never>;
174
+ readonly axon: Record<string, (...a: unknown[]) => never>;
175
+ readonly networkPolicy: Record<string, (...a: unknown[]) => never>;
176
+ readonly gatewayConfig: Record<string, (...a: unknown[]) => never>;
177
+ readonly mcpConfig: Record<string, (...a: unknown[]) => never>;
178
+ readonly secret: Record<string, (...a: unknown[]) => never>;
179
+ constructor(options?: ClientOptions);
180
+ }
181
+ export type { DevboxesCursorIDPage };
182
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}