@cat-factory/worker 0.193.0 → 0.194.1

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 (50) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +21 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/infrastructure/container-assembly.d.ts.map +1 -1
  6. package/dist/infrastructure/container-assembly.js +2 -1
  7. package/dist/infrastructure/container-assembly.js.map +1 -1
  8. package/dist/infrastructure/container-dispatchers.d.ts.map +1 -1
  9. package/dist/infrastructure/container-dispatchers.js +5 -3
  10. package/dist/infrastructure/container-dispatchers.js.map +1 -1
  11. package/dist/infrastructure/container-executor-deps.d.ts.map +1 -1
  12. package/dist/infrastructure/container-executor-deps.js +13 -2
  13. package/dist/infrastructure/container-executor-deps.js.map +1 -1
  14. package/dist/infrastructure/container.d.ts +1 -24
  15. package/dist/infrastructure/container.d.ts.map +1 -1
  16. package/dist/infrastructure/container.js +1 -50
  17. package/dist/infrastructure/container.js.map +1 -1
  18. package/dist/infrastructure/containers/CloudflareContainerTransport.d.ts +22 -5
  19. package/dist/infrastructure/containers/CloudflareContainerTransport.d.ts.map +1 -1
  20. package/dist/infrastructure/containers/CloudflareContainerTransport.js +53 -25
  21. package/dist/infrastructure/containers/CloudflareContainerTransport.js.map +1 -1
  22. package/dist/infrastructure/containers/ContainerInstanceRegistry.d.ts +26 -9
  23. package/dist/infrastructure/containers/ContainerInstanceRegistry.d.ts.map +1 -1
  24. package/dist/infrastructure/containers/ContainerInstanceRegistry.js +37 -13
  25. package/dist/infrastructure/containers/ContainerInstanceRegistry.js.map +1 -1
  26. package/dist/infrastructure/containers/UiTesterContainer.d.ts +4 -0
  27. package/dist/infrastructure/containers/UiTesterContainer.d.ts.map +1 -0
  28. package/dist/infrastructure/containers/UiTesterContainer.js +18 -0
  29. package/dist/infrastructure/containers/UiTesterContainer.js.map +1 -0
  30. package/dist/infrastructure/containers/deployJobDeps.d.ts +20 -0
  31. package/dist/infrastructure/containers/deployJobDeps.d.ts.map +1 -0
  32. package/dist/infrastructure/containers/deployJobDeps.js +38 -0
  33. package/dist/infrastructure/containers/deployJobDeps.js.map +1 -0
  34. package/dist/infrastructure/containers/runContainerNamespace.d.ts +38 -0
  35. package/dist/infrastructure/containers/runContainerNamespace.d.ts.map +1 -0
  36. package/dist/infrastructure/containers/runContainerNamespace.js +37 -0
  37. package/dist/infrastructure/containers/runContainerNamespace.js.map +1 -0
  38. package/dist/infrastructure/dispatchTokenMint.d.ts +17 -0
  39. package/dist/infrastructure/dispatchTokenMint.d.ts.map +1 -0
  40. package/dist/infrastructure/dispatchTokenMint.js +23 -0
  41. package/dist/infrastructure/dispatchTokenMint.js.map +1 -0
  42. package/dist/infrastructure/env.d.ts +13 -0
  43. package/dist/infrastructure/env.d.ts.map +1 -1
  44. package/dist/infrastructure/env.js.map +1 -1
  45. package/dist/infrastructure/repositories/D1LiveContainerRepository.d.ts +3 -3
  46. package/dist/infrastructure/repositories/D1LiveContainerRepository.d.ts.map +1 -1
  47. package/dist/infrastructure/repositories/D1LiveContainerRepository.js +12 -7
  48. package/dist/infrastructure/repositories/D1LiveContainerRepository.js.map +1 -1
  49. package/migrations/0094_live_container_image.sql +11 -0
  50. package/package.json +18 -18
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiTesterContainer.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/containers/UiTesterContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAgB7C,qBAAa,iBAAkB,SAAQ,YAAY;CAAG"}
@@ -0,0 +1,18 @@
1
+ import { RunContainer } from './RunContainer';
2
+ // One UI-TESTER container per run, mirroring {@link ExecutionContainer} but pulling the heavier
3
+ // UI image (`Dockerfile.ui`: the executor harness plus Playwright + Chromium, pnpm/yarn, the
4
+ // `serve` static server and a headless JRE + WireMock) instead of the plain executor image. A
5
+ // Cloudflare Container's image is pinned per container CLASS, so the `image: 'ui'` dispatch
6
+ // variant needs its own class; this one is bound as `UI_CONTAINER`, so the browser and the JRE
7
+ // never bloat the cold start of every coder/merger/ci-fixer run.
8
+ //
9
+ // It is a SECOND container for the same run rather than a replacement: a run mixes ordinary
10
+ // agent steps with a `tester-ui` step, and a per-run container cannot change image mid-run. The
11
+ // two are addressed by `containerKeyForRef`, which qualifies the run id with the variant.
12
+ //
13
+ // The UI image serves the SAME `POST /jobs` + `GET /jobs/{id}` contract on 8080 (it layers onto
14
+ // the same harness), so the generic `CloudflareContainerTransport` drives it unchanged, and its
15
+ // lifecycle behaviour is {@link RunContainer}'s, shared byte-for-byte with the agent one.
16
+ export class UiTesterContainer extends RunContainer {
17
+ }
18
+ //# sourceMappingURL=UiTesterContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiTesterContainer.js","sourceRoot":"","sources":["../../../src/infrastructure/containers/UiTesterContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,gGAAgG;AAChG,6FAA6F;AAC7F,8FAA8F;AAC9F,4FAA4F;AAC5F,+FAA+F;AAC/F,iEAAiE;AACjE,EAAE;AACF,4FAA4F;AAC5F,gGAAgG;AAChG,0FAA0F;AAC1F,EAAE;AACF,gGAAgG;AAChG,gGAAgG;AAChG,0FAA0F;AAC1F,MAAM,OAAO,iBAAkB,SAAQ,YAAY;CAAG"}
@@ -0,0 +1,20 @@
1
+ import type { Clock } from '@cat-factory/kernel';
2
+ import type { CoreDependencies } from '@cat-factory/orchestration';
3
+ import type { D1Database } from '@cloudflare/workers-types';
4
+ import type { AppConfig } from '../config';
5
+ import type { Env } from '../env';
6
+ /**
7
+ * Wire the async, container-backed Kubernetes deploy lifecycle (slice 9's
8
+ * `EnvironmentProvisioningService` seams) onto the Worker facade: a `deployJobClient` that
9
+ * dispatches/polls/releases a `deploy`-kind job on the per-run `DeployContainer` (the separate
10
+ * deploy-harness image — real `kubectl`/`kustomize`/`helm`), plus `resolveDeployCloneTarget` to
11
+ * hand the container concrete manifests-repo clone coords + a short-lived install token.
12
+ *
13
+ * Gated on the environments module, the `DEPLOY_CONTAINER` binding AND the GitHub App
14
+ * (the clone-target seam needs to mint install tokens + resolve a block's repo). Absent any
15
+ * prerequisite ⇒ `{}` — a render-needing config then fails loudly (the synchronous raw-manifest
16
+ * REST path is unaffected), exactly the unwired behaviour slice 9 shipped. Mirrors Node's pool
17
+ * deploy wiring; the deploy container is the Worker's analogue of Node's self-hosted pool.
18
+ */
19
+ export declare function selectDeployDeps(env: Env, config: AppConfig, db: D1Database, clock: Clock): Partial<CoreDependencies>;
20
+ //# sourceMappingURL=deployJobDeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployJobDeps.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/containers/deployJobDeps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAQjC;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,gBAAgB,CAAC,CA4B3B"}
@@ -0,0 +1,38 @@
1
+ import { makeResolveDeployCloneTarget, RunnerJobClient } from '@cat-factory/server';
2
+ import { buildAppRegistry, buildResolveRepoTarget } from '../container-vcs-identity';
3
+ import { workerDispatchTokenMint } from '../dispatchTokenMint';
4
+ import { CloudflareContainerTransport, fixedContainerNamespace, } from './CloudflareContainerTransport';
5
+ /**
6
+ * Wire the async, container-backed Kubernetes deploy lifecycle (slice 9's
7
+ * `EnvironmentProvisioningService` seams) onto the Worker facade: a `deployJobClient` that
8
+ * dispatches/polls/releases a `deploy`-kind job on the per-run `DeployContainer` (the separate
9
+ * deploy-harness image — real `kubectl`/`kustomize`/`helm`), plus `resolveDeployCloneTarget` to
10
+ * hand the container concrete manifests-repo clone coords + a short-lived install token.
11
+ *
12
+ * Gated on the environments module, the `DEPLOY_CONTAINER` binding AND the GitHub App
13
+ * (the clone-target seam needs to mint install tokens + resolve a block's repo). Absent any
14
+ * prerequisite ⇒ `{}` — a render-needing config then fails loudly (the synchronous raw-manifest
15
+ * REST path is unaffected), exactly the unwired behaviour slice 9 shipped. Mirrors Node's pool
16
+ * deploy wiring; the deploy container is the Worker's analogue of Node's self-hosted pool.
17
+ */
18
+ export function selectDeployDeps(env, config, db, clock) {
19
+ if (!config.environments.encryptionKey ||
20
+ !env.DEPLOY_CONTAINER ||
21
+ !config.github.enabled ||
22
+ !env.GITHUB_APP_PRIVATE_KEY) {
23
+ return {};
24
+ }
25
+ // A deploy-DEDICATED transport: the deploy job's `ref.runId` addresses a `DeployContainer`
26
+ // instance in its own DO namespace (no collision with the agent `EXEC_CONTAINER`), and the
27
+ // harness keys the job by `ref.jobId`. No instance registry is wired (the `sleepAfter` idle
28
+ // timer + explicit `release` reclaim it), so cross-namespace reaping stays the exec
29
+ // container's concern. The client is deploy-only, so `poll`/`release` need no per-ref routing.
30
+ const deployTransport = new CloudflareContainerTransport(fixedContainerNamespace(env.DEPLOY_CONTAINER), undefined, env.HARNESS_SHARED_SECRET?.trim() || undefined);
31
+ const registry = buildAppRegistry(env, config, db, clock);
32
+ return {
33
+ deployJobClient: new RunnerJobClient(async () => deployTransport),
34
+ // Narrowed to the repo being rendered, like every other container dispatch.
35
+ resolveDeployCloneTarget: makeResolveDeployCloneTarget(buildResolveRepoTarget(db), workerDispatchTokenMint(registry)),
36
+ };
37
+ }
38
+ //# sourceMappingURL=deployJobDeps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployJobDeps.js","sourceRoot":"","sources":["../../../src/infrastructure/containers/deployJobDeps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAInF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,gCAAgC,CAAA;AAEvC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,MAAiB,EACjB,EAAc,EACd,KAAY;IAEZ,IACE,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa;QAClC,CAAC,GAAG,CAAC,gBAAgB;QACrB,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;QACtB,CAAC,GAAG,CAAC,sBAAsB,EAC3B,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IACD,2FAA2F;IAC3F,2FAA2F;IAC3F,4FAA4F;IAC5F,oFAAoF;IACpF,+FAA+F;IAC/F,MAAM,eAAe,GAAG,IAAI,4BAA4B,CACtD,uBAAuB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAC7C,SAAS,EACT,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,SAAS,CAC/C,CAAA;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IACzD,OAAO;QACL,eAAe,EAAE,IAAI,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC;QACjE,4EAA4E;QAC5E,wBAAwB,EAAE,4BAA4B,CACpD,sBAAsB,CAAC,EAAE,CAAC,EAC1B,uBAAuB,CAAC,QAAQ,CAAC,CAClC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { RunnerImageVariant } from '@cat-factory/kernel';
2
+ import type { DurableObjectNamespace } from '@cloudflare/workers-types';
3
+ import type { DeployContainer } from './DeployContainer';
4
+ import type { ExecutionContainer } from './ExecutionContainer';
5
+ import type { UiTesterContainer } from './UiTesterContainer';
6
+ /**
7
+ * Any per-run container class. The three exist only because a Cloudflare Container's image is
8
+ * pinned per container CLASS by the wrangler `[[containers]]` block; each serves the same
9
+ * `/jobs` HTTP contract and the same `RunContainer` lifecycle, so a namespace of any of them
10
+ * drives the same transport.
11
+ */
12
+ export type RunContainerNamespace = DurableObjectNamespace<ExecutionContainer> | DurableObjectNamespace<DeployContainer> | DurableObjectNamespace<UiTesterContainer>;
13
+ /**
14
+ * Picks the container class that serves an image variant. A transport built for ONE class (the
15
+ * deploy path) ignores the variant; the agent path routes `ui` to its own class.
16
+ *
17
+ * It THROWS for a variant this deployment has not wired, and that refusal is the point. The
18
+ * alternative, falling back to the default class, is what this seam exists to stop: a
19
+ * browser-driven tester silently lands on an image with no browser, pays for a checkout, an
20
+ * install and the model's first turns, then reports an `abort` a reader cannot tell apart from
21
+ * an app that would not boot. Refusing costs one dispatch and names the binding to add.
22
+ */
23
+ export type ResolveRunContainerNamespace = (variant: RunnerImageVariant) => RunContainerNamespace;
24
+ /**
25
+ * The agent path's resolver: the plain executor class for everything, the UI class for the `ui`
26
+ * variant (today only `tester-ui` declares it).
27
+ *
28
+ * `deploy` never reaches here. The deploy adapter builds its own dedicated transport over
29
+ * `DEPLOY_CONTAINER`, so a `deploy` variant arriving on the AGENT path is a wiring mistake in a
30
+ * kind's registration rather than a missing binding. It is refused too, and separately, because
31
+ * the two need different fixes: one is an operator adding a binding, the other a developer
32
+ * correcting a registry entry.
33
+ */
34
+ export declare function agentContainerNamespace(bindings: {
35
+ exec: DurableObjectNamespace<ExecutionContainer>;
36
+ ui?: DurableObjectNamespace<UiTesterContainer>;
37
+ }): ResolveRunContainerNamespace;
38
+ //# sourceMappingURL=runContainerNamespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runContainerNamespace.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/containers/runContainerNamespace.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAC7B,sBAAsB,CAAC,kBAAkB,CAAC,GAC1C,sBAAsB,CAAC,eAAe,CAAC,GACvC,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;AAE7C;;;;;;;;;GASG;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,qBAAqB,CAAA;AAEjG;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAChD,IAAI,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;IAChD,EAAE,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;CAC/C,GAAG,4BAA4B,CA8B/B"}
@@ -0,0 +1,37 @@
1
+ import { RUNNER_IMAGE_UNWIRED_REASON, UnavailableError, unservableImageVariant, } from '@cat-factory/kernel';
2
+ /**
3
+ * The agent path's resolver: the plain executor class for everything, the UI class for the `ui`
4
+ * variant (today only `tester-ui` declares it).
5
+ *
6
+ * `deploy` never reaches here. The deploy adapter builds its own dedicated transport over
7
+ * `DEPLOY_CONTAINER`, so a `deploy` variant arriving on the AGENT path is a wiring mistake in a
8
+ * kind's registration rather than a missing binding. It is refused too, and separately, because
9
+ * the two need different fixes: one is an operator adding a binding, the other a developer
10
+ * correcting a registry entry.
11
+ */
12
+ export function agentContainerNamespace(bindings) {
13
+ return (variant) => {
14
+ if (variant === 'ui') {
15
+ if (bindings.ui)
16
+ return bindings.ui;
17
+ throw new UnavailableError('This step runs on the UI-tester executor image (Playwright + a browser), but this ' +
18
+ 'deployment binds no UI-tester container class, so there is nothing to dispatch it to. ' +
19
+ 'Add a `[[containers]]` class named UiTesterContainer pinned to the published ' +
20
+ 'cat-factory-executor-ui image plus its UI_CONTAINER durable-object binding, then ' +
21
+ 'redeploy. Until then, drop the `tester-ui` step from the pipeline: the ' +
22
+ 'visual-confirmation gate still runs on screenshots a person uploads.', RUNNER_IMAGE_UNWIRED_REASON, { image: variant, binding: 'UI_CONTAINER' });
23
+ }
24
+ if (variant === 'deploy') {
25
+ throw new UnavailableError('An agent step declared the `deploy` executor image, which the agent runner path does ' +
26
+ 'not serve: deploy jobs run through the environment-provisioning adapter and its own ' +
27
+ 'DEPLOY_CONTAINER transport. Correct the agent kind’s registration.', RUNNER_IMAGE_UNWIRED_REASON, { image: variant, binding: 'DEPLOY_CONTAINER' });
28
+ }
29
+ if (variant === 'default')
30
+ return bindings.exec;
31
+ // Exhaustive, so a variant added to the union fails the BUILD here rather than routing
32
+ // silently to the executor class — the same fall-through the local transport's `imageFor`
33
+ // had, and the one this whole seam exists to refuse.
34
+ return unservableImageVariant(variant);
35
+ };
36
+ }
37
+ //# sourceMappingURL=runContainerNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runContainerNamespace.js","sourceRoot":"","sources":["../../../src/infrastructure/containers/runContainerNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AA8B5B;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAGvC;IACC,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO,QAAQ,CAAC,EAAE,CAAA;YACnC,MAAM,IAAI,gBAAgB,CACxB,oFAAoF;gBAClF,wFAAwF;gBACxF,+EAA+E;gBAC/E,mFAAmF;gBACnF,yEAAyE;gBACzE,sEAAsE,EACxE,2BAA2B,EAC3B,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAC5C,CAAA;QACH,CAAC;QACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,gBAAgB,CACxB,uFAAuF;gBACrF,sFAAsF;gBACtF,oEAAoE,EACtE,2BAA2B,EAC3B,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAChD,CAAA;QACH,CAAC;QACD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAA;QAC/C,uFAAuF;QACvF,0FAA0F;QAC1F,qDAAqD;QACrD,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type GitHubAppRegistry, type MintInstallationToken } from '@cat-factory/server';
2
+ /**
3
+ * The clone/push credential for a Worker container dispatch: the App registry's mint, narrowed by
4
+ * the shared builder to the repos that dispatch resolved. Every Worker site that hands a container
5
+ * a GitHub token goes through this, so none of them can quietly fall back to an installation-wide
6
+ * one. No `resolveRunInitiatorToken`: the step executor composes its own mint with that chain (see
7
+ * `container-executor-deps.ts`), while bootstrap, repair and the deploy clone have no initiator to
8
+ * act as, and saying so once here beats three call sites each omitting it by accident.
9
+ *
10
+ * It sits in a LEAF module rather than in the composition root because three of its callers are
11
+ * modules the root itself pulls in: importing it back out of `container.ts` made each of them
12
+ * depend on the whole root, and for `containers/deployJobDeps.ts` (which the root re-exported) it
13
+ * closed a genuine cycle that only stayed harmless while every reference sat inside a function
14
+ * body.
15
+ */
16
+ export declare function workerDispatchTokenMint(registry: GitHubAppRegistry): MintInstallationToken;
17
+ //# sourceMappingURL=dispatchTokenMint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatchTokenMint.d.ts","sourceRoot":"","sources":["../../src/infrastructure/dispatchTokenMint.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAEtB,KAAK,qBAAqB,EAE3B,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,qBAAqB,CAM1F"}
@@ -0,0 +1,23 @@
1
+ import { buildDispatchTokenMint, logger, operationalMetrics, } from '@cat-factory/server';
2
+ /**
3
+ * The clone/push credential for a Worker container dispatch: the App registry's mint, narrowed by
4
+ * the shared builder to the repos that dispatch resolved. Every Worker site that hands a container
5
+ * a GitHub token goes through this, so none of them can quietly fall back to an installation-wide
6
+ * one. No `resolveRunInitiatorToken`: the step executor composes its own mint with that chain (see
7
+ * `container-executor-deps.ts`), while bootstrap, repair and the deploy clone have no initiator to
8
+ * act as, and saying so once here beats three call sites each omitting it by accident.
9
+ *
10
+ * It sits in a LEAF module rather than in the composition root because three of its callers are
11
+ * modules the root itself pulls in: importing it back out of `container.ts` made each of them
12
+ * depend on the whole root, and for `containers/deployJobDeps.ts` (which the root re-exported) it
13
+ * closed a genuine cycle that only stayed harmless while every reference sat inside a function
14
+ * body.
15
+ */
16
+ export function workerDispatchTokenMint(registry) {
17
+ return buildDispatchTokenMint({
18
+ mint: (id, opts) => registry.installationToken(id, opts),
19
+ logger,
20
+ operationalMetrics,
21
+ });
22
+ }
23
+ //# sourceMappingURL=dispatchTokenMint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatchTokenMint.js","sourceRoot":"","sources":["../../src/infrastructure/dispatchTokenMint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAEtB,MAAM,EAEN,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAA2B;IACjE,OAAO,sBAAsB,CAAC;QAC5B,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC;QACxD,MAAM;QACN,kBAAkB;KACnB,CAAC,CAAA;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { Ai, D1Database, DurableObjectNamespace, Queue, R2Bucket, Workflow } from '@cloudflare/workers-types';
2
2
  import type { TrackerWebhookEvent } from '@cat-factory/kernel';
