@cat-factory/worker 0.99.1 → 0.99.3

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.
@@ -1,18 +1,279 @@
1
- import { type Clock, type IdGenerator, type ResolveBinaryArtifactStore } from '@cat-factory/kernel';
1
+ import { type AgentContextRecorder, type AgentExecutor, type CachedRepoRead, type Clock, type ExecutionEventPublisher, type GroupCacheHandle, type IdGenerator, type ResolveBinaryArtifactStore, type VcsIdentityRegistry, type WorkRunner, type ProviderRegistry } from '@cat-factory/kernel';
2
+ import { type AgentKindRegistry } from '@cat-factory/agents';
3
+ import { type EnvironmentBackendRegistry, PersonalSubscriptionService, ProviderSubscriptionService } from '@cat-factory/integrations';
2
4
  import { type CoreDependencies } from '@cat-factory/orchestration';
3
- import { type ServerContainer } from '@cat-factory/server';
5
+ import { ContainerEnvConfigRepairer, type ServerContainer } from '@cat-factory/server';
6
+ import { type AppConfig } from './config';
4
7
  import type { Env } from './env';
8
+ import { type ResolveRepoTarget, type ResolveRunnerTransport } from './ai/ContainerAgentExecutor';
9
+ import { ContainerRepoBootstrapper } from './ai/ContainerRepoBootstrapper';
5
10
  import { type GateProviderOverrides } from '@cat-factory/gates';
11
+ import { GitHubAppRegistry } from './github/GitHubAppRegistry';
6
12
  import type { D1Database } from '@cloudflare/workers-types';
7
13
  export type Container = ServerContainer;
