@noodleseed/one 0.38.0 → 0.39.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/billing-apply-ops.d.ts +2 -0
- package/dist/commands/billing-apply-ops.d.ts.map +1 -0
- package/dist/commands/billing-apply-ops.js +224 -0
- package/dist/commands/billing-apply-ops.js.map +1 -0
- package/dist/commands/billing-migration-files.d.ts +13 -0
- package/dist/commands/billing-migration-files.d.ts.map +1 -0
- package/dist/commands/billing-migration-files.js +84 -0
- package/dist/commands/billing-migration-files.js.map +1 -0
- package/dist/commands/billing-ops.d.ts +3 -0
- package/dist/commands/billing-ops.d.ts.map +1 -0
- package/dist/commands/billing-ops.js +121 -0
- package/dist/commands/billing-ops.js.map +1 -0
- package/dist/commands/catalog-data-resources.d.ts.map +1 -1
- package/dist/commands/catalog-data-resources.js +19 -0
- package/dist/commands/catalog-data-resources.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/widget-scaffold-template.d.ts.map +1 -1
- package/dist/widget-scaffold-template.js +9 -0
- package/dist/widget-scaffold-template.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/generated/example-files.js +3 -3
- 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/skill-embedded-assistant-ref.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +28 -0
- 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.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +5 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +44 -0
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts +1 -1
- package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.js +6 -1
- package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +83 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +82 -14
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
- package/node_modules/@noodle-borg/module-audit/dist/index.d.ts +2 -1
- package/node_modules/@noodle-borg/module-audit/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/module-audit/dist/index.js +1 -1
- package/node_modules/@noodle-borg/module-audit/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.d.ts +12 -3
- package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.d.ts.map +1 -1
- package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.js +30 -20
- package/node_modules/@noodle-borg/module-audit/dist/postgres-audit.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/in-memory-serialization.d.ts +6 -0
- package/node_modules/@noodle-borg/service/dist/billing/in-memory-serialization.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/in-memory-serialization.js +23 -0
- package/node_modules/@noodle-borg/service/dist/billing/in-memory-serialization.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts +32 -0
- package/node_modules/@noodle-borg/service/dist/billing/in-memory.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/in-memory.js +185 -0
- package/node_modules/@noodle-borg/service/dist/billing/in-memory.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-apply.d.ts +98 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-apply.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-apply.js +194 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-apply.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-contract.d.ts +79 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-contract.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-contract.js +86 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration-contract.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration.d.ts +13 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration.js +246 -0
- package/node_modules/@noodle-borg/service/dist/billing/migration.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/model.d.ts +85 -0
- package/node_modules/@noodle-borg/service/dist/billing/model.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/model.js +134 -0
- package/node_modules/@noodle-borg/service/dist/billing/model.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.d.ts +36 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.js +122 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration-support.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.d.ts +9 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js +265 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-migration.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-records.d.ts +66 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-records.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-records.js +163 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-records.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js +211 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-schema.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres.d.ts +33 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres.js +285 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/store.d.ts +27 -0
- package/node_modules/@noodle-borg/service/dist/billing/store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/store.js +2 -0
- package/node_modules/@noodle-borg/service/dist/billing/store.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +3 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/modules/host.js +3 -0
- package/node_modules/@noodle-borg/service/dist/modules/host.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts +17 -5
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/billing.d.ts +23 -0
- package/node_modules/@noodle-borg/service/dist/routes/billing.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/billing.js +165 -0
- package/node_modules/@noodle-borg/service/dist/routes/billing.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts +28 -0
- package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js +77 -0
- package/node_modules/@noodle-borg/service/dist/routes/commercial-dispatch.js.map +1 -0
- 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 +17 -0
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +28 -6
- package/node_modules/@noodle-borg/service/dist/serve.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 +23 -30
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/audit.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/store/audit.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/audit.js +15 -0
- package/node_modules/@noodle-borg/service/dist/store/audit.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +2 -1
- 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 +81 -48
- package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts +4 -2
- package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts +11 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-billing.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js +17 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-billing.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +1 -1
- 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 +18 -6
- package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
- 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 +4 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts +14 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-signup.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js +28 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-signup.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +2 -2
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.js +9 -5
- package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/validate.js +13 -0
- package/node_modules/@noodle-borg/service/dist/store/validate.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store.d.ts +5 -2
- package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +3 -2
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js +3 -2
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/billing/migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** Authority that assigned every current hosted control-plane subject, including Noodle OAuth tokens. */
|
|
2
|
+
export declare const GOOGLE_CONTROL_PLANE_ISSUER = "https://accounts.google.com";
|
|
3
|
+
export type BillingAccountState = 'active' | 'draft' | 'inactive';
|
|
4
|
+
export type BillingAccountMemberRole = 'owner' | 'admin' | 'viewer';
|
|
5
|
+
export interface BillingIdentityRef {
|
|
6
|
+
readonly identityIssuer: string;
|
|
7
|
+
readonly subject: string;
|
|
8
|
+
}
|
|
9
|
+
export interface BillingIdentityInput extends BillingIdentityRef {
|
|
10
|
+
readonly email?: string;
|
|
11
|
+
}
|
|
12
|
+
export type BillingEntitlementValue = boolean | number | string | null;
|
|
13
|
+
export type BillingEntitlements = Readonly<Record<string, BillingEntitlementValue>>;
|
|
14
|
+
export interface BillingAccountRecord {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly displayName: string;
|
|
17
|
+
readonly state: BillingAccountState;
|
|
18
|
+
readonly createdAt: string;
|
|
19
|
+
}
|
|
20
|
+
export interface BillingAccountMemberRecord extends BillingIdentityRef {
|
|
21
|
+
readonly billingAccountId: string;
|
|
22
|
+
readonly email: string;
|
|
23
|
+
readonly role: BillingAccountMemberRole;
|
|
24
|
+
readonly createdAt: string;
|
|
25
|
+
}
|
|
26
|
+
export interface PlanVersionRecord {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly planCode: string;
|
|
29
|
+
readonly version: number;
|
|
30
|
+
readonly effectiveFrom: string;
|
|
31
|
+
readonly entitlements: BillingEntitlements;
|
|
32
|
+
readonly contentChecksum: string;
|
|
33
|
+
readonly createdAt: string;
|
|
34
|
+
}
|
|
35
|
+
export interface EntitlementSnapshotRecord {
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly billingAccountId: string;
|
|
38
|
+
readonly version: number;
|
|
39
|
+
readonly planVersionId: string;
|
|
40
|
+
readonly planCode: string;
|
|
41
|
+
readonly planVersion: number;
|
|
42
|
+
readonly sourceKind: 'system-free';
|
|
43
|
+
readonly generationReason: 'default-account-created';
|
|
44
|
+
readonly verificationStatus: 'verified';
|
|
45
|
+
readonly effectiveFrom: string;
|
|
46
|
+
readonly monthlyUsageAnchor: string;
|
|
47
|
+
readonly entitlements: BillingEntitlements;
|
|
48
|
+
readonly contentChecksum: string;
|
|
49
|
+
readonly verifiedAt: string;
|
|
50
|
+
readonly createdAt: string;
|
|
51
|
+
}
|
|
52
|
+
export interface OrgBillingLinkRecord {
|
|
53
|
+
readonly orgSlug: string;
|
|
54
|
+
readonly billingAccountId: string;
|
|
55
|
+
readonly homeFreeBillingAccountId: string;
|
|
56
|
+
readonly homeOwner: BillingIdentityRef;
|
|
57
|
+
readonly fallbackBillingAccountId: string;
|
|
58
|
+
readonly version: number;
|
|
59
|
+
readonly active: true;
|
|
60
|
+
readonly linkedAt: string;
|
|
61
|
+
readonly linkedBy: BillingIdentityRef;
|
|
62
|
+
readonly reason: string;
|
|
63
|
+
}
|
|
64
|
+
export declare const FREE_ENTITLEMENTS: BillingEntitlements;
|
|
65
|
+
export declare const FREE_PLAN_VERSION: PlanVersionRecord;
|
|
66
|
+
export declare function createDefaultFreeBillingRecords(input: {
|
|
67
|
+
readonly identity: BillingIdentityRef;
|
|
68
|
+
readonly email: string;
|
|
69
|
+
readonly displayName?: string;
|
|
70
|
+
readonly createdAt: string;
|
|
71
|
+
}): {
|
|
72
|
+
readonly account: BillingAccountRecord;
|
|
73
|
+
readonly member: BillingAccountMemberRecord;
|
|
74
|
+
readonly snapshot: EntitlementSnapshotRecord;
|
|
75
|
+
};
|
|
76
|
+
export declare function billingIdentityKey(identity: BillingIdentityRef): string;
|
|
77
|
+
export declare function billingMemberKey(input: BillingIdentityRef & {
|
|
78
|
+
readonly billingAccountId: string;
|
|
79
|
+
}): string;
|
|
80
|
+
export declare function normalizeBillingIdentity(identity: BillingIdentityRef): BillingIdentityRef;
|
|
81
|
+
export declare function normalizeBillingEmail(email: string): string;
|
|
82
|
+
export declare function validateBillingAccountId(value: string): string;
|
|
83
|
+
export declare function validateBillingLinkReason(value: string): string;
|
|
84
|
+
export declare function billingContentChecksum(value: unknown): string;
|
|
85
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/billing/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { canonicalJsonFingerprint } from '../policy-idempotency.js';
|
|
3
|
+
/** Authority that assigned every current hosted control-plane subject, including Noodle OAuth tokens. */
|
|
4
|
+
export const GOOGLE_CONTROL_PLANE_ISSUER = 'https://accounts.google.com';
|
|
5
|
+
export const FREE_ENTITLEMENTS = Object.freeze({
|
|
6
|
+
'usage.mcp_calls.included': 1_000_000,
|
|
7
|
+
'usage.mcp_calls.overage': false,
|
|
8
|
+
'apps.production.max': 1,
|
|
9
|
+
'access.owner_or_public': true,
|
|
10
|
+
'access.org_members': false,
|
|
11
|
+
'config.managed_secrets': false,
|
|
12
|
+
'deploy.history_rollback': 'basic',
|
|
13
|
+
'assets.packaged': 'basic',
|
|
14
|
+
'domains.custom': false,
|
|
15
|
+
'governance.policy': false,
|
|
16
|
+
'governance.audit': false,
|
|
17
|
+
'support.email': 'community',
|
|
18
|
+
'support.priority': false,
|
|
19
|
+
'deployment.dedicated': false,
|
|
20
|
+
'deployment.byo_cloud': false,
|
|
21
|
+
'identity.sso_scim': false,
|
|
22
|
+
'connectivity.private': false,
|
|
23
|
+
sla: false,
|
|
24
|
+
});
|
|
25
|
+
const FREE_PLAN_CONTENT = {
|
|
26
|
+
id: 'free@1',
|
|
27
|
+
planCode: 'free',
|
|
28
|
+
version: 1,
|
|
29
|
+
effectiveFrom: '2026-07-11T00:00:00.000Z',
|
|
30
|
+
entitlements: FREE_ENTITLEMENTS,
|
|
31
|
+
};
|
|
32
|
+
export const FREE_PLAN_VERSION = Object.freeze({
|
|
33
|
+
...FREE_PLAN_CONTENT,
|
|
34
|
+
contentChecksum: billingContentChecksum(FREE_PLAN_CONTENT),
|
|
35
|
+
createdAt: FREE_PLAN_CONTENT.effectiveFrom,
|
|
36
|
+
});
|
|
37
|
+
export function createDefaultFreeBillingRecords(input) {
|
|
38
|
+
const billingAccountId = `ba_${randomUUID()}`;
|
|
39
|
+
const snapshotId = `es_${randomUUID()}`;
|
|
40
|
+
const email = normalizeBillingEmail(input.email);
|
|
41
|
+
const account = {
|
|
42
|
+
id: billingAccountId,
|
|
43
|
+
displayName: input.displayName?.trim() || email,
|
|
44
|
+
state: 'active',
|
|
45
|
+
createdAt: input.createdAt,
|
|
46
|
+
};
|
|
47
|
+
const member = {
|
|
48
|
+
billingAccountId,
|
|
49
|
+
...input.identity,
|
|
50
|
+
email,
|
|
51
|
+
role: 'owner',
|
|
52
|
+
createdAt: input.createdAt,
|
|
53
|
+
};
|
|
54
|
+
const snapshotContent = {
|
|
55
|
+
billingAccountId,
|
|
56
|
+
version: 1,
|
|
57
|
+
planVersionId: FREE_PLAN_VERSION.id,
|
|
58
|
+
effectiveFrom: input.createdAt,
|
|
59
|
+
monthlyUsageAnchor: input.createdAt,
|
|
60
|
+
entitlements: FREE_ENTITLEMENTS,
|
|
61
|
+
};
|
|
62
|
+
const snapshot = {
|
|
63
|
+
id: snapshotId,
|
|
64
|
+
...snapshotContent,
|
|
65
|
+
planCode: FREE_PLAN_VERSION.planCode,
|
|
66
|
+
planVersion: FREE_PLAN_VERSION.version,
|
|
67
|
+
sourceKind: 'system-free',
|
|
68
|
+
generationReason: 'default-account-created',
|
|
69
|
+
verificationStatus: 'verified',
|
|
70
|
+
contentChecksum: billingContentChecksum(snapshotContent),
|
|
71
|
+
verifiedAt: input.createdAt,
|
|
72
|
+
createdAt: input.createdAt,
|
|
73
|
+
};
|
|
74
|
+
return { account, member, snapshot };
|
|
75
|
+
}
|
|
76
|
+
export function billingIdentityKey(identity) {
|
|
77
|
+
const issuer = normalizeIdentityPart('identityIssuer', identity.identityIssuer);
|
|
78
|
+
const subject = normalizeIdentityPart('subject', identity.subject);
|
|
79
|
+
return `${issuer}\u0000${subject}`;
|
|
80
|
+
}
|
|
81
|
+
export function billingMemberKey(input) {
|
|
82
|
+
return `${validateBillingAccountId(input.billingAccountId)}\u0000${billingIdentityKey(input)}`;
|
|
83
|
+
}
|
|
84
|
+
export function normalizeBillingIdentity(identity) {
|
|
85
|
+
return {
|
|
86
|
+
identityIssuer: normalizeIdentityPart('identityIssuer', identity.identityIssuer),
|
|
87
|
+
subject: normalizeIdentityPart('subject', identity.subject),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function normalizeBillingEmail(email) {
|
|
91
|
+
const value = email.trim().toLowerCase();
|
|
92
|
+
const parts = value.split('@');
|
|
93
|
+
const local = parts[0] ?? '';
|
|
94
|
+
const domain = parts[1] ?? '';
|
|
95
|
+
const validLocal = local.length > 0 &&
|
|
96
|
+
local.length <= 64 &&
|
|
97
|
+
!local.startsWith('.') &&
|
|
98
|
+
!local.endsWith('.') &&
|
|
99
|
+
!local.includes('..') &&
|
|
100
|
+
/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/.test(local);
|
|
101
|
+
const validDomain = domain.length > 0 &&
|
|
102
|
+
domain.length <= 255 &&
|
|
103
|
+
domain
|
|
104
|
+
.split('.')
|
|
105
|
+
.every((label) => label.length > 0 && label.length <= 63 && /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/.test(label));
|
|
106
|
+
if (value.length > 320 || parts.length !== 2 || !validLocal || !validDomain) {
|
|
107
|
+
throw new Error('billing email must be a valid non-empty address');
|
|
108
|
+
}
|
|
109
|
+
return value;
|
|
110
|
+
}
|
|
111
|
+
export function validateBillingAccountId(value) {
|
|
112
|
+
if (!/^ba_[0-9a-f-]{36}$/.test(value))
|
|
113
|
+
throw new Error('invalid billing account id');
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
export function validateBillingLinkReason(value) {
|
|
117
|
+
return normalizeIdentityPart('billing link reason', value);
|
|
118
|
+
}
|
|
119
|
+
export function billingContentChecksum(value) {
|
|
120
|
+
return createHash('sha256').update(canonicalJsonFingerprint(value)).digest('hex');
|
|
121
|
+
}
|
|
122
|
+
function normalizeIdentityPart(name, value) {
|
|
123
|
+
const normalized = value.trim();
|
|
124
|
+
if (normalized.length === 0 ||
|
|
125
|
+
normalized.length > 512 ||
|
|
126
|
+
[...normalized].some((character) => {
|
|
127
|
+
const code = character.charCodeAt(0);
|
|
128
|
+
return code <= 0x1f || code === 0x7f;
|
|
129
|
+
})) {
|
|
130
|
+
throw new Error(`${name} must be a non-empty scalar identifier`);
|
|
131
|
+
}
|
|
132
|
+
return normalized;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/billing/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { PoolClient } from 'pg';
|
|
2
|
+
import type { OrgMemberRecord, OrgRecord } from '../store.js';
|
|
3
|
+
import type { previewLegacyBillingMigration } from './migration.js';
|
|
4
|
+
import type { LegacyBillingMigrationApplyResult } from './migration-apply.js';
|
|
5
|
+
export declare const LEGACY_BILLING_MIGRATION_KIND = "hosted-default-free-v1";
|
|
6
|
+
export declare function transactionalLegacyMigrationControlPlane(client: PoolClient): {
|
|
7
|
+
listOrgs: () => Promise<readonly OrgRecord[]>;
|
|
8
|
+
listOrgMembers: (org: string) => Promise<readonly OrgMemberRecord[]>;
|
|
9
|
+
getOrgBillingLink: (org: string) => Promise<import("./model.js").OrgBillingLinkRecord | undefined>;
|
|
10
|
+
getDefaultBillingAccount: (identity: {
|
|
11
|
+
readonly identityIssuer: string;
|
|
12
|
+
readonly subject: string;
|
|
13
|
+
}) => Promise<import("./model.js").BillingAccountRecord | undefined>;
|
|
14
|
+
};
|
|
15
|
+
export declare function transactionalLegacyMigrationInventory(client: PoolClient): {
|
|
16
|
+
getAppIdentity: (org: string, app: string) => Promise<{
|
|
17
|
+
archivedAt?: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
active: boolean;
|
|
20
|
+
} | undefined>;
|
|
21
|
+
};
|
|
22
|
+
export declare function previewOrganizationSlugs(preview: Awaited<ReturnType<typeof previewLegacyBillingMigration>>): readonly string[];
|
|
23
|
+
export declare function findPreparationByIdempotencyKey(client: PoolClient, key: string): Promise<PreparationRow | undefined>;
|
|
24
|
+
export declare function findPreparationByKind(client: PoolClient): Promise<PreparationRow | undefined>;
|
|
25
|
+
export declare function findPreparationById(client: PoolClient, id: string): Promise<PreparationRow | undefined>;
|
|
26
|
+
export declare function preparationResult(client: PoolClient, row: PreparationRow, replayed: boolean): Promise<LegacyBillingMigrationApplyResult>;
|
|
27
|
+
interface PreparationRow {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly request_fingerprint: string;
|
|
30
|
+
readonly mapping_checksum: string;
|
|
31
|
+
readonly preview_checksum: string;
|
|
32
|
+
readonly plan_evidence_checksum: string;
|
|
33
|
+
readonly prepared_at: Date | string;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=postgres-migration-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-migration-support.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-migration-support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGrC,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAG9E,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AAEtE,wBAAgB,wCAAwC,CAAC,MAAM,EAAE,UAAU;oBAEnD,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;0BAQrB,MAAM,KAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;6BAa/C,MAAM;yCACM;QACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B;EAEJ;AAED,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,UAAU;0BAExC,MAAM,OAAO,MAAM;;;;;EAWlD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,GACjE,SAAS,MAAM,EAAE,CAKnB;AAED,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,uCAMpF;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,uCAM7D;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,uCAMvE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iCAAiC,CAAC,CAuD5C;AAgCD,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;CACrC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { getAppRow } from '../store/postgres-apps.js';
|
|
2
|
+
import { validateOrgRole } from '../store/validate.js';
|
|
3
|
+
import { getDefaultBillingAccountQuery, getOrgBillingLinkQuery } from './postgres.js';
|
|
4
|
+
export const LEGACY_BILLING_MIGRATION_KIND = 'hosted-default-free-v1';
|
|
5
|
+
export function transactionalLegacyMigrationControlPlane(client) {
|
|
6
|
+
return {
|
|
7
|
+
listOrgs: async () => {
|
|
8
|
+
const { rows } = await client.query('SELECT * FROM orgs ORDER BY slug');
|
|
9
|
+
return rows.map((row) => ({
|
|
10
|
+
slug: row.slug,
|
|
11
|
+
...(row.display_name !== null ? { displayName: row.display_name } : {}),
|
|
12
|
+
createdAt: toIso(row.created_at),
|
|
13
|
+
}));
|
|
14
|
+
},
|
|
15
|
+
listOrgMembers: async (org) => {
|
|
16
|
+
const { rows } = await client.query('SELECT * FROM org_members WHERE org_slug = $1 ORDER BY email', [org]);
|
|
17
|
+
return rows.map((row) => ({
|
|
18
|
+
orgSlug: row.org_slug,
|
|
19
|
+
subject: row.subject,
|
|
20
|
+
email: row.email,
|
|
21
|
+
role: validateOrgRole(row.role),
|
|
22
|
+
createdAt: toIso(row.created_at),
|
|
23
|
+
}));
|
|
24
|
+
},
|
|
25
|
+
getOrgBillingLink: (org) => getOrgBillingLinkQuery(client, org),
|
|
26
|
+
getDefaultBillingAccount: (identity) => getDefaultBillingAccountQuery(client, identity),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function transactionalLegacyMigrationInventory(client) {
|
|
30
|
+
return {
|
|
31
|
+
getAppIdentity: async (org, app) => {
|
|
32
|
+
const current = await getAppRow(client, org, app);
|
|
33
|
+
return current === undefined
|
|
34
|
+
? undefined
|
|
35
|
+
: {
|
|
36
|
+
createdAt: current.createdAt,
|
|
37
|
+
active: current.active,
|
|
38
|
+
...(current.archivedAt !== undefined ? { archivedAt: current.archivedAt } : {}),
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function previewOrganizationSlugs(preview) {
|
|
44
|
+
return [
|
|
45
|
+
...preview.organizations.map((org) => org.org),
|
|
46
|
+
...preview.linkedOrganizations.map((org) => org.org),
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
export async function findPreparationByIdempotencyKey(client, key) {
|
|
50
|
+
const { rows } = await client.query('SELECT * FROM billing_legacy_migration_preparations WHERE idempotency_key = $1', [key]);
|
|
51
|
+
return rows[0];
|
|
52
|
+
}
|
|
53
|
+
export async function findPreparationByKind(client) {
|
|
54
|
+
const { rows } = await client.query('SELECT * FROM billing_legacy_migration_preparations WHERE migration_kind = $1', [LEGACY_BILLING_MIGRATION_KIND]);
|
|
55
|
+
return rows[0];
|
|
56
|
+
}
|
|
57
|
+
export async function findPreparationById(client, id) {
|
|
58
|
+
const { rows } = await client.query('SELECT * FROM billing_legacy_migration_preparations WHERE id = $1', [id]);
|
|
59
|
+
return rows[0];
|
|
60
|
+
}
|
|
61
|
+
export async function preparationResult(client, row, replayed) {
|
|
62
|
+
const { rows: accountRows } = await client.query(`SELECT * FROM billing_legacy_migration_accounts
|
|
63
|
+
WHERE migration_id = $1 ORDER BY billing_account_id`, [row.id]);
|
|
64
|
+
const { rows: linkRows } = await client.query(`SELECT * FROM billing_legacy_migration_organizations
|
|
65
|
+
WHERE migration_id = $1 ORDER BY org_slug`, [row.id]);
|
|
66
|
+
return {
|
|
67
|
+
schemaVersion: 1,
|
|
68
|
+
migrationId: row.id,
|
|
69
|
+
mode: 'shadow',
|
|
70
|
+
state: 'prepared',
|
|
71
|
+
replayed,
|
|
72
|
+
preparedAt: toIso(row.prepared_at),
|
|
73
|
+
enforcementMode: 'legacy_unchanged',
|
|
74
|
+
meteringMode: 'not_started',
|
|
75
|
+
grantMode: 'pending_activation',
|
|
76
|
+
mappingChecksum: row.mapping_checksum,
|
|
77
|
+
previewChecksum: row.preview_checksum,
|
|
78
|
+
planEvidenceChecksum: row.plan_evidence_checksum,
|
|
79
|
+
counts: {
|
|
80
|
+
organizations: linkRows.length,
|
|
81
|
+
accountsCreated: accountRows.filter((account) => account.account_disposition === 'created')
|
|
82
|
+
.length,
|
|
83
|
+
accountsReused: accountRows.filter((account) => account.account_disposition === 'existing')
|
|
84
|
+
.length,
|
|
85
|
+
linksCreated: linkRows.filter((link) => link.link_disposition === 'created').length,
|
|
86
|
+
linksPreserved: linkRows.filter((link) => link.link_disposition === 'preserved').length,
|
|
87
|
+
productionApps: accountRows.reduce((total, account) => total + account.production_app_count, 0),
|
|
88
|
+
grantCandidateFundingSets: accountRows.filter((account) => account.grant_candidate_at_preparation).length,
|
|
89
|
+
},
|
|
90
|
+
fundingSets: accountRows.map((account) => ({
|
|
91
|
+
billingAccountId: account.billing_account_id,
|
|
92
|
+
accountDisposition: accountDisposition(account.account_disposition),
|
|
93
|
+
snapshotId: account.snapshot_id,
|
|
94
|
+
organizations: account.organization_count,
|
|
95
|
+
productionApps: account.production_app_count,
|
|
96
|
+
grantCandidate: account.grant_candidate_at_preparation,
|
|
97
|
+
})),
|
|
98
|
+
links: linkRows.map((link) => ({
|
|
99
|
+
org: link.org_slug,
|
|
100
|
+
billingAccountId: link.billing_account_id,
|
|
101
|
+
version: link.link_version,
|
|
102
|
+
disposition: linkDisposition(link.link_disposition),
|
|
103
|
+
})),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function accountDisposition(value) {
|
|
107
|
+
if (value !== 'created' && value !== 'existing')
|
|
108
|
+
throw new Error('invalid account disposition');
|
|
109
|
+
return value;
|
|
110
|
+
}
|
|
111
|
+
function linkDisposition(value) {
|
|
112
|
+
if (value !== 'created' && value !== 'preserved')
|
|
113
|
+
throw new Error('invalid link disposition');
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
function toIso(value) {
|
|
117
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
118
|
+
if (!Number.isFinite(date.getTime()))
|
|
119
|
+
throw new Error('invalid migration timestamp');
|
|
120
|
+
return date.toISOString();
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=postgres-migration-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-migration-support.js","sourceRoot":"","sources":["../../src/billing/postgres-migration-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
import type { ControlPlaneIdentity } from '../auth/deploy-gate.js';
|
|
3
|
+
import { type LegacyBillingMigrationApplyRequest, type LegacyBillingMigrationApplyResult } from './migration-apply.js';
|
|
4
|
+
export declare function prepareLegacyBillingMigrationRow(pool: Pool, input: {
|
|
5
|
+
readonly request: LegacyBillingMigrationApplyRequest;
|
|
6
|
+
readonly actor: ControlPlaneIdentity;
|
|
7
|
+
readonly service: string;
|
|
8
|
+
}, now: () => Date): Promise<LegacyBillingMigrationApplyResult>;
|
|
9
|
+
//# sourceMappingURL=postgres-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-migration.d.ts","sourceRoot":"","sources":["../../src/billing/postgres-migration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAMnE,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EAOvC,MAAM,sBAAsB,CAAC;AA+C9B,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,IAAI,EACV,KAAK,EAAE;IACL,QAAQ,CAAC,OAAO,EAAE,kCAAkC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,EACD,GAAG,EAAE,MAAM,IAAI,GACd,OAAO,CAAC,iCAAiC,CAAC,CAgQ5C"}
|