3
3
  import type { DeployContainer } from './containers/DeployContainer';
4
+ import type { UiTesterContainer } from './containers/UiTesterContainer';
4
5
  import type { ExecutionContainer } from './containers/ExecutionContainer';
5
6
  import type { CacheGenerationDirectory } from './durable-objects/CacheGenerationDirectory';
6
7
  import type { WorkspaceEventsHub } from './durable-objects/WorkspaceEventsHub';
@@ -198,6 +199,18 @@ export interface Env {
198
199
  * REST path is unaffected).
199
200
  */
200
201
  DEPLOY_CONTAINER?: DurableObjectNamespace<DeployContainer>;
202
+ /**
203
+ * Durable Object namespace backing per-run UI-TESTER containers: the heavier image that
204
+ * layers Playwright + Chromium, pnpm/yarn, `serve` and a headless JRE + WireMock onto the
205
+ * executor harness, which the `image: 'ui'` dispatch variant routes to. A run gets one
206
+ * ALONGSIDE its `EXEC_CONTAINER` instance, because a per-run container cannot change image
207
+ * mid-run and a browser-driven step sits between ordinary agent steps.
208
+ *
209
+ * Absent ⇒ a step declaring that image is REFUSED at dispatch, naming this binding. It is not
210
+ * served on the executor image instead: that image has no browser, and the refusal is the
211
+ * whole reason the variant exists.
212
+ */
213
+ UI_CONTAINER?: DurableObjectNamespace<UiTesterContainer>;
201
214
  /**
202
215
  * Optional shared secret authenticating the Worker → harness HTTP calls. When set,
203
216
  * it is injected into each per-run container's env (so the harness requires it) and
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAuwB7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAQ;IACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,CAAA;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAA;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,GAAQ;IAC7B,OAAO,GAAyC,CAAA;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,GAAQ,EAAE,GAAW;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED;6EAC6E;AAC7E,MAAM,UAAU,OAAO,CAAC,GAAQ;IAC9B,MAAM,IAAI,GAAuC,EAAE,CAAA;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAClD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAoxB7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAQ;IACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,CAAA;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAA;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,GAAQ;IAC7B,OAAO,GAAyC,CAAA;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,GAAQ,EAAE,GAAW;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC;AAED;6EAC6E;AAC7E,MAAM,UAAU,OAAO,CAAC,GAAQ;IAC9B,MAAM,IAAI,GAAuC,EAAE,CAAA;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAClD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import type { D1Database } from '@cloudflare/workers-types';
2
2
  import type { LiveContainerRecord, LiveContainerStore } from '../containers/ContainerInstanceRegistry';
3
3
  /**
4
- * The live-container inventory over D1 (`live_containers`, migration 0022). `add`
5
- * uses `ON CONFLICT(container_key) DO NOTHING` so a replayed dispatch preserves the
6
- * first `started_at` — the container's true age the reaper keys off.
4
+ * The live-container inventory over D1 (`live_containers`, migration 0022; `image` added in
5
+ * 0094). `add` uses `ON CONFLICT(container_key) DO NOTHING` so a replayed dispatch preserves
6
+ * the first `started_at`, the container's true age the reaper keys off.
7
7
  */
