@cat-factory/worker 0.102.0 → 0.104.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.
Files changed (34) hide show
  1. package/dist/infrastructure/config/index.d.ts +2 -1
  2. package/dist/infrastructure/config/index.d.ts.map +1 -1
  3. package/dist/infrastructure/config/index.js +2 -0
  4. package/dist/infrastructure/config/index.js.map +1 -1
  5. package/dist/infrastructure/config/notificationWebhooks.d.ts +12 -0
  6. package/dist/infrastructure/config/notificationWebhooks.d.ts.map +1 -0
  7. package/dist/infrastructure/config/notificationWebhooks.js +15 -0
  8. package/dist/infrastructure/config/notificationWebhooks.js.map +1 -0
  9. package/dist/infrastructure/container-assembly.d.ts +12 -1
  10. package/dist/infrastructure/container-assembly.d.ts.map +1 -1
  11. package/dist/infrastructure/container-assembly.js +29 -4
  12. package/dist/infrastructure/container-assembly.js.map +1 -1
  13. package/dist/infrastructure/container.d.ts +31 -7
  14. package/dist/infrastructure/container.d.ts.map +1 -1
  15. package/dist/infrastructure/container.js +68 -37
  16. package/dist/infrastructure/container.js.map +1 -1
  17. package/dist/infrastructure/env.d.ts +9 -0
  18. package/dist/infrastructure/env.d.ts.map +1 -1
  19. package/dist/infrastructure/env.js.map +1 -1
  20. package/dist/infrastructure/repositories/D1NotificationWebhookRepository.d.ts +13 -0
  21. package/dist/infrastructure/repositories/D1NotificationWebhookRepository.d.ts.map +1 -0
  22. package/dist/infrastructure/repositories/D1NotificationWebhookRepository.js +45 -0
  23. package/dist/infrastructure/repositories/D1NotificationWebhookRepository.js.map +1 -0
  24. package/dist/infrastructure/repositories/D1ValidationConfigRepository.d.ts +19 -0
  25. package/dist/infrastructure/repositories/D1ValidationConfigRepository.d.ts.map +1 -0
  26. package/dist/infrastructure/repositories/D1ValidationConfigRepository.js +77 -0
  27. package/dist/infrastructure/repositories/D1ValidationConfigRepository.js.map +1 -0
  28. package/dist/infrastructure/wireCredentialServices.d.ts +18 -1
  29. package/dist/infrastructure/wireCredentialServices.d.ts.map +1 -1
  30. package/dist/infrastructure/wireCredentialServices.js +40 -1
  31. package/dist/infrastructure/wireCredentialServices.js.map +1 -1
  32. package/migrations/0061_notification_webhooks.sql +18 -0
  33. package/migrations/0061_validation_configs.sql +14 -0
  34. package/package.json +18 -18
@@ -9,6 +9,7 @@ import { type TasksConfig } from './tasks';
9
9
  import { type EnvironmentsConfig } from './environments';
10
10
  import { type RunnerPoolConfig } from './runners';
11
11
  import { type SlackConfig } from './slack';
12
+ import { type NotificationWebhookConfig } from './notificationWebhooks';
12
13
  import { type ReleaseHealthConfig } from './releaseHealth';
13
14
  import { type EmailConfig } from './email';
14
15
  import { type RetentionConfig } from './retention';
@@ -16,6 +17,6 @@ import { type FragmentLibraryConfig } from './fragmentLibrary';
16
17
  import { type ObservabilityConfig } from './observability';
17
18
  import { type LangfuseConfig } from './langfuse';
18
19
  import { type OtelConfig } from './otel';
19
- export type { AgentsConfig, AppConfig, ExecutionConfig, GitHubConfig, AuthConfig, DocumentsConfig, TasksConfig, EnvironmentsConfig, RunnerPoolConfig, SlackConfig, ReleaseHealthConfig, EmailConfig, RetentionConfig, FragmentLibraryConfig, ObservabilityConfig, LangfuseConfig, OtelConfig, };
20
+ export type { AgentsConfig, AppConfig, ExecutionConfig, GitHubConfig, AuthConfig, DocumentsConfig, TasksConfig, EnvironmentsConfig, RunnerPoolConfig, SlackConfig, NotificationWebhookConfig, ReleaseHealthConfig, EmailConfig, RetentionConfig, FragmentLibraryConfig, ObservabilityConfig, LangfuseConfig, OtelConfig, };
20
21
  export declare function loadConfig(env: Env): AppConfig;
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,qBAAqB,CAAA;AAO5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,UAAU,CAAA;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,aAAa,CAAA;AAEvE,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,UAAU,CAAA;AAE9D,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,gBAAgB,CAAA;AAChF,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,KAAK,mBAAmB,EAA2B,MAAM,iBAAiB,CAAA;AACnF,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,KAAK,qBAAqB,EAA6B,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,KAAK,mBAAmB,EAA2B,MAAM,iBAAiB,CAAA;AACnF,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,QAAQ,CAAA;AAUxD,YAAY,EACV,YAAY,EACZ,SAAS,EACT,eAAe,EACf,YAAY,EACZ,UAAU,EACV,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,UAAU,GACX,CAAA;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAkD9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,qBAAqB,CAAA;AAO5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,UAAU,CAAA;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,aAAa,CAAA;AAEvE,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,UAAU,CAAA;AAE9D,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,gBAAgB,CAAA;AAChF,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAA;AAC3D,OAAO,EACL,KAAK,yBAAyB,EAE/B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,KAAK,mBAAmB,EAA2B,MAAM,iBAAiB,CAAA;AACnF,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,KAAK,qBAAqB,EAA6B,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,KAAK,mBAAmB,EAA2B,MAAM,iBAAiB,CAAA;AACnF,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,QAAQ,CAAA;AAUxD,YAAY,EACV,YAAY,EACZ,SAAS,EACT,eAAe,EACf,YAAY,EACZ,UAAU,EACV,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,yBAAyB,EACzB,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,UAAU,GACX,CAAA;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAmD9C"}
@@ -12,6 +12,7 @@ import { loadTasksConfig } from './tasks';
12
12
  import { loadEnvironmentsConfig } from './environments';
