@noodleseed/one 0.90.0 → 0.92.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 (221) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +3 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auth-live-doctor.js +1 -1
  5. package/dist/commands/auth-live-doctor.js.map +1 -1
  6. package/dist/commands/catalog-data-hosted-deployment.d.ts.map +1 -1
  7. package/dist/commands/catalog-data-hosted-deployment.js +2 -2
  8. package/dist/commands/catalog-data-hosted-deployment.js.map +1 -1
  9. package/dist/commands/catalog-data-local-authoring.d.ts.map +1 -1
  10. package/dist/commands/catalog-data-local-authoring.js +27 -0
  11. package/dist/commands/catalog-data-local-authoring.js.map +1 -1
  12. package/dist/commands/deploy-dotenv-import.d.ts +28 -0
  13. package/dist/commands/deploy-dotenv-import.d.ts.map +1 -0
  14. package/dist/commands/deploy-dotenv-import.js +50 -0
  15. package/dist/commands/deploy-dotenv-import.js.map +1 -0
  16. package/dist/commands/deploy-fire-progress.d.ts +28 -0
  17. package/dist/commands/deploy-fire-progress.d.ts.map +1 -0
  18. package/dist/commands/deploy-fire-progress.js +64 -0
  19. package/dist/commands/deploy-fire-progress.js.map +1 -0
  20. package/dist/commands/deploy-first-flow.d.ts +72 -0
  21. package/dist/commands/deploy-first-flow.d.ts.map +1 -0
  22. package/dist/commands/deploy-first-flow.js +315 -0
  23. package/dist/commands/deploy-first-flow.js.map +1 -0
  24. package/dist/commands/deploy-ops.d.ts +1 -27
  25. package/dist/commands/deploy-ops.d.ts.map +1 -1
  26. package/dist/commands/deploy-ops.js +122 -145
  27. package/dist/commands/deploy-ops.js.map +1 -1
  28. package/dist/commands/deploy-output.d.ts +7 -1
  29. package/dist/commands/deploy-output.d.ts.map +1 -1
  30. package/dist/commands/deploy-output.js +21 -12
  31. package/dist/commands/deploy-output.js.map +1 -1
  32. package/dist/commands/deploy-preflight.d.ts +35 -0
  33. package/dist/commands/deploy-preflight.d.ts.map +1 -0
  34. package/dist/commands/deploy-preflight.js +74 -0
  35. package/dist/commands/deploy-preflight.js.map +1 -0
  36. package/dist/commands/deploy-resume.d.ts +23 -0
  37. package/dist/commands/deploy-resume.d.ts.map +1 -0
  38. package/dist/commands/deploy-resume.js +79 -0
  39. package/dist/commands/deploy-resume.js.map +1 -0
  40. package/dist/commands/design.d.ts +7 -0
  41. package/dist/commands/design.d.ts.map +1 -0
  42. package/dist/commands/design.js +95 -0
  43. package/dist/commands/design.js.map +1 -0
  44. package/dist/commands/devtools.d.ts.map +1 -1
  45. package/dist/commands/devtools.js +5 -1
  46. package/dist/commands/devtools.js.map +1 -1
  47. package/dist/deploy.d.ts +2 -0
  48. package/dist/deploy.d.ts.map +1 -1
  49. package/dist/deploy.js +3 -0
  50. package/dist/deploy.js.map +1 -1
  51. package/dist/dev.d.ts +2 -0
  52. package/dist/dev.d.ts.map +1 -1
  53. package/dist/dev.js +8 -2
  54. package/dist/dev.js.map +1 -1
  55. package/dist/devtools-design-brief.d.ts +10 -0
  56. package/dist/devtools-design-brief.d.ts.map +1 -0
  57. package/dist/devtools-design-brief.js +121 -0
  58. package/dist/devtools-design-brief.js.map +1 -0
  59. package/dist/devtools-design-contract.d.ts +74 -0
  60. package/dist/devtools-design-contract.d.ts.map +1 -0
  61. package/dist/devtools-design-contract.js +306 -0
  62. package/dist/devtools-design-contract.js.map +1 -0
  63. package/dist/devtools-design-element.d.ts +6 -0
  64. package/dist/devtools-design-element.d.ts.map +1 -0
  65. package/dist/devtools-design-element.js +233 -0
  66. package/dist/devtools-design-element.js.map +1 -0
  67. package/dist/devtools-design-preview.d.ts +6 -0
  68. package/dist/devtools-design-preview.d.ts.map +1 -0
  69. package/dist/devtools-design-preview.js +438 -0
  70. package/dist/devtools-design-preview.js.map +1 -0
  71. package/dist/devtools-design-routes.d.ts +14 -0
  72. package/dist/devtools-design-routes.d.ts.map +1 -0
  73. package/dist/devtools-design-routes.js +197 -0
  74. package/dist/devtools-design-routes.js.map +1 -0
  75. package/dist/devtools-design-store.d.ts +16 -0
  76. package/dist/devtools-design-store.d.ts.map +1 -0
  77. package/dist/devtools-design-store.js +209 -0
  78. package/dist/devtools-design-store.js.map +1 -0
  79. package/dist/devtools-design-styles.d.ts +3 -0
  80. package/dist/devtools-design-styles.d.ts.map +1 -0
  81. package/dist/devtools-design-styles.js +509 -0
  82. package/dist/devtools-design-styles.js.map +1 -0
  83. package/dist/devtools-design.d.ts +1 -3
  84. package/dist/devtools-design.d.ts.map +1 -1
  85. package/dist/devtools-design.js +449 -56
  86. package/dist/devtools-design.js.map +1 -1
  87. package/dist/devtools-harness.d.ts.map +1 -1
  88. package/dist/devtools-harness.js +13 -10
  89. package/dist/devtools-harness.js.map +1 -1
  90. package/dist/devtools-preview.d.ts +3 -0
  91. package/dist/devtools-preview.d.ts.map +1 -1
  92. package/dist/devtools-preview.js +3 -0
  93. package/dist/devtools-preview.js.map +1 -1
  94. package/dist/devtools-responsive-styles.d.ts.map +1 -1
  95. package/dist/devtools-responsive-styles.js +15 -0
  96. package/dist/devtools-responsive-styles.js.map +1 -1
  97. package/dist/devtools-styles.js +1 -1
  98. package/dist/devtools-styles.js.map +1 -1
  99. package/dist/fire.d.ts +2 -2
  100. package/dist/fire.d.ts.map +1 -1
  101. package/dist/fire.js +6 -6
  102. package/dist/fire.js.map +1 -1
  103. package/dist/first-run.d.ts.map +1 -1
  104. package/dist/first-run.js +39 -33
  105. package/dist/first-run.js.map +1 -1
  106. package/dist/local-config.d.ts +2 -1
  107. package/dist/local-config.d.ts.map +1 -1
  108. package/dist/local-config.js +29 -2
  109. package/dist/local-config.js.map +1 -1
  110. package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -1
  111. package/dist/plugin-mode/build-readiness-server.js +54 -4
  112. package/dist/plugin-mode/build-readiness-server.js.map +1 -1
  113. package/dist/preview-session.d.ts +5 -0
  114. package/dist/preview-session.d.ts.map +1 -1
  115. package/dist/preview-session.js +1 -0
  116. package/dist/preview-session.js.map +1 -1
  117. package/dist/project-dotenv.d.ts +15 -0
  118. package/dist/project-dotenv.d.ts.map +1 -0
  119. package/dist/project-dotenv.js +135 -0
  120. package/dist/project-dotenv.js.map +1 -0
  121. package/dist/project-scaffold-templates.d.ts.map +1 -1
  122. package/dist/project-scaffold-templates.js +6 -3
  123. package/dist/project-scaffold-templates.js.map +1 -1
  124. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  125. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
  126. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  127. package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js +1 -1
  128. package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js.map +1 -1
  129. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -5
  130. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  131. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  132. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  133. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  134. package/node_modules/@noodle-borg/agent-kit/dist/index.js +1 -1
  135. package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
  136. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +2 -2
  137. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
  138. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
  139. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  140. package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js +1 -1
  141. package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js.map +1 -1
  142. package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.d.ts.map +1 -1
  143. package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js +12 -0
  144. package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js.map +1 -1
  145. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
  146. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +3 -6
  147. package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
  148. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +2 -2
  149. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  150. package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
  151. package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js.map +1 -1
  152. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  153. package/node_modules/@noodle-borg/auth/dist/verify.d.ts +3 -1
  154. package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
  155. package/node_modules/@noodle-borg/auth/dist/verify.js +16 -4
  156. package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
  157. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts +0 -2
  158. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts.map +1 -1
  159. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js +0 -76
  160. package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js.map +1 -1
  161. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -8
  162. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
  163. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +8 -237
  164. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
  165. package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts +26 -0
  166. package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts.map +1 -0
  167. package/node_modules/@noodle-borg/connector-http/dist/http-response.js +249 -0
  168. package/node_modules/@noodle-borg/connector-http/dist/http-response.js.map +1 -0
  169. package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +4 -4
  170. package/node_modules/@noodle-borg/service/dist/assistant-bindings.js.map +1 -1
  171. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/customer-verifier.js +8 -5
  173. package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/index.d.ts +1 -1
  175. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  177. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts +41 -0
  178. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts.map +1 -0
  179. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js +93 -0
  180. package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js.map +1 -0
  181. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +2 -0
  182. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  183. package/node_modules/@noodle-borg/service/dist/registry-targets.js +10 -4
  184. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  185. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +17 -0
  186. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts.map +1 -1
  187. package/node_modules/@noodle-borg/service/dist/registry.d.ts +4 -2
  188. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  189. package/node_modules/@noodle-borg/service/dist/registry.js +79 -75
  190. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  191. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  192. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +16 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  194. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts +21 -0
  195. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js +25 -0
  197. package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js.map +1 -0
  198. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts +16 -0
  199. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts.map +1 -0
  200. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js +20 -0
  201. package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js.map +1 -0
  202. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts +12 -0
  203. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts.map +1 -0
  204. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +132 -0
  205. package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js.map +1 -0
  206. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +2 -1
  207. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  208. package/node_modules/@noodle-borg/service/dist/routes/paths.js +3 -0
  209. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  210. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  211. package/node_modules/@noodle-borg/service/dist/service.js +15 -12
  212. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  213. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +82 -0
  214. package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts.map +1 -1
  215. package/node_modules/@noodle-borg/wire-contracts/dist/index.js +37 -0
  216. package/node_modules/@noodle-borg/wire-contracts/dist/index.js.map +1 -1
  217. package/package.json +1 -1
  218. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts +0 -2
  219. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts.map +0 -1
  220. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.js +0 -22
  221. package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ import { normalizeServerVersion } from '@noodle-borg/module';