8
8
  export declare class D1LiveContainerRepository implements LiveContainerStore {
9
9
  private readonly db;
@@ -1 +1 @@
1
- {"version":3,"file":"D1LiveContainerRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LiveContainerRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,yCAAyC,CAAA;AAEhD;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpD;IAEK,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhD;IAEK,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAoBvE;CACF"}
1
+ {"version":3,"file":"D1LiveContainerRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LiveContainerRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,yCAAyC,CAAA;AAEhD;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,GAAG,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAepD;IAEK,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhD;IAEK,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAyBvE;CACF"}
@@ -1,7 +1,8 @@
1
+ import { isRunnerImageVariant } from '@cat-factory/kernel';
1
2
  /**
2
- * The live-container inventory over D1 (`live_containers`, migration 0022). `add`
3
- * uses `ON CONFLICT(container_key) DO NOTHING` so a replayed dispatch preserves the
4
- * first `started_at` — the container's true age the reaper keys off.
3
+ * The live-container inventory over D1 (`live_containers`, migration 0022; `image` added in
4
+ * 0094). `add` uses `ON CONFLICT(container_key) DO NOTHING` so a replayed dispatch preserves
5
+ * the first `started_at`, the container's true age the reaper keys off.
5
6
  */
6
7
  export class D1LiveContainerRepository {
7
8
  db;
@@ -10,10 +11,10 @@ export class D1LiveContainerRepository {
10
11
  }
11
12
  async add(record) {
12
13
  await this.db
13
- .prepare(`INSERT INTO live_containers (container_key, kind, workspace_id, started_at)
14
- VALUES (?, ?, ?, ?)
14
+ .prepare(`INSERT INTO live_containers (container_key, kind, workspace_id, image, started_at)
15
+ VALUES (?, ?, ?, ?, ?)
15
16
  ON CONFLICT(container_key) DO NOTHING`)
16
- .bind(record.containerKey, record.kind, record.workspaceId ?? null, record.startedAt)
17
+ .bind(record.containerKey, record.kind, record.workspaceId ?? null, record.image ?? null, record.startedAt)
17
18
  .run();
18
19
  }
19
20
  async remove(containerKey) {
@@ -24,7 +25,7 @@ export class D1LiveContainerRepository {
24
25
  }
25
26
  async listStartedBefore(epochMs) {
26
27
  const { results } = await this.db
27
- .prepare(`SELECT container_key, kind, workspace_id, started_at FROM live_containers
28
+ .prepare(`SELECT container_key, kind, workspace_id, image, started_at FROM live_containers
28
29
  WHERE started_at < ?
29
30
  ORDER BY started_at`)
30
31
  .bind(epochMs)
@@ -33,6 +34,10 @@ export class D1LiveContainerRepository {
33
34
  containerKey: r.container_key,
34
35
  kind: r.kind,
35
36
  ...(r.workspace_id != null ? { workspaceId: r.workspace_id } : {}),
37
+ // Narrowed against the variant vocabulary rather than cast: a row written by a build that
38
+ // knew a variant this one does not must not send the reaper to a namespace resolver that
39
+ // will throw on it, which would leave the leaked container alive AND the row behind.
40
+ ...(isRunnerImageVariant(r.image) ? { image: r.image } : {}),
36
41
  startedAt: r.started_at,
37
42
  }));
38
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"D1LiveContainerRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LiveContainerRepository.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IACnB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAA2B;QACnC,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;+CAEuC,CACxC;aACA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;aACpF,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAoB;QAC/B,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CAAC,qDAAqD,CAAC;aAC9D,IAAI,CAAC,YAAY,CAAC;aAClB,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;;6BAEqB,CACtB;aACA,IAAI,CAAC,OAAO,CAAC;aACb,GAAG,EAKA,CAAA;QACN,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,YAAY,EAAE,CAAC,CAAC,aAAa;YAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC,CAAC,CAAA;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"D1LiveContainerRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LiveContainerRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAM1D;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IACnB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAA2B;QACnC,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;+CAEuC,CACxC;aACA,IAAI,CACH,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,WAAW,IAAI,IAAI,EAC1B,MAAM,CAAC,KAAK,IAAI,IAAI,EACpB,MAAM,CAAC,SAAS,CACjB;aACA,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAoB;QAC/B,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CAAC,qDAAqD,CAAC;aAC9D,IAAI,CAAC,YAAY,CAAC;aAClB,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;;6BAEqB,CACtB;aACA,IAAI,CAAC,OAAO,CAAC;aACb,GAAG,EAMA,CAAA;QACN,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,YAAY,EAAE,CAAC,CAAC,aAAa;YAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,0FAA0F;YAC1F,yFAAyF;YACzF,qFAAqF;YACrF,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,SAAS,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC,CAAC,CAAA;IACL,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ -- The live-container inventory records WHICH container class holds each instance.
2
+ --
3
+ -- A run whose `tester-ui` step declares the `ui` executor image gets a SECOND container, in its
4
+ -- own Durable Object namespace (a Cloudflare Container's image is pinned per class). The reaper
5
+ -- kills through a namespace, and the container key alone cannot say which one: looked up in the
6
+ -- executor namespace, a leaked UI container is never killed and the failed kill still reads as a
7
+ -- success, because `idFromName` returns a stub for an instance that was never started.
8
+ --
9
+ -- Nullable, meaning the default executor class, so rows written before this column existed keep
10
+ -- reaping exactly as they did.
11
+ ALTER TABLE live_containers ADD COLUMN image TEXT;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/worker",
3
- "version": "0.193.0",
3
+ "version": "0.194.1",
4
4
  "description": "Reusable Cloudflare Worker library (Hono + D1) exposing the Agent Architecture Board core: the `createApp()` Hono factory, the default fetch/scheduled/queue handler, and the Durable Object + Workflow classes. Deployments (see deploy/backend) supply the wrangler.toml + config and re-export these.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,23 +43,23 @@
43
43
  "pino": "^10.3.1",
44
44
  "valibot": "^1.4.2",
45
45
  "workers-ai-provider": "^4.0.0",
46
- "@cat-factory/agents": "0.133.1",
47
- "@cat-factory/binary-generators": "0.2.0",
48
- "@cat-factory/caching": "0.20.26",
49
- "@cat-factory/consensus": "0.16.26",
46
+ "@cat-factory/binary-generators": "0.2.2",
47
+ "@cat-factory/agents": "0.133.3",
48
+ "@cat-factory/caching": "0.20.28",
49
+ "@cat-factory/consensus": "0.16.28",
50
50
  "@cat-factory/contracts": "0.317.0",
51
- "@cat-factory/eks": "0.1.330",
52
- "@cat-factory/gates": "0.10.57",
53
- "@cat-factory/gitlab": "0.20.27",
54
- "@cat-factory/integrations": "0.164.1",
55
- "@cat-factory/kernel": "0.305.0",
56
- "@cat-factory/observability-langfuse": "0.10.101",
57
- "@cat-factory/observability-otel": "0.21.5",
58
- "@cat-factory/orchestration": "0.276.0",
59
- "@cat-factory/prompt-fragments": "1.0.81",
60
- "@cat-factory/provider-cloudflare": "0.7.479",
61
- "@cat-factory/server": "0.290.1",
62
- "@cat-factory/spend": "0.15.99"
51
+ "@cat-factory/eks": "0.1.332",
52
+ "@cat-factory/gates": "0.10.59",
53
+ "@cat-factory/gitlab": "0.20.29",
54
+ "@cat-factory/observability-otel": "0.21.7",
55
+ "@cat-factory/kernel": "0.307.0",
56
+ "@cat-factory/orchestration": "0.277.0",
57
+ "@cat-factory/prompt-fragments": "1.0.83",
58
+ "@cat-factory/integrations": "0.165.1",
59
+ "@cat-factory/observability-langfuse": "0.10.103",
60
+ "@cat-factory/provider-cloudflare": "0.7.481",
61
+ "@cat-factory/server": "0.292.0",
62
+ "@cat-factory/spend": "0.15.101"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@cloudflare/vitest-pool-workers": "^0.21.2",
@@ -67,7 +67,7 @@
67
67
  "typescript": "7.0.2",
68
68
  "vitest": "^4.1.10",
69
69
  "wrangler": "^4.122.0",
70
- "@cat-factory/conformance": "0.45.7"
70
+ "@cat-factory/conformance": "0.45.9"
71
71
  },
72
72
  "scripts": {
73
73
  "build": "tsc -b tsconfig.build.json",