@noodleseed/one 0.8.0 → 0.11.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 +16 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/archive-ops.d.ts +3 -0
- package/dist/commands/archive-ops.d.ts.map +1 -0
- package/dist/commands/archive-ops.js +168 -0
- package/dist/commands/archive-ops.js.map +1 -0
- package/dist/commands/author-loop.d.ts.map +1 -1
- package/dist/commands/author-loop.js +78 -3
- package/dist/commands/author-loop.js.map +1 -1
- package/dist/commands/deploy-ops.d.ts +1 -30
- package/dist/commands/deploy-ops.d.ts.map +1 -1
- package/dist/commands/deploy-ops.js +55 -87
- package/dist/commands/deploy-ops.js.map +1 -1
- package/dist/commands/deploy-output.d.ts +31 -0
- package/dist/commands/deploy-output.d.ts.map +1 -0
- package/dist/commands/deploy-output.js +86 -0
- package/dist/commands/deploy-output.js.map +1 -0
- package/dist/commands/deploy-version-resolution.d.ts +20 -0
- package/dist/commands/deploy-version-resolution.d.ts.map +1 -0
- package/dist/commands/deploy-version-resolution.js +77 -0
- package/dist/commands/deploy-version-resolution.js.map +1 -0
- package/dist/commands/docs-mcp.d.ts +32 -0
- package/dist/commands/docs-mcp.d.ts.map +1 -0
- package/dist/commands/docs-mcp.js +66 -0
- package/dist/commands/docs-mcp.js.map +1 -0
- package/dist/commands/mcp-apps.d.ts.map +1 -1
- package/dist/commands/mcp-apps.js +38 -37
- package/dist/commands/mcp-apps.js.map +1 -1
- package/dist/commands/org-admin.d.ts +17 -0
- package/dist/commands/org-admin.d.ts.map +1 -0
- package/dist/commands/org-admin.js +241 -0
- package/dist/commands/org-admin.js.map +1 -0
- package/dist/commands/policy-ops.d.ts.map +1 -1
- package/dist/commands/policy-ops.js +94 -1
- package/dist/commands/policy-ops.js.map +1 -1
- package/dist/commands/project-setup.d.ts.map +1 -1
- package/dist/commands/project-setup.js +29 -0
- package/dist/commands/project-setup.js.map +1 -1
- package/dist/commands/session.d.ts +1 -15
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +15 -170
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/shared.d.ts +1 -0
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +21 -9
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/update-ops.d.ts +29 -0
- package/dist/commands/update-ops.d.ts.map +1 -0
- package/dist/commands/update-ops.js +315 -0
- package/dist/commands/update-ops.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/deploy-version.d.ts +3 -0
- package/dist/deploy-version.d.ts.map +1 -0
- package/dist/deploy-version.js +28 -0
- package/dist/deploy-version.js.map +1 -0
- package/dist/deploy.d.ts +5 -1
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +27 -3
- package/dist/deploy.js.map +1 -1
- package/dist/devtools-chat.d.ts +76 -0
- package/dist/devtools-chat.d.ts.map +1 -0
- package/dist/devtools-chat.js +114 -0
- package/dist/devtools-chat.js.map +1 -0
- package/dist/devtools-env.d.ts +16 -0
- package/dist/devtools-env.d.ts.map +1 -0
- package/dist/devtools-env.js +71 -0
- package/dist/devtools-env.js.map +1 -0
- package/dist/devtools-harness.d.ts +28 -0
- package/dist/devtools-harness.d.ts.map +1 -0
- package/dist/devtools-harness.js +387 -0
- package/dist/devtools-harness.js.map +1 -0
- package/dist/devtools-preview.d.ts +42 -0
- package/dist/devtools-preview.d.ts.map +1 -0
- package/dist/devtools-preview.js +394 -0
- package/dist/devtools-preview.js.map +1 -0
- package/dist/preview-session.d.ts +46 -0
- package/dist/preview-session.d.ts.map +1 -0
- package/dist/preview-session.js +132 -0
- package/dist/preview-session.js.map +1 -0
- package/dist/project.d.ts +2 -0
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +2 -0
- package/dist/project.js.map +1 -1
- package/dist/react-widget-build.js +3 -1
- package/dist/react-widget-build.js.map +1 -1
- package/dist/update-binary.d.ts +38 -0
- package/dist/update-binary.d.ts.map +1 -0
- package/dist/update-binary.js +144 -0
- package/dist/update-binary.js.map +1 -0
- package/dist/update-check.d.ts +40 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +212 -0
- package/dist/update-check.js.map +1 -0
- package/dist/update-render.d.ts +17 -0
- package/dist/update-render.d.ts.map +1 -0
- package/dist/update-render.js +39 -0
- package/dist/update-render.js.map +1 -0
- package/dist/update.d.ts +10 -9
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +21 -89
- package/dist/update.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 +13 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.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 +2 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.d.ts +23 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.d.ts.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.js +41 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.js.map +1 -0
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts +2 -6
- package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js +10 -32
- package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +16 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js +6 -0
- package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -1
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +7 -0
- 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 +14 -5
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
- package/node_modules/@noodle-borg/module/dist/contract.d.ts +12 -0
- package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
- package/node_modules/@noodle-borg/module/dist/contract.js +41 -0
- package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.d.ts +43 -0
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.js +122 -0
- package/node_modules/@noodle-borg/service/dist/archive-sweeper.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +20 -2
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +37 -2
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/commercial-plans.d.ts +11 -0
- package/node_modules/@noodle-borg/service/dist/commercial-plans.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/commercial-plans.js +119 -0
- package/node_modules/@noodle-borg/service/dist/commercial-plans.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.js +29 -0
- package/node_modules/@noodle-borg/service/dist/deployment-versioning.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts +3 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +2 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/main.js +7 -0
- package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.js +2 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts +30 -0
- package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/branding.js +224 -0
- package/node_modules/@noodle-borg/service/dist/oauth/branding.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts +0 -6
- package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent.js +23 -34
- package/node_modules/@noodle-borg/service/dist/oauth/consent.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.js +13 -28
- package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts +9 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-helpers.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-helpers.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-helpers.js +5 -3
- package/node_modules/@noodle-borg/service/dist/registry-helpers.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-state.js +119 -0
- package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +1 -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 +4 -0
- package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +59 -0
- package/node_modules/@noodle-borg/service/dist/registry-types.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry-types.js +2 -0
- package/node_modules/@noodle-borg/service/dist/registry-types.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/registry.d.ts +14 -70
- package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/registry.js +137 -119
- package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/access-mode.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/routes/access-mode.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/access-mode.js +15 -0
- package/node_modules/@noodle-borg/service/dist/routes/access-mode.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts +16 -0
- package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/archive.js +83 -0
- package/node_modules/@noodle-borg/service/dist/routes/archive.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +2 -19
- 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 +52 -281
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js +88 -0
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts +40 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +353 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +15 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +47 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts +20 -0
- package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/plans.js +159 -0
- package/node_modules/@noodle-borg/service/dist/routes/plans.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/policies.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/policies.js +7 -0
- package/node_modules/@noodle-borg/service/dist/routes/policies.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js +23 -7
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.d.ts +6 -0
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +72 -32
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/server-auth-bindings.d.ts +7 -0
- package/node_modules/@noodle-borg/service/dist/server-auth-bindings.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/server-auth-bindings.js +14 -0
- package/node_modules/@noodle-borg/service/dist/server-auth-bindings.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +139 -7
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/control-plane.js +38 -0
- package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +25 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.js +163 -0
- package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +16 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts +60 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +101 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +21 -2
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +23 -8
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.js +112 -128
- package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/records.d.ts +35 -0
- package/node_modules/@noodle-borg/service/dist/store/records.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/records.js +87 -0
- package/node_modules/@noodle-borg/service/dist/store/records.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +19 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.js +61 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts +75 -45
- package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store.js +61 -224
- package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.js +37 -0
- package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { HostedPackagedAsset } from '@noodle-borg/compiler';
|
|
2
2
|
import type { SealedSecret } from '@noodle-borg/runtime';
|
|
3
3
|
import type { AccessMode } from '@noodle-borg/transport-http';
|
|
4
|
+
export { JsonFileArtifactStore } from './store/json-file.js';
|
|
5
|
+
export { CONFIG_NAME_PATTERN, DEPLOYMENT_ID_PATTERN, DOMAIN_PATTERN, SLUG_PATTERN, validateConfigName, validateConfigScope, validateDomain, validateOrgRole, validateSignupAllowlistKind, validateSlug, validateTenantRef, } from './store/validate.js';
|
|
4
6
|
/**
|
|
5
7
|
* Secret values at rest. The compiled runtime keeps plaintext tokens in memory (the broker), but the
|
|
6
8
|
* *persisted* form is a tagged envelope. `aes-256-gcm` (Slice 26, ADR 0028) holds an AES-256-GCM
|
|
@@ -64,6 +66,7 @@ export interface DeployRecord {
|
|
|
64
66
|
readonly orgSlug: string;
|
|
65
67
|
readonly appSlug: string;
|
|
66
68
|
readonly environment: string;
|
|
69
|
+
readonly serverVersion?: string;
|
|
67
70
|
readonly deploymentVersion: number;
|
|
68
71
|
readonly active: boolean;
|
|
69
72
|
readonly serverName: string;
|
|
@@ -81,6 +84,11 @@ export interface DeployRecord {
|
|
|
81
84
|
readonly connectors?: string;
|
|
82
85
|
readonly hostedAssets?: readonly HostedPackagedAsset[];
|
|
83
86
|
readonly secrets: SecretEnvelope;
|
|
87
|
+
/**
|
|
88
|
+
* App soft-delete stamp (ADR 0117): ISO-8601 time the whole app was archived. Archived records are
|
|
89
|
+
* never served or listed by default, and the sweeper hard-deletes them after the retention window.
|
|
90
|
+
*/
|
|
91
|
+
readonly archivedAt?: string;
|
|
84
92
|
}
|
|
85
93
|
export interface TenantOidcAuthConfig {
|
|
86
94
|
readonly kind?: 'oidc' | undefined;
|
|
@@ -126,17 +134,39 @@ export interface DeploymentSummary {
|
|
|
126
134
|
readonly orgSlug: string;
|
|
127
135
|
readonly appSlug: string;
|
|
128
136
|
readonly environment: string;
|
|
137
|
+
readonly serverVersion?: string;
|
|
129
138
|
readonly active: boolean;
|
|
130
139
|
readonly serverName: string;
|
|
131
140
|
readonly createdAt: string;
|
|
132
141
|
readonly createdByEmail?: string;
|
|
133
142
|
readonly accessMode: AccessMode;
|
|
143
|
+
/** Present iff the record is archived (ADR 0117); surfaced only on `includeArchived` listings. */
|
|
144
|
+
readonly archivedAt?: string;
|
|
145
|
+
}
|
|
146
|
+
/** Filter for {@link ArtifactStore.listDeployments}. Archived records are excluded unless opted in. */
|
|
147
|
+
export interface DeploymentListFilter {
|
|
148
|
+
readonly org: string;
|
|
149
|
+
readonly app?: string;
|
|
150
|
+
readonly env?: string;
|
|
151
|
+
readonly includeArchived?: boolean;
|
|
152
|
+
}
|
|
153
|
+
/** Outcome of {@link ArtifactStore.archiveApp} (ADR 0117 §5 idempotency semantics). */
|
|
154
|
+
export interface AppArchiveResult {
|
|
155
|
+
/** The stamp that governs retention — the original one when the app was already archived. */
|
|
156
|
+
readonly archivedAt: string;
|
|
157
|
+
readonly archivedDeployments: number;
|
|
158
|
+
readonly alreadyArchived: boolean;
|
|
159
|
+
}
|
|
160
|
+
/** Outcome of {@link ArtifactStore.restoreApp}. `restoredDeployments` is 0 for a no-op restore. */
|
|
161
|
+
export interface AppRestoreResult {
|
|
162
|
+
readonly restoredDeployments: number;
|
|
134
163
|
}
|
|
135
164
|
export interface DeploymentStatus {
|
|
136
165
|
readonly target: TenantRef;
|
|
137
166
|
readonly deployment: {
|
|
138
167
|
readonly deploymentId: string;
|
|
139
168
|
readonly endpointUrl: string;
|
|
169
|
+
readonly serverVersion?: string;
|
|
140
170
|
readonly active: boolean;
|
|
141
171
|
readonly serverName: string;
|
|
142
172
|
readonly createdAt: string;
|
|
@@ -200,6 +230,11 @@ export interface ControlPlaneStore {
|
|
|
200
230
|
slug: string;
|
|
201
231
|
displayName?: string;
|
|
202
232
|
}): Promise<OrgRecord>;
|
|
233
|
+
/** Update an existing org's display name; `undefined` when the org does not exist (never creates). */
|
|
234
|
+
updateOrg(input: {
|
|
235
|
+
slug: string;
|
|
236
|
+
displayName: string;
|
|
237
|
+
}): Promise<OrgRecord | undefined>;
|
|
203
238
|
listOrgs(): Promise<readonly OrgRecord[]>;
|
|
204
239
|
listOrgsForSubject(subject: string): Promise<readonly OrgRecord[]>;
|
|
205
240
|
addOrgMember(input: {
|
|
@@ -212,6 +247,12 @@ export interface ControlPlaneStore {
|
|
|
212
247
|
org: string;
|
|
213
248
|
subject: string;
|
|
214
249
|
}): Promise<boolean>;
|
|
250
|
+
/** Change an existing member's role; `undefined` when the member does not exist (never adds). */
|
|
251
|
+
updateOrgMemberRole(input: {
|
|
252
|
+
org: string;
|
|
253
|
+
subject: string;
|
|
254
|
+
role: OrgRole;
|
|
255
|
+
}): Promise<OrgMemberRecord | undefined>;
|
|
215
256
|
getOrgMember(input: {
|
|
216
257
|
org: string;
|
|
217
258
|
subject: string;
|
|
@@ -262,6 +303,19 @@ export interface ControlPlaneStore {
|
|
|
262
303
|
consumeOrgInvitation(input: {
|
|
263
304
|
tokenHash: string;
|
|
264
305
|
}): Promise<OrgInvitationRecord | undefined>;
|
|
306
|
+
/**
|
|
307
|
+
* Every invitation record for one org (pending, accepted, and expired), newest-first. Callers derive
|
|
308
|
+
* status from `acceptedAt`/`expiresAt`; the raw `tokenHash` must never leave the control plane.
|
|
309
|
+
*/
|
|
310
|
+
listOrgInvitations(org: string): Promise<readonly OrgInvitationRecord[]>;
|
|
311
|
+
/**
|
|
312
|
+
* Delete every unaccepted invitation for one email (case-insensitive) in one org, returning how many
|
|
313
|
+
* were revoked. Accepted invitations are membership history and stay in place.
|
|
314
|
+
*/
|
|
315
|
+
revokeOrgInvitation(input: {
|
|
316
|
+
org: string;
|
|
317
|
+
email: string;
|
|
318
|
+
}): Promise<number>;
|
|
265
319
|
}
|
|
266
320
|
/**
|
|
267
321
|
* Durable storage for deployed-server records. `append` writes (or replaces) one server's record;
|
|
@@ -279,13 +333,21 @@ export interface ArtifactStore {
|
|
|
279
333
|
*/
|
|
280
334
|
get(deploymentId: string): Promise<DeployRecord | undefined>;
|
|
281
335
|
getActiveByTenant(ref: TenantRef): Promise<DeployRecord | undefined>;
|
|
336
|
+
getActiveByTenantVersion(ref: TenantRef, serverVersion: string): Promise<DeployRecord | undefined>;
|
|
282
337
|
activateDeployment(ref: TenantRef, deploymentId: string): Promise<DeploymentActivationResult | undefined>;
|
|
283
|
-
updateActiveAccess(ref: TenantRef, accessMode: AccessMode): Promise<DeployRecord | undefined>;
|
|
284
|
-
listDeployments(filter:
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
338
|
+
updateActiveAccess(ref: TenantRef, accessMode: AccessMode, serverVersion?: string): Promise<DeployRecord | undefined>;
|
|
339
|
+
listDeployments(filter: DeploymentListFilter): Promise<readonly DeploymentSummary[]>;
|
|
340
|
+
/**
|
|
341
|
+
* App soft delete (ADR 0117). `getAppArchivedAt` reports the app's archived stamp (defined iff the
|
|
342
|
+
* app has records and every record is stamped). `archiveApp` stamps every record for the app (all
|
|
343
|
+
* environments/versions); `restoreApp` clears the stamps; both resolve `undefined` for an app with
|
|
344
|
+
* no records. `sweepArchived` hard-deletes records archived strictly before `before` and returns
|
|
345
|
+
* them so the caller can reclaim associated config and emit audit events.
|
|
346
|
+
*/
|
|
347
|
+
getAppArchivedAt(org: string, app: string): Promise<string | undefined>;
|
|
348
|
+
archiveApp(org: string, app: string, at: string): Promise<AppArchiveResult | undefined>;
|
|
349
|
+
restoreApp(org: string, app: string): Promise<AppRestoreResult | undefined>;
|
|
350
|
+
sweepArchived(before: string): Promise<readonly DeployRecord[]>;
|
|
289
351
|
}
|
|
290
352
|
/** In-memory store: keeps records in a Map. Used by tests and as an explicit, non-persistent option. */
|
|
291
353
|
export declare class InMemoryArtifactStore implements ArtifactStore {
|
|
@@ -294,13 +356,14 @@ export declare class InMemoryArtifactStore implements ArtifactStore {
|
|
|
294
356
|
loadAll(): Promise<readonly DeployRecord[]>;
|
|
295
357
|
get(deploymentId: string): Promise<DeployRecord | undefined>;
|
|
296
358
|
getActiveByTenant(ref: TenantRef): Promise<DeployRecord | undefined>;
|
|
359
|
+
getActiveByTenantVersion(ref: TenantRef, serverVersion: string): Promise<DeployRecord | undefined>;
|
|
297
360
|
activateDeployment(ref: TenantRef, deploymentId: string): Promise<DeploymentActivationResult | undefined>;
|
|
298
|
-
updateActiveAccess(ref: TenantRef, accessMode: AccessMode): Promise<DeployRecord | undefined>;
|
|
299
|
-
listDeployments(filter:
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
361
|
+
updateActiveAccess(ref: TenantRef, accessMode: AccessMode, serverVersion?: string): Promise<DeployRecord | undefined>;
|
|
362
|
+
listDeployments(filter: DeploymentListFilter): Promise<readonly DeploymentSummary[]>;
|
|
363
|
+
getAppArchivedAt(org: string, app: string): Promise<string | undefined>;
|
|
364
|
+
archiveApp(org: string, app: string, at: string): Promise<AppArchiveResult | undefined>;
|
|
365
|
+
restoreApp(org: string, app: string): Promise<AppRestoreResult | undefined>;
|
|
366
|
+
sweepArchived(before: string): Promise<readonly DeployRecord[]>;
|
|
304
367
|
}
|
|
305
368
|
export declare class InMemoryConfigStore implements ConfigStore {
|
|
306
369
|
#private;
|
|
@@ -316,43 +379,10 @@ export declare class InMemoryConfigStore implements ConfigStore {
|
|
|
316
379
|
listConfigValues(kind: ManagedConfigKind, scope: ConfigScope): Promise<readonly ConfigValueMetadata[]>;
|
|
317
380
|
resolveConfigValues(kind: ManagedConfigKind, scope: ConfigScope): Promise<Record<string, string>>;
|
|
318
381
|
}
|
|
319
|
-
/**
|
|
320
|
-
* JSON-file store: one file per deployment at `<dataDir>/deployments/<deploymentId>.json`, written atomically
|
|
321
|
-
* (write a temp file, then `rename` over the target — no partial file is ever read). `deploymentId` is a
|
|
322
|
-
* slug + random hex suffix (`mintDeploymentId`), so it is a safe, collision-free filename. No new
|
|
323
|
-
* dependency — `node:fs/promises` only.
|
|
324
|
-
*/
|
|
325
|
-
export declare class JsonFileArtifactStore implements ArtifactStore {
|
|
326
|
-
#private;
|
|
327
|
-
constructor(dataDir: string);
|
|
328
|
-
append(record: DeployRecord): Promise<void>;
|
|
329
|
-
get(deploymentId: string): Promise<DeployRecord | undefined>;
|
|
330
|
-
getActiveByTenant(ref: TenantRef): Promise<DeployRecord | undefined>;
|
|
331
|
-
updateActiveAccess(ref: TenantRef, accessMode: AccessMode): Promise<DeployRecord | undefined>;
|
|
332
|
-
activateDeployment(ref: TenantRef, deploymentId: string): Promise<DeploymentActivationResult | undefined>;
|
|
333
|
-
loadAll(): Promise<readonly DeployRecord[]>;
|
|
334
|
-
listDeployments(filter: {
|
|
335
|
-
org: string;
|
|
336
|
-
app?: string;
|
|
337
|
-
env?: string;
|
|
338
|
-
}): Promise<readonly DeploymentSummary[]>;
|
|
339
|
-
}
|
|
340
|
-
/** Minted deployment id shape (`mintDeploymentId`): a slug plus a short hex suffix; safe as a filename. */
|
|
341
|
-
export declare const DEPLOYMENT_ID_PATTERN: RegExp;
|
|
342
|
-
export declare const SLUG_PATTERN: RegExp;
|
|
343
|
-
export declare const CONFIG_NAME_PATTERN: RegExp;
|
|
344
|
-
export declare const DOMAIN_PATTERN: RegExp;
|
|
345
|
-
export declare function validateSlug(kind: 'org' | 'app' | 'env', value: string): string;
|
|
346
|
-
export declare function validateTenantRef(ref: TenantRef): TenantRef;
|
|
347
|
-
export declare function validateConfigName(name: string): string;
|
|
348
|
-
export declare function validateDomain(value: string): string;
|
|
349
|
-
export declare function validateSignupAllowlistKind(value: string): SignupAllowlistKind;
|
|
350
|
-
export declare function validateConfigScope(scope: ConfigScope): ConfigScope;
|
|
351
382
|
export declare function resolveConfigScope(input: {
|
|
352
383
|
readonly org: string;
|
|
353
384
|
readonly app?: string;
|
|
354
385
|
readonly env?: string;
|
|
355
386
|
}): ConfigScope;
|
|
356
387
|
export declare function scopeChain(scope: ConfigScope): readonly ConfigScope[];
|
|
357
|
-
export declare function validateOrgRole(role: string): OrgRole;
|
|
358
388
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { normalizeServerVersion } from '@noodle-borg/module';
|
|
2
|
+
import { defaultActiveRecord, sameDeploymentScope, sameTenantRecord, } from './deployment-versioning.js';
|
|
3
|
+
import { appArchivedAt, deploymentSummary, matchesDeploymentFilter, planAppArchive, planAppRestore, validateDeploymentListFilter, withoutArchiveStamp, } from './store/records.js';
|
|
4
|
+
import { validateConfigName, validateConfigScope, validateSlug, validateTenantRef, } from './store/validate.js';
|
|
5
|
+
// Store building blocks extracted by concern (size gate): validators, the JSON-file backend, and the
|
|
6
|
+
// shared record helpers. Re-exported here so `./store.js` stays the single import surface.
|
|
7
|
+
export { JsonFileArtifactStore } from './store/json-file.js';
|
|
8
|
+
export { CONFIG_NAME_PATTERN, DEPLOYMENT_ID_PATTERN, DOMAIN_PATTERN, SLUG_PATTERN, validateConfigName, validateConfigScope, validateDomain, validateOrgRole, validateSignupAllowlistKind, validateSlug, validateTenantRef, } from './store/validate.js';
|
|
4
9
|
/** In-memory store: keeps records in a Map. Used by tests and as an explicit, non-persistent option. */
|
|
5
10
|
export class InMemoryArtifactStore {
|
|
6
11
|
#records = new Map();
|
|
@@ -18,11 +23,16 @@ export class InMemoryArtifactStore {
|
|
|
18
23
|
return Promise.resolve(this.#records.get(deploymentId));
|
|
19
24
|
}
|
|
20
25
|
getActiveByTenant(ref) {
|
|
26
|
+
return Promise.resolve(defaultActiveRecord([...this.#records.values()], validateTenantRef(ref)));
|
|
27
|
+
}
|
|
28
|
+
getActiveByTenantVersion(ref, serverVersion) {
|
|
29
|
+
const safe = validateTenantRef(ref);
|
|
30
|
+
const safeVersion = normalizeServerVersion(serverVersion);
|
|
21
31
|
return Promise.resolve([...this.#records.values()]
|
|
22
32
|
.filter((record) => record.active &&
|
|
23
|
-
record.
|
|
24
|
-
record
|
|
25
|
-
record.
|
|
33
|
+
record.archivedAt === undefined &&
|
|
34
|
+
sameTenantRecord(record, safe) &&
|
|
35
|
+
record.serverVersion === safeVersion)
|
|
26
36
|
.sort((a, b) => b.deploymentVersion - a.deploymentVersion)[0]);
|
|
27
37
|
}
|
|
28
38
|
activateDeployment(ref, deploymentId) {
|
|
@@ -31,7 +41,7 @@ export class InMemoryArtifactStore {
|
|
|
31
41
|
if (target === undefined || !sameTenantRecord(target, safe))
|
|
32
42
|
return Promise.resolve(undefined);
|
|
33
43
|
const previousActive = [...this.#records.values()]
|
|
34
|
-
.filter((record) => record.active &&
|
|
44
|
+
.filter((record) => record.active && sameDeploymentScope(record, target))
|
|
35
45
|
.sort((a, b) => b.deploymentVersion - a.deploymentVersion)[0];
|
|
36
46
|
const alreadyActive = previousActive?.deploymentId === target.deploymentId;
|
|
37
47
|
if (!alreadyActive) {
|
|
@@ -46,13 +56,16 @@ export class InMemoryArtifactStore {
|
|
|
46
56
|
}
|
|
47
57
|
#deactivateTenant(record) {
|
|
48
58
|
for (const [id, existing] of this.#records) {
|
|
49
|
-
if (existing.active &&
|
|
59
|
+
if (existing.active && sameDeploymentScope(existing, record)) {
|
|
50
60
|
this.#records.set(id, { ...existing, active: false });
|
|
51
61
|
}
|
|
52
62
|
}
|
|
53
63
|
}
|
|
54
|
-
updateActiveAccess(ref, accessMode) {
|
|
55
|
-
|
|
64
|
+
updateActiveAccess(ref, accessMode, serverVersion) {
|
|
65
|
+
const recordPromise = serverVersion === undefined
|
|
66
|
+
? this.getActiveByTenant(ref)
|
|
67
|
+
: this.getActiveByTenantVersion(ref, serverVersion);
|
|
68
|
+
return recordPromise.then((record) => {
|
|
56
69
|
if (record === undefined)
|
|
57
70
|
return undefined;
|
|
58
71
|
const updated = { ...record, accessMode };
|
|
@@ -61,16 +74,48 @@ export class InMemoryArtifactStore {
|
|
|
61
74
|
});
|
|
62
75
|
}
|
|
63
76
|
listDeployments(filter) {
|
|
64
|
-
const
|
|
65
|
-
const app = filter.app !== undefined ? validateSlug('app', filter.app) : undefined;
|
|
66
|
-
const env = filter.env !== undefined ? validateSlug('env', filter.env) : undefined;
|
|
77
|
+
const safe = validateDeploymentListFilter(filter);
|
|
67
78
|
return Promise.resolve([...this.#records.values()]
|
|
68
|
-
.filter((record) => record
|
|
69
|
-
(app === undefined || record.appSlug === app) &&
|
|
70
|
-
(env === undefined || record.environment === env))
|
|
79
|
+
.filter((record) => matchesDeploymentFilter(record, safe))
|
|
71
80
|
.sort((a, b) => b.deploymentVersion - a.deploymentVersion)
|
|
72
81
|
.map(deploymentSummary));
|
|
73
82
|
}
|
|
83
|
+
getAppArchivedAt(org, app) {
|
|
84
|
+
return Promise.resolve(appArchivedAt(this.#appRecords(org, app)));
|
|
85
|
+
}
|
|
86
|
+
archiveApp(org, app, at) {
|
|
87
|
+
const plan = planAppArchive(this.#appRecords(org, app), at);
|
|
88
|
+
if (plan === undefined)
|
|
89
|
+
return Promise.resolve(undefined);
|
|
90
|
+
for (const record of plan.stamp) {
|
|
91
|
+
this.#records.set(record.deploymentId, { ...record, archivedAt: plan.result.archivedAt });
|
|
92
|
+
}
|
|
93
|
+
return Promise.resolve(plan.result);
|
|
94
|
+
}
|
|
95
|
+
restoreApp(org, app) {
|
|
96
|
+
const plan = planAppRestore(this.#appRecords(org, app));
|
|
97
|
+
if (plan === undefined)
|
|
98
|
+
return Promise.resolve(undefined);
|
|
99
|
+
for (const record of plan.clear) {
|
|
100
|
+
this.#records.set(record.deploymentId, withoutArchiveStamp(record));
|
|
101
|
+
}
|
|
102
|
+
return Promise.resolve(plan.result);
|
|
103
|
+
}
|
|
104
|
+
sweepArchived(before) {
|
|
105
|
+
const deleted = [];
|
|
106
|
+
for (const [id, record] of this.#records) {
|
|
107
|
+
if (record.archivedAt !== undefined && record.archivedAt < before) {
|
|
108
|
+
deleted.push(record);
|
|
109
|
+
this.#records.delete(id);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return Promise.resolve(deleted);
|
|
113
|
+
}
|
|
114
|
+
#appRecords(org, app) {
|
|
115
|
+
const safeOrg = validateSlug('org', org);
|
|
116
|
+
const safeApp = validateSlug('app', app);
|
|
117
|
+
return [...this.#records.values()].filter((record) => record.orgSlug === safeOrg && record.appSlug === safeApp);
|
|
118
|
+
}
|
|
74
119
|
}
|
|
75
120
|
export class InMemoryConfigStore {
|
|
76
121
|
#records = new Map();
|
|
@@ -110,185 +155,6 @@ export class InMemoryConfigStore {
|
|
|
110
155
|
return Promise.resolve(out);
|
|
111
156
|
}
|
|
112
157
|
}
|
|
113
|
-
/**
|
|
114
|
-
* JSON-file store: one file per deployment at `<dataDir>/deployments/<deploymentId>.json`, written atomically
|
|
115
|
-
* (write a temp file, then `rename` over the target — no partial file is ever read). `deploymentId` is a
|
|
116
|
-
* slug + random hex suffix (`mintDeploymentId`), so it is a safe, collision-free filename. No new
|
|
117
|
-
* dependency — `node:fs/promises` only.
|
|
118
|
-
*/
|
|
119
|
-
export class JsonFileArtifactStore {
|
|
120
|
-
#dir;
|
|
121
|
-
constructor(dataDir) {
|
|
122
|
-
this.#dir = join(dataDir, 'deployments');
|
|
123
|
-
}
|
|
124
|
-
async append(record) {
|
|
125
|
-
// Defence in depth: `deploymentId` becomes a filename, so reject anything outside the minted shape
|
|
126
|
-
// (`mintDeploymentId` only ever produces `[a-z0-9-]`). Guards this public class against a caller that
|
|
127
|
-
// passes an untrusted id (no path traversal, no escaping the data dir).
|
|
128
|
-
validateTenantRef({ org: record.orgSlug, app: record.appSlug, env: record.environment });
|
|
129
|
-
if (!DEPLOYMENT_ID_PATTERN.test(record.deploymentId)) {
|
|
130
|
-
throw new Error(`invalid deploymentId for persistence: "${record.deploymentId}"`);
|
|
131
|
-
}
|
|
132
|
-
if (record.active) {
|
|
133
|
-
const records = await this.loadAll();
|
|
134
|
-
await Promise.all(records
|
|
135
|
-
.filter((existing) => existing.active && sameTenantRecord(existing, record))
|
|
136
|
-
.map((existing) => this.#writeRecord({ ...existing, active: false })));
|
|
137
|
-
}
|
|
138
|
-
await this.#writeRecord(record);
|
|
139
|
-
}
|
|
140
|
-
async get(deploymentId) {
|
|
141
|
-
// An invalid id can never be a file we wrote; treat as absent (also closes off any traversal).
|
|
142
|
-
if (!DEPLOYMENT_ID_PATTERN.test(deploymentId))
|
|
143
|
-
return undefined;
|
|
144
|
-
try {
|
|
145
|
-
const text = await readFile(join(this.#dir, `${deploymentId}.json`), 'utf8');
|
|
146
|
-
return JSON.parse(text);
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
// Fail-soft: ENOENT (no such server) or a corrupt/unreadable file both read as `undefined`.
|
|
150
|
-
return undefined;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
async getActiveByTenant(ref) {
|
|
154
|
-
validateTenantRef(ref);
|
|
155
|
-
return (await this.loadAll())
|
|
156
|
-
.filter((record) => record.active &&
|
|
157
|
-
record.orgSlug === ref.org &&
|
|
158
|
-
record.appSlug === ref.app &&
|
|
159
|
-
record.environment === ref.env)
|
|
160
|
-
.sort((a, b) => b.deploymentVersion - a.deploymentVersion)[0];
|
|
161
|
-
}
|
|
162
|
-
async updateActiveAccess(ref, accessMode) {
|
|
163
|
-
const record = await this.getActiveByTenant(ref);
|
|
164
|
-
if (record === undefined)
|
|
165
|
-
return undefined;
|
|
166
|
-
const updated = { ...record, accessMode };
|
|
167
|
-
await this.append(updated);
|
|
168
|
-
return updated;
|
|
169
|
-
}
|
|
170
|
-
async activateDeployment(ref, deploymentId) {
|
|
171
|
-
const safe = validateTenantRef(ref);
|
|
172
|
-
if (!DEPLOYMENT_ID_PATTERN.test(deploymentId))
|
|
173
|
-
return undefined;
|
|
174
|
-
const target = await this.get(deploymentId);
|
|
175
|
-
if (target === undefined || !sameTenantRecord(target, safe))
|
|
176
|
-
return undefined;
|
|
177
|
-
const records = await this.loadAll();
|
|
178
|
-
const previousActive = records
|
|
179
|
-
.filter((record) => record.active && sameTenantRecord(record, safe))
|
|
180
|
-
.sort((a, b) => b.deploymentVersion - a.deploymentVersion)[0];
|
|
181
|
-
const alreadyActive = previousActive?.deploymentId === target.deploymentId;
|
|
182
|
-
if (!alreadyActive) {
|
|
183
|
-
await Promise.all(records
|
|
184
|
-
.filter((record) => record.active && sameTenantRecord(record, safe))
|
|
185
|
-
.map((record) => this.#writeRecord({ ...record, active: false })));
|
|
186
|
-
await this.#writeRecord({ ...target, active: true });
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
active: { ...target, active: true },
|
|
190
|
-
...(previousActive !== undefined ? { previousActive } : {}),
|
|
191
|
-
alreadyActive,
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
async loadAll() {
|
|
195
|
-
let names;
|
|
196
|
-
try {
|
|
197
|
-
names = await readdir(this.#dir);
|
|
198
|
-
}
|
|
199
|
-
catch (error) {
|
|
200
|
-
if (error.code === 'ENOENT')
|
|
201
|
-
return [];
|
|
202
|
-
throw error;
|
|
203
|
-
}
|
|
204
|
-
const records = [];
|
|
205
|
-
for (const name of names) {
|
|
206
|
-
if (!name.endsWith('.json'))
|
|
207
|
-
continue; // skip in-flight *.tmp files
|
|
208
|
-
try {
|
|
209
|
-
const text = await readFile(join(this.#dir, name), 'utf8');
|
|
210
|
-
records.push(JSON.parse(text));
|
|
211
|
-
}
|
|
212
|
-
catch {
|
|
213
|
-
// Fail-soft: a corrupt/unreadable record file must NOT crash startup — skip it and let the
|
|
214
|
-
// other servers recover. (Visibility of skipped files lands with structured logging, Slice 27.)
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return records;
|
|
218
|
-
}
|
|
219
|
-
listDeployments(filter) {
|
|
220
|
-
const org = validateSlug('org', filter.org);
|
|
221
|
-
const app = filter.app !== undefined ? validateSlug('app', filter.app) : undefined;
|
|
222
|
-
const env = filter.env !== undefined ? validateSlug('env', filter.env) : undefined;
|
|
223
|
-
return this.loadAll().then((records) => records
|
|
224
|
-
.filter((record) => record.orgSlug === org &&
|
|
225
|
-
(app === undefined || record.appSlug === app) &&
|
|
226
|
-
(env === undefined || record.environment === env))
|
|
227
|
-
.sort((a, b) => b.deploymentVersion - a.deploymentVersion)
|
|
228
|
-
.map(deploymentSummary));
|
|
229
|
-
}
|
|
230
|
-
async #writeRecord(record) {
|
|
231
|
-
await mkdir(this.#dir, { recursive: true });
|
|
232
|
-
const target = join(this.#dir, `${record.deploymentId}.json`);
|
|
233
|
-
const tmp = `${target}.${randomUUID()}.tmp`;
|
|
234
|
-
await writeFile(tmp, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
|
|
235
|
-
await rename(tmp, target);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
/** Minted deployment id shape (`mintDeploymentId`): a slug plus a short hex suffix; safe as a filename. */
|
|
239
|
-
export const DEPLOYMENT_ID_PATTERN = /^[a-z0-9-]+$/;
|
|
240
|
-
export const SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
|
|
241
|
-
export const CONFIG_NAME_PATTERN = /^[A-Za-z0-9_]+$/;
|
|
242
|
-
export const DOMAIN_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,62}\.)+[a-z0-9-]{2,63}$/;
|
|
243
|
-
const RESERVED_SLUGS = new Set(['deploy', 'healthz', 'readyz', 'v1', 'o', 'mcp']);
|
|
244
|
-
export function validateSlug(kind, value) {
|
|
245
|
-
if (!SLUG_PATTERN.test(value) || RESERVED_SLUGS.has(value)) {
|
|
246
|
-
throw new Error(`invalid ${kind} slug "${value}"; use lowercase letters, numbers, and hyphens only`);
|
|
247
|
-
}
|
|
248
|
-
return value;
|
|
249
|
-
}
|
|
250
|
-
export function validateTenantRef(ref) {
|
|
251
|
-
return {
|
|
252
|
-
org: validateSlug('org', ref.org),
|
|
253
|
-
app: validateSlug('app', ref.app),
|
|
254
|
-
env: validateSlug('env', ref.env),
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
export function validateConfigName(name) {
|
|
258
|
-
if (!CONFIG_NAME_PATTERN.test(name)) {
|
|
259
|
-
throw new Error(`invalid config name "${name}"; use letters, numbers, and underscores only`);
|
|
260
|
-
}
|
|
261
|
-
return name;
|
|
262
|
-
}
|
|
263
|
-
export function validateDomain(value) {
|
|
264
|
-
const domain = value.trim().toLowerCase();
|
|
265
|
-
if (!DOMAIN_PATTERN.test(domain)) {
|
|
266
|
-
throw new Error(`invalid domain "${value}"`);
|
|
267
|
-
}
|
|
268
|
-
return domain;
|
|
269
|
-
}
|
|
270
|
-
export function validateSignupAllowlistKind(value) {
|
|
271
|
-
if (value !== 'subject' && value !== 'domain')
|
|
272
|
-
throw new Error(`invalid signup allowlist kind "${value}"`);
|
|
273
|
-
return value;
|
|
274
|
-
}
|
|
275
|
-
export function validateConfigScope(scope) {
|
|
276
|
-
if (scope.level === 'org')
|
|
277
|
-
return { level: 'org', org: validateSlug('org', scope.org) };
|
|
278
|
-
if (scope.level === 'app') {
|
|
279
|
-
return {
|
|
280
|
-
level: 'app',
|
|
281
|
-
org: validateSlug('org', scope.org),
|
|
282
|
-
app: validateSlug('app', scope.app),
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
return {
|
|
286
|
-
level: 'env',
|
|
287
|
-
org: validateSlug('org', scope.org),
|
|
288
|
-
app: validateSlug('app', scope.app),
|
|
289
|
-
env: validateSlug('env', scope.env),
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
158
|
export function resolveConfigScope(input) {
|
|
293
159
|
if (input.env !== undefined) {
|
|
294
160
|
if (input.app === undefined)
|
|
@@ -310,35 +176,6 @@ export function scopeChain(scope) {
|
|
|
310
176
|
scope,
|
|
311
177
|
];
|
|
312
178
|
}
|
|
313
|
-
export function validateOrgRole(role) {
|
|
314
|
-
if (role !== 'owner' && role !== 'developer') {
|
|
315
|
-
throw new Error(`invalid org role "${role}"`);
|
|
316
|
-
}
|
|
317
|
-
return role;
|
|
318
|
-
}
|
|
319
|
-
function deploymentSummary(record) {
|
|
320
|
-
return {
|
|
321
|
-
deploymentId: record.deploymentId,
|
|
322
|
-
orgSlug: record.orgSlug,
|
|
323
|
-
appSlug: record.appSlug,
|
|
324
|
-
environment: record.environment,
|
|
325
|
-
active: record.active,
|
|
326
|
-
serverName: record.serverName,
|
|
327
|
-
createdAt: record.createdAt,
|
|
328
|
-
...(record.createdByEmail !== undefined ? { createdByEmail: record.createdByEmail } : {}),
|
|
329
|
-
accessMode: record.accessMode ?? 'owner-only',
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
function sameTenantRecord(record, tenant) {
|
|
333
|
-
if ('org' in tenant) {
|
|
334
|
-
return (record.orgSlug === tenant.org &&
|
|
335
|
-
record.appSlug === tenant.app &&
|
|
336
|
-
record.environment === tenant.env);
|
|
337
|
-
}
|
|
338
|
-
return (record.orgSlug === tenant.orgSlug &&
|
|
339
|
-
record.appSlug === tenant.appSlug &&
|
|
340
|
-
record.environment === tenant.environment);
|
|
341
|
-
}
|
|
342
179
|
function configKey(kind, scope, name) {
|
|
343
180
|
return `${kind}/${scopePath(scope)}/${name}`;
|
|
344
181
|
}
|