@cat-factory/local-server 0.14.2 → 0.16.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 (42) hide show
  1. package/dist/LocalContainerRunnerTransport.d.ts +97 -9
  2. package/dist/LocalContainerRunnerTransport.d.ts.map +1 -1
  3. package/dist/LocalContainerRunnerTransport.js +355 -93
  4. package/dist/LocalContainerRunnerTransport.js.map +1 -1
  5. package/dist/LocalProcessRunnerTransport.d.ts +63 -0
  6. package/dist/LocalProcessRunnerTransport.d.ts.map +1 -0
  7. package/dist/LocalProcessRunnerTransport.js +188 -0
  8. package/dist/LocalProcessRunnerTransport.js.map +1 -0
  9. package/dist/NativeRoutingRunnerTransport.d.ts +20 -0
  10. package/dist/NativeRoutingRunnerTransport.d.ts.map +1 -0
  11. package/dist/NativeRoutingRunnerTransport.js +50 -0
  12. package/dist/NativeRoutingRunnerTransport.js.map +1 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +6 -0
  15. package/dist/config.js.map +1 -1
  16. package/dist/container.d.ts +13 -0
  17. package/dist/container.d.ts.map +1 -1
  18. package/dist/container.js +244 -17
  19. package/dist/container.js.map +1 -1
  20. package/dist/harnessHttp.d.ts +58 -0
  21. package/dist/harnessHttp.d.ts.map +1 -0
  22. package/dist/harnessHttp.js +95 -0
  23. package/dist/harnessHttp.js.map +1 -0
  24. package/dist/runtimes/appleContainerRuntime.d.ts +3 -0
  25. package/dist/runtimes/appleContainerRuntime.d.ts.map +1 -1
  26. package/dist/runtimes/appleContainerRuntime.js +8 -1
  27. package/dist/runtimes/appleContainerRuntime.js.map +1 -1
  28. package/dist/runtimes/containerRuntime.d.ts +30 -1
  29. package/dist/runtimes/containerRuntime.d.ts.map +1 -1
  30. package/dist/runtimes/containerRuntime.js +5 -0
  31. package/dist/runtimes/containerRuntime.js.map +1 -1
  32. package/dist/runtimes/dockerRuntime.d.ts +4 -0
  33. package/dist/runtimes/dockerRuntime.d.ts.map +1 -1
  34. package/dist/runtimes/dockerRuntime.js +21 -2
  35. package/dist/runtimes/dockerRuntime.js.map +1 -1
  36. package/dist/runtimes/index.d.ts.map +1 -1
  37. package/dist/runtimes/index.js +1 -0
  38. package/dist/runtimes/index.js.map +1 -1
  39. package/dist/server.d.ts.map +1 -1
  40. package/dist/server.js +4 -14
  41. package/dist/server.js.map +1 -1
  42. package/package.json +9 -8
package/dist/container.js CHANGED
@@ -1,15 +1,31 @@
1
- import { DrizzleGitHubInstallationRepository, buildNodeContainer, loadNodeConfig, } from '@cat-factory/node-server';
1
+ import { CryptoIdGenerator, DrizzleGitHubInstallationRepository, DrizzleLocalSettingsRepository, DrizzleRunnerPoolConnectionRepository, ProvisioningLogRecorder, SystemClock, buildNodeContainer, buildNodeResolveTransport, createDrizzleRepositories, loadNodeConfig, withProvisioningLog, } from '@cat-factory/node-server';
2
+ import { ConflictError } from '@cat-factory/kernel';
3
+ import { WorkspaceSettingsService } from '@cat-factory/orchestration';
4
+ import { logger } from '@cat-factory/server';
5
+ import { LocalSettingsService } from '@cat-factory/integrations';
6
+ import { NativeRoutingRunnerTransport } from './NativeRoutingRunnerTransport.js';
2
7
  import { applyLocalDefaults } from './config.js';
3
8
  import { createLocalGitHubClient, fetchPatAccount, githubPatCreationUrl } from './github.js';
4
9
  import { AutoProvisioningInstallationRepository } from './installations.js';
5
10
  import { createLocalContainerTransportFromEnv, } from './LocalContainerRunnerTransport.js';
11
+ import { createLocalProcessTransportFromEnv, } from './LocalProcessRunnerTransport.js';
6
12
  import { createRuntimeAdapter } from './runtimes/index.js';
7
13
  // The local-mode composition root. It is intentionally thin: the ENTIRE Drizzle/
8
14
  // Postgres persistence, pg-boss durable execution, gateways and model provisioning