13
13
  import { loadRunnerPoolConfig } from './runners';
14
14
  import { loadSlackConfig } from './slack';
15
+ import { loadNotificationWebhookConfig, } from './notificationWebhooks';
15
16
  import { loadReleaseHealthConfig } from './releaseHealth';
16
17
  import { loadEmailConfig } from './email';
17
18
  import { loadRetentionConfig } from './retention';
@@ -49,6 +50,7 @@ export function loadConfig(env) {
49
50
  environments: loadEnvironmentsConfig(env),
50
51
  runners: loadRunnerPoolConfig(env),
51
52
  slack: loadSlackConfig(env),
53
+ notificationWebhooks: loadNotificationWebhookConfig(env),
52
54
  releaseHealth: loadReleaseHealthConfig(env),
53
55
  email: loadEmailConfig(env),
54
56
  retention: loadRetentionConfig(env),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { NotificationWebhookConfig } from '@cat-factory/server';
2
+ import type { Env } from '../env';
3
+ export type { NotificationWebhookConfig };
4
+ /**
5
+ * The outbound notification webhook has no enable flag — it assembles wherever the shared
6
+ * ENCRYPTION_KEY is set (the signing secret must be sealable), and delivery is governed by whether
7
+ * a workspace registered an endpoint. Only the SSRF guard is configurable: the strict
8
+ * public-https default holds unless the operator names hosts to exempt (a receiver on an internal
9
+ * / VPN host, or a developer's localhost listener).
10
+ */
11
+ export declare function loadNotificationWebhookConfig(env: Env): NotificationWebhookConfig;
12
+ //# sourceMappingURL=notificationWebhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notificationWebhooks.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/config/notificationWebhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAGjC,YAAY,EAAE,yBAAyB,EAAE,CAAA;AAEzC;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,yBAAyB,CAKjF"}
@@ -0,0 +1,15 @@
1
+ import { csv } from './utils';
2
+ /**
3
+ * The outbound notification webhook has no enable flag — it assembles wherever the shared
4
+ * ENCRYPTION_KEY is set (the signing secret must be sealable), and delivery is governed by whether
5
+ * a workspace registered an endpoint. Only the SSRF guard is configurable: the strict
6
+ * public-https default holds unless the operator names hosts to exempt (a receiver on an internal
7
+ * / VPN host, or a developer's localhost listener).
8
+ */
9
+ export function loadNotificationWebhookConfig(env) {
10
+ return {
11
+ allowUrlHosts: csv(env.NOTIFICATION_WEBHOOK_ALLOW_URL_HOSTS),
12
+ allowHttpUrls: env.NOTIFICATION_WEBHOOK_ALLOW_HTTP_URLS === 'true',
13
+ };
14
+ }
15
+ //# sourceMappingURL=notificationWebhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notificationWebhooks.js","sourceRoot":"","sources":["../../../src/infrastructure/config/notificationWebhooks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAI7B;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,GAAQ;IACpD,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,oCAAoC,CAAC;QAC5D,aAAa,EAAE,GAAG,CAAC,oCAAoC,KAAK,MAAM;KACnE,CAAA;AACH,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { type AppCaches, type Clock, type ExecutionEventPublisher, type IdGenerator, type ResolveBinaryArtifactStore } from '@cat-factory/kernel';
2
2
  import { type CoreDependencies, AgentContextObservabilityService, SearchQueryObservabilityService } from '@cat-factory/orchestration';
3
- import type { AccountSettingsService, ApiKeyService, LocalModelEndpointService, OpenRouterCatalogService, PersonalSubscriptionService, ProviderSubscriptionService, PublicApiKeyService, TestSecretsService, UserSecretService } from '@cat-factory/integrations';
3
+ import type { AccountSettingsService, ApiKeyService, LocalModelEndpointService, NotificationWebhookService, OpenRouterCatalogService, PersonalSubscriptionService, ProviderSubscriptionService, PublicApiKeyService, TestSecretsService, ValidationConfigService, UserSecretService } from '@cat-factory/integrations';
4
4
  import { type ServerContainer, type WebSearchUpstream } from '@cat-factory/server';
5
5
  import { type GateProviderOverrides } from '@cat-factory/gates';
6
+ import type { NotificationChannel } from '@cat-factory/kernel';
6
7
  import type { AppConfig } from './config';
7
8
  import type { Env } from './env';
8
9
  import type { WorkerRegistries } from './container-registries.js';
@@ -34,9 +35,19 @@ export interface WorkerContainerAssemblyInput {
34
35
  resolveTransport: ResolveRunnerTransport | null;
35
36
  subscriptions: ProviderSubscriptionService | undefined;
36
37
  testSecretsService: TestSecretsService | undefined;
38
+ validationConfigService: ValidationConfigService;
37
39
  personalSubscriptions: PersonalSubscriptionService | undefined;
38
40
  apiKeys: ApiKeyService | undefined;
39
41
  publicApiKeys: PublicApiKeyService | undefined;
42
+ /**
43
+ * The outbound notification-webhook feature (management service + delivery channel), or null
44
+ * when the deployment has no encryption key to seal the signing secret with. Both halves arrive
45
+ * together from one builder so they can't drift apart.
46
+ */
47
+ notificationWebhookSupport: {
48
+ service: NotificationWebhookService;
49
+ channel: NotificationChannel;
50
+ } | null;
40
51
  localModelEndpoints: LocalModelEndpointService | undefined;
41
52
  userSecrets: UserSecretService | undefined;
42
53
  openRouterCatalog: OpenRouterCatalogService | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"container-assembly.d.ts","sourceRoot":"","sources":["../../src/infrastructure/container-assembly.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,KAAK,EAEV,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,gBAAgB,EACrB,gCAAgC,EAChC,+BAA+B,EAEhC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,OAAO,EAAE,qBAAqB,EAA8B,MAAM,2BAA2B,CAAA;AAoB7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAA;AA0CxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,SAAS,CAAA;IACjB,EAAE,EAAE,UAAU,CAAA;IACd,WAAW,EAAE,UAAU,CAAA;IACvB,KAAK,EAAE,KAAK,CAAA;IACZ,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,EAAE,SAAS,CAAA;IACjB,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACpC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACrC,uBAAuB,EAAE,OAAO,CAAA;IAChC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,yBAAyB,EAAE,2BAA2B,GAAG,SAAS,CAAA;IAClE,gBAAgB,EAAE,sBAAsB,GAAG,IAAI,CAAA;IAC/C,aAAa,EAAE,2BAA2B,GAAG,SAAS,CAAA;IACtD,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAClD,qBAAqB,EAAE,2BAA2B,GAAG,SAAS,CAAA;IAC9D,OAAO,EAAE,aAAa,GAAG,SAAS,CAAA;IAClC,aAAa,EAAE,mBAAmB,GAAG,SAAS,CAAA;IAC9C,mBAAmB,EAAE,yBAAyB,GAAG,SAAS,CAAA;IAC1D,WAAW,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAC1C,iBAAiB,EAAE,wBAAwB,GAAG,SAAS,CAAA;IACvD,cAAc,EAAE,uBAAuB,GAAG,SAAS,CAAA;IACnD,yBAAyB,EAAE,gCAAgC,CAAA;IAC3D,wBAAwB,EAAE,+BAA+B,CAAA;IACzD,eAAe,EAAE,sBAAsB,GAAG,SAAS,CAAA;IACnD,wBAAwB,EAAE,iBAAiB,GAAG,SAAS,CAAA;IACvD,0BAA0B,EAAE,0BAA0B,CAAA;IACtD,mBAAmB,EAAE,qBAAqB,CAAA;CAC3C;AA8OD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,eAAe,CAiN5F"}
1
+ {"version":3,"file":"container-assembly.d.ts","sourceRoot":"","sources":["../../src/infrastructure/container-assembly.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ import { D1SealedSecretInventory } from './repositories/D1SealedSecretInventory'
31
31
  import { D1ServiceRepository } from './repositories/D1ServiceRepository';
32
32
  import { D1SubscriptionActivationRepository } from './repositories/D1PersonalSubscriptionRepository';
33
33
  import { D1TestSecretsRepository } from './repositories/D1TestSecretsRepository';
34
+ import { D1ValidationConfigRepository } from './repositories/D1ValidationConfigRepository';
34
35
  import { D1TokenUsageRepository } from './repositories/D1TokenUsageRepository';
35
36
  import { D1UserRepoAccessRepository } from './repositories/D1UserRepoAccessRepository';
36
37
  import { D1UserRepository } from './repositories/D1UserRepository';
@@ -57,7 +58,7 @@ import { selectGitHubDeps } from './github-deps.js';
57
58
  * behaviour change.
58
59
  */
59
60
  function buildWorkerCoreDependencies(input) {
60
- const { env, config, db, telemetryDb, clock, idGenerator, caches, overrides, cloudflareModelsEnabled, registries, provisioningLogRepository, resolveTransport, subscriptions, testSecretsService, personalSubscriptions, apiKeys, localModelEndpoints, openRouterCatalog, eventPublisher, agentContextObservability, searchQueryObservability, accountSettings, resolveBinaryArtifactStore, githubWebhookIngest, } = input;
61
+ const { env, config, db, telemetryDb, clock, idGenerator, caches, overrides, cloudflareModelsEnabled, registries, provisioningLogRepository, resolveTransport, subscriptions, testSecretsService, validationConfigService, personalSubscriptions, apiKeys, notificationWebhookSupport, localModelEndpoints, openRouterCatalog, eventPublisher, agentContextObservability, searchQueryObservability, accountSettings, resolveBinaryArtifactStore, githubWebhookIngest, } = input;
61
62
  const { environmentBackendRegistry, runnerBackendRegistry, customManifestTypeRegistry, agentKindRegistry, gateRegistry, stepResolverRegistry, initiativePresetRegistry, providerRegistry, } = registries;
62
63
  return {
63
64
  // App-owned backend registries (kind → provider) the connection services resolve through.
@@ -162,7 +163,15 @@ function buildWorkerCoreDependencies(input) {
162
163
  ? new WorkflowsEnvironmentTestRunner(env.ENV_TEST_WORKFLOW)
163
164
  : undefined,
164
165
  ...selectGitHubDeps(env, config, db, clock, idGenerator, caches.repoFiles),
165
- ...selectMergeLifecycleDeps(env, config, db, clock, idGenerator, providerRegistry),
166
+ ...selectMergeLifecycleDeps({
167
+ env,
168
+ config,
169
+ db,
170
+ clock,
171
+ idGenerator,
172
+ providerRegistry,
173
+ webhookChannel: notificationWebhookSupport?.channel,
174
+ }),
166
175
  // A fresh workspace's model-preset library is seeded with Kimi K2.7 as the default
167
176
  // (Cloudflare-runnable on the bare AI binding). A deployment overrides the out-of-the-box
168
177
  // default by passing `defaultModelPresetId` through `createApp`'s / `buildContainer`'s
@@ -178,6 +187,12 @@ function buildWorkerCoreDependencies(input) {
178
187
  resolveTestSecretRefs: (workspaceId, blockId) => testSecretsService.resolveRefsForBlock(workspaceId, blockId),
179
188
  }
180
189
  : {}),
190
+ // Fold the service frame's PRE-PR VALIDATION CHECKS onto the agent run context, so a
191
+ // PR-opening coding dispatch carries them in its job body and the harness gates the PR on
192
+ // them. Nothing sealed here (the commands run in the run's own container), so — unlike the
193
+ // test secrets above — this needs no ENCRYPTION_KEY and is always wired. Resolves to `null`
194
+ // for a service with no checks, which is the exact pre-feature behaviour.
195
+ resolveValidationChecks: (workspaceId, frameId) => validationConfigService.resolveForFrame(workspaceId, frameId),
181
196
  ...selectIncidentEnrichmentDeps(env, db, providerRegistry),
182
197
  ...selectPackageRegistryDeps(env, db),
183
198
  ...(accountSettings ? { accountSettings } : {}),
@@ -226,7 +241,7 @@ function buildWorkerCoreDependencies(input) {
226
241
  }
227
242
  export function assembleWorkerContainer(input) {
228
243
  const { env, config, db, clock, registries, resolveTransport, gateProviders } = input;
229
- const { subscriptions, testSecretsService, personalSubscriptions, apiKeys, publicApiKeys, localModelEndpoints, userSecrets, openRouterCatalog, cloudflareModelsEnabled, defaultWebSearchUpstream, resolveBinaryArtifactStore, githubWebhookIngest, } = input;
244
+ const { subscriptions, testSecretsService, validationConfigService, personalSubscriptions, apiKeys, publicApiKeys, notificationWebhookSupport, localModelEndpoints, userSecrets, openRouterCatalog, cloudflareModelsEnabled, defaultWebSearchUpstream, resolveBinaryArtifactStore, githubWebhookIngest, } = input;
230
245
  const { environmentBackendRegistry, runnerBackendRegistry, providerRegistry, vcsRegistry } = registries;
231
246
  // The domain dependency object (built in its own function to stay within the size budget);
232
247
  // the post-override wiring below still reads + mutates THIS instance, exactly as before.
@@ -262,7 +277,7 @@ export function assembleWorkerContainer(input) {
262
277
  const agentRunRepository = new D1AgentRunRepository({ db });
263
278
  // The EXTERNAL (non-in-app) delivery channels, for the mothership delivery seam below. Built
264
279
  // from the same source of truth `selectMergeLifecycleDeps` composes into the engine's fan-out.
265
- const externalNotificationChannel = buildExternalNotificationChannel(config, db);
280
+ const externalNotificationChannel = buildExternalNotificationChannel(config, db, notificationWebhookSupport?.channel);
266
281
  return {
267
282
  ...createCore(dependencies),
268
283
  config,
@@ -339,6 +354,11 @@ export function assembleWorkerContainer(input) {
339
354
  // proxied (decrypted service-side under the LOCAL key), like the observability/runner-pool
340
355
  // connections.
341
356
  testSecretsRepository: new D1TestSecretsRepository({ db }),
357
+ // Same reasoning for the per-service PRE-PR VALIDATION CHECKS: the engine reads them via
358
+ // the `resolveValidationChecks` FUNCTION, and the inspector CRUD goes through the service,
359
+ // so the repo isn't in `CoreDependencies` — reflect it explicitly or a mothership-mode
360
+ // node's dispatch resolution + inspector reads come back `... is not wired`.
361
+ validationConfigRepository: new D1ValidationConfigRepository({ db }),
342
362
  // GitHub projection + installation reads the mothership serves over the persistence RPC even
343
363
  // when its OWN github service is off. A mothership-mode local node reaches GitHub by token
344
364
  // DELEGATION (no local App), which enables `container.github`, so its board snapshot
@@ -370,6 +390,9 @@ export function assembleWorkerContainer(input) {
370
390
  // The sensitive per-service test-credential store the shared test-secrets controller reads;
371
391
  // present when the shared ENCRYPTION_KEY is configured.
372
392
  ...(testSecretsService ? { testSecrets: testSecretsService } : {}),
393
+ // The per-service pre-PR validation-check store the shared controller reads. Always present
394
+ // (no secret material), unlike the sealed stores around it.
395
+ validationConfig: validationConfigService,
373
396
  // The vendor-credential (subscription token pool) service the shared controller
374
397
  // reads; present when the shared ENCRYPTION_KEY is configured.
375
398
  subscriptions,
@@ -381,6 +404,8 @@ export function assembleWorkerContainer(input) {
381
404
  apiKeys,
382
405
  // The inbound public-API key store; present when the shared ENCRYPTION_KEY is configured.
383
406
  publicApiKeys,
407
+ // The per-workspace outbound notification-webhook config; present when ENCRYPTION_KEY is set.
408
+ notificationWebhooks: notificationWebhookSupport?.service,
384
409
  // Whether the opt-in Cloudflare Workers AI lib is enabled (the `AI` binding).
385
410
  cloudflareModelsEnabled,
386
411
  // The direct-provider base-URL resolver the catalog uses to gate selectability on a
@@ -1 +1 @@
1
- {"version":3,"file":"container-assembly.js","sourceRoot":"","sources":["../../src/infrastructure/container-assembly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-assembly.js","sourceRoot":"","sources":["../../src/infrastructure/container-assembly.ts"],"names":[],"mappings":"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"}
@@ -80,7 +80,25 @@ export declare function buildAppRegistry(env: Env, config: AppConfig, db: D1Data
80
80
  * handle via `createGitHubModule`, so their invalidation code path stays symmetric.
81
81
  */
82
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>;
83
+ /** What {@link selectMergeLifecycleDeps} needs. An options object rather than a positional tail:
84
+ * it already carried six parameters, and the notification channels it composes will keep
85
+ * growing (in-app, Slack, the outbound webhook, …) — a named bag stays readable and keeps the
86
+ * call site honest about which of the several same-typed handles is which. */
87
+ export interface MergeLifecycleDepsInput {
88
+ env: Env;
89
+ config: AppConfig;
90
+ db: D1Database;
91
+ clock: Clock;
92
+ idGenerator: IdGenerator;
93
+ providerRegistry: ProviderRegistry;
94
+ /**
95
+ * The outbound notification-webhook delivery channel, when the deployment configured one. Built
96
+ * by the caller (alongside its management service, from ONE builder) so both halves are
97
+ * guaranteed to read the same rows through the same cipher.
98
+ */
99
+ webhookChannel?: NotificationChannel;
100
+ }
101
+ export declare function selectMergeLifecycleDeps(input: MergeLifecycleDepsInput): Partial<CoreDependencies>;
84
102
  /**
85
103
  * Wire the observability post-release-health gate when enabled (+ ENCRYPTION_KEY): the
86
104
  * connection + per-block config repos, the cipher that seals the credentials, the pluggable
@@ -114,17 +132,23 @@ export declare function selectIncidentEnrichmentDeps(env: Env, db: D1Database, p
114
132
  export declare function buildCloudflareArtifactStoreResolver(env: Env, db: D1Database, clock: Clock, idGenerator: IdGenerator): ResolveBinaryArtifactStore;
115
133
  /**
116
134
  * This deployment's EXTERNAL notification channels — everything that is NOT the in-app push
117
- * (Slack today). Two consumers: {@link selectMergeLifecycleDeps} composes it into the engine's own
118
- * fan-out, and the ServerContainer attaches it as `machineNotificationDelivery`, the seam the
119
- * mothership-mode `POST /internal/notifications/deliver` endpoint delivers a laptop-raised
120
- * notification through (its credentials never leave this deployment). In-app is excluded there on
121
- * purpose: a laptop's in-app frame already arrives over the real-time upstream relay.
135
+ * (Slack, plus a workspace's outbound notification webhook). Two consumers:
136
+ * {@link selectMergeLifecycleDeps} composes it into the engine's own fan-out, and the
137
+ * ServerContainer attaches it as `machineNotificationDelivery`, the seam the mothership-mode
138
+ * `POST /internal/notifications/deliver` endpoint delivers a laptop-raised notification through
139
+ * (its credentials never leave this deployment). In-app is excluded there on purpose: a laptop's
140
+ * in-app frame already arrives over the real-time upstream relay.
141
+ *
142
+ * The webhook belongs in this set for the same reason Slack does — its signing secret is sealed
143
+ * with THIS deployment's key, so this is the only side that can decrypt and deliver it. Keeping it
144
+ * out would leave a mothership-mode laptop failing every delivery on a decrypt it cannot perform
145
+ * while the mothership never attempted one. Symmetric with the Node facade.
122
146
  *
123
147
  * Called once per consumer (so the seam gets its own instance), exactly like `buildAppRegistry`,
124
148
  * which the `githubTokenDelegation` seam also re-builds — the channel is a stateless adapter over
125
149
  * D1 reads plus a cipher, so a second instance costs nothing.
126
150
  */
127
- export declare function buildExternalNotificationChannel(config: AppConfig, db: D1Database): NotificationChannel | null;
151
+ export declare function buildExternalNotificationChannel(config: AppConfig, db: D1Database, webhookChannel?: NotificationChannel): NotificationChannel | null;
128
152
  /**
129
153
  * Wire the Slack management module (per-account connect + per-workspace routing +
130
154
  * member map). Wired only when the integration is enabled; the actual delivery is
@@ -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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"}
@@ -1,7 +1,7 @@
1
1
  import { CompositeNotificationChannel, composeTraceSinks, NoopWorkRunner, } from '@cat-factory/kernel';
2
2
  import { AiAgentExecutor, inlineWebSearchOptionsFromEnv, resolveAgentConfig, isProxyableProvider, vendorConcurrencyLimiterFromEnv, } from '@cat-factory/agents';
3
3
  import { cloudflareBindingRegistry } from '@cat-factory/provider-cloudflare';
4
- import { ConfluenceProvider, FigmaProvider, ZeplinProvider, GitHubDocsProvider, GitHubIssuesProvider, JiraProvider, LinearDocumentProvider, LinearTaskProvider, NotionProvider, EMAIL_CIPHER_INFO, PersonalSubscriptionService, ProviderSubscriptionService, RunnerPoolConnectionService, ProvisioningLogRecorder, LoggingRunnerTransport, SLACK_CIPHER_INFO, SlackNotificationChannel, TicketTrackerService, IssueWritebackService, githubIssuesLogic, OBSERVABILITY_CIPHER_INFO, RegistryReleaseHealthProvider, defaultObservabilityRegistry, RegistrySubscriptionQuotaProvider, defaultSubscriptionQuotaRegistry, WorkspaceIncidentEnrichmentProvider, INCIDENT_ENRICHMENT_CIPHER_INFO, AccountSettingsService, ACCOUNT_SETTINGS_CIPHER_INFO, TestSecretsService, TEST_SECRETS_CIPHER_INFO, createEmailSender, } from '@cat-factory/integrations';
4
+ import { ConfluenceProvider, FigmaProvider, ZeplinProvider, GitHubDocsProvider, GitHubIssuesProvider, JiraProvider, LinearDocumentProvider, LinearTaskProvider, NotionProvider, EMAIL_CIPHER_INFO, PersonalSubscriptionService, ProviderSubscriptionService, RunnerPoolConnectionService, ProvisioningLogRecorder, LoggingRunnerTransport, SLACK_CIPHER_INFO, NOTIFICATION_WEBHOOK_CIPHER_INFO, SlackNotificationChannel, buildNotificationWebhookSupport, TicketTrackerService, IssueWritebackService, githubIssuesLogic, OBSERVABILITY_CIPHER_INFO, RegistryReleaseHealthProvider, defaultObservabilityRegistry, RegistrySubscriptionQuotaProvider, defaultSubscriptionQuotaRegistry, WorkspaceIncidentEnrichmentProvider, INCIDENT_ENRICHMENT_CIPHER_INFO, AccountSettingsService, ACCOUNT_SETTINGS_CIPHER_INFO, createEmailSender, } from '@cat-factory/integrations';
5
5
  // Opt-in AWS EKS backends (runner + environment), registered by reference on BOTH facades so
6
6
  // the runtimes stay symmetric with the native `kubernetes` backend they extend (which likewise
7
7
  // rides both). They are pass-throughs until a workspace connects an `eks` backend, and carry NO
@@ -76,7 +76,6 @@ import { D1UserSettingsRepository } from './repositories/D1UserSettingsRepositor
76
76
  import { D1ObservabilityConnectionRepository } from './repositories/D1ObservabilityConnectionRepository';
77
77
  import { D1SubscriptionQuotaCycleRepository } from './repositories/D1SubscriptionQuotaCycleRepository';
78
78
  import { D1PackageRegistryConnectionRepository } from './repositories/D1PackageRegistryConnectionRepository';
79
- import { D1TestSecretsRepository } from './repositories/D1TestSecretsRepository';
80
79
  import { D1IncidentEnrichmentConnectionRepository } from './repositories/D1IncidentEnrichmentConnectionRepository';
81
80
  import { D1AccountSettingsRepository } from './repositories/D1AccountSettingsRepository';
82
81
  import { D1ReleaseHealthConfigRepository } from './repositories/D1ReleaseHealthConfigRepository';
@@ -95,6 +94,7 @@ import { GitHubMergeabilityProvider } from './github/GitHubMergeabilityProvider'
95
94
  import { GitHubBranchUpdater } from './github/GitHubBranchUpdater';
96
95
  import { GitHubPullRequestMerger } from './github/GitHubPullRequestMerger';
97
96
  import { WebCryptoSecretCipher } from './environments/WebCryptoSecretCipher';
97
+ import { D1NotificationWebhookRepository } from './repositories/D1NotificationWebhookRepository';
98
98
  import { GitHubAppAuth } from './github/GitHubAppAuth';
99
99
  import { GitHubAppRegistry } from './github/GitHubAppRegistry';
100
100
  import { FetchGitHubClient } from './github/FetchGitHubClient';
@@ -106,7 +106,7 @@ import { D1FragmentSourceRepository } from './repositories/D1FragmentSourceRepos
106
106
  import { D1AccountSkillRepository } from './repositories/D1AccountSkillRepository';
107
107
  import { D1SkillSourceRepository } from './repositories/D1SkillSourceRepository';
108
108
  import { LlmFragmentSelector } from './ai/LlmFragmentSelector';
109
- import { buildApiKeyService, buildLocalModelEndpointService, buildOpenRouterCatalogService, buildPersonalSubscriptionService, buildPublicApiKeyService, buildResolveUserGitHubToken, buildSubscriptionService, buildUserSecretService, } from './wireCredentialServices';
109
+ import { buildApiKeyService, buildLocalModelEndpointService, buildOpenRouterCatalogService, buildPersonalSubscriptionService, buildPublicApiKeyService, buildResolveUserGitHubToken, buildSubscriptionService, buildTestSecretsService, buildUserSecretService, buildValidationConfigService, } from './wireCredentialServices';
110
110
  import { CryptoIdGenerator, SystemClock } from './runtime';
111
111
  /**
112
112
  * The Worker's {@link ModelProvider}: the base registry plus any extra provider
@@ -410,7 +410,8 @@ function selectEngineVcsClient(env, config, db, clock, idGenerator) {
410
410
  }
411
411
  return undefined;
412
412
  }
413
- export function selectMergeLifecycleDeps(env, config, db, clock, idGenerator, providerRegistry) {
413
+ export function selectMergeLifecycleDeps(input) {
414
+ const { env, config, db, clock, idGenerator, providerRegistry, webhookChannel } = input;
414
415
  const deps = {
415
416
  notificationRepository: new D1NotificationRepository({ db }),
416
417
  riskPolicyRepository: new D1RiskPolicyRepository({ db }),
@@ -424,15 +425,18 @@ export function selectMergeLifecycleDeps(env, config, db, clock, idGenerator, pr
424
425
  serviceFragmentDefaultsRepository: new D1ServiceFragmentDefaultsRepository({ db }),
425
426
  initiativeRepository: new D1InitiativeRepository({ db }),
426
427
  };
427
- // Compose the delivery channels: in-app push (when the events binding is present)
428
- // and Slack (when the integration is enabled) implement the same NotificationChannel
429
- // port and fan out via CompositeNotificationChannel — realizing the seam the kernel
430
- // port documents, with no change to the engine call sites that raise notifications.
428
+ // Compose the delivery channels: in-app push (when the events binding is present), Slack (when
429
+ // the integration is enabled) and the outbound webhook (when a workspace registered one) all
430
+ // implement the same NotificationChannel port and fan out via CompositeNotificationChannel —
431
+ // realizing the seam the kernel port documents, with no change to the engine call sites that
432
+ // raise notifications. The webhook channel is what a HEADLESS caller relies on: it has no
433
+ // in-app inbox and no browser WebSocket, so a parked run would otherwise reach it only by
434
+ // polling (see docs/initiatives/headless-clarification-loop.md).
431
435
  const channels = [];
432
436
  const publisher = selectEventPublisher(env, db);
433
437
  if (publisher)
434
438
  channels.push(new InAppNotificationChannel(publisher));
435
- const externalChannel = buildExternalNotificationChannel(config, db);
439
+ const externalChannel = buildExternalNotificationChannel(config, db, webhookChannel);
436
440
  if (externalChannel)
437
441
  channels.push(externalChannel);
438
442
  if (channels.length === 1)
@@ -549,27 +553,6 @@ function buildResolvePackageRegistries(env, db) {
549
553
  });
550
554
  return (workspaceId) => resolvePackageRegistriesForDispatch(repository, cipher, workspaceId);
551
555
  }
552
- /**
553
- * Build the SENSITIVE per-service test-credential store (sealed), or undefined when the shared
554
- * encryption key is absent (the cipher must exist to seal/unseal). Backs the test-secrets CRUD
555
- * controller, the engine's prompt refs (non-secret key + description), and the executor's
556
- * out-of-band value injection into the Tester container. Stateless, so building a fresh instance
557
- * per call site is safe (mirrors `buildResolvePackageRegistries`).
558
- */
559
- function buildTestSecretsService(env, db, clock) {
560
- const encryptionKey = env.ENCRYPTION_KEY?.trim();
561
- if (!encryptionKey)
562
- return undefined;
563
- return new TestSecretsService({
564
- testSecretsRepository: new D1TestSecretsRepository({ db }),
565
- secretCipher: new WebCryptoSecretCipher({
566
- masterKeyBase64: encryptionKey,
567
- info: TEST_SECRETS_CIPHER_INFO,
568
- }),
569
- blockRepository: new D1BlockRepository({ db }),
570
- clock,
571
- });
572
- }
573
556
  /**
574
557
  * Wire the per-workspace incident-enrichment integration (PagerDuty + incident.io). The
575
558
  * credentials moved out of env into a sealed per-workspace row; the provider resolves +
@@ -697,20 +680,61 @@ function buildSlackChannel(config, db) {
697
680
  onError: (error, ctx) => logger.warn({ err: error instanceof Error ? error.message : String(error), ...ctx }, 'slack notification delivery failed'),
698
681
  });
699
682
  }
683
+ /**
684
+ * Build the outbound notification-webhook feature (management service + delivery channel) when the
685
+ * shared encryption key is present — the signing secret must be sealable. Both halves come from
686
+ * one builder so they can't drift onto different repositories/ciphers. Null when no key is set;
687
+ * then the management surface 503s and no deliveries are attempted.
688
+ */
689
+ function buildNotificationWebhookSupportForWorker(env, config, db, clock) {
690
+ const encryptionKey = env.ENCRYPTION_KEY?.trim();
691
+ if (!encryptionKey)
692
+ return null;
693
+ // The endpoint guard, resolved from the webhook's OWN config slice (undefined ⇒ the strict
694
+ // public-https default). Handed to the builder, which gives it to both the write boundary and
695
+ // the delivery path so they can't admit/reject different endpoints.
696
+ const urlSafetyPolicy = resolveUrlSafetyPolicy(config.notificationWebhooks);
697
+ return buildNotificationWebhookSupport({
698
+ notificationWebhookRepository: new D1NotificationWebhookRepository({ db }),
699
+ secretCipher: new WebCryptoSecretCipher({
700
+ masterKeyBase64: encryptionKey,
701
+ info: NOTIFICATION_WEBHOOK_CIPHER_INFO,
702
+ }),
703
+ clock,
704
+ ...(urlSafetyPolicy ? { urlSafetyPolicy } : {}),
705
+ // Best-effort delivery still surfaces failures (a dead endpoint, a rejected signature)
706
+ // through the structured logger so a broken receiver is diagnosable.
707
+ onError: (error, ctx) => logger.warn({ err: error instanceof Error ? error.message : String(error), ...ctx }, 'notification webhook delivery failed'),
708
+ });
709
+ }
700
710
  /**
701
711
  * This deployment's EXTERNAL notification channels — everything that is NOT the in-app push
702
- * (Slack today). Two consumers: {@link selectMergeLifecycleDeps} composes it into the engine's own
703
- * fan-out, and the ServerContainer attaches it as `machineNotificationDelivery`, the seam the
704
- * mothership-mode `POST /internal/notifications/deliver` endpoint delivers a laptop-raised
705
- * notification through (its credentials never leave this deployment). In-app is excluded there on
706
- * purpose: a laptop's in-app frame already arrives over the real-time upstream relay.
712
+ * (Slack, plus a workspace's outbound notification webhook). Two consumers:
713
+ * {@link selectMergeLifecycleDeps} composes it into the engine's own fan-out, and the
714
+ * ServerContainer attaches it as `machineNotificationDelivery`, the seam the mothership-mode
715
+ * `POST /internal/notifications/deliver` endpoint delivers a laptop-raised notification through
716
+ * (its credentials never leave this deployment). In-app is excluded there on purpose: a laptop's
717
+ * in-app frame already arrives over the real-time upstream relay.
718
+ *
719
+ * The webhook belongs in this set for the same reason Slack does — its signing secret is sealed
720
+ * with THIS deployment's key, so this is the only side that can decrypt and deliver it. Keeping it
721
+ * out would leave a mothership-mode laptop failing every delivery on a decrypt it cannot perform
722
+ * while the mothership never attempted one. Symmetric with the Node facade.
707
723
  *
708
724
  * Called once per consumer (so the seam gets its own instance), exactly like `buildAppRegistry`,
709
725
  * which the `githubTokenDelegation` seam also re-builds — the channel is a stateless adapter over
710
726
  * D1 reads plus a cipher, so a second instance costs nothing.
711
727
  */
712
- export function buildExternalNotificationChannel(config, db) {
713
- return buildSlackChannel(config, db);
728
+ export function buildExternalNotificationChannel(config, db, webhookChannel) {
729
+ const channels = [];
730
+ const slackChannel = buildSlackChannel(config, db);
731
+ if (slackChannel)
732
+ channels.push(slackChannel);
733
+ if (webhookChannel)
734
+ channels.push(webhookChannel);
735
+ if (channels.length === 0)
736
+ return null;
737
+ return channels.length === 1 ? channels[0] : new CompositeNotificationChannel(channels);
714
738
  }
715
739
  /**
716
740
  * Wire the Slack management module (per-account connect + per-workspace routing +
@@ -1636,6 +1660,7 @@ export function buildContainer(env, overrides = {}, opts = {}) {
1636
1660
  // The sensitive per-service test-credential store (sealed) — shared by the test-secrets
1637
1661
  // CRUD controller and the engine's prompt refs (the executor builds its own value resolver).
1638
1662
  const testSecretsService = buildTestSecretsService(env, db, clock);
1663
+ const validationConfigService = buildValidationConfigService(db, clock);
1639
1664
  // The per-user individual-usage subscription store (Claude) — shared by the
1640
1665
  // personal-subscription controller and the container executor's personal lease.
1641
1666
  const personalSubscriptions = buildPersonalSubscriptionService(env, db, clock);
@@ -1710,6 +1735,10 @@ export function buildContainer(env, overrides = {}, opts = {}) {
1710
1735
  // once so the engine's skill-freshness fan-out (slice 4) enqueues through the SAME seam the
1711
1736
  // gateway exposes, rather than reaching for the queue binding a second time.
1712
1737
  const githubWebhookIngest = new CfGitHubWebhookIngest(env.GITHUB_SYNC_QUEUE);
1738
+ // The outbound notification webhook: management service + delivery channel from ONE builder, so
1739
+ // the surface that reports an endpoint as configured and the channel that delivers to it can
1740
+ // never end up on different repositories/ciphers.
1741
+ const notificationWebhookSupport = buildNotificationWebhookSupportForWorker(env, config, db, clock);
1713
1742
  return assembleWorkerContainer({
1714
1743
  env,
1715
1744
  config,
@@ -1737,6 +1766,7 @@ export function buildContainer(env, overrides = {}, opts = {}) {
1737
1766
  resolveTransport,
1738
1767
  subscriptions,
1739
1768
  testSecretsService,
1769
+ validationConfigService,
1740
1770
  personalSubscriptions,
1741
1771
  apiKeys,
1742
1772
  publicApiKeys,
@@ -1750,6 +1780,7 @@ export function buildContainer(env, overrides = {}, opts = {}) {
1750
1780
  defaultWebSearchUpstream,
1751
1781
  resolveBinaryArtifactStore,
1752
1782
  githubWebhookIngest,
1783
+ notificationWebhookSupport,
1753
1784
  });
1754
1785
  }
1755
1786
  //# sourceMappingURL=container.js.map