14
+ /**
15
+ * Pick the agent that performs pipeline steps: real LLM work via the Vercel AI
16
+ * SDK, composed with a per-run sandbox for the repo-operating steps (`coder`,
17
+ * `mocker`, `playwright`, …). Container-based implementation is ALWAYS on — the
18
+ * sandbox is a hard requirement, so this throws at startup if it can't be built.
19
+ * Tests bypass this entirely by overriding `agentExecutor` with a fake.
20
+ *
21
+ * There is intentionally NO inline fallback for the sandbox kinds — a one-shot
22
+ * LLM call cannot clone/edit/commit/open a PR, so a degraded inline implementer is
23
+ * silently broken rather than usefully degraded. If the sandbox prerequisites are
24
+ * missing we fail the deploy loudly here rather than starting with a half-wired
25
+ * implementer that would only fault the moment a repo-operating step is dispatched.
26
+ */
27
+ /**
28
+ * The shared prerequisites both the composite executor selection and its container leg
29
+ * need — the Worker's infra handles (`env`/`config`/`db`/`clock`), the resolved runner
30
+ * transport, the agent-kind registry, and the optional subscription / observability seams.
31
+ * Bundled so the two builders take one dependency object rather than nine positional args.
32
+ */
33
+ interface WorkerExecutorDeps {
34
+ env: Env;
35
+ config: AppConfig;
36
+ db: D1Database;
37
+ clock: Clock;
38
+ resolveTransport: ResolveRunnerTransport | null;
39
+ agentKindRegistry: AgentKindRegistry;
40
+ subscriptions?: ProviderSubscriptionService;
41
+ personalSubscriptions?: PersonalSubscriptionService;
42
+ agentContextObservability?: AgentContextRecorder;
43
+ }
44
+ export declare function selectAgentExecutor(deps: WorkerExecutorDeps): AgentExecutor;
45
+ /**
46
+ * Wrap the standard executor with the optional consensus mechanism when
47
+ * `CONSENSUS_ENABLED` is set: register the consensus capability traits (so the builder
48
+ * offers "Enable Consensus" on eligible steps) and route consensus-enabled steps through
49
+ * a multi-model process, persisting + pushing the transcript. Off ⇒ returns `standard`
50
+ * unchanged (no traits, no wrapping), so behaviour is identical to before.
51
+ */
52
+ export declare function maybeWrapConsensus(standard: AgentExecutor, env: Env, config: AppConfig, db: D1Database, eventPublisher: ExecutionEventPublisher | undefined, agentKindRegistry: AgentKindRegistry): AgentExecutor;
53
+ /**
54
+ * Build the container-based implementation executor, or return null when its
55
+ * prerequisites are missing (a runner backend — Cloudflare Containers and/or a
56
+ * self-hosted pool — plus a configured GitHub App, the proxy's public URL and the
57
+ * signing secret) — the caller then falls back to inline work.
58
+ */
59
+ /**
60
+ * Build the multi-App registry (ADR 0005): the default App always, plus the
61
+ * privileged App when configured. It resolves which App's key to use per
62
+ * installation (from the binding's recorded appId), so every token mint / app-JWT
63
+ * call routes correctly. Callers guard on `config.github.enabled`, which requires
64
+ * GITHUB_APP_PRIVATE_KEY, so the default key is present.
65
+ */
66
+ export declare function buildAppRegistry(env: Env, config: AppConfig, db: D1Database, clock: Clock): GitHubAppRegistry;
67
+ /**
68
+ * Resolve the repo linked to a running block's enclosing service, via the shared
69
+ * runtime-neutral `buildResolveRepoTarget` (the ancestry walk + no-fallback policy
70
+ * live in `@cat-factory/server` so the Worker and Node service can't drift). This
71
+ * wrapper just binds the D1 repositories. Shared by the container executor, the CI
72
+ * status provider and the PR merger.
73
+ *
74
+ * No `repoProjectionCache` is threaded here (unlike the Node facade, which caches the
75
+ * whole-projection re-list per workspace — caching-layer slice 3): the repo projection
76
+ * is our own mutable D1 state, and the Worker's isolate-safe profile makes that cache
77
+ * pass-through (no cross-isolate invalidation bus), so an in-isolate TTL would serve
78
+ * stale repos after a write on another isolate. Reading live IS the isolate-safe
79
+ * behaviour. The shared GitHub sync/webhook services still receive the (pass-through)
80
+ * handle via `createGitHubModule`, so their invalidation code path stays symmetric.
81
+ */
82
+ export declare function buildResolveRepoTarget(db: D1Database): ResolveRepoTarget;
83
+ export declare function selectMergeLifecycleDeps(env: Env, config: AppConfig, db: D1Database, clock: Clock, idGenerator: IdGenerator, providerRegistry: ProviderRegistry): Partial<CoreDependencies>;
84
+ /**
85
+ * Wire the observability post-release-health gate when enabled (+ ENCRYPTION_KEY): the
86
+ * connection + per-block config repos, the cipher that seals the credentials, the pluggable
87
+ * release-health provider the gate probes (a registry of vendor adapters — Datadog today),
88
+ * and (optionally) the PagerDuty / incident.io enrichment providers. Off → the gate is a
89
+ * pass-through and the release-health module isn't built.
90
+ */
91
+ export declare function selectReleaseHealthDeps(env: Env, config: AppConfig, db: D1Database, providerRegistry: ProviderRegistry): Partial<CoreDependencies>;
92
+ /**
93
+ * Wire the per-workspace private package-registry integration (npm private orgs, GitHub
94
+ * Packages). Wired whenever the shared encryption key is present (the cipher must exist
95
+ * to seal/unseal); a workspace with no entries is a no-op. The decrypted entries reach
96
+ * agent containers via the executor's `resolvePackageRegistries` seam.
97
+ */
98
+ export declare function selectPackageRegistryDeps(env: Env, db: D1Database): Partial<CoreDependencies>;
99
+ /**
100
+ * Wire the per-workspace incident-enrichment integration (PagerDuty + incident.io). The
101
+ * credentials moved out of env into a sealed per-workspace row; the provider resolves +
102
+ * decrypts them at enrichment time. Wired whenever the shared encryption key is present
103
+ * (the cipher must exist to unseal); a workspace with no connection is a no-op. The
104
+ * on-call enrichment provider itself now lives in `@cat-factory/gates`, so the
105
+ * workspace-backed provider is wired into the gate suite via `wireIncidentEnrichment`;
106
+ * the connection repo + cipher stay on CoreDependencies to power the management API.
107
+ */
108
+ export declare function selectIncidentEnrichmentDeps(env: Env, db: D1Database, providerRegistry: ProviderRegistry): Partial<CoreDependencies>;
8
109
  /**
9
110
  * Build the per-account binary-artifact store resolver outside the full container (the
10
111
  * retention cron runs in its own context). Mirrors the container wiring, with its own
11
112
  * account-settings instance (a separate short-TTL cache is fine for a periodic sweep).
12
113
  */