9
- // come from `buildNodeContainer` unchanged. Local mode only swaps the two
10
- // differentiators behind the seams `buildNodeContainer` exposes:
11
- // - the runner backend → a per-run local container (LocalContainerRunnerTransport,
12
- // Docker/Podman/OrbStack/Colima/Apple `container`) instead of a self-hosted pool;
15
+ // come from `buildNodeContainer` unchanged. Local mode only swaps the differentiators
16
+ // behind the seams `buildNodeContainer` exposes:
17
+ // - the runner backend → host Docker by default (a per-run local container,
18
+ // LocalContainerRunnerTransport, Docker/Podman/OrbStack/Colima/Apple `container`,
19
+ // with the warm pool + per-repo checkout reuse configured from the DB local-mode
20
+ // settings), but PER WORKSPACE it can be delegated to the workspace's registered
21
+ // self-hosted runner pool (the `delegateAgentsToRunnerPool` setting) — the
22
+ // local-vs-external opt-in. The Tester's environment is the symmetric opt-in
23
+ // (`delegateTestEnvToProvider`, wired below as the tester fallback default), so a
24
+ // developer runs everything locally by default but can flip either concern to an
25
+ // external service from the UI;
26
+ // - optional NATIVE execution: run agents as a host process driving the developer's own
27
+ // installed `claude` / `codex` CLI (ambient login), bypassing Docker for the steps that
28
+ // use that login (`LOCAL_NATIVE_AGENTS`); everything else still runs in a container;
13
29
  // - the push/clone token → a static GitHub PAT (`GITHUB_PAT`) instead of a GitHub
14
30
  // App installation token.
15
31
  // Repo resolution is unchanged: the executor still resolves a block's repo from the
