@ottimis/jack-provider-sdk 0.7.0 → 0.9.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.
package/dist/cjs/index.js CHANGED
@@ -48,4 +48,5 @@ __exportStar(require("./provider"), exports);
48
48
  __exportStar(require("./usage"), exports);
49
49
  __exportStar(require("./host"), exports);
50
50
  __exportStar(require("./profiles"), exports);
51
+ __exportStar(require("./sandbox"), exports);
51
52
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;;;;;;;;;;AAEH,4CAAyB;AACzB,4CAAyB;AACzB,6CAA0B;AAC1B,0CAAuB;AACvB,yCAAsB;AACtB,6CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;;;;;;;;;;AAEH,4CAAyB;AACzB,4CAAyB;AACzB,6CAA0B;AAC1B,0CAAuB;AACvB,yCAAsB;AACtB,6CAA0B;AAC1B,4CAAyB"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * SandboxApi — provider-declared Docker sandbox capability.
4
+ *
5
+ * Jack runs sessions in a Docker container ("sandbox mode") to isolate the
6
+ * provider's CLI from the host filesystem and network. The container itself
7
+ * is generic — Jack owns the Docker orchestration, security policy (CapDrop,
8
+ * memory cap, non-privileged), project mount, and user-defined shared
9
+ * volumes. The PROVIDER-SPECIFIC bits live here:
10
+ *
11
+ * - which image to pull (each provider needs its own CLI installed)
12
+ * - which binary name to invoke inside the container (used by the host to
13
+ * rewrite host-resolved absolute paths like
14
+ * `/Users/foo/.local/bin/claude` to a bare command the container's
15
+ * PATH resolves)
16
+ * - which config dir to mount (`~/.claude`, `~/.codex`, `~/.gemini`, …)
17
+ * - optional env extras
18
+ *
19
+ * A provider declaring `sandbox` opts itself into sandbox mode. The
20
+ * matching capability flag {@link CapabilityMatrix.sandbox} MUST be `true`
21
+ * — the host derives it from `provider.sandbox != null` at registration.
22
+ *
23
+ * Providers that don't declare `sandbox` (or set it to `undefined`) are
24
+ * treated as sandbox-incompatible: the host hides the toggle in the UI and
25
+ * blocks spawn-time requests with a clear error.
26
+ *
27
+ * The host's distribution model expects images at
28
+ * `ghcr.io/ottimis/jack-sandbox-<provider-id>:<X.Y.Z>` (monorepo
29
+ * `github.com/ottimis/JACK-sandbox`). Providers can point `defaultImage`
30
+ * elsewhere — third-party plugin authors who maintain their own image are
31
+ * free to host wherever they like.
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/sandbox.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG"}
package/dist/index.d.ts CHANGED
@@ -32,6 +32,7 @@ export * from './provider';
32
32
  export * from './usage';
33
33
  export * from './host';
34
34
  export * from './profiles';
35
+ export * from './sandbox';
35
36
  /**
36
37
  * Re-export of `NormalizedMessage` from chat-core so consumers don't need
37
38
  * to depend on it directly when their only entrypoint into the wire shape
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAE1B;;;;;GAKG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AAEzB;;;;;GAKG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/index.js CHANGED
@@ -32,4 +32,5 @@ export * from './provider';
32
32
  export * from './usage';
33
33
  export * from './host';
34
34
  export * from './profiles';
35
+ export * from './sandbox';
35
36
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA"}
@@ -18,6 +18,7 @@
18
18
  import type { AgentBackend, AgentPermissionMode, AgentQueryOptions, McpServerSpec } from './backend';
19
19
  import type { HostServices } from './host';
20
20
  import type { ProfilesApi } from './profiles';
21
+ import type { SandboxApi } from './sandbox';
21
22
  import type { UsageApi } from './usage';
22
23
  import type { ZodType } from 'zod';
23
24
  import type { ClientToolHandler, NormalizedMessage, NormalizedToolRef, ProviderUserContentPolicy, ToolShape } from '@ottimis/jack-chat-core';
@@ -270,6 +271,17 @@ export type CapabilityMatrix = {
270
271
  * config dir; the host hides every profile-related affordance.
271
272
  */