2
+ import { deployAccessRequiresActor, deployerRequiredError, emptyMembershipSourcesError, membershipSourcesRequireOrgMembersError, missingCapabilityErrors, serverAuthRequiredError, } from './registry-helpers.js';
3
+ import { activateInMemory } from './registry-state.js';
4
+ import { idempotentDeploymentId, mintDeploymentId } from './registry-targets.js';
5
+ export async function preflightRegistryDeploy(input) {
6
+ const { actor, accessMode, orgMembershipSources } = input.options;
7
+ if (input.options.serverVersion !== undefined) {
8
+ normalizeServerVersion(input.options.serverVersion);
9
+ }
10
+ if (accessMode !== undefined && deployAccessRequiresActor(accessMode) && actor === undefined) {
11
+ return deployerRequiredError(accessMode);
12
+ }
13
+ const built = await input.compile();
14
+ if (!built.ok)
15
+ return built;
16
+ const missingCapabilities = missingCapabilityErrors(built.served.artifact.requirements?.capabilities ?? [], input.serviceCapabilities);
17
+ if (missingCapabilities.length > 0)
18
+ return { ok: false, errors: missingCapabilities };
19
+ if (accessMode === 'customers' && built.served.artifact.server.auth === undefined) {
20
+ return serverAuthRequiredError();
21
+ }
22
+ if (orgMembershipSources !== undefined) {
23
+ if (orgMembershipSources.length === 0)
24
+ return emptyMembershipSourcesError();
25
+ if (accessMode !== 'org-members')
26
+ return membershipSourcesRequireOrgMembersError();
27
+ }
28
+ return {
29
+ ok: true,
30
+ serverName: built.served.artifact.server.name,
31
+ bindDeployment: built.bindDeployment,
32
+ };
33
+ }
34
+ export async function resolveDeployAttempt(input) {
35
+ const deploymentId = input.idempotencyKey === undefined
36
+ ? mintDeploymentId(input.serverName)
37
+ : idempotentDeploymentId(input.serverName, input.idempotencyKey);
38
+ if (input.idempotencyKey === undefined)
39
+ return { deploymentId };
40
+ const existing = (await input.store?.get(deploymentId)) ?? input.records.get(deploymentId);
41
+ if (existing === undefined)
42
+ return { deploymentId };
43
+ if (!sameIdempotentDeploy(existing, input.tenant, input.manifest, input.options)) {
44
+ return {
45
+ deploymentId,
46
+ replay: {
47
+ ok: false,
48
+ conflict: true,
49
+ code: 'idempotency_conflict',
50
+ message: 'the deploy retry key is already bound to a different deployment',
51
+ },
52
+ };
53
+ }
54
+ return {
55
+ deploymentId,
56
+ replay: {
57
+ ok: true,
58
+ deploymentId: existing.deploymentId,
59
+ deploymentVersion: existing.deploymentVersion,
60
+ ...(existing.serverVersion !== undefined ? { serverVersion: existing.serverVersion } : {}),
61
+ ...(existing.accessMode !== undefined ? { accessMode: existing.accessMode } : {}),
62
+ replayed: true,
63
+ },
64
+ };
65
+ }
66
+ export async function activateRunFallback(store, records, tenant, deploymentId, runActivation) {
67
+ if (!(await runActivation.isNewestAcceptedRun()))
68
+ return { ok: false, reason: 'superseded' };
69
+ const result = store
70
+ ? await store.activateDeployment(tenant, deploymentId)
71
+ : activateInMemory(records, tenant, deploymentId);
72
+ return result !== undefined ? { ok: true, result } : undefined;
73
+ }
74
+ function sameIdempotentDeploy(record, tenant, manifest, options) {
75
+ const serverVersion = options.serverVersion === undefined ? undefined : normalizeServerVersion(options.serverVersion);
76
+ return (record.active &&
77
+ record.archivedAt === undefined &&
78
+ record.orgSlug === tenant.org &&
79
+ record.appSlug === tenant.app &&
80
+ record.environment === tenant.env &&
81
+ record.serverVersion === serverVersion &&
82
+ record.manifest === manifest &&
83
+ record.connectors === options.connectors &&
84
+ record.accessMode === options.accessMode &&
85
+ record.deploymentSource === options.deploymentSource &&
86
+ sameJson(record.hostedAssets, options.hostedAssets) &&
87
+ sameJson(record.orgMembershipSources, options.orgMembershipSources) &&
88
+ (options.accessMode !== 'owner-only' || record.createdBySubject === options.actor?.subject));
89
+ }
90
+ function sameJson(left, right) {
91
+ return JSON.stringify(left) === JSON.stringify(right);
92
+ }
93
+ //# sourceMappingURL=registry-deploy-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-deploy-transaction.js","sourceRoot":"","sources":["../src/registry-deploy-transaction.ts"],"names":[],"mappings":"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"}
@@ -29,4 +29,6 @@ export declare function tenantKey(ref: TenantRef): string;
29
29
  export declare function tenantDeploymentKey(ref: TenantRef, serverVersion?: string): string;