@@ -27,9 +43,18 @@ export function buildLocalContainer(options) {
27
43
  // ON: the Node loader only enables it for a configured GitHub App, but local mode reaches
28
44
  // GitHub through the PAT-backed client, so the read/link endpoints (connection, available
29
45
  // repos, "add from existing repo") should be served the same way.
46
+ // Native local execution (opt-in): run agents as a host process driving the developer's
47
+ // OWN installed `claude` / `codex` CLI (ambient login), bypassing Docker. The env is the
48
+ // ALLOW-LIST of subscription harnesses to run natively (`claude-code,codex`); parsed into
49
+ // a harness set so the executor flags `ambientAuth` ONLY for a listed harness whose vendor
50
+ // is that CLI's native vendor (Claude/Codex), and the personal-credential gate skips just
51
+ // those vendors. Default off — the container path is unchanged.
52
+ const nativeHarnesses = parseNativeHarnesses(env.LOCAL_NATIVE_AGENTS);
53
+ const nativeAgents = nativeHarnesses.length > 0;
30
54
  const config = {
31
55
  ...base,
32
56
  ...(pat ? { github: { ...base.github, enabled: true } } : {}),
57
+ ...(nativeAgents ? { nativeAmbientAuth: nativeHarnesses } : {}),
33
58
  localMode: {
34
59
  enabled: true,
35
60
  ...(pat ? {} : { githubPatSetupUrl: githubPatCreationUrl() }),
@@ -45,29 +70,181 @@ export function buildLocalContainer(options) {
45
70
  const githubInstallationRepository = pat && options.db
46
71
  ? new AutoProvisioningInstallationRepository(new DrizzleGitHubInstallationRepository(options.db), resolveAccount)
47
72
  : undefined;
48
- // The Docker transport is constructed LAZILY on first container-job dispatch, so the
49
- // service still boots to serve the board (and inline kinds) when LOCAL_HARNESS_IMAGE
50
- // is unset only repo-operating kinds then fail, loudly and with a clear message,
73
+ // One shared persistence set + clock/idGenerator, reused by the per-workspace transport
74
+ // chooser below AND threaded into `buildNodeContainer` (which would otherwise build its
75
+ // own) so the chooser reads the same workspace settings the rest of the engine does.
76
+ const clock = new SystemClock();
77
+ const idGenerator = new CryptoIdGenerator();
78
+ const repos = options.repos ?? createDrizzleRepositories(options.db, clock);
79
+ const wsSettings = new WorkspaceSettingsService({
80
+ workspaceSettingsRepository: repos.workspaceSettingsRepository,
81
+ workspaceRepository: repos.workspaceRepository,
82
+ });
83
+ // The local container transport is constructed LAZILY on first dispatch, so the service
84
+ // still boots to serve the board (and inline kinds) when LOCAL_HARNESS_IMAGE is unset —
85
+ // only repo-operating container kinds then fail, loudly and with a clear message,
51
86
  // mirroring how the Node facade treats a missing runner backend.
52
- let transport;
53
- const resolveTransport = () => {
54
- transport ??= createLocalContainerTransportFromEnv(env);
55
- return Promise.resolve(transport);
87
+ //
88
+ // Native mode does NOT blanket-route every dispatch to the host process: a host process
89
+ // has no sandbox, so only the steps that actually use the developer's ambient CLI login
90
+ // (flagged `ambientAuth` by the executor) run there. Everything else — a proxy/`pi` model,
91
+ // or a non-native vendor reusing the claude-code harness — still runs in a per-run
92
+ // container (built lazily, so a Claude/Codex-only native deployment never needs an image;
93
+ // a proxy step without one fails loudly there). See NativeRoutingRunnerTransport.
94
+ // Local-mode operational settings (warm-pool sizing + per-repo checkout reuse) live in
95
+ // the DB as a per-deployment singleton, edited through the dedicated local-mode settings
96
+ // panel — they REPLACED the old LOCAL_POOL_* / HARNESS_* env vars. Built here so the
97
+ // serving transport resolves its pool config from it and the local-settings controller
98
+ // can read/write it. Requires the Drizzle db (always present for the local service).
99
+ // The serving container transport is built once, lazily, reading its pool + checkout
100
+ // config from the DB settings (not env). The promise is cached so every dispatch — and
101
+ // the native router's container leg — reuses the same instance (and its in-process pool).
102
+ // A settings edit is applied LIVE to this instance (see the service's `onChange` below),
103
+ // so the panel takes effect without a restart.
104
+ let containerTransport;
105
+ const localSettingsService = options.db
106
+ ? new LocalSettingsService({
107
+ localSettingsRepository: new DrizzleLocalSettingsRepository(options.db),
108
+ clock: { now: () => Date.now() },
109
+ // Apply an edit to the already-built serving transport so the warm-pool + checkout
110
+ // config takes effect WITHOUT a restart. No-op until the transport is built (the
111
+ // next build reads the fresh settings anyway); a still-failing build is swallowed
112
+ // (a later dispatch surfaces the real problem with a clearer message).
113
+ onChange: async (settings) => {
114
+ if (!containerTransport)
115
+ return;
116
+ try {
117
+ ;
118
+ (await containerTransport).applySettings(settings);
119
+ }
120
+ catch {
121
+ // transport build is still failing — nothing to reconfigure yet
122
+ }
123
+ },
124
+ })
125
+ : undefined;
126
+ const buildServingTransport = async () => {
127
+ const settings = await localSettingsService?.resolve();
128
+ const transport = createLocalContainerTransportFromEnv(env, settings);
129
+ // Boot housekeeping on the SERVING instance: reap exited per-run containers, drain
130
+ // pool members orphaned by a previous process, and pre-warm to poolMinWarm. Best
131
+ // -effort — if the container runtime is down this throws, but a later dispatch then
132
+ // fails loudly with a clearer message, so swallow it here.
133
+ await transport.reapExited().catch((err) => {
134
+ logger.warn({ err: err instanceof Error ? err.message : String(err) }, 'local mode: could not reap / pre-warm job containers at startup');
135
+ });
136
+ return transport;
137
+ };
138
+ const resolveContainerTransport = () => {
139
+ if (!containerTransport) {
140
+ containerTransport = buildServingTransport();
141
+ // Don't let a transient build failure (e.g. a DB blip resolving the settings) poison
142
+ // every future dispatch: drop the cached promise on rejection so the next call retries.
143
+ containerTransport.catch(() => {
144
+ containerTransport = undefined;
145
+ });
146
+ }
147
+ return containerTransport;
148
+ };
149
+ // The local-agents resolver: in native mode the per-job router (only ambient-CLI steps go
150
+ // to the host process, the rest to a container), otherwise the warm-pool container
151
+ // transport directly.
152
+ let routed;
153
+ const localAgentsResolve = () => {
154
+ if (nativeAgents) {
155
+ if (!routed) {
156
+ let proc;
157
+ routed = new NativeRoutingRunnerTransport(() => (proc ??= createLocalProcessTransportFromEnv(env)), resolveContainerTransport);
158
+ }
159
+ return Promise.resolve(routed);
160
+ }
161
+ return resolveContainerTransport();
56
162
  };
163
+ // Eagerly kick off the serving transport's boot housekeeping (reap + pre-warm) when an
164
+ // image is configured, so a warm pool is ready before the first run rather than warming
165
+ // on first dispatch. Skipped without an image (the board still boots; only container
166
+ // kinds fail, loudly). Fire-and-forget: dispatch reuses the same cached promise.
167
+ if (env.LOCAL_HARNESS_IMAGE?.trim())
168
+ void resolveContainerTransport().catch(() => { });
169
+ // The runner-pool resolver (the external opt-in target). In local mode `runners` is
170
+ // enabled (it keys off ENCRYPTION_KEY, which `applyLocalDefaults` always sets), so this
171
+ // is non-null and a workspace can register a pool via the API; a native adapter injected
172
+ // through `options.runnerPoolProvider` drives the actual dispatch. The connection repo is
173
+ // also held for the start-time guard's cheap "is a pool registered?" existence check.
174
+ const runnerPoolConnectionRepository = new DrizzleRunnerPoolConnectionRepository(options.db);
175
+ const poolResolve = buildNodeResolveTransport(config, runnerPoolConnectionRepository, repos.workspaceRepository, clock, options.runnerPoolProvider);
176
+ // Per-branch provisioning-log tagging: the per-run local container logs under the
177
+ // `container` subsystem, the runner pool under `runner-pool`, so the logs drawer filters
178
+ // each correctly. We wrap each branch here and tell `buildNodeContainer` not to re-wrap
179
+ // (its single-subsystem wrap can't tell which branch a per-workspace chooser took).
180
+ const recorder = new ProvisioningLogRecorder({
181
+ repository: repos.provisioningLogRepository,
182
+ idGenerator,
183
+ clock,
184
+ });
185
+ const wrappedLocal = withProvisioningLog(localAgentsResolve, recorder, 'container');
186
+ const wrappedPool = poolResolve ? withProvisioningLog(poolResolve, recorder, 'runner-pool') : null;
187
+ // The local-vs-external agents opt-in: dispatch to the registered runner pool when the
188
+ // workspace opts in (and one is wrapped), else to host Docker (the warm-pool / native
189
+ // local backend). The pool branch's own throw surfaces a clean "register a pool" message
190
+ // when delegation is on but none exists.
191
+ const resolveTransport = async (workspaceId) => {
192
+ const delegate = !!workspaceId && (await wsSettings.get(workspaceId)).delegateAgentsToRunnerPool;
193
+ if (delegate && wrappedPool)
194
+ return wrappedPool(workspaceId);
195
+ return wrappedLocal(workspaceId);
196
+ };
197
+ // Start-time guard: refuse a run up front when the workspace delegates agents to a pool
198
+ // that isn't registered, so the human gets a clean 409 (an actionable message) instead of
199
+ // a mid-run dispatch failure. No-op when delegation is off. We throw a ConflictError for
200
+ // BOTH negative cases — the integration being disabled AND no pool registered for the
201
+ // workspace — rather than letting the pool resolver's plain Error escape (the error
202
+ // handler maps a non-DomainError to an opaque 500 with the message suppressed). The
203
+ // existence check uses `getByWorkspace` directly, so it neither decrypts the pool secrets
204
+ // nor builds a transport that the actual dispatch resolve would only build again.
205
+ const assertAgentBackendConfigured = async (workspaceId) => {
206
+ if (!(await wsSettings.get(workspaceId)).delegateAgentsToRunnerPool)
207
+ return;
208
+ if (!wrappedPool) {
209
+ throw new ConflictError('This workspace delegates container agents to a self-hosted runner pool, but the ' +
210
+ 'runner-pool integration is not enabled on this deployment.', 'agent_backend_unconfigured');
211
+ }
212
+ if (!(await runnerPoolConnectionRepository.getByWorkspace(workspaceId))) {
213
+ throw new ConflictError('This workspace delegates container agents to a self-hosted runner pool, but none ' +
214
+ 'is registered. Register one (Settings → Self-hosted runner pool) or turn ' +
215
+ 'delegation off to run agents on host Docker, before starting.', 'agent_backend_unconfigured');
216
+ }
217
+ };
218
+ // The two tester-environment resolvers (used identically by the start gate and the
219
+ // agent-context materialisation): the local-mode default is `local` (host Docker / DinD),
220
+ // flipping to `ephemeral` only when the workspace opts into its environment provider; and
221
+ // when it opts in, the provider becomes REQUIRED so an `ephemeral` run with none connected
222
+ // is refused at start.
223
+ const resolveTesterFallbackDefault = async (workspaceId) => (await wsSettings.get(workspaceId)).delegateTestEnvToProvider ? 'ephemeral' : 'local';
224
+ const resolveRequireEnvironmentProvider = async (workspaceId) => (await wsSettings.get(workspaceId)).delegateTestEnvToProvider;
57
225
  // The selected runtime decides whether the Tester's LOCAL docker-compose infra (run
58
226
  // via Docker-in-Docker) is possible: Docker/Podman/OrbStack/Colima can nest a daemon,
59
227
  // Apple `container` (one VM per container) cannot. Surface that capability to the
60
228
  // engine so it refuses a local-infra Tester run on an incapable runtime ("limited
61
229
  // mode") instead of dispatching a job that can't stand its dependencies up. Building
62
230
  // the adapter is pure (no IO), so this is cheap even though the transport stays lazy.
63
- const localTestInfraSupported = createRuntimeAdapter(env).capabilities.localDind;
64
- return buildNodeContainer({
231
+ // Native mode runs agents on the host with no per-run Docker container; the Tester's
232
+ // local docker-compose infra (host compose with per-run project names) is a later phase,
233
+ // so it's reported unsupported for now (the engine steers to "limited mode"). The
234
+ // container path keeps the runtime's real Docker-in-Docker capability.
235
+ const localTestInfraSupported = nativeAgents
236
+ ? false
237
+ : createRuntimeAdapter(env).capabilities.localDind;
238
+ const container = buildNodeContainer({
65
239
  ...options,
66
240
  env,
67
241
  config,
68
- // Always dispatch container jobs to the local Docker transport (a constant
69
- // resolver, ignoring workspace local mode has no per-workspace runner pools).
242
+ repos,
243
+ // The per-workspace chooser (host Docker / native local vs the runner pool). Pre-wrapped
244
+ // with the correct provisioning-log subsystem per branch, so tell buildNodeContainer not
245
+ // to re-wrap with a single subsystem tag.
70
246
  resolveTransport,
247
+ skipProvisioningLogWrap: true,
71
248
  // Authenticate git with the developer's PAT when present. Absent → the executor
72
249
  // falls back to the GitHub App path (and is null without it), so container kinds
73
250
  // fail loudly rather than silently mis-running.
@@ -81,14 +258,64 @@ export function buildLocalContainer(options) {
81
258
  // connected with no manual connect step.
82
259
  ...(githubInstallationRepository ? { githubInstallationRepository } : {}),
83
260
  overrides: {
261
+ // The local-mode infrastructure-delegation opt-ins (per workspace). Listed BEFORE
262
+ // `...options.overrides` so a caller (the cross-runtime conformance harness) can pin
263
+ // the facade-NEUTRAL `ephemeral` tester default for the shared assertions — the local
264
+ // `local` default is a facade-specific behavior covered by its own tests.
265
+ resolveTesterFallbackDefault,
266
+ resolveRequireEnvironmentProvider,
267
+ assertAgentBackendConfigured,
84
268
  ...options.overrides,
85
269
  // The local PAT carries `workflow` scope (the creation URL pre-selects it), so the
86
270
  // connection isn't missing workflows: write — report it granted to suppress the
87
271
  // advisory banner. (The App-permissions probe this normally uses needs an app JWT.)
88
272
  ...(pat ? { workflowsGranted: async () => true } : {}),
89
- // Gate the Tester's local-infra mode on the runtime's Docker-in-Docker support.
273
+ // Gate the Tester's local-infra mode on the runtime's Docker-in-Docker support
274
+ // (local-authoritative — after the overrides so a deployment can't accidentally
275
+ // claim DinD support the runtime doesn't have).
90
276
  localTestInfraSupported,
91
277
  },
92
278
  });
279
+ // Surface the local-mode settings service so the dedicated local-settings panel can
280
+ // read/write the warm-pool + checkout config (the controller 503s when this is absent,
281
+ // which is the case on every non-local facade).
282
+ return localSettingsService
283
+ ? { ...container, localSettings: { service: localSettingsService } }
284
+ : container;
285
+ }
286
+ /** Values that explicitly DISABLE native mode (so `LOCAL_NATIVE_AGENTS=false` means off). */
287
+ const NATIVE_OFF_VALUES = new Set(['false', '0', 'off', 'no', 'none', 'disabled']);
288
+ /** Affirmative values that enable BOTH native harnesses without naming one. */
289
+ const NATIVE_ALL_VALUES = new Set(['true', '1', 'on', 'yes', 'all', 'both']);
290
+ /**
291
+ * Parse `LOCAL_NATIVE_AGENTS` into the set of subscription harnesses to run natively. The
292
+ * documented form is a comma-separated list of harness ids (`claude-code,codex`); `claude`
293
+ * is accepted as an alias for `claude-code`. Blank/unset OR an explicit off value
294
+ * (`false`/`0`/`off`/`no`/`none`/`disabled`) ⇒ off (`[]`) — so disabling native mode never
295
+ * accidentally enables it. An affirmative value naming no harness (`true`/`1`/`on`/…) ⇒ BOTH
296
+ * native harnesses. Only `claude-code` / `codex` are ever native; any other unrecognised
297
+ * token is ignored. A value with neither a recognised harness nor an affirmative keyword
298
+ * (e.g. a typo) ⇒ off, so an unintelligible setting fails safe rather than enabling an
299
+ * unsandboxed, unmetered mode.
300
+ */
301
+ export function parseNativeHarnesses(raw) {
302
+ const trimmed = raw?.trim().toLowerCase();
303
+ if (!trimmed || NATIVE_OFF_VALUES.has(trimmed))
304
+ return [];
305
+ const out = new Set();
306
+ let affirmative = false;
307
+ for (const token of trimmed.split(',').map((s) => s.trim())) {
308
+ if (token === 'claude-code' || token === 'claude')
309
+ out.add('claude-code');
310
+ else if (token === 'codex')
311
+ out.add('codex');
312
+ else if (NATIVE_ALL_VALUES.has(token))
313
+ affirmative = true;
314
+ }
315
+ if (out.size > 0)
316
+ return [...out];
317
+ // No harness named: enable both ONLY for an explicit affirmative keyword; anything else
318
+ // unrecognised stays off (fail-safe — see the doc comment).
319
+ return affirmative ? ['claude-code', 'codex'] : [];
93
320
  }
94
321
  //# sourceMappingURL=container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { RunnerJobView } from '@cat-factory/kernel';
2
+ /**
3
+ * The failed-poll error the engine classifies as a container eviction (matched by
4
+ * orchestration `isContainerEvictionError`, also used by the bootstrap flow). A
5
+ * vanished/exited harness maps to it so the run stops and the stale-run sweeper can
6
+ * re-drive it — mirroring the Worker transport's 404 mapping.
7
+ */
8
+ export declare const EVICTION_ERROR = "Job not found (container evicted or crashed)";
9
+ /** The shared-secret header sent on every harness call. */
10
+ export declare const SECRET_HEADER = "x-harness-secret";
11
+ /** Where a harness instance is reachable. */
12
+ export interface HarnessEndpoint {
13
+ host: string;
14
+ port: number;
15
+ }
16
+ export declare const harnessUrl: (endpoint: HarnessEndpoint, path: string) => string;
17
+ export declare const delay: (ms: number) => Promise<void>;
18
+ /** A bounded, never-throwing read of a response body for an error message. */
19
+ export declare function safeText(res: Response): Promise<string>;
20
+ /** POST a job body to the harness `/jobs`, throwing a `<label>`-prefixed error on non-OK. */
21
+ export declare function postHarnessJob(opts: {
22
+ fetchImpl: typeof fetch;
23
+ endpoint: HarnessEndpoint;
24
+ secret: string;
25
+ body: Record<string, unknown>;
26
+ timeoutMs: number;
27
+ label: string;
28
+ }): Promise<void>;
29
+ /**
30
+ * GET a harness job view by id. A 404 (job unknown/reaped, or the harness was recreated)
31
+ * maps to an eviction view; a connection error consults `isDead` — true ⇒ eviction (the
32
+ * backend is gone), false ⇒ rethrow the transient error so the caller retries. Any other
33
+ * non-OK status throws a `<label>`-prefixed error. `isDead` is also where the caller
34
+ * performs its own cleanup (drop a dead pool member / clear a stale cache entry).
35
+ */
36
+ export declare function pollHarnessJob(opts: {
37
+ fetchImpl: typeof fetch;
38
+ endpoint: HarnessEndpoint;
39
+ jobId: string;
40
+ secret: string;
41
+ timeoutMs: number;
42
+ label: string;
43
+ isDead: () => boolean | Promise<boolean>;
44
+ }): Promise<RunnerJobView>;
45
+ /** A single quick `/health` probe (no retry); false on any error/non-OK. */
46
+ export declare function harnessHealthy(fetchImpl: typeof fetch, endpoint: HarnessEndpoint, requestTimeoutMs: number): Promise<boolean>;
47
+ /** Poll `/health` until OK or the deadline, throwing on timeout (or if `isDead` fires). */
48
+ export declare function waitForHarnessHealth(opts: {
49
+ fetchImpl: typeof fetch;
50
+ endpoint: HarnessEndpoint;
51
+ readyTimeoutMs: number;
52
+ requestTimeoutMs: number;
53
+ intervalMs?: number;
54
+ isDead?: () => boolean;
55
+ deadError?: string;
56
+ timeoutError: string;
57
+ }): Promise<void>;
58
+ //# sourceMappingURL=harnessHttp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harnessHttp.d.ts","sourceRoot":"","sources":["../src/harnessHttp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAUxD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,iDAAiD,CAAA;AAE5E,2DAA2D;AAC3D,eAAO,MAAM,aAAa,qBAAqB,CAAA;AAE/C,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,UAAU,aAAc,eAAe,QAAQ,MAAM,KAAG,MAClB,CAAA;AAEnD,eAAO,MAAM,KAAK,OAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CACU,CAAA;AAEzD,8EAA8E;AAC9E,wBAAsB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7D;AAED,6FAA6F;AAC7F,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,OAAO,KAAK,CAAA;IACvB,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,OAAO,KAAK,CAAA;IACvB,QAAQ,EAAE,eAAe,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACzC,GAAG,OAAO,CAAC,aAAa,CAAC,CAoBzB;AAED,4EAA4E;AAC5E,wBAAsB,cAAc,CAClC,SAAS,EAAE,OAAO,KAAK,EACvB,QAAQ,EAAE,eAAe,EACzB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,2FAA2F;AAC3F,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,SAAS,EAAE,OAAO,KAAK,CAAA;IACvB,QAAQ,EAAE,eAAe,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB"}
@@ -0,0 +1,95 @@
1
+ // Shared HTTP plumbing for talking to an executor-harness instance over its `/jobs` +
2
+ // `/health` API. Both local runner transports — the per-run/pooled CONTAINER transport
3
+ // (LocalContainerRunnerTransport) and the native HOST-PROCESS transport
4
+ // (LocalProcessRunnerTransport) — speak the identical protocol, so it lives here ONCE
5
+ // rather than being copied between them: a protocol change (a header, the request shape,
6
+ // or the eviction-marker string orchestration's `isContainerEvictionError` matches) is
7
+ // then made in a single place instead of silently drifting per transport.
8
+ /**
9
+ * The failed-poll error the engine classifies as a container eviction (matched by
10
+ * orchestration `isContainerEvictionError`, also used by the bootstrap flow). A
11
+ * vanished/exited harness maps to it so the run stops and the stale-run sweeper can
12
+ * re-drive it — mirroring the Worker transport's 404 mapping.
13
+ */
14
+ export const EVICTION_ERROR = 'Job not found (container evicted or crashed)';
15
+ /** The shared-secret header sent on every harness call. */
16
+ export const SECRET_HEADER = 'x-harness-secret';
17
+ export const harnessUrl = (endpoint, path) => `http://${endpoint.host}:${endpoint.port}${path}`;
18
+ export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
19
+ /** A bounded, never-throwing read of a response body for an error message. */
20
+ export async function safeText(res) {
21
+ try {
22
+ return (await res.text()).slice(0, 500);
23
+ }
24
+ catch {
25
+ return '(no body)';
26
+ }
27
+ }
28
+ /** POST a job body to the harness `/jobs`, throwing a `<label>`-prefixed error on non-OK. */
29
+ export async function postHarnessJob(opts) {
30
+ const res = await opts.fetchImpl(harnessUrl(opts.endpoint, '/jobs'), {
31
+ method: 'POST',
32
+ headers: { 'content-type': 'application/json', [SECRET_HEADER]: opts.secret },
33
+ body: JSON.stringify(opts.body),
34
+ signal: AbortSignal.timeout(opts.timeoutMs),
35
+ });
36
+ if (!res.ok) {
37
+ throw new Error(`${opts.label} dispatch failed (HTTP ${res.status}): ${await safeText(res)}`);
38
+ }
39
+ }
40
+ /**
41
+ * GET a harness job view by id. A 404 (job unknown/reaped, or the harness was recreated)
42
+ * maps to an eviction view; a connection error consults `isDead` — true ⇒ eviction (the
43
+ * backend is gone), false ⇒ rethrow the transient error so the caller retries. Any other
44
+ * non-OK status throws a `<label>`-prefixed error. `isDead` is also where the caller
45
+ * performs its own cleanup (drop a dead pool member / clear a stale cache entry).
46
+ */
47
+ export async function pollHarnessJob(opts) {
48
+ let res;
49
+ try {
50
+ res = await opts.fetchImpl(harnessUrl(opts.endpoint, `/jobs/${encodeURIComponent(opts.jobId)}`), {
51
+ method: 'GET',
52
+ headers: { [SECRET_HEADER]: opts.secret },
53
+ signal: AbortSignal.timeout(opts.timeoutMs),
54
+ });
55
+ }
56
+ catch (err) {
57
+ if (await opts.isDead())
58
+ return { state: 'failed', error: EVICTION_ERROR };
59
+ throw err;
60
+ }
61
+ if (res.status === 404)
62
+ return { state: 'failed', error: EVICTION_ERROR };
63
+ if (!res.ok) {
64
+ throw new Error(`${opts.label} job poll failed (HTTP ${res.status}): ${await safeText(res)}`);
65
+ }
66
+ return (await res.json());
67
+ }
68
+ /** A single quick `/health` probe (no retry); false on any error/non-OK. */
69
+ export async function harnessHealthy(fetchImpl, endpoint, requestTimeoutMs) {
70
+ try {
71
+ const res = await fetchImpl(harnessUrl(endpoint, '/health'), {
72
+ method: 'GET',
73
+ signal: AbortSignal.timeout(Math.min(requestTimeoutMs, 5_000)),
74
+ });
75
+ return res.ok;
76
+ }
77
+ catch {
78
+ return false;
79
+ }
80
+ }
81
+ /** Poll `/health` until OK or the deadline, throwing on timeout (or if `isDead` fires). */
82
+ export async function waitForHarnessHealth(opts) {
83
+ const deadline = Date.now() + opts.readyTimeoutMs;
84
+ for (;;) {
85
+ if (opts.isDead?.()) {
86
+ throw new Error(opts.deadError ?? 'the harness exited before becoming healthy');
87
+ }
88
+ if (await harnessHealthy(opts.fetchImpl, opts.endpoint, opts.requestTimeoutMs))
89
+ return;
90
+ if (Date.now() >= deadline)
91
+ throw new Error(opts.timeoutError);
92
+ await delay(opts.intervalMs ?? 300);
93
+ }
94
+ }
95
+ //# sourceMappingURL=harnessHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harnessHttp.js","sourceRoot":"","sources":["../src/harnessHttp.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export declare class AppleContainerRuntimeAdapter implements ContainerRuntimeAda
5
5
  readonly hostAlias: string;
6
6
  readonly capabilities: {
7
7
  localDind: boolean;
8
+ pooling: boolean;
8
9
  };
9
10
  constructor(options: {
10
11
  binary?: string;
@@ -17,5 +18,7 @@ export declare class AppleContainerRuntimeAdapter implements ContainerRuntimeAda
17
18
  remove(exec: ContainerExec, containerId: string): Promise<void>;
18
19
  removeRun(exec: ContainerExec, runId: string): Promise<void>;
19
20
  reapExited(exec: ContainerExec): Promise<number>;
21
+ /** Apple `container` doesn't support the warm pool (see capabilities.pooling=false). */
22
+ listPoolMembers(): Promise<string[]>;
20
23
  }
21
24
  //# sourceMappingURL=appleContainerRuntime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appleContainerRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/appleContainerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE5B,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAA;AA0H9B,qBAAa,4BAA6B,YAAW,uBAAuB;IAC1E,QAAQ,CAAC,EAAE,EAAG,OAAO,CAAS;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY;QAAK,SAAS;MAAS;IAE5C,YAAY,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAG1D;IAEK,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBtE;IAEK,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ1E;IAEK,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAI/F;IAEK,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM1E;IAEK,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;IAEK,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;IAEK,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrD;CACF"}
1
+ {"version":3,"file":"appleContainerRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/appleContainerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE5B,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAA;AA0H9B,qBAAa,4BAA6B,YAAW,uBAAuB;IAC1E,QAAQ,CAAC,EAAE,EAAG,OAAO,CAAS;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAI1B,QAAQ,CAAC,YAAY;QAAK,SAAS;QAAS,OAAO;MAAS;IAE5D,YAAY,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAG1D;IAEK,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBtE;IAEK,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ1E;IAEK,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAI/F;IAEK,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM1E;IAEK,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;IAEK,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;IAEK,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrD;IAED,wFAAwF;IAClF,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEzC;CACF"}
@@ -118,7 +118,10 @@ export class AppleContainerRuntimeAdapter {
118
118
  id = 'apple';
119
119
  binary;
120
120
  hostAlias;
121
- capabilities = { localDind: false };
121
+ // One-VM-per-container with a deterministic-name identity: no Docker-in-Docker, and the
122
+ // warm pool isn't supported (re-leasing a name-keyed VM is messy) — so the transport
123
+ // keeps the per-run path here even when a pool size is configured.
124
+ capabilities = { localDind: false, pooling: false };
122
125
  constructor(options) {
123
126
  this.binary = options.binary ?? 'container';
124
127
  this.hostAlias = options.hostAlias;
@@ -187,5 +190,9 @@ export class AppleContainerRuntimeAdapter {
187
190
  }
188
191
  return rows.length;
189
192
  }
193
+ /** Apple `container` doesn't support the warm pool (see capabilities.pooling=false). */
194
+ async listPoolMembers() {
195
+ return [];
196
+ }
190
197
  }
191
198
  //# sourceMappingURL=appleContainerRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"appleContainerRuntime.js","sourceRoot":"","sources":["../../src/runtimes/appleContainerRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appleContainerRuntime.js","sourceRoot":"","sources":["../../src/runtimes/appleContainerRuntime.ts"],"names":[],"mappings":"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"}