272
273
  profiles: boolean;
274
+ /**
275
+ * Provider can run inside Jack's Docker sandbox. When `true`,
276
+ * {@link JackProvider.sandbox} MUST be defined; the host enables the
277
+ * sandbox toggle in the new-session dialog and renders an entry for this
278
+ * provider in `Settings → Sandbox`.
279
+ *
280
+ * When `false` (or omitted), sandbox mode is unavailable for this
281
+ * provider — the toggle is hidden / disabled in the UI, and a spawn-time
282
+ * sandbox request returns a clear error.
283
+ */
284
+ sandbox: boolean;
273
285
  /**
274
286
  * Permission modes the provider actually supports. Drives the
275
287
  * Shift-Tab cycle in the renderer (`MessageInputBar`) and any
@@ -288,6 +300,23 @@ export type CapabilityMatrix = {
288
300
  * or settings); the catalog only governs UI affordances.
289
301
  */
290
302
  permissionModes: readonly AgentPermissionMode[];
303
+ /**
304
+ * Suggested prompt-cache TTL in milliseconds — how long the provider's
305
+ * server-side prompt cache stays warm between user turns before a new
306
+ * cache-write is required. Optional: providers without prompt caching
307
+ * (or without a documented TTL) leave it undefined and the host hides
308
+ * the cache-countdown chip entirely for sessions on that provider.
309
+ *
310
+ * This is only the **suggested default**: the user can override per
311
+ * provider in `Settings → Prompt cache` and disable the chip outright.
312
+ * The host treats this as a UI-only countdown hint — never as a
313
+ * contract for actual cache eviction (the provider is the source of
314
+ * truth at request time).
315
+ *
316
+ * Claude declares 300_000 (5 min) per its prompt-caching docs. Codex
317
+ * and Gemini leave it undefined.
318
+ */
319
+ cacheTtlMs?: number;
291
320
  };
292
321
  /**
293
322
  * Re-exports of canonical wire-shape types from chat-core so consumers of
@@ -645,6 +674,14 @@ export type JackProvider = {
645
674
  * Codex `CODEX_HOME`, …).
646
675
  */
647
676
  profiles?: ProfilesApi;