30
30
  /** Build a URL-safe, human-readable id from the manifest's server name plus a short random suffix. */
31
31
  export declare function mintDeploymentId(name: string): string;
32
+ /** Stable name-bearing id for a service-validated retry key; no request content is retained in it. */
33
+ export declare function idempotentDeploymentId(name: string, key: string): string;
32
34
  //# sourceMappingURL=registry-targets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-targets.d.ts","sourceRoot":"","sources":["../src/registry-targets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5F;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,cAAc,EACtB,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,kBAAkB,GACvE,YAAY,CA0Bd;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM;CAI1C;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,cAAc,EACtB,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,kBAAkB,GACvE,YAAY,GAAG,SAAS,CAO1B;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAa7F;AAYD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,EACtB,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,kBAAkB,GACvE;IACD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC3C,CAkBA;AAID,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CACN;IACE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C,GACD,SAAS,CACZ,CAkBA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAEjF;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAEhD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD"}
1
+ {"version":3,"file":"registry-targets.d.ts","sourceRoot":"","sources":["../src/registry-targets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5F;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,cAAc,EACtB,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,kBAAkB,GACvE,YAAY,CA0Bd;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;gBAApB,YAAY,EAAE,MAAM;CAI1C;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,cAAc,EACtB,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,kBAAkB,GACvE,YAAY,GAAG,SAAS,CAO1B;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAa7F;AAYD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,EACtB,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,kBAAkB,GACvE;IACD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC3C,CAkBA;AAID,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CACN;IACE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C,GACD,SAAS,CACZ,CAkBA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAEjF;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAEhD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,sGAAsG;AACtG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,sGAAsG;AACtG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAExE"}
@@ -1,4 +1,4 @@
1
- import { randomUUID } from 'node:crypto';
1
+ import { createHash, randomUUID } from 'node:crypto';
2
2
  /**
3
3
  * Build the front-door {@link ServedTarget} for a persisted record: its access mode plus the credential the
4
4
  * front-door checks. Legacy alpha records without an identity access mode are not served.
@@ -119,10 +119,16 @@ export function tenantDeploymentKey(ref, serverVersion) {
119
119
  }
120
120
  /** Build a URL-safe, human-readable id from the manifest's server name plus a short random suffix. */
121
121
  export function mintDeploymentId(name) {
122
- const slug = name
122
+ return `${deploymentSlug(name)}-${randomUUID().slice(0, 8)}`;
123
+ }
124
+ /** Stable name-bearing id for a service-validated retry key; no request content is retained in it. */
125
+ export function idempotentDeploymentId(name, key) {
126
+ return `${deploymentSlug(name)}-${createHash('sha256').update(key).digest('hex').slice(0, 16)}`;
127
+ }
128
+ function deploymentSlug(name) {
129
+ return (name
123
130
  .toLowerCase()
124
131
  .replace(/[^a-z0-9]+/g, '-')
125
- .replace(/^-+|-+$/g, '') || 'server';
126
- return `${slug}-${randomUUID().slice(0, 8)}`;
132
+ .replace(/^-+|-+$/g, '') || 'server');
127
133
  }
128
134
  //# sourceMappingURL=registry-targets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-targets.js","sourceRoot":"","sources":["../src/registry-targets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-targets.js","sourceRoot":"","sources":["../src/registry-targets.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,11 @@ export interface DeployOptions {
24
24
  readonly hostedAssets?: readonly HostedPackagedAsset[] | undefined;
25
25
  readonly serverVersion?: string | undefined;
26
26
  readonly deploymentSource?: DeploymentSource | undefined;
27
+ /**
28
+ * A service-validated content key for retry-safe CLI deploys. The registry derives a stable
29
+ * deployment id from it; callers that omit it retain the normal fresh-deployment behavior.
30
+ */
31
+ readonly idempotencyKey?: string | undefined;
27
32
  readonly runActivation?: {
28
33
  readonly runId: string;
29
34
  readonly isNewestAcceptedRun: () => Promise<boolean>;
@@ -41,11 +46,23 @@ export type DeployResult = {
41
46
  readonly deploymentVersion: number;
42
47
  readonly serverVersion?: string;
43
48
  readonly accessMode?: AccessMode;
49
+ readonly replayed?: boolean;
50
+ } | {
51
+ readonly ok: false;
52
+ readonly errors: readonly DeployError[];
53
+ };
54
+ export type DeployPreflightResult = {
55
+ readonly ok: true;
44
56
  } | {
45
57
  readonly ok: false;
46
58
  readonly errors: readonly DeployError[];
47
59
  };
48
60
  export type RunDeployResult = DeployResult | {
61
+ readonly ok: false;
62
+ readonly conflict: true;
63
+ readonly code: 'idempotency_conflict';
64
+ readonly message: string;
65
+ } | {
49
66
  readonly ok: false;
50
67
  readonly superseded: true;
51
68
  readonly deploymentId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"registry-types.d.ts","sourceRoot":"","sources":["../src/registry-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-types.d.ts","sourceRoot":"","sources":["../src/registry-types.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@ import { type Connector, type SecretBox } from '@noodle-borg/runtime';
4
4
  import type { AccessMode, ServedTarget } from '@noodle-borg/transport-http';
5
5
  import type { PlatformAccountResetRegistryPlan } from './platform-account-reset-operation-postgres.js';
6
6
  import { type ActiveDeployProvenance } from './registry-helpers.js';
7
- import type { AccessUpdateResult, DeployOptions, RecoverResult, RollbackResult, RunDeployResult, ServerRegistryOptions } from './registry-types.js';
7
+ import type { AccessUpdateResult, DeployOptions, DeployPreflightResult, RecoverResult, RollbackResult, RunDeployResult, ServerRegistryOptions } from './registry-types.js';
8
8
  import { type AppArchiveResult, type AppRestoreResult, type AppSummary, type ArtifactStore, type ConfigStore, type DeploymentListFilter, type DeploymentStatus, type DeploymentSummary, type DeployRecord, type EnvSummary, type ProductionEnvironmentChange, type TenantRef } from './store.js';
9
- export type { AccessUpdateFailureCode, AccessUpdateResult, DeployError, DeployOptions, DeployResult, RecoverResult, RollbackResult, ServerRegistryOptions, } from './registry-types.js';
9
+ export type { AccessUpdateFailureCode, AccessUpdateResult, DeployError, DeployOptions, DeployPreflightResult, DeployResult, RecoverResult, RollbackResult, ServerRegistryOptions, } from './registry-types.js';
10
10
  export declare class ServerRegistry {
11
11
  #private;
12
12
  constructor(store?: ArtifactStore, _secretBox?: SecretBox, configStore?: ConfigStore, options?: ServerRegistryOptions);
@@ -18,6 +18,8 @@ export declare class ServerRegistry {
18
18
  setLocalAssetOptions(options: LocalAssetOptions): void;
19
19
  getLocalAsset(pathname: string): PackagedAsset | undefined;
20
20
  deploy(tenant: TenantRef, manifest: string, options?: DeployOptions): Promise<RunDeployResult>;
21
+ /** Read-only deploy validation used by the CLI before config writes, asset upload, or persistence. */
22
+ preflightDeploy(tenant: TenantRef, manifest: string, options?: DeployOptions): Promise<DeployPreflightResult>;
21
23
  recover(): Promise<RecoverResult>;
22
24
  get(deploymentId: string): Promise<ServedTarget | undefined>;
23
25
  /** Resolve a deployment-id data-plane route only while that exact record is actively serving. */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,11 @@ import { deploymentCredentialBrokerOptions } from './credential-broker-options.j
9
9
  import { defaultActiveRecord } from './deployment-versioning.js';
10
10
  import { normalizePersistedManifestForCompile } from './manifest-normalize.js';
11
11
  import { updateActiveAccess } from './registry-access.js';
12
- import { deployAccessRequiresActor, deployerRequiredError, emptyMembershipSourcesError, membershipSourcesRequireOrgMembersError, missingCapabilityErrors, missingSecretErrors, missingVariableErrors, serverAuthRequiredError, } from './registry-helpers.js';
12
+ import { activateRunFallback, preflightRegistryDeploy, resolveDeployAttempt, } from './registry-deploy-transaction.js';
13
+ import { missingCapabilityErrors, missingSecretErrors, missingVariableErrors, serverAuthRequiredError, } from './registry-helpers.js';
13
14
  import { activateInMemory, activeRecord, activeRecordVersion, persistDeployRecord, reconcilePlatformAccountResetRegistryCache, registryAppArchivedAt, registryArchiveApp, registryGetApp, registryGetDeployment, registryGetEnvironment, registryListApps, registryListEnvironments, registryRestoreApp, registrySetProductionEnvironment, registrySweepArchived, } from './registry-state.js';
14
15
  import { deploymentStatusFor } from './registry-status.js';
15
- import { emptySecretEnvelope, mintDeploymentId, recordMatchesTenant, recordTenant, servedTargetFor, servedTargetMatchesRecord, tenantDeploymentKey, tenantKey, tryServedTargetFor, } from './registry-targets.js';
16
+ import { emptySecretEnvelope, recordMatchesTenant, recordTenant, servedTargetFor, servedTargetMatchesRecord, tenantDeploymentKey, tenantKey, tryServedTargetFor, } from './registry-targets.js';
16
17
  import { withBuiltinStateCatalog } from './state-catalog.js';
17
18
  import { createDeploymentStateConnector, } from './state-connector-factory.js';
18
19
  import { deploymentSummary, matchesDeploymentFilter, validateDeploymentListFilter, } from './store/records.js';
@@ -75,34 +76,33 @@ export class ServerRegistry {
75
76
  return this.#localAssetsByPath.get(pathname);
76
77
  }
77
78
  async deploy(tenant, manifest, options = {}) {
78
- const { connectors, actor, accessMode, hostedAssets, serverVersion, deploymentSource } = options;
79
+ const { connectors, actor, accessMode, hostedAssets, serverVersion, deploymentSource, idempotencyKey, } = options;
79
80
  const { orgMembershipSources } = options;
80
81
  const { runActivation } = options;
81
82
  const safeTenant = validateTenantRef(tenant);
82
83
  const safeServerVersion = serverVersion !== undefined ? normalizeServerVersion(serverVersion) : undefined;
83
- if (accessMode !== undefined && deployAccessRequiresActor(accessMode) && actor === undefined) {
84
- return deployerRequiredError(accessMode);
85
- }
86
- let built = await this.#compileTarget(safeTenant, manifest, connectors, hostedAssets);
87
- if (!built.ok)
88
- return { ok: false, errors: built.errors };
89
- const missingCapabilities = missingCapabilityErrors(built.served.artifact.requirements?.capabilities ?? [], this.#serviceCapabilities);
90
- if (missingCapabilities.length > 0)
91
- return { ok: false, errors: missingCapabilities };
92
- const serverAuth = built.served.artifact.server.auth;
93
- if (accessMode === 'customers' && serverAuth === undefined)
94
- return serverAuthRequiredError();
95
- if (orgMembershipSources !== undefined) {
96
- if (orgMembershipSources.length === 0)
97
- return emptyMembershipSourcesError();
98
- if (accessMode !== 'org-members')
99
- return membershipSourcesRequireOrgMembersError();
100
- }
101
- const deploymentId = mintDeploymentId(built.served.artifact.server.name);
84
+ const preflight = await preflightRegistryDeploy({
85
+ options,
86
+ serviceCapabilities: this.#serviceCapabilities,
87
+ compile: () => this.#compileTarget(safeTenant, manifest, connectors, hostedAssets),
88
+ });
89
+ if (!preflight.ok)
90
+ return preflight;
91
+ const attempt = await resolveDeployAttempt({
92
+ serverName: preflight.serverName,
93
+ ...(idempotencyKey !== undefined ? { idempotencyKey } : {}),
94
+ ...(this.#store !== undefined ? { store: this.#store } : {}),
95
+ records: this.#records,
96
+ tenant: safeTenant,
97
+ manifest,
98
+ options,
99
+ });
100
+ if (attempt.replay !== undefined)
101
+ return attempt.replay;
102
+ const { deploymentId } = attempt;
102
103
  const version = Date.now();
103
- built = await this.#compileTarget(safeTenant, manifest, connectors, hostedAssets, deploymentId);
104
- if (!built.ok)
105
- return { ok: false, errors: built.errors };
104
+ const built = preflight.bindDeployment(deploymentId);
105
+ const serverAuth = built.artifact.server.auth;
106
106
  const record = {
107
107
  schemaVersion: 1,
108
108
  deploymentId,
@@ -112,7 +112,7 @@ export class ServerRegistry {
112
112
  ...(safeServerVersion !== undefined ? { serverVersion: safeServerVersion } : {}),
113
113
  deploymentVersion: version,
114
114
  active: runActivation === undefined,
115
- serverName: built.served.artifact.server.name,
115
+ serverName: built.artifact.server.name,
116
116
  createdAt: new Date().toISOString(),
117
117
  ...(actor ? { createdBySubject: actor.subject, createdByEmail: actor.email } : {}),
118
118
  ...(deploymentSource !== undefined ? { deploymentSource } : {}),
@@ -129,7 +129,7 @@ export class ServerRegistry {
129
129
  if (runActivation !== undefined) {
130
130
  const activation = this.#store?.activateDeploymentForRun !== undefined
131
131
  ? await this.#store.activateDeploymentForRun(safeTenant, deploymentId, runActivation.runId)
132
- : await this.#activateRunFallback(safeTenant, deploymentId, runActivation);
132
+ : await activateRunFallback(this.#store, this.#records, safeTenant, deploymentId, runActivation);
133
133
  if (activation === undefined) {
134
134
  return {
135
135
  ok: false,
@@ -158,7 +158,7 @@ export class ServerRegistry {
158
158
  this.#records.set(previous.deploymentId, { ...previous, active: false });
159
159
  }
160
160
  }
161
- this.#servers.set(deploymentId, servedTargetFor(active, built.served, this.#customerVerifierFactory));
161
+ this.#servers.set(deploymentId, servedTargetFor(active, built, this.#customerVerifierFactory));
162
162
  this.#activeTenants.set(tenantDeploymentKey(safeTenant, safeServerVersion), deploymentId);
163
163
  this.#activeTenants.delete(tenantKey(safeTenant));
164
164
  return {
@@ -169,13 +169,15 @@ export class ServerRegistry {
169
169
  ...(accessMode !== undefined ? { accessMode } : {}),
170
170
  };
171
171
  }
172
- async #activateRunFallback(tenant, deploymentId, runActivation) {
173
- if (!(await runActivation.isNewestAcceptedRun()))
174
- return { ok: false, reason: 'superseded' };
175
- const result = this.#store
176
- ? await this.#store.activateDeployment(tenant, deploymentId)
177
- : activateInMemory(this.#records, tenant, deploymentId);
178
- return result !== undefined ? { ok: true, result } : undefined;
172
+ /** Read-only deploy validation used by the CLI before config writes, asset upload, or persistence. */
173
+ async preflightDeploy(tenant, manifest, options = {}) {
174
+ const safeTenant = validateTenantRef(tenant);
175
+ const result = await preflightRegistryDeploy({
176
+ options,
177
+ serviceCapabilities: this.#serviceCapabilities,
178
+ compile: () => this.#compileTarget(safeTenant, manifest, options.connectors, options.hostedAssets),
179
+ });
180
+ return result.ok ? { ok: true } : result;
179
181
  }
180
182
  async recover() {
181
183
  if (!this.#store)
@@ -245,14 +247,14 @@ export class ServerRegistry {
245
247
  app: tenant.app,
246
248
  env: tenant.env,
247
249
  });
248
- const resolvedSecrets = await this.#configStore.resolveConfigValues('secret', scope);
249
- const missing = missingSecretErrors(secretBindings, resolvedSecrets);
250
- if (missing.length > 0)
251
- return { ok: false, errors: missing };
252
- const resolvedVariables = await this.#configStore.resolveConfigValues('variable', scope);
253
- const missingVariables = missingVariableErrors(variableBindings, resolvedVariables);
254
- if (missingVariables.length > 0)
255
- return { ok: false, errors: missingVariables };
250
+ const [resolvedSecrets, resolvedVariables] = await Promise.all([
251
+ this.#configStore.resolveConfigValues('secret', scope),
252
+ this.#configStore.resolveConfigValues('variable', scope),
253
+ ]);
254
+ const connectorConfigErrors = [
255
+ ...missingSecretErrors(secretBindings, resolvedSecrets),
256
+ ...missingVariableErrors(variableBindings, resolvedVariables),
257
+ ];
256
258
  const compiled = compile(normalizePersistedManifestForCompile(manifest), {
257
259
  catalog: new InMemoryCatalog([...this.#platformCatalog, ...catalogConnectors]),
258
260
  ...(hostedAssets !== undefined && hostedAssets.length > 0
@@ -261,43 +263,44 @@ export class ServerRegistry {
261
263
  ? { localAssets: this.#localAssetOptions }
262
264
  : {}),
263
265
  });
264
- if (!compiled.ok)
265
- return { ok: false, errors: compiled.errors };
266
+ if (!compiled.ok) {
267
+ return { ok: false, errors: [...connectorConfigErrors, ...compiled.errors] };
268
+ }
266
269
  const missingServerConfig = missingServerConfigErrors(compiled.artifact, resolvedSecrets, resolvedVariables);
267
- if (missingServerConfig.length > 0)
268
- return { ok: false, errors: missingServerConfig };
270
+ const configErrors = [...connectorConfigErrors, ...missingServerConfig];
271
+ if (configErrors.length > 0)
272
+ return { ok: false, errors: configErrors };
269
273
  if (this.#localAssetOptions !== undefined) {
270
274
  this.#localAssetsByPath.clear();
271
275
  for (const asset of compiled.localAssets ?? []) {
272
276
  this.#localAssetsByPath.set(new URL(asset.publicUrl).pathname, asset);
273
277
  }
274
278
  }
275
- const broker = new ManagedConfigBroker(secretBindings, this.#configStore, scope, {
276
- artifact: compiled.artifact,
277
- ...(this.#delegatedCredentialStore !== undefined
278
- ? { delegatedCredentialStore: this.#delegatedCredentialStore }
279
- : {}),
280
- ...(compiled.artifact.server.auth !== undefined
281
- ? { serverAuth: compiled.artifact.server.auth }
282
- : {}),
283
- ...(this.#sealCustomerCredential !== undefined
284
- ? { sealCustomerCredential: this.#sealCustomerCredential }
285
- : {}),
286
- ...(this.#openCustomerCredential !== undefined
287
- ? { openCustomerCredential: this.#openCustomerCredential }
288
- : {}),
289
- ...deploymentCredentialBrokerOptions({
290
- delegatedExchange: this.#delegatedExchange,
291
- externalCredentialExchange: this.#externalCredentialExchange,
292
- googleWorkloadIdentity: this.#googleWorkloadIdentity,
293
- tenant: `${tenant.org}/${tenant.app}/${tenant.env}`,
294
- deploymentId,
295
- }),
296
- });
297
- const stateConnector = createDeploymentStateConnector(compiled.artifact.server.state, deploymentId, this.#stateHandleStoreFactory);
298
- return {
299
- ok: true,
300
- served: {
279
+ const bindDeployment = (boundDeploymentId) => {
280
+ const broker = new ManagedConfigBroker(secretBindings, this.#configStore, scope, {
281
+ artifact: compiled.artifact,
282
+ ...(this.#delegatedCredentialStore !== undefined
283
+ ? { delegatedCredentialStore: this.#delegatedCredentialStore }
284
+ : {}),
285
+ ...(compiled.artifact.server.auth !== undefined
286
+ ? { serverAuth: compiled.artifact.server.auth }
287
+ : {}),
288
+ ...(this.#sealCustomerCredential !== undefined
289
+ ? { sealCustomerCredential: this.#sealCustomerCredential }
290
+ : {}),
291
+ ...(this.#openCustomerCredential !== undefined
292
+ ? { openCustomerCredential: this.#openCustomerCredential }
293
+ : {}),
294
+ ...deploymentCredentialBrokerOptions({
295
+ delegatedExchange: this.#delegatedExchange,
296
+ externalCredentialExchange: this.#externalCredentialExchange,
297
+ googleWorkloadIdentity: this.#googleWorkloadIdentity,
298
+ tenant: `${tenant.org}/${tenant.app}/${tenant.env}`,
299
+ deploymentId: boundDeploymentId,
300
+ }),
301
+ });
302
+ const stateConnector = createDeploymentStateConnector(compiled.artifact.server.state, boundDeploymentId, this.#stateHandleStoreFactory);
303
+ return {
301
304
  artifact: compiled.artifact,
302
305
  deps: {
303
306
  connectors: new InMemoryConnectorRegistry([
@@ -307,12 +310,13 @@ export class ServerRegistry {
307
310
  ]),
308
311
  broker,
309
312
  tenantId: `${tenant.org}/${tenant.app}/${tenant.env}`,
310
- ...(deploymentId !== undefined ? { deploymentId } : {}),
313
+ ...(boundDeploymentId !== undefined ? { deploymentId: boundDeploymentId } : {}),
311
314
  env: () => this.#configStore.resolveConfigValues('variable', scope),
312
315
  ...(this.#policyGate !== undefined ? { policy: this.#policyGate } : {}),
313
316
  },
314
- },
317
+ };
315
318
  };
319
+ return { ok: true, served: bindDeployment(deploymentId), bindDeployment };
316
320
  }
317
321
  #compilePersistedRecord(record) {
318
322
  return this.#compileTarget(recordTenant(record), record.manifest, record.connectors === undefined