@cat-factory/worker 0.128.1 → 0.128.2

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.
@@ -0,0 +1,110 @@
1
+ // The Worker's INLINE model-provider resolution: the memoised `ModelProviderResolver` every
2
+ // inline consumer shares (agent executor, requirements reviewer, doc planner, fragment
3
+ // selector, the sandbox) plus the per-step workspace-default resolver they all consult.
4
+ //
5
+ // Split out of `container.ts` along the same seam the Node facade already draws with
6
+ // `container-model-deps.ts`: model resolution is what everything else in the composition root
7
+ // is *given*, not part of assembling it, and keeping it here is what lets the executor wiring
8
+ // (`container-executor-deps.ts`) import it without either module reaching back into the root.
9
+ import { composeTraceSinks } from '@cat-factory/kernel';
10
+ import { vendorConcurrencyLimiterFromEnv } from '@cat-factory/agents';
11
+ import { cloudflareBindingRegistry } from '@cat-factory/provider-cloudflare';
12
+ import { buildLangfuseSink, buildOtelSink } from './container-trace-sinks.js';
13
+ import { resolvePresetModelForKind } from '@cat-factory/orchestration';
14
+ import { logger, createInlineInstrumentation, createScopedModelProviderResolver, wrapResolverWithTelemetry, } from '@cat-factory/server';
15
+ import { loadLangfuseConfig } from './config/langfuse';
16
+ import { loadObservabilityConfig } from './config/observability';
17
+ import { loadOtelConfig } from './config/otel';
18
+ import { requireTelemetryDb } from './env';
19
+ import { baseUrlFor } from './ai/providerEndpoints';
20
+ import { resolveExtraRegistries } from './ai/registries';
21
+ import { D1LlmCallMetricRepository } from './repositories/D1LlmCallMetricRepository';
22
+ import { D1WorkspaceSettingsRepository } from './repositories/D1WorkspaceSettingsRepository';
23
+ import { D1ModelPresetRepository } from './repositories/D1ModelPresetRepository';
24
+ import { buildApiKeyService, buildLocalModelEndpointService } from './wireCredentialServices';
25
+ import { CryptoIdGenerator, SystemClock } from './runtime';
26
+ /**
27
+ * The Worker's {@link ModelProvider}: the base registry plus any extra provider
28
+ * registries an installation registered (see ./ai/registries). Used everywhere a
29
+ * model provider is needed so every path — agent executor, requirements reviewer,
30
+ * doc planner, fragment selector — sees the same provider set. When Langfuse is
31
+ * configured the provider is wrapped so those INLINE (non-proxied) calls surface on
32
+ * the same trace sink the LLM proxy fans container calls out to.
33
+ */
34
+ // Memoised per `(Env, db)`: every inline consumer (agent executor, requirements
35
+ // reviewer, doc planner, fragment selector) shares ONE resolver — and so ONE Langfuse
36
+ // sink — for a container build. The resolver builds a per-scope provider from the
37
+ // DB-backed API-key pool plus the opt-in Cloudflare binding + Bedrock registries.
38
+ const modelResolverCache = new WeakMap();
39
+ export function buildModelProviderResolver(env, db) {
40
+ const cached = modelResolverCache.get(env);
41
+ if (cached)
42
+ return cached;
43
+ // Opt-in provider registries that need no per-scope DB key: the Cloudflare Workers
44
+ // AI binding (when bound) and any extra registries (e.g. Bedrock). NOT assumed —
45
+ // `workers-ai` resolves only when the `AI` binding is present.
46
+ const extraRegistries = [
47
+ ...(env.AI ? [cloudflareBindingRegistry({ binding: env.AI })] : []),
48
+ ...resolveExtraRegistries(env),
49
+ ];
50
+ // Instrument inline (non-proxied) calls with the SAME composed trace sink the proxied
51
+ // path uses — Langfuse and/or the OTLP exporter, whichever are enabled.
52
+ const traceSink = composeTraceSinks([
53
+ buildLangfuseSink(loadLangfuseConfig(env)),
54
+ buildOtelSink(loadOtelConfig(env)),
55
+ ]);
56
+ // Persist inline calls to the SAME `llm_call_metrics` store the proxy writes for Pi and
57
+ // the executor writes for a subscription harness, so an inline agent kind (`doc-researcher`,
58
+ // the judges, consensus, the requirements writer) is visible to `ObservabilityPanel`, the
59
+ // per-step rollups and `/api/v1/debug/*` rather than only to an external trace backend.
60
+ // Composed through the shared factory so the recorder's service and the provider's fallback
61
+ // sink cannot be handed two DIFFERENT instances — the service owns the fan-out for a call it
62
+ // records, so a mismatch would split the trace (and wiring both to the provider would double
63
+ // every inline generation on Langfuse/OTel). No cache handle is passed because
64
+ // `workspaceSettings` is a pass-through in the isolate-safe profile.
65
+ const instrument = createInlineInstrumentation({
66
+ llmCallMetricRepository: new D1LlmCallMetricRepository({ db: requireTelemetryDb(env) }),
67
+ ...(traceSink ? { traceSink } : {}),
68
+ recordPrompts: loadObservabilityConfig(env).recordPrompts,
69
+ workspaceSettingsRepository: new D1WorkspaceSettingsRepository({ db }),
70
+ idGenerator: new CryptoIdGenerator(),
71
+ clock: new SystemClock(),
72
+ logger,
73
+ });
74
+ const localModelEndpoints = buildLocalModelEndpointService(env, db, { now: () => Date.now() });
75
+ const scoped = createScopedModelProviderResolver({
76
+ apiKeys: buildApiKeyService(env, db, { now: () => Date.now() }),
77
+ baseUrlFor: (provider) => baseUrlFor(provider, env) ?? undefined,
78
+ extraRegistries,
79
+ localEndpointsFor: localModelEndpoints
80
+ ? (userId) => localModelEndpoints.listResolved(userId)
81
+ : undefined,
82
+ });
83
+ // Observe inline calls, then cap concurrency, through the ONE composer that owns their order
84
+ // (instrumentation inside, limiter outermost). The Worker has no facade wrap that substitutes a
85
+ // resolved model today, so it could not hit the local-mode blind spot this order exists for —
86
+ // but going through the shared composer is what keeps that true for a Worker-side wrap added
87
+ // later, and it keeps the two facades textually symmetric. The limiter bounds concurrency within
88
+ // one isolate only (no cross-isolate/global limiting — see
89
+ // backend/docs/concurrency-and-redis.md), and since the Worker's inline path degrades
90
+ // subscription refs before resolve, it is a wired pass-through here in practice.
91
+ const resolver = wrapResolverWithTelemetry(scoped, {
92
+ ...(instrument ? { instrument } : {}),
93
+ limiter: vendorConcurrencyLimiterFromEnv((key) => env[key]),
94
+ });
95
+ modelResolverCache.set(env, resolver);
96
+ return resolver;
97
+ }
98
+ /**
99
+ * The resolver every executor consults for a step's default model (block-pinned >
100
+ * the task's selected/default model preset > env routing). Backed by the D1
101
+ * model-preset repo; shared by the inline LLM executor and the container executor so
102
+ * both honour the workspace presets identically. The built-in default preset points
103
+ * every agent kind at Kimi K2.7, so an unpinned step resolves to it even before the
104
+ * preset library is materialised.
105
+ */
106
+ export function buildResolveWorkspaceModelDefault(db) {
107
+ const repo = new D1ModelPresetRepository({ db });
108
+ return (workspaceId, agentKind, modelPresetId) => resolvePresetModelForKind(repo, workspaceId, agentKind, modelPresetId);
109
+ }
110
+ //# sourceMappingURL=container-model-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-model-resolver.js","sourceRoot":"","sources":["../../src/infrastructure/container-model-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type Clock } from '@cat-factory/kernel';
2
+ import { type AppConfig } from './config';
3
+ import type { Env } from './env';
4
+ import { type ResolveRepoTarget, type ResolveRepoTargets } from './ai/ContainerAgentExecutor';
5
+ import { GitHubAppRegistry } from './github/GitHubAppRegistry';
6
+ import type { D1Database } from '@cloudflare/workers-types';
7
+ /**
8
+ * Build the multi-App registry (ADR 0005): the default App always, plus the
9
+ * privileged App when configured. It resolves which App's key to use per
10
+ * installation (from the binding's recorded appId), so every token mint / app-JWT
11
+ * call routes correctly. Callers guard on `config.github.enabled`, which requires
12
+ * GITHUB_APP_PRIVATE_KEY, so the default key is present.
13
+ */
14
+ export declare function buildAppRegistry(env: Env, config: AppConfig, db: D1Database, clock: Clock): GitHubAppRegistry;
15
+ /**
16
+ * Resolve the repo linked to a running block's enclosing service, via the shared
17
+ * runtime-neutral `buildResolveRepoTarget` (the ancestry walk + no-fallback policy
18
+ * live in `@cat-factory/server` so the Worker and Node service can't drift). This
19
+ * wrapper just binds the D1 repositories. Shared by the container executor, the CI
20
+ * status provider and the PR merger.
21
+ *
22
+ * No `repoProjectionCache` is threaded here (unlike the Node facade, which caches the
23
+ * whole-projection re-list per workspace — caching-layer slice 3): the repo projection
24
+ * is our own mutable D1 state, and the Worker's isolate-safe profile makes that cache
25
+ * pass-through (no cross-isolate invalidation bus), so an in-isolate TTL would serve
26
+ * stale repos after a write on another isolate. Reading live IS the isolate-safe
27
+ * behaviour. The shared GitHub sync/webhook services still receive the (pass-through)
28
+ * handle via `createGitHubModule`, so their invalidation code path stays symmetric.
29
+ */
30
+ export declare function buildResolveRepoTarget(db: D1Database): ResolveRepoTarget;
31
+ /**
32
+ * The MULTI-REPO resolver (service-connections phase 3): the task's own repo plus each
33
+ * connected involved-service repo, deduped. Wired from the SAME D1 repos as the singular
34
+ * resolver (the D1 service repo's batched `listByFrameBlocks` resolves the involved frames'
35
+ * repos in one query). Fed to the container executor so the implementer can fan a
36
+ * cross-service change out across sibling checkouts.
37
+ */
38
+ export declare function buildResolveRepoTargets(db: D1Database): ResolveRepoTargets;
39
+ //# sourceMappingURL=container-vcs-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-vcs-identity.d.ts","sourceRoot":"","sources":["../../src/infrastructure/container-vcs-identity.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAKhD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAM7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,KAAK,GACX,iBAAiB,CAyBnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,UAAU,GAAG,iBAAiB,CAOxE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,UAAU,GAAG,kBAAkB,CAO1E"}
@@ -0,0 +1,88 @@
1
+ // The Worker's VCS IDENTITY + REPO-TARGETING building blocks: the multi-App GitHub registry
2
+ // (which App's key signs a given installation's token) and the two resolvers that map a running
3
+ // block to the repo(s) its work belongs in.
4
+ //
5
+ // These three are the composition root's most widely SHARED pieces — the GitHub module, the
6
+ // tracker wiring, the merge-lifecycle deps, the executor and the assembly step all need them —
7
+ // so they live beside it rather than in it: every consumer imports them from here, and none of
8
+ // them has to import the root (which imports several of those consumers back).
9
+ import {} from '@cat-factory/kernel';
10
+ import { buildResolveRepoTarget as buildSharedResolveRepoTarget, buildResolveRepoTargets as buildSharedResolveRepoTargets, } from '@cat-factory/server';
11
+ import {} from './config';
12
+ import {} from './ai/ContainerAgentExecutor';
13
+ import { D1BlockRepository } from './repositories/D1BlockRepository';
14
+ import { D1ServiceRepository } from './repositories/D1ServiceRepository';
15
+ import { D1GitHubInstallationRepository } from './repositories/D1GitHubInstallationRepository';
16
+ import { D1RepoProjectionRepository } from './repositories/D1RepoProjectionRepository';
17
+ import { GitHubAppAuth } from './github/GitHubAppAuth';
18
+ import { GitHubAppRegistry } from './github/GitHubAppRegistry';
19
+ /**
20
+ * Build the multi-App registry (ADR 0005): the default App always, plus the
21
+ * privileged App when configured. It resolves which App's key to use per
22
+ * installation (from the binding's recorded appId), so every token mint / app-JWT
23
+ * call routes correctly. Callers guard on `config.github.enabled`, which requires
24
+ * GITHUB_APP_PRIVATE_KEY, so the default key is present.
25
+ */
26
+ export function buildAppRegistry(env, config, db, clock) {
27
+ const installationRepository = new D1GitHubInstallationRepository({ db });
28
+ const makeAuth = (appId, privateKeyPem) => new GitHubAppAuth({
29
+ appId,
30
+ privateKeyPem,
31
+ installationRepository,
32
+ clock,
33
+ apiBase: config.github.apiBase,
34
+ });
35
+ const privileged = config.github.privilegedApp && env.GITHUB_PRIVILEGED_APP_PRIVATE_KEY
36
+ ? {
37
+ appId: config.github.privilegedApp.appId,
38
+ auth: makeAuth(config.github.privilegedApp.appId, env.GITHUB_PRIVILEGED_APP_PRIVATE_KEY),
39
+ }
40
+ : undefined;
41
+ return new GitHubAppRegistry({
42
+ default: {
43
+ appId: config.github.appId,
44
+ auth: makeAuth(config.github.appId, env.GITHUB_APP_PRIVATE_KEY),
45
+ },
46
+ privileged,
47
+ installationRepository,
48
+ });
49
+ }
50
+ /**
51
+ * Resolve the repo linked to a running block's enclosing service, via the shared
52
+ * runtime-neutral `buildResolveRepoTarget` (the ancestry walk + no-fallback policy
53
+ * live in `@cat-factory/server` so the Worker and Node service can't drift). This
54
+ * wrapper just binds the D1 repositories. Shared by the container executor, the CI
55
+ * status provider and the PR merger.
56
+ *
57
+ * No `repoProjectionCache` is threaded here (unlike the Node facade, which caches the
58
+ * whole-projection re-list per workspace — caching-layer slice 3): the repo projection
59
+ * is our own mutable D1 state, and the Worker's isolate-safe profile makes that cache
60
+ * pass-through (no cross-isolate invalidation bus), so an in-isolate TTL would serve
61
+ * stale repos after a write on another isolate. Reading live IS the isolate-safe
62
+ * behaviour. The shared GitHub sync/webhook services still receive the (pass-through)
63
+ * handle via `createGitHubModule`, so their invalidation code path stays symmetric.
64
+ */
65
+ export function buildResolveRepoTarget(db) {
66
+ return buildSharedResolveRepoTarget({
67
+ installationRepository: new D1GitHubInstallationRepository({ db }),
68
+ repoProjectionRepository: new D1RepoProjectionRepository({ db }),
69
+ blockRepository: new D1BlockRepository({ db }),
70
+ serviceRepository: new D1ServiceRepository({ db }),
71
+ });
72
+ }
73
+ /**
74
+ * The MULTI-REPO resolver (service-connections phase 3): the task's own repo plus each
75
+ * connected involved-service repo, deduped. Wired from the SAME D1 repos as the singular
76
+ * resolver (the D1 service repo's batched `listByFrameBlocks` resolves the involved frames'
77
+ * repos in one query). Fed to the container executor so the implementer can fan a
78
+ * cross-service change out across sibling checkouts.
79
+ */
80
+ export function buildResolveRepoTargets(db) {
81
+ return buildSharedResolveRepoTargets({
82
+ installationRepository: new D1GitHubInstallationRepository({ db }),
83
+ repoProjectionRepository: new D1RepoProjectionRepository({ db }),
84
+ blockRepository: new D1BlockRepository({ db }),
85
+ serviceRepository: new D1ServiceRepository({ db }),
86
+ });
87
+ }
88
+ //# sourceMappingURL=container-vcs-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-vcs-identity.js","sourceRoot":"","sources":["../../src/infrastructure/container-vcs-identity.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,gGAAgG;AAChG,4CAA4C;AAC5C,EAAE;AACF,4FAA4F;AAC5F,+FAA+F;AAC/F,+FAA+F;AAC/F,+EAA+E;AAE/E,OAAO,EAAc,MAAM,qBAAqB,CAAA;AAChD,OAAO,EACL,sBAAsB,IAAI,4BAA4B,EACtD,uBAAuB,IAAI,6BAA6B,GACzD,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAkB,MAAM,UAAU,CAAA;AAEzC,OAAO,EAAmD,MAAM,6BAA6B,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAA;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAA;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAG9D;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,MAAiB,EACjB,EAAc,EACd,KAAY;IAEZ,MAAM,sBAAsB,GAAG,IAAI,8BAA8B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,aAAqB,EAAE,EAAE,CACxD,IAAI,aAAa,CAAC;QAChB,KAAK;QACL,aAAa;QACb,sBAAsB;QACtB,KAAK;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;KAC/B,CAAC,CAAA;IACJ,MAAM,UAAU,GACd,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,CAAC,iCAAiC;QAClE,CAAC,CAAC;YACE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK;YACxC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,iCAAiC,CAAC;SACzF;QACH,CAAC,CAAC,SAAS,CAAA;IACf,OAAO,IAAI,iBAAiB,CAAC;QAC3B,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;YAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,sBAAuB,CAAC;SACjE;QACD,UAAU;QACV,sBAAsB;KACvB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAc;IACnD,OAAO,4BAA4B,CAAC;QAClC,sBAAsB,EAAE,IAAI,8BAA8B,CAAC,EAAE,EAAE,EAAE,CAAC;QAClE,wBAAwB,EAAE,IAAI,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC;QAChE,eAAe,EAAE,IAAI,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC;QAC9C,iBAAiB,EAAE,IAAI,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC;KACnD,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,EAAc;IACpD,OAAO,6BAA6B,CAAC;QACnC,sBAAsB,EAAE,IAAI,8BAA8B,CAAC,EAAE,EAAE,EAAE,CAAC;QAClE,wBAAwB,EAAE,IAAI,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC;QAChE,eAAe,EAAE,IAAI,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC;QAC9C,iBAAiB,EAAE,IAAI,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC;KACnD,CAAC,CAAA;AACJ,CAAC"}
@@ -1,87 +1,21 @@
1
- import { type AgentContextRecorder, type AgentExecutor, type Clock, type ExecutionEventPublisher, type IdGenerator, type NotificationChannel, 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';
1
+ import { type Clock, type IdGenerator, type NotificationChannel, type ResolveBinaryArtifactStore, type VcsIdentityRegistry, type WorkRunner, type ProviderRegistry } from '@cat-factory/kernel';
2
+ import { type EnvironmentBackendRegistry } from '@cat-factory/integrations';
4
3
  import { selectTraceSink } from './container-trace-sinks.js';
5
4
  export { selectTraceSink };
5
+ import { buildAppRegistry, buildResolveRepoTarget } from './container-vcs-identity.js';
6
+ export { buildAppRegistry, buildResolveRepoTarget };
7
+ import { maybeWrapConsensus, selectAgentExecutor } from './container-executor-deps.js';
8
+ export { maybeWrapConsensus, selectAgentExecutor };
9
+ export type { WorkerExecutorDeps } from './container-executor-deps.js';
6
10
  import { type CoreDependencies } from '@cat-factory/orchestration';
7
11
  import { ContainerEnvConfigRepairer, type ServerContainer } from '@cat-factory/server';
8
12
  import { type AppConfig } from './config';
9
13
  import type { Env } from './env';
10
- import { type ResolveRepoTarget, type ResolveRunnerTransport } from './ai/ContainerAgentExecutor';
14
+ import { type ResolveRunnerTransport } from './ai/ContainerAgentExecutor';
11
15
  import { ContainerRepoBootstrapper } from './ai/ContainerRepoBootstrapper';
12
16
  import { type GateProviderOverrides } from '@cat-factory/gates';
13
- import { GitHubAppRegistry } from './github/GitHubAppRegistry';
14
17
  import type { D1Database } from '@cloudflare/workers-types';
15
18
  export type Container = ServerContainer;
16
- /**
17
- * Pick the agent that performs pipeline steps: real LLM work via the Vercel AI
18
- * SDK, composed with a per-run sandbox for the repo-operating steps (`coder`,
19
- * `mocker`, `playwright`, …). Container-based implementation is ALWAYS on — the
20
- * sandbox is a hard requirement, so this throws at startup if it can't be built.
21
- * Tests bypass this entirely by overriding `agentExecutor` with a fake.
22
- *
23
- * There is intentionally NO inline fallback for the sandbox kinds — a one-shot
24
- * LLM call cannot clone/edit/commit/open a PR, so a degraded inline implementer is
25
- * silently broken rather than usefully degraded. If the sandbox prerequisites are
26
- * missing we fail the deploy loudly here rather than starting with a half-wired
27
- * implementer that would only fault the moment a repo-operating step is dispatched.
28
- */
29
- /**
30
- * The shared prerequisites both the composite executor selection and its container leg
31
- * need — the Worker's infra handles (`env`/`config`/`db`/`clock`), the resolved runner
32
- * transport, the agent-kind registry, and the optional subscription / observability seams.
33
- * Bundled so the two builders take one dependency object rather than nine positional args.
34
- */
35
- interface WorkerExecutorDeps {
36
- env: Env;
37
- config: AppConfig;
38
- db: D1Database;
39
- clock: Clock;
40
- resolveTransport: ResolveRunnerTransport | null;
41
- agentKindRegistry: AgentKindRegistry;
42
- subscriptions?: ProviderSubscriptionService;
43
- personalSubscriptions?: PersonalSubscriptionService;
44
- agentContextObservability?: AgentContextRecorder;
45
- }
46
- export declare function selectAgentExecutor(deps: WorkerExecutorDeps): AgentExecutor;
47
- /**
48
- * Wrap the standard executor with the optional consensus mechanism when
49
- * `CONSENSUS_ENABLED` is set: register the consensus capability traits (so the builder
50
- * offers "Enable Consensus" on eligible steps) and route consensus-enabled steps through
51
- * a multi-model process, persisting + pushing the transcript. Off ⇒ returns `standard`
52
- * unchanged (no traits, no wrapping), so behaviour is identical to before.
53
- */
54
- export declare function maybeWrapConsensus(standard: AgentExecutor, env: Env, config: AppConfig, db: D1Database, eventPublisher: ExecutionEventPublisher | undefined, agentKindRegistry: AgentKindRegistry): AgentExecutor;
55
- /**
56
- * Build the container-based implementation executor, or return null when its
57
- * prerequisites are missing (a runner backend — Cloudflare Containers and/or a
58
- * self-hosted pool — plus a configured GitHub App, the proxy's public URL and the
59
- * signing secret) — the caller then falls back to inline work.
60
- */
61
- /**
62
- * Build the multi-App registry (ADR 0005): the default App always, plus the
63
- * privileged App when configured. It resolves which App's key to use per
64
- * installation (from the binding's recorded appId), so every token mint / app-JWT
65
- * call routes correctly. Callers guard on `config.github.enabled`, which requires
66
- * GITHUB_APP_PRIVATE_KEY, so the default key is present.
67
- */
68
- export declare function buildAppRegistry(env: Env, config: AppConfig, db: D1Database, clock: Clock): GitHubAppRegistry;
69
- /**
70
- * Resolve the repo linked to a running block's enclosing service, via the shared
71
- * runtime-neutral `buildResolveRepoTarget` (the ancestry walk + no-fallback policy
72
- * live in `@cat-factory/server` so the Worker and Node service can't drift). This
73
- * wrapper just binds the D1 repositories. Shared by the container executor, the CI
74
- * status provider and the PR merger.
75
- *
76
- * No `repoProjectionCache` is threaded here (unlike the Node facade, which caches the
77
- * whole-projection re-list per workspace — caching-layer slice 3): the repo projection
78
- * is our own mutable D1 state, and the Worker's isolate-safe profile makes that cache
79
- * pass-through (no cross-isolate invalidation bus), so an in-isolate TTL would serve
80
- * stale repos after a write on another isolate. Reading live IS the isolate-safe
81
- * behaviour. The shared GitHub sync/webhook services still receive the (pass-through)
82
- * handle via `createGitHubModule`, so their invalidation code path stays symmetric.
83
- */
84
- export declare function buildResolveRepoTarget(db: D1Database): ResolveRepoTarget;
85
19
  /** What {@link selectMergeLifecycleDeps} needs. An options object rather than a positional tail:
86
20
  * it already carried six parameters, and the notification channels it composes will keep
87
21
  * growing (in-app, Slack, the outbound webhook, …) — a named bag stays readable and keeps the
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/infrastructure/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/infrastructure/container.ts"],"names":[],"mappings":"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"}