677
+ /**
678
+ * Docker sandbox capability — provider declares the image, binary name,
679
+ * and config-dir mount the host needs to spawn a sandboxed session for
680
+ * this provider. See {@link SandboxApi}. Optional; when undefined
681
+ * `capabilities.sandbox` MUST be `false` and the host disables sandbox
682
+ * mode for this provider's sessions.
683
+ */
684
+ sandbox?: SandboxApi;
648
685
  /**
649
686
  * Optional one-shot activation hook. Called once by the host during
650
687
  * registration with a {@link HostServices} bag scoped to this
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * SandboxApi — provider-declared Docker sandbox capability.
3
+ *
4
+ * Jack runs sessions in a Docker container ("sandbox mode") to isolate the
5
+ * provider's CLI from the host filesystem and network. The container itself
6
+ * is generic — Jack owns the Docker orchestration, security policy (CapDrop,
7
+ * memory cap, non-privileged), project mount, and user-defined shared
8
+ * volumes. The PROVIDER-SPECIFIC bits live here:
9
+ *
10
+ * - which image to pull (each provider needs its own CLI installed)
11
+ * - which binary name to invoke inside the container (used by the host to
12
+ * rewrite host-resolved absolute paths like
13
+ * `/Users/foo/.local/bin/claude` to a bare command the container's
14
+ * PATH resolves)
15
+ * - which config dir to mount (`~/.claude`, `~/.codex`, `~/.gemini`, …)
16
+ * - optional env extras
17
+ *
18
+ * A provider declaring `sandbox` opts itself into sandbox mode. The
19
+ * matching capability flag {@link CapabilityMatrix.sandbox} MUST be `true`
20
+ * — the host derives it from `provider.sandbox != null` at registration.
21
+ *
22
+ * Providers that don't declare `sandbox` (or set it to `undefined`) are
23
+ * treated as sandbox-incompatible: the host hides the toggle in the UI and
24
+ * blocks spawn-time requests with a clear error.
25
+ *
26
+ * The host's distribution model expects images at
27
+ * `ghcr.io/ottimis/jack-sandbox-<provider-id>:<X.Y.Z>` (monorepo
28
+ * `github.com/ottimis/JACK-sandbox`). Providers can point `defaultImage`
29
+ * elsewhere — third-party plugin authors who maintain their own image are
30
+ * free to host wherever they like.
31
+ */
32
+ /**
33
+ * Mount the provider's host-side config directory into the container.
34
+ * Most providers persist auth + sessions + per-user settings in a dotfile
35
+ * dir under `$HOME` (Claude `~/.claude`, Codex `~/.codex`, Gemini
36
+ * `~/.gemini`). The host mounts this dir into the container at
37
+ * {@link containerPath} so the CLI inside the container has access to the
38
+ * same auth state as the host.
39
+ *
40
+ * Read-only by default — the container shouldn't be writing back to the
41
+ * user's persistent config from inside the sandbox. Set `readOnly: false`
42
+ * only when the provider's CLI genuinely needs to mutate state inside the
43
+ * config dir (e.g. session JSONL append).
44
+ */
45
+ export type SandboxConfigMount = {
46
+ /**
47
+ * Absolute host path. Provider implementations resolve this lazily — call
48
+ * `os.homedir()` + `path.join(...)` at the time `configMount` is read,
49
+ * not at module-load time, so test environments and per-process HOME
50
+ * overrides work correctly.
51
+ */
52
+ hostPath: string;
53
+ /** Absolute container path. */
54
+ containerPath: string;
55
+ /** When `true`, the host adds `:ro` to the bind. Default: `true` recommended. */
56
+ readOnly: boolean;
57
+ };
58
+ /**
59
+ * Provider-declared Docker sandbox capability. Optional on
60
+ * {@link JackProvider}; when present the matching
61
+ * {@link CapabilityMatrix.sandbox} flag MUST be `true`.
62
+ */
63
+ export interface SandboxApi {
64
+ /**
65
+ * Default image reference, pinned per provider release. Format:
66
+ * `<registry>/<repo>:<tag>`. Users can override per-provider via the host
67
+ * setting `sandbox.image.<providerId>`.
68
+ *
69
+ * For Jack's first-party providers the recommended location is
70
+ * `ghcr.io/ottimis/jack-sandbox-<providerId>:<X.Y.Z>` (monorepo built
71
+ * from `github.com/ottimis/JACK-sandbox`). Third-party plugins are free
72
+ * to host elsewhere.
73
+ */
74
+ readonly defaultImage: string;
75
+ /**
76
+ * CLI binary name as it should be invoked inside the container (e.g.
77
+ * `'claude'`, `'codex'`, `'gemini'`). Used by the host's spawner to
78
+ * rewrite host-resolved absolute binary paths to a bare command the
79
+ * container's PATH resolves.
80
+ *
81
+ * The image MUST install this binary at a location reachable from
82
+ * `$PATH` (typically `/usr/local/bin/<binaryName>` via `npm install -g`).
83
+ */
84
+ readonly binaryName: string;
85
+ /**
86
+ * Mount the provider's host-side config directory into the container.
87
+ * Optional — providers that are stateless on the host (none today)
88
+ * leave this undefined.
89
+ */
90
+ readonly configMount?: SandboxConfigMount;
91
+ /**
92
+ * Optional environment extras to inject into the container. Layered AFTER
93
+ * the spawn-arg env so provider-specific overrides can win, but BEFORE
94
+ * the user can override (the user-facing override is per-provider via
95
+ * the host setting, not per-env-var).
96
+ *
97
+ * Most provider env is already on `SpawnArgs.env` from the backend's
98
+ * spawn pipeline. Use this only when the SDK contract doesn't expose a
99
+ * cleaner channel — e.g. forcing a CLI to disable telemetry inside the
100
+ * sandbox even when the user has it on globally.
101
+ */
102
+ envExtras?(): Record<string, string>;
103
+ }
104
+ //# sourceMappingURL=sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAE7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEzC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * SandboxApi — provider-declared Docker sandbox capability.
3
+ *
4
+ * Jack runs sessions in a Docker container ("sandbox mode") to isolate the
5
+ * provider's CLI from the host filesystem and network. The container itself
6
+ * is generic — Jack owns the Docker orchestration, security policy (CapDrop,
7
+ * memory cap, non-privileged), project mount, and user-defined shared
8
+ * volumes. The PROVIDER-SPECIFIC bits live here:
9
+ *
10
+ * - which image to pull (each provider needs its own CLI installed)
11
+ * - which binary name to invoke inside the container (used by the host to
12
+ * rewrite host-resolved absolute paths like
13
+ * `/Users/foo/.local/bin/claude` to a bare command the container's
14
+ * PATH resolves)
15
+ * - which config dir to mount (`~/.claude`, `~/.codex`, `~/.gemini`, …)
16
+ * - optional env extras
17
+ *
18
+ * A provider declaring `sandbox` opts itself into sandbox mode. The
19
+ * matching capability flag {@link CapabilityMatrix.sandbox} MUST be `true`
20
+ * — the host derives it from `provider.sandbox != null` at registration.
21
+ *
22
+ * Providers that don't declare `sandbox` (or set it to `undefined`) are
23
+ * treated as sandbox-incompatible: the host hides the toggle in the UI and
24
+ * blocks spawn-time requests with a clear error.
25
+ *
26
+ * The host's distribution model expects images at
27
+ * `ghcr.io/ottimis/jack-sandbox-<provider-id>:<X.Y.Z>` (monorepo
28
+ * `github.com/ottimis/JACK-sandbox`). Providers can point `defaultImage`
29
+ * elsewhere — third-party plugin authors who maintain their own image are
30
+ * free to host wherever they like.
31
+ */
32
+ export {};
33
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ottimis/jack-provider-sdk",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Plugin contract for AI provider integrations in Jack — backend interface, capability matrix, spawner primitives, knowledge context. Consumed both by in-tree providers and external packages.",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/index.ts CHANGED
@@ -33,6 +33,7 @@ export * from './provider'
33
33
  export * from './usage'