13
114
  export declare function buildCloudflareArtifactStoreResolver(env: Env, db: D1Database, clock: Clock, idGenerator: IdGenerator): ResolveBinaryArtifactStore;
115
+ /**
116
+ * Wire the Slack management module (per-account connect + per-workspace routing +
117
+ * member map). Wired only when the integration is enabled; the actual delivery is
118
+ * the channel composed in by {@link selectMergeLifecycleDeps}. OAuth credentials
119
+ * are optional — manual bot-token onboarding works without them.
120
+ */
121
+ export declare function selectSlackDeps(config: AppConfig, db: D1Database): Partial<CoreDependencies>;
122
+ /**
123
+ * Wire account invitations + per-account email senders. Invitations are always
124
+ * available (an invite link works without email); the email-connection store + its
125
+ * cipher are wired only when EMAIL is enabled (an encryption key is mandatory), so
126
+ * an account can onboard a SendGrid/Resend key in the UI and have invites emailed.
127
+ */
128
+ export declare function selectEmailInvitationDeps(config: AppConfig, db: D1Database): Partial<CoreDependencies>;
129
+ export declare function selectTraceSink(config: AppConfig): Partial<CoreDependencies>;
130
+ /**
131
+ * Wire the recurring-pipeline + issue-tracker ports. The schedule + tracker-setting
132
+ * repositories are always available (the feature is workspace-scoped CRUD); the
133
+ * `ticketTrackerProvider` files the tech-debt pipeline's issue and degrades
134
+ * gracefully — it files GitHub issues only when the App is configured (so it can
135
+ * resolve the service's repo + mint a token) and Jira only when the tasks
136
+ * integration's encryption key is set (so it can read the workspace's stored Jira
137
+ * credentials). With neither, the `tracker` step passes through.
138
+ */
139
+ export declare function selectRecurringDeps(env: Env, config: AppConfig, db: D1Database, clock: Clock, idGenerator: IdGenerator): Partial<CoreDependencies>;
140
+ /**
141
+ * Pick how runs are driven:
142
+ * - a Workflows binding present → durable, server-driven execution
143
+ * - otherwise → no-op (e.g. tests, which override this anyway)
144
+ * Tests override `workRunner` with a fake and drive the engine via advanceInstance.
145
+ */
146
+ export declare function selectWorkRunner(env: Env): WorkRunner;
147
+ /**
148
+ * Build the GitHub integration's concrete ports when an App is configured,
149
+ * mirroring `selectWorkRunner`. Returns an empty object otherwise, so `createCore`
150
+ * leaves the `github` module unassembled and the feature stays opt-in.
151
+ */
152
+ export declare function selectGitHubDeps(env: Env, config: AppConfig, db: D1Database, clock: Clock, idGenerator: IdGenerator, repoFilesCache: GroupCacheHandle<CachedRepoRead>): Partial<CoreDependencies>;
153
+ /**
154
+ * Build the document-source integration's concrete ports: the configured source
155
+ * providers (Confluence, Notion, …) plus the two D1 repositories. The integration is
156
+ * always on (config load fails loudly without the encryption key), so this is wired
157
+ * on every deployment. The model provider is wired only in 'llm' planner mode (it
158
+ * just needs a provider credential); the planner degrades to its deterministic parser
159
+ * if no model is usable.
160
+ */
161
+ export declare function selectDocumentsDeps(env: Env, config: AppConfig, db: D1Database, clock: Clock, idGenerator: IdGenerator): Partial<CoreDependencies>;
162
+ /**
163
+ * Build the task-source integration's concrete ports. Mirrors `selectDocumentsDeps`
164
+ * but with no planner — issues are linked for context, not expanded into board
165
+ * structure. Always on (config load fails loudly without the encryption key), so this
166
+ * is wired on every deployment.
167
+ */
168
+ export declare function selectTasksDeps(env: Env, config: AppConfig, db: D1Database, clock: Clock, idGenerator: IdGenerator): Partial<CoreDependencies>;
169
+ /**
170
+ * Wire the requirements-review feature. The repository is always available, and a
171
+ * model provider + the agents' default ref are supplied so the stateless reviewer
172
+ * works whenever an LLM is configured — independent of the documents integration.
173
+ * (Supplying the provider here is harmless when documents are off or set to the
174
+ * heading-based planner: that planner only engages when `documentPlannerModel` is
175
+ * also set, which this does not touch.)
176
+ */
177
+ export declare function selectRequirementsDeps(env: Env, config: AppConfig, db: D1Database): Partial<CoreDependencies>;
178
+ /**
179
+ * The Sandbox (parallel prompt/model testing) persistence — five repos over the
180
+ * DEDICATED `SANDBOX_DB` D1 database. Opt-in: absent binding ⇒ `{}` (the module isn't
181
+ * assembled and the API answers 503), so a deployment that hasn't provisioned the
182
+ * sandbox database is unaffected. The inline reviewer model config from
183
+ * {@link selectRequirementsDeps} is reused by the run-driver (cells resolve their catalog
184
+ * id like a pipeline step). Mirrored by the Node facade's `createDrizzleSandboxDeps`
185
+ * (a Postgres `sandbox` schema).
186
+ */
187
+ export declare function selectSandboxDeps(sandboxDb: D1Database | undefined): Partial<CoreDependencies>;
188
+ /**
189
+ * Build the ephemeral environment integration's concrete ports. It assembles
190
+ * whenever the encryption key is set (the shared master key that seals per-tenant
191
+ * credentials), so the generic HTTP provider, the D1 repositories and the Web Crypto
192
+ * cipher are wired together. Returns `{}` only when no key is configured, so
193
+ * `createCore` leaves the `environments` module unassembled. There is no separate
194
+ * enable flag: whether a workspace provisions anything is decided by its registered
195
+ * connection + whether its pipeline runs a `deployer`/`tester` step.
196
+ */
197
+ export declare function selectEnvironmentsDeps(env: Env, config: AppConfig, db: D1Database): Partial<CoreDependencies>;
198
+ /**
199
+ * Wire the async, container-backed Kubernetes deploy lifecycle (slice 9's
200
+ * `EnvironmentProvisioningService` seams) onto the Worker facade: a `deployJobClient` that
201
+ * dispatches/polls/releases a `deploy`-kind job on the per-run `DeployContainer` (the separate
202
+ * deploy-harness image — real `kubectl`/`kustomize`/`helm`), plus `resolveDeployCloneTarget` to
203
+ * hand the container concrete manifests-repo clone coords + a short-lived install token.
204
+ *
205
+ * Gated on the environments module, the `DEPLOY_CONTAINER` binding AND the GitHub App
206
+ * (the clone-target seam needs to mint install tokens + resolve a block's repo). Absent any
207
+ * prerequisite ⇒ `{}` — a render-needing config then fails loudly (the synchronous raw-manifest
208
+ * REST path is unaffected), exactly the unwired behaviour slice 9 shipped. Mirrors Node's pool
209
+ * deploy wiring; the deploy container is the Worker's analogue of Node's self-hosted pool.
210
+ */
211
+ export declare function selectDeployDeps(env: Env, config: AppConfig, db: D1Database, clock: Clock): Partial<CoreDependencies>;
212
+ /**
213
+ * Build the self-hosted runner-pool integration's concrete ports when opted in:
214
+ * the D1 connection repository and a dedicated Web Crypto cipher (its own master
215
+ * key + HKDF domain, separate from the environment module's). This assembles
216
+ * `Core.runners` (the connection-management API); the per-job transport selection
217
+ * lives in `buildResolveTransport` above. Returns `{}` when disabled.
218
+ */
219
+ export declare function selectRunnersDeps(env: Env, config: AppConfig, db: D1Database): Partial<CoreDependencies>;
220
+ /**
221
+ * Build the container-backed repo bootstrapper for the "bootstrap repo" task,
222
+ * gated on the same prerequisites as the implementation container (the binding, a
223
+ * configured GitHub App, the proxy's public URL and signing secret). Returns
224
+ * undefined otherwise, leaving reference-architecture CRUD available while the run
225
+ * path reports itself unavailable.
226
+ */
227
+ export declare function selectRepoBootstrapper(env: Env, config: AppConfig, db: D1Database, clock: Clock, idGenerator: IdGenerator, resolveTransport: ResolveRunnerTransport | null): ContainerRepoBootstrapper | undefined;
228
+ /**
229
+ * Build the live ENVIRONMENT-PROVIDER CONFIG REPAIR agent (PR #416 increment 2) when its
230
+ * prerequisites are met — the same container prerequisites as the bootstrapper PLUS an
231
+ * injected provider that actually supports agent repair (`describeRepairAgent`). A stock
232
+ * deployment runs the generic manifest provider (no repair support), so this stays
233
+ * undefined there; it wires only when a native adapter is injected. Built
234
+ * over the FINAL provider (post-overrides), so the dispatcher repairs through the same
235
+ * provider the engine validates with. NOT to be confused with the repo bootstrapper: this
236
+ * is an ordinary clone→edit→push coding job (no history reset / force-push).
237
+ */
238
+ export declare function selectEnvConfigRepairer(deps: {
239
+ env: Env;
240
+ config: AppConfig;
241
+ db: D1Database;
242
+ clock: Clock;
243
+ resolveTransport: ResolveRunnerTransport | null;
244
+ override: CoreDependencies['environmentProvider'];
245
+ environmentBackendRegistry: EnvironmentBackendRegistry;
246
+ }): ContainerEnvConfigRepairer | undefined;
247
+ /**
248
+ * Build the prompt-fragment library's concrete ports when opted in (ADR 0006):
249
+ * the two D1 repositories, the relevance selector (LLM when configured, else the
250
+ * core deterministic matcher via `fragmentSelector: undefined`), and the
251
+ * installation resolver repo-source sync uses to read guideline repos through the
252
+ * tier's GitHub installation. Returns `{}` when disabled, so `createCore` leaves
253
+ * the `fragmentLibrary` module unassembled and the engine uses manual fragmentIds.
254
+ */
255
+ export declare function selectFragmentLibraryDeps(env: Env, config: AppConfig, db: D1Database): Partial<CoreDependencies>;
256
+ /**
257
+ * Build the repo-sourced Claude Skills library's concrete ports when opted in
258
+ * (docs/initiatives/repo-skills.md). Skills live in ONE tier (the account), so the
259
+ * installation resolver is account-only. Gated on the same `fragmentLibrary.enabled`
260
+ * flag as the fragment library (both are the repo-sourced prompt library). Returns
261
+ * `{}` when disabled, so `createCore` leaves the skill module unassembled.
262
+ */
263
+ export declare function selectSkillLibraryDeps(_env: Env, config: AppConfig, db: D1Database): Partial<CoreDependencies>;
264
+ /**
265
+ * The hosted PAT-login registry: lets a user sign in by pasting their OWN source-control PAT,
266
+ * which the shared `/auth/pat` flow resolves to the account it belongs to (and holds to the
267
+ * server's login/org/domain allowlist — see `AuthController`). GitHub is always available;
268
+ * GitLab is added when a GitLab connection is configured. A remote deployment is multi-user, so
269
+ * there is NO `configuredToken` — each user supplies their own PAT. Symmetric with the Node
270
+ * facade's `buildNodeVcsIdentityRegistry` per "keep the runtimes symmetric": a GitLab-only Worker
271
+ * deployment must let a GitLab user sign in, not just gate/merge on GitLab under the hood.
272
+ */
273
+ export declare function buildWorkerVcsIdentityRegistry(config: AppConfig): VcsIdentityRegistry;
14
274
  export declare function buildContainer(env: Env, overrides?: Partial<CoreDependencies>, opts?: {
15
275
  cloudflareModelsEnabled?: boolean;
16
276
  gateProviders?: GateProviderOverrides;
17
277
  }): Container;
278
+ export {};
18
279
  //# sourceMappingURL=container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/infrastructure/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,KAAK,EASV,KAAK,WAAW,EAOhB,KAAK,0BAA0B,EAShC,MAAM,qBAAqB,CAAA;AAsD5B,OAAO,EAGL,KAAK,gBAAgB,EAOtB,MAAM,4BAA4B,CAAA;AAInC,OAAO,EAgCL,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAA;AAK5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AA8GhC,OAAO,EACL,KAAK,qBAAqB,EAS3B,MAAM,oBAAoB,CAAA;AAqC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAU3D,MAAM,MAAM,SAAS,GAAG,eAAe,CAAA;AAqqBvC;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GACvB,0BAA0B,CAW5B;AAwjCD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,SAAS,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACzC,IAAI,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,qBAAqB,CAAA;CAAO,GACtF,SAAS,CAilBX"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/infrastructure/container.ts"],"names":[],"mappings":"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"}