@cat-factory/local-server 0.14.2 → 0.15.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/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +93 -9
- package/dist/container.js.map +1 -1
- package/package.json +8 -8
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAgBpD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAgBpD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CA6B5E;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAEjE"}
|
package/dist/config.js
CHANGED
|
@@ -38,6 +38,12 @@ export function applyLocalDefaults(env) {
|
|
|
38
38
|
// alias routes back to this service on the host. The docker-family transport
|
|
39
39
|
// publishes that alias on Linux via `--add-host=<alias>:host-gateway`.
|
|
40
40
|
PUBLIC_URL: env.PUBLIC_URL?.trim() || `http://${hostAlias}:${port}`,
|
|
41
|
+
// Assemble the ephemeral-environment module by default so the Tester's "delegate test
|
|
42
|
+
// environments to a provider" opt-in works once a developer registers a provider — the
|
|
43
|
+
// module is inert (and the local default stays host DinD) until they connect one AND
|
|
44
|
+
// flip the toggle, so defaulting it on has no behavioural cost. Set ENVIRONMENTS_ENABLED
|
|
45
|
+
// explicitly to override.
|
|
46
|
+
ENVIRONMENTS_ENABLED: env.ENVIRONMENTS_ENABLED?.trim() || 'true',
|
|
41
47
|
};
|
|
42
48
|
}
|
|
43
49
|
/** The shared {@link AppConfig} with local-mode defaults applied. */
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,mFAAmF;AACnF,mFAAmF;AACnF,gDAAgD;AAChD,iFAAiF;AACjF,+DAA+D;AAC/D,uFAAuF;AACvF,6EAA6E;AAC7E,oFAAoF;AACpF,yDAAyD;AACzD,wEAAwE;AAExE,MAAM,YAAY,GAAG,MAAM,CAAA;AAE3B;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAsB;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,YAAY,CAAA;IAC7C,gFAAgF;IAChF,qFAAqF;IACrF,qFAAqF;IACrF,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACvC,OAAO;QACL,GAAG,GAAG;QACN,oFAAoF;QACpF,sFAAsF;QACtF,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,MAAM;QAClD,+EAA+E;QAC/E,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvF,mFAAmF;QACnF,qFAAqF;QACrF,sFAAsF;QACtF,gFAAgF;QAChF,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChF,qFAAqF;QACrF,6EAA6E;QAC7E,uEAAuE;QACvE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,UAAU,SAAS,IAAI,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,mFAAmF;AACnF,mFAAmF;AACnF,gDAAgD;AAChD,iFAAiF;AACjF,+DAA+D;AAC/D,uFAAuF;AACvF,6EAA6E;AAC7E,oFAAoF;AACpF,yDAAyD;AACzD,wEAAwE;AAExE,MAAM,YAAY,GAAG,MAAM,CAAA;AAE3B;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAsB;IACvD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,YAAY,CAAA;IAC7C,gFAAgF;IAChF,qFAAqF;IACrF,qFAAqF;IACrF,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACvC,OAAO;QACL,GAAG,GAAG;QACN,oFAAoF;QACpF,sFAAsF;QACtF,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,MAAM;QAClD,+EAA+E;QAC/E,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvF,mFAAmF;QACnF,qFAAqF;QACrF,sFAAsF;QACtF,gFAAgF;QAChF,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAChF,qFAAqF;QACrF,6EAA6E;QAC7E,uEAAuE;QACvE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,UAAU,SAAS,IAAI,IAAI,EAAE;QACnE,sFAAsF;QACtF,uFAAuF;QACvF,qFAAqF;QACrF,yFAAyF;QACzF,0BAA0B;QAC1B,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,MAAM;KACjE,CAAA;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,GAAsB;IACpD,OAAO,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAA;AAChD,CAAC"}
|
package/dist/container.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAGpE,OAAO,KAAK,EAAqC,eAAe,EAAE,MAAM,qBAAqB,CAAA;AA8B7F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe,CAiLlF"}
|
package/dist/container.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { DrizzleGitHubInstallationRepository, buildNodeContainer, loadNodeConfig, } from '@cat-factory/node-server';
|
|
1
|
+
import { CryptoIdGenerator, DrizzleGitHubInstallationRepository, 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';
|
|
2
4
|
import { applyLocalDefaults } from './config.js';
|
|
3
5
|
import { createLocalGitHubClient, fetchPatAccount, githubPatCreationUrl } from './github.js';
|
|
4
6
|
import { AutoProvisioningInstallationRepository } from './installations.js';
|
|
@@ -6,10 +8,15 @@ import { createLocalContainerTransportFromEnv, } from './LocalContainerRunnerTra
|
|
|
6
8
|
import { createRuntimeAdapter } from './runtimes/index.js';
|
|
7
9
|
// The local-mode composition root. It is intentionally thin: the ENTIRE Drizzle/
|
|
8
10
|
// Postgres persistence, pg-boss durable execution, gateways and model provisioning
|
|
9
|
-
// come from `buildNodeContainer` unchanged. Local mode only swaps the
|
|
10
|
-
//
|
|
11
|
-
// - the runner backend → a per-run local container
|
|
12
|
-
// Docker/Podman/OrbStack/Colima/Apple `container`)
|
|
11
|
+
// come from `buildNodeContainer` unchanged. Local mode only swaps the differentiators
|
|
12
|
+
// behind the seams `buildNodeContainer` exposes:
|
|
13
|
+
// - the runner backend → host Docker by default (a per-run local container,
|
|
14
|
+
// LocalContainerRunnerTransport, Docker/Podman/OrbStack/Colima/Apple `container`),
|
|
15
|
+
// but PER WORKSPACE it can be delegated to the workspace's registered self-hosted
|
|
16
|
+
// runner pool (the `delegateAgentsToRunnerPool` setting) — the local-vs-external
|
|
17
|
+
// opt-in. The Tester's environment is the symmetric opt-in (`delegateTestEnvToProvider`,
|
|
18
|
+
// wired below as the tester fallback default), so a developer runs everything locally
|
|
19
|
+
// by default but can flip either concern to an external service from the UI;
|
|
13
20
|
// - the push/clone token → a static GitHub PAT (`GITHUB_PAT`) instead of a GitHub
|
|
14
21
|
// App installation token.
|
|
15
22
|
// Repo resolution is unchanged: the executor still resolves a block's repo from the
|
|
@@ -45,15 +52,80 @@ export function buildLocalContainer(options) {
|
|
|
45
52
|
const githubInstallationRepository = pat && options.db
|
|
46
53
|
? new AutoProvisioningInstallationRepository(new DrizzleGitHubInstallationRepository(options.db), resolveAccount)
|
|
47
54
|
: undefined;
|
|
55
|
+
// One shared persistence set + clock/idGenerator, reused by the per-workspace transport
|
|
56
|
+
// chooser below AND threaded into `buildNodeContainer` (which would otherwise build its
|
|
57
|
+
// own) so the chooser reads the same workspace settings the rest of the engine does.
|
|
58
|
+
const clock = new SystemClock();
|
|
59
|
+
const idGenerator = new CryptoIdGenerator();
|
|
60
|
+
const repos = options.repos ?? createDrizzleRepositories(options.db, clock);
|
|
61
|
+
const wsSettings = new WorkspaceSettingsService({
|
|
62
|
+
workspaceSettingsRepository: repos.workspaceSettingsRepository,
|
|
63
|
+
workspaceRepository: repos.workspaceRepository,
|
|
64
|
+
});
|
|
48
65
|
// The Docker transport is constructed LAZILY on first container-job dispatch, so the
|
|
49
66
|
// service still boots to serve the board (and inline kinds) when LOCAL_HARNESS_IMAGE
|
|
50
67
|
// is unset — only repo-operating kinds then fail, loudly and with a clear message,
|
|
51
68
|
// mirroring how the Node facade treats a missing runner backend.
|
|
52
69
|
let transport;
|
|
53
|
-
const
|
|
70
|
+
const localResolve = () => {
|
|
54
71
|
transport ??= createLocalContainerTransportFromEnv(env);
|
|
55
72
|
return Promise.resolve(transport);
|
|
56
73
|
};
|
|
74
|
+
// The runner-pool resolver (the external opt-in target). In local mode `runners` is
|
|
75
|
+
// enabled (it keys off ENCRYPTION_KEY, which `applyLocalDefaults` always sets), so this
|
|
76
|
+
// is non-null and a workspace can register a pool via the API; a native adapter injected
|
|
77
|
+
// through `options.runnerPoolProvider` drives the actual dispatch. The connection repo is
|
|
78
|
+
// also held for the start-time guard's cheap "is a pool registered?" existence check.
|
|
79
|
+
const runnerPoolConnectionRepository = new DrizzleRunnerPoolConnectionRepository(options.db);
|
|
80
|
+
const poolResolve = buildNodeResolveTransport(config, runnerPoolConnectionRepository, repos.workspaceRepository, clock, options.runnerPoolProvider);
|
|
81
|
+
// Per-branch provisioning-log tagging: the per-run local container logs under the
|
|
82
|
+
// `container` subsystem, the runner pool under `runner-pool`, so the logs drawer filters
|
|
83
|
+
// each correctly. We wrap each branch here and tell `buildNodeContainer` not to re-wrap
|
|
84
|
+
// (its single-subsystem wrap can't tell which branch a per-workspace chooser took).
|
|
85
|
+
const recorder = new ProvisioningLogRecorder({
|
|
86
|
+
repository: repos.provisioningLogRepository,
|
|
87
|
+
idGenerator,
|
|
88
|
+
clock,
|
|
89
|
+
});
|
|
90
|
+
const wrappedLocal = withProvisioningLog(localResolve, recorder, 'container');
|
|
91
|
+
const wrappedPool = poolResolve ? withProvisioningLog(poolResolve, recorder, 'runner-pool') : null;
|
|
92
|
+
// The local-vs-external agents opt-in: dispatch to the registered runner pool when the
|
|
93
|
+
// workspace opts in (and one is wrapped), else to host Docker. The pool branch's own
|
|
94
|
+
// throw surfaces a clean "register a pool" message when delegation is on but none exists.
|
|
95
|
+
const resolveTransport = async (workspaceId) => {
|
|
96
|
+
const delegate = !!workspaceId && (await wsSettings.get(workspaceId)).delegateAgentsToRunnerPool;
|
|
97
|
+
if (delegate && wrappedPool)
|
|
98
|
+
return wrappedPool(workspaceId);
|
|
99
|
+
return wrappedLocal(workspaceId);
|
|
100
|
+
};
|
|
101
|
+
// Start-time guard: refuse a run up front when the workspace delegates agents to a pool
|
|
102
|
+
// that isn't registered, so the human gets a clean 409 (an actionable message) instead of
|
|
103
|
+
// a mid-run dispatch failure. No-op when delegation is off. We throw a ConflictError for
|
|
104
|
+
// BOTH negative cases — the integration being disabled AND no pool registered for the
|
|
105
|
+
// workspace — rather than letting the pool resolver's plain Error escape (the error
|
|
106
|
+
// handler maps a non-DomainError to an opaque 500 with the message suppressed). The
|
|
107
|
+
// existence check uses `getByWorkspace` directly, so it neither decrypts the pool secrets
|
|
108
|
+
// nor builds a transport that the actual dispatch resolve would only build again.
|
|
109
|
+
const assertAgentBackendConfigured = async (workspaceId) => {
|
|
110
|
+
if (!(await wsSettings.get(workspaceId)).delegateAgentsToRunnerPool)
|
|
111
|
+
return;
|
|
112
|
+
if (!wrappedPool) {
|
|
113
|
+
throw new ConflictError('This workspace delegates container agents to a self-hosted runner pool, but the ' +
|
|
114
|
+
'runner-pool integration is not enabled on this deployment.', 'agent_backend_unconfigured');
|
|
115
|
+
}
|
|
116
|
+
if (!(await runnerPoolConnectionRepository.getByWorkspace(workspaceId))) {
|
|
117
|
+
throw new ConflictError('This workspace delegates container agents to a self-hosted runner pool, but none ' +
|
|
118
|
+
'is registered. Register one (Settings → Self-hosted runner pool) or turn ' +
|
|
119
|
+
'delegation off to run agents on host Docker, before starting.', 'agent_backend_unconfigured');
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
// The two tester-environment resolvers (used identically by the start gate and the
|
|
123
|
+
// agent-context materialisation): the local-mode default is `local` (host Docker / DinD),
|
|
124
|
+
// flipping to `ephemeral` only when the workspace opts into its environment provider; and
|
|
125
|
+
// when it opts in, the provider becomes REQUIRED so an `ephemeral` run with none connected
|
|
126
|
+
// is refused at start.
|
|
127
|
+
const resolveTesterFallbackDefault = async (workspaceId) => (await wsSettings.get(workspaceId)).delegateTestEnvToProvider ? 'ephemeral' : 'local';
|
|
128
|
+
const resolveRequireEnvironmentProvider = async (workspaceId) => (await wsSettings.get(workspaceId)).delegateTestEnvToProvider;
|
|
57
129
|
// The selected runtime decides whether the Tester's LOCAL docker-compose infra (run
|
|
58
130
|
// via Docker-in-Docker) is possible: Docker/Podman/OrbStack/Colima can nest a daemon,
|
|
59
131
|
// Apple `container` (one VM per container) cannot. Surface that capability to the
|
|
@@ -65,9 +137,12 @@ export function buildLocalContainer(options) {
|
|
|
65
137
|
...options,
|
|
66
138
|
env,
|
|
67
139
|
config,
|
|
68
|
-
|
|
69
|
-
//
|
|
140
|
+
repos,
|
|
141
|
+
// The per-workspace chooser (host Docker vs the runner pool). Pre-wrapped with the
|
|
142
|
+
// correct provisioning-log subsystem per branch, so tell buildNodeContainer not to
|
|
143
|
+
// re-wrap with a single subsystem tag.
|
|
70
144
|
resolveTransport,
|
|
145
|
+
skipProvisioningLogWrap: true,
|
|
71
146
|
// Authenticate git with the developer's PAT when present. Absent → the executor
|
|
72
147
|
// falls back to the GitHub App path (and is null without it), so container kinds
|
|
73
148
|
// fail loudly rather than silently mis-running.
|
|
@@ -81,12 +156,21 @@ export function buildLocalContainer(options) {
|
|
|
81
156
|
// connected with no manual connect step.
|
|
82
157
|
...(githubInstallationRepository ? { githubInstallationRepository } : {}),
|
|
83
158
|
overrides: {
|
|
159
|
+
// The local-mode infrastructure-delegation opt-ins (per workspace). Listed BEFORE
|
|
160
|
+
// `...options.overrides` so a caller (the cross-runtime conformance harness) can pin
|
|
161
|
+
// the facade-NEUTRAL `ephemeral` tester default for the shared assertions — the local
|
|
162
|
+
// `local` default is a facade-specific behavior covered by its own tests.
|
|
163
|
+
resolveTesterFallbackDefault,
|
|
164
|
+
resolveRequireEnvironmentProvider,
|
|
165
|
+
assertAgentBackendConfigured,
|
|
84
166
|
...options.overrides,
|
|
85
167
|
// The local PAT carries `workflow` scope (the creation URL pre-selects it), so the
|
|
86
168
|
// connection isn't missing workflows: write — report it granted to suppress the
|
|
87
169
|
// advisory banner. (The App-permissions probe this normally uses needs an app JWT.)
|
|
88
170
|
...(pat ? { workflowsGranted: async () => true } : {}),
|
|
89
|
-
// Gate the Tester's local-infra mode on the runtime's Docker-in-Docker support
|
|
171
|
+
// Gate the Tester's local-infra mode on the runtime's Docker-in-Docker support
|
|
172
|
+
// (local-authoritative — after the overrides so a deployment can't accidentally
|
|
173
|
+
// claim DinD support the runtime doesn't have).
|
|
90
174
|
localTestInfraSupported,
|
|
91
175
|
},
|
|
92
176
|
});
|
package/dist/container.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,kBAAkB,EAClB,cAAc,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.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.15.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,18 @@
|
|
|
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/kernel": "0.
|
|
31
|
-
"@cat-factory/node-server": "0.
|
|
32
|
-
"@cat-factory/orchestration": "0.
|
|
33
|
-
"@cat-factory/server": "0.29.
|
|
28
|
+
"@cat-factory/agents": "0.17.1",
|
|
29
|
+
"@cat-factory/contracts": "0.32.0",
|
|
30
|
+
"@cat-factory/kernel": "0.35.0",
|
|
31
|
+
"@cat-factory/node-server": "0.25.0",
|
|
32
|
+
"@cat-factory/orchestration": "0.27.0",
|
|
33
|
+
"@cat-factory/server": "0.29.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^26.0.0",
|
|
37
37
|
"typescript": "7.0.1-rc",
|
|
38
38
|
"vitest": "^4.1.9",
|
|
39
|
-
"@cat-factory/conformance": "0.8.
|
|
39
|
+
"@cat-factory/conformance": "0.8.1"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "tsc -b tsconfig.build.json",
|