34
34
  export * from './host'
35
35
  export * from './profiles'
36
+ export * from './sandbox'
36
37
 
37
38
  /**
38
39
  * Re-export of `NormalizedMessage` from chat-core so consumers don't need
package/src/provider.ts CHANGED
@@ -19,6 +19,7 @@
19
19
  import type { AgentBackend, AgentPermissionMode, AgentQueryOptions, McpServerSpec } from './backend'
20
20
  import type { HostServices } from './host'
21
21
  import type { ProfilesApi } from './profiles'
22
+ import type { SandboxApi } from './sandbox'
22
23
  import type { UsageApi } from './usage'
23
24
  import type { ZodType } from 'zod'
24
25
  import type {
@@ -286,6 +287,17 @@ export type CapabilityMatrix = {
286
287
  * config dir; the host hides every profile-related affordance.
287
288
  */
288
289
  profiles: boolean
290
+ /**
291
+ * Provider can run inside Jack's Docker sandbox. When `true`,
292
+ * {@link JackProvider.sandbox} MUST be defined; the host enables the
293
+ * sandbox toggle in the new-session dialog and renders an entry for this
294
+ * provider in `Settings → Sandbox`.
295
+ *
296
+ * When `false` (or omitted), sandbox mode is unavailable for this
297
+ * provider — the toggle is hidden / disabled in the UI, and a spawn-time
298
+ * sandbox request returns a clear error.
299
+ */
300
+ sandbox: boolean
289
301
  /**
290
302
  * Permission modes the provider actually supports. Drives the
291
303
  * Shift-Tab cycle in the renderer (`MessageInputBar`) and any
@@ -304,6 +316,23 @@ export type CapabilityMatrix = {
304
316
  * or settings); the catalog only governs UI affordances.
305
317
  */
