@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.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth-live-doctor.js +1 -1
- package/dist/commands/auth-live-doctor.js.map +1 -1
- package/dist/commands/catalog-data-hosted-deployment.d.ts.map +1 -1
- package/dist/commands/catalog-data-hosted-deployment.js +2 -2
- package/dist/commands/catalog-data-hosted-deployment.js.map +1 -1
- package/dist/commands/catalog-data-local-authoring.d.ts.map +1 -1
- package/dist/commands/catalog-data-local-authoring.js +27 -0
- package/dist/commands/catalog-data-local-authoring.js.map +1 -1
- package/dist/commands/deploy-dotenv-import.d.ts +28 -0
- package/dist/commands/deploy-dotenv-import.d.ts.map +1 -0
- package/dist/commands/deploy-dotenv-import.js +50 -0
- package/dist/commands/deploy-dotenv-import.js.map +1 -0
- package/dist/commands/deploy-fire-progress.d.ts +28 -0
- package/dist/commands/deploy-fire-progress.d.ts.map +1 -0
- package/dist/commands/deploy-fire-progress.js +64 -0
- package/dist/commands/deploy-fire-progress.js.map +1 -0
- package/dist/commands/deploy-first-flow.d.ts +72 -0
- package/dist/commands/deploy-first-flow.d.ts.map +1 -0
- package/dist/commands/deploy-first-flow.js +315 -0
- package/dist/commands/deploy-first-flow.js.map +1 -0
- package/dist/commands/deploy-ops.d.ts +1 -27
- package/dist/commands/deploy-ops.d.ts.map +1 -1
- package/dist/commands/deploy-ops.js +122 -145
- package/dist/commands/deploy-ops.js.map +1 -1
- package/dist/commands/deploy-output.d.ts +7 -1
- package/dist/commands/deploy-output.d.ts.map +1 -1
- package/dist/commands/deploy-output.js +21 -12
- package/dist/commands/deploy-output.js.map +1 -1
- package/dist/commands/deploy-preflight.d.ts +35 -0
- package/dist/commands/deploy-preflight.d.ts.map +1 -0
- package/dist/commands/deploy-preflight.js +74 -0
- package/dist/commands/deploy-preflight.js.map +1 -0
- package/dist/commands/deploy-resume.d.ts +23 -0
- package/dist/commands/deploy-resume.d.ts.map +1 -0
- package/dist/commands/deploy-resume.js +79 -0
- package/dist/commands/deploy-resume.js.map +1 -0
- package/dist/commands/design.d.ts +7 -0
- package/dist/commands/design.d.ts.map +1 -0
- package/dist/commands/design.js +95 -0
- package/dist/commands/design.js.map +1 -0
- package/dist/commands/devtools.d.ts.map +1 -1
- package/dist/commands/devtools.js +5 -1
- package/dist/commands/devtools.js.map +1 -1
- package/dist/deploy.d.ts +2 -0
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +3 -0
- package/dist/deploy.js.map +1 -1
- package/dist/dev.d.ts +2 -0
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +8 -2
- package/dist/dev.js.map +1 -1
- package/dist/devtools-design-brief.d.ts +10 -0
- package/dist/devtools-design-brief.d.ts.map +1 -0
- package/dist/devtools-design-brief.js +121 -0
- package/dist/devtools-design-brief.js.map +1 -0
- package/dist/devtools-design-contract.d.ts +74 -0
- package/dist/devtools-design-contract.d.ts.map +1 -0
- package/dist/devtools-design-contract.js +306 -0
- package/dist/devtools-design-contract.js.map +1 -0
- package/dist/devtools-design-element.d.ts +6 -0
- package/dist/devtools-design-element.d.ts.map +1 -0
- package/dist/devtools-design-element.js +233 -0
- package/dist/devtools-design-element.js.map +1 -0
- package/dist/devtools-design-preview.d.ts +6 -0
- package/dist/devtools-design-preview.d.ts.map +1 -0
- package/dist/devtools-design-preview.js +438 -0
- package/dist/devtools-design-preview.js.map +1 -0
- package/dist/devtools-design-routes.d.ts +14 -0
- package/dist/devtools-design-routes.d.ts.map +1 -0
- package/dist/devtools-design-routes.js +197 -0
- package/dist/devtools-design-routes.js.map +1 -0
- package/dist/devtools-design-store.d.ts +16 -0
- package/dist/devtools-design-store.d.ts.map +1 -0
- package/dist/devtools-design-store.js +209 -0
- package/dist/devtools-design-store.js.map +1 -0
- package/dist/devtools-design-styles.d.ts +3 -0
- package/dist/devtools-design-styles.d.ts.map +1 -0
- package/dist/devtools-design-styles.js +509 -0
- package/dist/devtools-design-styles.js.map +1 -0
- package/dist/devtools-design.d.ts +1 -3
- package/dist/devtools-design.d.ts.map +1 -1
- package/dist/devtools-design.js +449 -56
- package/dist/devtools-design.js.map +1 -1
- package/dist/devtools-harness.d.ts.map +1 -1
- package/dist/devtools-harness.js +13 -10
- package/dist/devtools-harness.js.map +1 -1
- package/dist/devtools-preview.d.ts +3 -0
- package/dist/devtools-preview.d.ts.map +1 -1
- package/dist/devtools-preview.js +3 -0
- package/dist/devtools-preview.js.map +1 -1
- package/dist/devtools-responsive-styles.d.ts.map +1 -1
- package/dist/devtools-responsive-styles.js +15 -0
- package/dist/devtools-responsive-styles.js.map +1 -1
- package/dist/devtools-styles.js +1 -1
- package/dist/devtools-styles.js.map +1 -1
- package/dist/fire.d.ts +2 -2
- package/dist/fire.d.ts.map +1 -1
- package/dist/fire.js +6 -6
- package/dist/fire.js.map +1 -1
- package/dist/first-run.d.ts.map +1 -1
- package/dist/first-run.js +39 -33
- package/dist/first-run.js.map +1 -1
- package/dist/local-config.d.ts +2 -1
- package/dist/local-config.d.ts.map +1 -1
- package/dist/local-config.js +29 -2
- package/dist/local-config.js.map +1 -1
- package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -1
- package/dist/plugin-mode/build-readiness-server.js +54 -4
- package/dist/plugin-mode/build-readiness-server.js.map +1 -1
- package/dist/preview-session.d.ts +5 -0
- package/dist/preview-session.d.ts.map +1 -1
- package/dist/preview-session.js +1 -0
- package/dist/preview-session.js.map +1 -1
- package/dist/project-dotenv.d.ts +15 -0
- package/dist/project-dotenv.d.ts.map +1 -0
- package/dist/project-dotenv.js +135 -0
- package/dist/project-dotenv.js.map +1 -0
- package/dist/project-scaffold-templates.d.ts.map +1 -1
- package/dist/project-scaffold-templates.js +6 -3
- package/dist/project-scaffold-templates.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +4 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/hook-notes.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -5
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js +12 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-design-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +3 -6
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts +3 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.js +16 -4
- package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts +0 -2
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js +0 -76
- package/node_modules/@noodle-borg/compiler/dist/widget-ui-style.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -8
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +8 -237
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts +26 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-response.js +249 -0
- package/node_modules/@noodle-borg/connector-http/dist/http-response.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +4 -4
- package/node_modules/@noodle-borg/service/dist/assistant-bindings.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/customer-verifier.js +8 -5
- package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts +41 -0
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js +93 -0
- package/node_modules/@noodle-borg/service/dist/registry-deploy-transaction.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-targets.js +10 -4
- package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/registry-types.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry.d.ts +4 -2
- package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry.js +79 -75
- package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +16 -0
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts +21 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js +25 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-dispatch.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts +16 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js +20 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-idempotency.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts +12 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +132 -0
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +3 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +15 -12
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +82 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js +37 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts +0 -2
- package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.d.ts.map +0 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-tailwind-tokens.js +0 -22
- 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,
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
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":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,aAAa,CAAC,EACnB;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,GAChF,SAAS,CAAC;CACf;AAED,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GACpB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;
|
|
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":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EAIrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,KAAK,SAAS,EAA6B,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,KAAK,EAAE,UAAU,EAAsB,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAQhG,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;
|
|
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 {
|
|
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,
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const deploymentId =
|
|
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 =
|
|
104
|
-
|
|
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.
|
|
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.#
|
|
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
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const result =
|
|
176
|
-
|
|
177
|
-
:
|
|
178
|
-
|
|
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
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
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
|
-
|
|
268
|
-
|
|
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
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
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
|
-
...(
|
|
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
|