@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.
- package/dist/LocalContainerRunnerTransport.d.ts +97 -9
- package/dist/LocalContainerRunnerTransport.d.ts.map +1 -1
- package/dist/LocalContainerRunnerTransport.js +355 -93
- package/dist/LocalContainerRunnerTransport.js.map +1 -1
- package/dist/LocalProcessRunnerTransport.d.ts +63 -0
- package/dist/LocalProcessRunnerTransport.d.ts.map +1 -0
- package/dist/LocalProcessRunnerTransport.js +188 -0
- package/dist/LocalProcessRunnerTransport.js.map +1 -0
- package/dist/NativeRoutingRunnerTransport.d.ts +20 -0
- package/dist/NativeRoutingRunnerTransport.d.ts.map +1 -0
- package/dist/NativeRoutingRunnerTransport.js +50 -0
- package/dist/NativeRoutingRunnerTransport.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/container.d.ts +13 -0
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +244 -17
- package/dist/container.js.map +1 -1
- package/dist/harnessHttp.d.ts +58 -0
- package/dist/harnessHttp.d.ts.map +1 -0
- package/dist/harnessHttp.js +95 -0
- package/dist/harnessHttp.js.map +1 -0
- package/dist/runtimes/appleContainerRuntime.d.ts +3 -0
- package/dist/runtimes/appleContainerRuntime.d.ts.map +1 -1
- package/dist/runtimes/appleContainerRuntime.js +8 -1
- package/dist/runtimes/appleContainerRuntime.js.map +1 -1
- package/dist/runtimes/containerRuntime.d.ts +30 -1
- package/dist/runtimes/containerRuntime.d.ts.map +1 -1
- package/dist/runtimes/containerRuntime.js +5 -0
- package/dist/runtimes/containerRuntime.js.map +1 -1
- package/dist/runtimes/dockerRuntime.d.ts +4 -0
- package/dist/runtimes/dockerRuntime.d.ts.map +1 -1
- package/dist/runtimes/dockerRuntime.js +21 -2
- package/dist/runtimes/dockerRuntime.js.map +1 -1
- package/dist/runtimes/index.d.ts.map +1 -1
- package/dist/runtimes/index.js +1 -0
- package/dist/runtimes/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -14
- package/dist/server.js.map +1 -1
- package/package.json +9 -8
|
@@ -19,9 +19,24 @@ export interface RuntimeCapabilities {
|
|
|
19
19
|
* drives the engine's Tester "limited mode".
|
|
20
20
|
*/
|
|
21
21
|
localDind: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Whether this runtime supports the warm-container POOL: keeping idle harness
|
|
24
|
+
* containers around and re-leasing them to runs (with repo-affinity checkout reuse)
|
|
25
|
+
* instead of cold-starting one per run. True for the Docker-family adapters; false for
|
|
26
|
+
* Apple `container` (one-VM-per-container, where the deterministic-name identity makes
|
|
27
|
+
* re-leasing messy) — there the transport keeps the per-run path even when a pool size
|
|
28
|
+
* is configured.
|
|
29
|
+
*/
|
|
30
|
+
pooling: boolean;
|
|
22
31
|
}
|
|
23
|
-
/** A per-run
|
|
32
|
+
/** A container to start — per-run, or a reusable POOL member when `pool` is set. */
|
|
24
33
|
export interface RunContainerSpec {
|
|
34
|
+
/**
|
|
35
|
+
* For a per-run container this is the run id (the container key + label). For a POOL
|
|
36
|
+
* member it is a synthetic member id used only for the container name — the member is
|
|
37
|
+
* NOT labelled with it (lease state lives in the transport), so a label lookup never
|
|
38
|
+
* finds it; the transport tracks `containerId → {repo, leasedTo}` in-process instead.
|
|
39
|
+
*/
|
|
25
40
|
runId: string;
|
|
26
41
|
image: string;
|
|
27
42
|
sharedSecret: string;
|
|
@@ -36,6 +51,12 @@ export interface RunContainerSpec {
|
|
|
36
51
|
memory: string;
|
|
37
52
|
cpus: string;
|
|
38
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Start this as a warm-POOL member: label it `cat-factory.pool=1` (not the run id) so
|
|
56
|
+
* it can be re-leased to any run and enumerated by {@link ContainerRuntimeAdapter.listPoolMembers}.
|
|
57
|
+
* Absent ⇒ the classic per-run container (labelled by run id).
|
|
58
|
+
*/
|
|
59
|
+
pool?: boolean;
|
|
39
60
|
}
|
|
40
61
|
/**
|
|
41
62
|
* A container runtime as the transport sees it. Each method takes the injected
|
|
@@ -63,6 +84,12 @@ export interface ContainerRuntimeAdapter {
|
|
|
63
84
|
removeRun(exec: ContainerExec, runId: string): Promise<void>;
|
|
64
85
|
/** Reap exited managed containers left by crashes; resolves to the count removed. */
|
|
65
86
|
reapExited(exec: ContainerExec): Promise<number>;
|
|
87
|
+
/**
|
|
88
|
+
* The container ids of every managed POOL member (running or exited) this runtime
|
|
89
|
+
* holds. Used at boot to drain pool members orphaned by a previous process. Returns []
|
|
90
|
+
* on a runtime that doesn't support pooling.
|
|
91
|
+
*/
|
|
92
|
+
listPoolMembers(exec: ContainerExec): Promise<string[]>;
|
|
66
93
|
}
|
|
67
94
|
export type RuntimeId = 'docker' | 'podman' | 'orbstack' | 'colima' | 'apple';
|
|
68
95
|
/** Per-runtime defaults — the single source of truth for binary + networking + capability. */
|
|
@@ -76,6 +103,8 @@ export interface RuntimeProfile {
|
|
|
76
103
|
addHostGateway: boolean;
|
|
77
104
|
/** Whether the Tester's local Docker-in-Docker infra can run on this runtime. */
|
|
78
105
|
localDind: boolean;
|
|
106
|
+
/** Whether the warm-container pool is supported on this runtime. */
|
|
107
|
+
pooling: boolean;
|
|
79
108
|
/** Which adapter implementation backs this runtime. */
|
|
80
109
|
family: 'docker' | 'apple';
|
|
81
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/containerRuntime.ts"],"names":[],"mappings":"AAWA,6DAA6D;AAC7D,eAAO,MAAM,YAAY,OAAO,CAAA;AAEhC,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE3F,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/containerRuntime.ts"],"names":[],"mappings":"AAWA,6DAA6D;AAC7D,eAAO,MAAM,YAAY,OAAO,CAAA;AAEhC,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE3F,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;;;;;;OAOG;IACH,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,yFAAyF;IACzF,UAAU,EAAE,OAAO,CAAA;IACnB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,8EAA8E;IAC9E,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAA;IAC1C,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B,6EAA6E;IAC7E,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjE,2DAA2D;IAC3D,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACrE,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;IAC1F,kDAAkD;IAClD,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrE,oDAAoD;IACpD,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,2DAA2D;IAC3D,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,qFAAqF;IACrF,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChD;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CACxD;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE7E,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,SAAS,CAAA;IACb,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,cAAc,EAAE,OAAO,CAAA;IACvB,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAA;IAClB,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAA;IAChB,uDAAuD;IACvD,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;CAC3B;AAqED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAIlE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAI/D"}
|
|
@@ -19,6 +19,7 @@ const PROFILES = {
|
|
|
19
19
|
hostAlias: 'host.docker.internal',
|
|
20
20
|
addHostGateway: true,
|
|
21
21
|
localDind: true,
|
|
22
|
+
pooling: true,
|
|
22
23
|
family: 'docker',
|
|
23
24
|
},
|
|
24
25
|
// Podman speaks the same CLI; host.docker.internal:host-gateway works on v4+. Rootless
|
|
@@ -30,6 +31,7 @@ const PROFILES = {
|
|
|
30
31
|
hostAlias: 'host.docker.internal',
|
|
31
32
|
addHostGateway: true,
|
|
32
33
|
localDind: true,
|
|
34
|
+
pooling: true,
|
|
33
35
|
family: 'docker',
|
|
34
36
|
},
|
|
35
37
|
// OrbStack ships a drop-in `docker` CLI and resolves host.docker.internal natively;
|
|
@@ -40,6 +42,7 @@ const PROFILES = {
|
|
|
40
42
|
hostAlias: 'host.docker.internal',
|
|
41
43
|
addHostGateway: true,
|
|
42
44
|
localDind: true,
|
|
45
|
+
pooling: true,
|
|
43
46
|
family: 'docker',
|
|
44
47
|
},
|
|
45
48
|
// Colima runs dockerd in a Lima VM. Ports forward to the host loopback, but
|
|
@@ -53,6 +56,7 @@ const PROFILES = {
|
|
|
53
56
|
hostAlias: 'host.lima.internal',
|
|
54
57
|
addHostGateway: false,
|
|
55
58
|
localDind: true,
|
|
59
|
+
pooling: true,
|
|
56
60
|
family: 'docker',
|
|
57
61
|
},
|
|
58
62
|
// Apple `container` (macOS): one lightweight VM per container, each with its own IP.
|
|
@@ -66,6 +70,7 @@ const PROFILES = {
|
|
|
66
70
|
hostAlias: '192.168.64.1',
|
|
67
71
|
addHostGateway: false,
|
|
68
72
|
localDind: false,
|
|
73
|
+
pooling: false,
|
|
69
74
|
family: 'apple',
|
|
70
75
|
},
|
|
71
76
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerRuntime.js","sourceRoot":"","sources":["../../src/runtimes/containerRuntime.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,oFAAoF;AACpF,gFAAgF;AAChF,sFAAsF;AACtF,wFAAwF;AACxF,uFAAuF;AACvF,EAAE;AACF,kFAAkF;AAClF,+EAA+E;AAC/E,6DAA6D;AAE7D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"containerRuntime.js","sourceRoot":"","sources":["../../src/runtimes/containerRuntime.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,oFAAoF;AACpF,gFAAgF;AAChF,sFAAsF;AACtF,wFAAwF;AACxF,uFAAuF;AACvF,EAAE;AACF,kFAAkF;AAClF,+EAA+E;AAC/E,6DAA6D;AAE7D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAA;AAgHhC,MAAM,QAAQ,GAAsC;IAClD,gFAAgF;IAChF,gFAAgF;IAChF,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,sBAAsB;QACjC,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,QAAQ;KACjB;IACD,uFAAuF;IACvF,8FAA8F;IAC9F,0EAA0E;IAC1E,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,sBAAsB;QACjC,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,QAAQ;KACjB;IACD,oFAAoF;IACpF,2EAA2E;IAC3E,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,sBAAsB;QACjC,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,QAAQ;KACjB;IACD,4EAA4E;IAC5E,mFAAmF;IACnF,sFAAsF;IACtF,iFAAiF;IACjF,4EAA4E;IAC5E,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,oBAAoB;QAC/B,cAAc,EAAE,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,QAAQ;KACjB;IACD,qFAAqF;IACrF,oFAAoF;IACpF,wFAAwF;IACxF,uFAAuF;IACvF,oEAAoE;IACpE,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,cAAc;QACzB,cAAc,EAAE,KAAK;QACrB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,OAAO;KAChB;CACF,CAAA;AAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAgB,CAAA;AAExD,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAAC,EAAa;IAC1C,OAAO,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAA;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC7D,IAAI,GAAG,IAAK,WAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAgB,CAAA;IAC3E,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAA;IACrD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,OAAO,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AACxD,CAAC"}
|
|
@@ -6,6 +6,8 @@ export interface DockerRuntimeAdapterOptions {
|
|
|
6
6
|
/** Add `--add-host=<hostAlias>:host-gateway` so the harness can reach the host. */
|
|
7
7
|
addHostGateway: boolean;
|
|
8
8
|
localDind: boolean;
|
|
9
|
+
/** Whether the warm-container pool is supported (Docker-family: true). */
|
|
10
|
+
pooling: boolean;
|
|
9
11
|
}
|
|
10
12
|
export declare class DockerRuntimeAdapter implements ContainerRuntimeAdapter {
|
|
11
13
|
readonly id: RuntimeId;
|
|
@@ -13,6 +15,7 @@ export declare class DockerRuntimeAdapter implements ContainerRuntimeAdapter {
|
|
|
13
15
|
readonly hostAlias: string;
|
|
14
16
|
readonly capabilities: {
|
|
15
17
|
localDind: boolean;
|
|
18
|
+
pooling: boolean;
|
|
16
19
|
};
|
|
17
20
|
private readonly addHostGateway;
|
|
18
21
|
constructor(options: DockerRuntimeAdapterOptions);
|
|
@@ -23,5 +26,6 @@ export declare class DockerRuntimeAdapter implements ContainerRuntimeAdapter {
|
|
|
23
26
|
remove(exec: ContainerExec, containerId: string): Promise<void>;
|
|
24
27
|
removeRun(exec: ContainerExec, runId: string): Promise<void>;
|
|
25
28
|
reapExited(exec: ContainerExec): Promise<number>;
|
|
29
|
+
listPoolMembers(exec: ContainerExec): Promise<string[]>;
|
|
26
30
|
}
|
|
27
31
|
//# sourceMappingURL=dockerRuntime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockerRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/dockerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE5B,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"dockerRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/dockerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE5B,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACf,MAAM,uBAAuB,CAAA;AAc9B,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,SAAS,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,oBAAqB,YAAW,uBAAuB;IAClE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,YAAY,OAAO,EAAE,2BAA2B,EAM/C;IAEK,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BtE;IAEK,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU1E;IAEK,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAS/F;IAEK,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO1E;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,CAgBrD;IAEK,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAc5D;CACF"}
|
|
@@ -7,6 +7,8 @@ import { HARNESS_PORT, } from './containerRuntime.js';
|
|
|
7
7
|
/** Labels the per-run container by its run id (a run's steps share one container). */
|
|
8
8
|
const LABEL_RUN = 'cat-factory.runId';
|
|
9
9
|
const LABEL_MANAGED = 'cat-factory.managed=local-docker';
|
|
10
|
+
/** Marks a reusable warm-pool member (not bound to any run id; leased in-process). */
|
|
11
|
+
const LABEL_POOL = 'cat-factory.pool=1';
|
|
10
12
|
export class DockerRuntimeAdapter {
|
|
11
13
|
id;
|
|
12
14
|
binary;
|
|
@@ -18,14 +20,16 @@ export class DockerRuntimeAdapter {
|
|
|
18
20
|
this.binary = options.binary;
|
|
19
21
|
this.hostAlias = options.hostAlias;
|
|
20
22
|
this.addHostGateway = options.addHostGateway;
|
|
21
|
-
this.capabilities = { localDind: options.localDind };
|
|
23
|
+
this.capabilities = { localDind: options.localDind, pooling: options.pooling };
|
|
22
24
|
}
|
|
23
25
|
async run(exec, spec) {
|
|
26
|
+
// A pool member is labelled `pool=1` and NOT bound to a run id (the transport leases
|
|
27
|
+
// it in-process); a classic per-run container is labelled by its run id.
|
|
24
28
|
const args = [
|
|
25
29
|
'run',
|
|
26
30
|
'-d',
|
|
27
31
|
'--label',
|
|
28
|
-
`${LABEL_RUN}=${spec.runId}`,
|
|
32
|
+
spec.pool ? LABEL_POOL : `${LABEL_RUN}=${spec.runId}`,
|
|
29
33
|
'--label',
|
|
30
34
|
LABEL_MANAGED,
|
|
31
35
|
'-p',
|
|
@@ -120,5 +124,20 @@ export class DockerRuntimeAdapter {
|
|
|
120
124
|
await exec(['rm', '-f', ...ids]).catch(() => undefined);
|
|
121
125
|
return ids.length;
|
|
122
126
|
}
|
|
127
|
+
async listPoolMembers(exec) {
|
|
128
|
+
const { stdout } = await exec([
|
|
129
|
+
'ps',
|
|
130
|
+
'-aq',
|
|
131
|
+
'--filter',
|
|
132
|
+
`label=${LABEL_MANAGED}`,
|
|
133
|
+
'--filter',
|
|
134
|
+
`label=${LABEL_POOL}`,
|
|
135
|
+
]);
|
|
136
|
+
return stdout
|
|
137
|
+
.trim()
|
|
138
|
+
.split('\n')
|
|
139
|
+
.map((s) => s.trim())
|
|
140
|
+
.filter(Boolean);
|
|
141
|
+
}
|
|
123
142
|
}
|
|
124
143
|
//# sourceMappingURL=dockerRuntime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockerRuntime.js","sourceRoot":"","sources":["../../src/runtimes/dockerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,GAGb,MAAM,uBAAuB,CAAA;AAE9B,uFAAuF;AACvF,mFAAmF;AACnF,sFAAsF;AACtF,sFAAsF;AACtF,uFAAuF;AAEvF,sFAAsF;AACtF,MAAM,SAAS,GAAG,mBAAmB,CAAA;AACrC,MAAM,aAAa,GAAG,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"dockerRuntime.js","sourceRoot":"","sources":["../../src/runtimes/dockerRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAI7B,MAAM,uBAAuB,CAAA;AAI9B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAEzE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAI7B,MAAM,uBAAuB,CAAA;AAI9B,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAEzE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,uBAAuB,CAsBpF"}
|
package/dist/runtimes/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAEzE,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAEzE;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAsB;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAA;IAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAEvC,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,IAAI,4BAA4B,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,gFAAgF;IAChF,kFAAkF;IAClF,MAAM,QAAQ,GAAG,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE,CAAA;IAC1D,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAA;IAE/E,OAAO,IAAI,oBAAoB,CAAC;QAC9B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM;QACN,SAAS;QACT,cAAc;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAEzE,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAA;AAEzE;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAsB;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAA;IAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAEvC,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO,IAAI,4BAA4B,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,gFAAgF;IAChF,kFAAkF;IAClF,MAAM,QAAQ,GAAG,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE,CAAA;IAC1D,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAA;IAE/E,OAAO,IAAI,oBAAoB,CAAC;QAC9B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM;QACN,SAAS;QACT,cAAc;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAwB9D,wBAAsB,UAAU,CAC9B,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;CACT,GACL,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CA8C5C"}
|
package/dist/server.js
CHANGED
|
@@ -5,7 +5,6 @@ import { logger } from '@cat-factory/server';
|
|
|
5
5
|
import { applyLocalDefaults } from './config.js';
|
|
6
6
|
import { buildLocalContainer } from './container.js';
|
|
7
7
|
import { githubPatCreationUrl } from './github.js';
|
|
8
|
-
import { createLocalContainerTransportFromEnv } from './LocalContainerRunnerTransport.js';
|
|
9
8
|
import { createRuntimeAdapter, resolveRuntimeId } from './runtimes/index.js';
|
|
10
9
|
const execFileAsync = promisify(execFile);
|
|
11
10
|
// Boot the local-mode service. It reuses the Node facade's `start()` — Postgres +
|
|
@@ -35,19 +34,10 @@ export async function startLocal(options = {}) {
|
|
|
35
34
|
// alias the harness will use to reach this service, and probe that the CLI is present.
|
|
36
35
|
// A misconfigured runtime then fails loud at boot rather than on the first dispatch.
|
|
37
36
|
await preflightRuntime(localized);
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
const reaped = await createLocalContainerTransportFromEnv(localized).reapExited();
|
|
44
|
-
if (reaped > 0)
|
|
45
|
-
logger.info({ reaped }, 'reaped orphaned local job containers');
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
logger.warn({ err: err instanceof Error ? err.message : String(err) }, 'could not reap orphaned local job containers');
|
|
49
|
-
}
|
|
50
|
-
}
|
|
37
|
+
// NB: reaping per-run containers a previous run orphaned (a crash/hard kill leaves exited
|
|
38
|
+
// managed containers behind) + draining pool orphans + pre-warming is done on the SERVING
|
|
39
|
+
// transport, which `buildLocalContainer` builds (with the DB-stored pool config) and warms
|
|
40
|
+
// eagerly at boot when an image is configured — so it is not repeated here.
|
|
51
41
|
// GitHub is reached via a PAT in local mode (there is no GitHub-App connect flow). Without
|
|
52
42
|
// one the board still serves, but every repo-operating agent step — clone, push, open PR,
|
|
53
43
|
// the CI gate, the real merge — fails. Surface it at boot with a click-through URL that
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/local-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Local-mode runtime facade for the Agent Architecture Board: the @cat-factory/node-server stack with agent jobs run as local Docker/Podman containers and GitHub accessed via a personal access token — a developer can run the whole product on their own machine.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,18 +25,19 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"drizzle-orm": "1.0.0-rc.3",
|
|
28
|
-
"@cat-factory/agents": "0.17.
|
|
29
|
-
"@cat-factory/contracts": "0.
|
|
30
|
-
"@cat-factory/
|
|
31
|
-
"@cat-factory/
|
|
32
|
-
"@cat-factory/
|
|
33
|
-
"@cat-factory/
|
|
28
|
+
"@cat-factory/agents": "0.17.2",
|
|
29
|
+
"@cat-factory/contracts": "0.33.0",
|
|
30
|
+
"@cat-factory/integrations": "0.22.0",
|
|
31
|
+
"@cat-factory/kernel": "0.36.0",
|
|
32
|
+
"@cat-factory/node-server": "0.26.0",
|
|
33
|
+
"@cat-factory/orchestration": "0.27.1",
|
|
34
|
+
"@cat-factory/server": "0.30.0"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@types/node": "^26.0.0",
|
|
37
38
|
"typescript": "7.0.1-rc",
|
|
38
39
|
"vitest": "^4.1.9",
|
|
39
|
-
"@cat-factory/conformance": "0.8.
|
|
40
|
+
"@cat-factory/conformance": "0.8.2"
|
|
40
41
|
},
|
|
41
42
|
"scripts": {
|
|
42
43
|
"build": "tsc -b tsconfig.build.json",
|