306
318
  permissionModes: readonly AgentPermissionMode[]
319
+ /**
320
+ * Suggested prompt-cache TTL in milliseconds — how long the provider's
321
+ * server-side prompt cache stays warm between user turns before a new
322
+ * cache-write is required. Optional: providers without prompt caching
323
+ * (or without a documented TTL) leave it undefined and the host hides
324
+ * the cache-countdown chip entirely for sessions on that provider.
325
+ *
326
+ * This is only the **suggested default**: the user can override per
327
+ * provider in `Settings → Prompt cache` and disable the chip outright.
328
+ * The host treats this as a UI-only countdown hint — never as a
329
+ * contract for actual cache eviction (the provider is the source of
330
+ * truth at request time).
331
+ *
332
+ * Claude declares 300_000 (5 min) per its prompt-caching docs. Codex
333
+ * and Gemini leave it undefined.
334
+ */
335
+ cacheTtlMs?: number
307
336
  }
308
337
 
309
338
  /**
@@ -699,6 +728,14 @@ export type JackProvider = {
699
728
  * Codex `CODEX_HOME`, …).
700
729
  */
701
730
  profiles?: ProfilesApi
731
+ /**
732
+ * Docker sandbox capability — provider declares the image, binary name,
733
+ * and config-dir mount the host needs to spawn a sandboxed session for
734
+ * this provider. See {@link SandboxApi}. Optional; when undefined
735
+ * `capabilities.sandbox` MUST be `false` and the host disables sandbox
736
+ * mode for this provider's sessions.
737
+ */
738
+ sandbox?: SandboxApi
702
739
  /**
703
740
  * Optional one-shot activation hook. Called once by the host during
704
741
  * registration with a {@link HostServices} bag scoped to this
package/src/sandbox.ts ADDED
@@ -0,0 +1,108 @@
1
+ /**
2
+ * SandboxApi — provider-declared Docker sandbox capability.
3
+ *
4
+ * Jack runs sessions in a Docker container ("sandbox mode") to isolate the
5
+ * provider's CLI from the host filesystem and network. The container itself
6
+ * is generic — Jack owns the Docker orchestration, security policy (CapDrop,
7
+ * memory cap, non-privileged), project mount, and user-defined shared
8
+ * volumes. The PROVIDER-SPECIFIC bits live here:
9
+ *
10
+ * - which image to pull (each provider needs its own CLI installed)
11
+ * - which binary name to invoke inside the container (used by the host to
12
+ * rewrite host-resolved absolute paths like
13
+ * `/Users/foo/.local/bin/claude` to a bare command the container's
14
+ * PATH resolves)
15
+ * - which config dir to mount (`~/.claude`, `~/.codex`, `~/.gemini`, …)
16
+ * - optional env extras
17
+ *
18
+ * A provider declaring `sandbox` opts itself into sandbox mode. The
19
+ * matching capability flag {@link CapabilityMatrix.sandbox} MUST be `true`
20
+ * — the host derives it from `provider.sandbox != null` at registration.
21
+ *
22
+ * Providers that don't declare `sandbox` (or set it to `undefined`) are
23
+ * treated as sandbox-incompatible: the host hides the toggle in the UI and
24
+ * blocks spawn-time requests with a clear error.
25
+ *
26
+ * The host's distribution model expects images at
27
+ * `ghcr.io/ottimis/jack-sandbox-<provider-id>:<X.Y.Z>` (monorepo
28
+ * `github.com/ottimis/JACK-sandbox`). Providers can point `defaultImage`
29
+ * elsewhere — third-party plugin authors who maintain their own image are
30
+ * free to host wherever they like.
31
+ */
32
+
33
+ /**
34
+ * Mount the provider's host-side config directory into the container.
35
+ * Most providers persist auth + sessions + per-user settings in a dotfile
36
+ * dir under `$HOME` (Claude `~/.claude`, Codex `~/.codex`, Gemini
37
+ * `~/.gemini`). The host mounts this dir into the container at
38
+ * {@link containerPath} so the CLI inside the container has access to the
39
+ * same auth state as the host.
40
+ *
41
+ * Read-only by default — the container shouldn't be writing back to the
42
+ * user's persistent config from inside the sandbox. Set `readOnly: false`
43
+ * only when the provider's CLI genuinely needs to mutate state inside the
44
+ * config dir (e.g. session JSONL append).
45
+ */
46
+ export type SandboxConfigMount = {
47
+ /**
48
+ * Absolute host path. Provider implementations resolve this lazily — call
49
+ * `os.homedir()` + `path.join(...)` at the time `configMount` is read,
50
+ * not at module-load time, so test environments and per-process HOME
51
+ * overrides work correctly.
52
+ */
53
+ hostPath: string
54
+ /** Absolute container path. */
55
+ containerPath: string
56
+ /** When `true`, the host adds `:ro` to the bind. Default: `true` recommended. */
57
+ readOnly: boolean
58
+ }
59
+
60
+ /**
61
+ * Provider-declared Docker sandbox capability. Optional on
62
+ * {@link JackProvider}; when present the matching
63
+ * {@link CapabilityMatrix.sandbox} flag MUST be `true`.
64
+ */
65
+ export interface SandboxApi {
66
+ /**
67
+ * Default image reference, pinned per provider release. Format:
68
+ * `<registry>/<repo>:<tag>`. Users can override per-provider via the host
69
+ * setting `sandbox.image.<providerId>`.
70
+ *
71
+ * For Jack's first-party providers the recommended location is
72
+ * `ghcr.io/ottimis/jack-sandbox-<providerId>:<X.Y.Z>` (monorepo built
73
+ * from `github.com/ottimis/JACK-sandbox`). Third-party plugins are free
74
+ * to host elsewhere.
75
+ */
76
+ readonly defaultImage: string
77
+
78
+ /**
79
+ * CLI binary name as it should be invoked inside the container (e.g.
80
+ * `'claude'`, `'codex'`, `'gemini'`). Used by the host's spawner to
81
+ * rewrite host-resolved absolute binary paths to a bare command the
82
+ * container's PATH resolves.
83
+ *
84
+ * The image MUST install this binary at a location reachable from
85
+ * `$PATH` (typically `/usr/local/bin/<binaryName>` via `npm install -g`).
86
+ */
87
+ readonly binaryName: string
88
+
89
+ /**
90
+ * Mount the provider's host-side config directory into the container.
91
+ * Optional — providers that are stateless on the host (none today)
92
+ * leave this undefined.
93
+ */
94
+ readonly configMount?: SandboxConfigMount
95
+
96
+ /**
97
+ * Optional environment extras to inject into the container. Layered AFTER
98
+ * the spawn-arg env so provider-specific overrides can win, but BEFORE
99
+ * the user can override (the user-facing override is per-provider via
100
+ * the host setting, not per-env-var).
101
+ *
102
+ * Most provider env is already on `SpawnArgs.env` from the backend's
103
+ * spawn pipeline. Use this only when the SDK contract doesn't expose a
104
+ * cleaner channel — e.g. forcing a CLI to disable telemetry inside the
105
+ * sandbox even when the user has it on globally.
106
+ */
107
+ envExtras?(): Record<string, string>
108
+ }