@noodleseed/one 0.95.1 → 0.95.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/commands/auth-live-doctor.d.ts +1 -0
  2. package/dist/commands/auth-live-doctor.d.ts.map +1 -1
  3. package/dist/commands/auth-live-doctor.js +7 -6
  4. package/dist/commands/auth-live-doctor.js.map +1 -1
  5. package/dist/commands/auth-metadata-readiness.d.ts +2 -0
  6. package/dist/commands/auth-metadata-readiness.d.ts.map +1 -1
  7. package/dist/commands/auth-metadata-readiness.js +7 -0
  8. package/dist/commands/auth-metadata-readiness.js.map +1 -1
  9. package/dist/commands/auth-ops.d.ts +1 -0
  10. package/dist/commands/auth-ops.d.ts.map +1 -1
  11. package/dist/commands/auth-ops.js +26 -7
  12. package/dist/commands/auth-ops.js.map +1 -1
  13. package/dist/commands/catalog-data-auth-discovery.d.ts.map +1 -1
  14. package/dist/commands/catalog-data-auth-discovery.js +7 -0
  15. package/dist/commands/catalog-data-auth-discovery.js.map +1 -1
  16. package/dist/saas-scaffold-template.d.ts.map +1 -1
  17. package/dist/saas-scaffold-template.js +2 -1
  18. package/dist/saas-scaffold-template.js.map +1 -1
  19. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +3 -3
  20. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  21. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js +3 -3
  22. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js.map +1 -1
  23. package/node_modules/@noodle-borg/capabilities/dist/index.js +1 -1
  24. package/node_modules/@noodle-borg/capabilities/dist/index.js.map +1 -1
  25. package/node_modules/@noodle-borg/module/dist/contract.d.ts +1 -1
  26. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  27. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-binding.d.ts +37 -0
  28. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-binding.d.ts.map +1 -0
  29. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-binding.js +182 -0
  30. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-binding.js.map +1 -0
  31. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-quarantine.d.ts +5 -0
  32. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-quarantine.d.ts.map +1 -0
  33. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-quarantine.js +14 -0
  34. package/node_modules/@noodle-borg/service/dist/customer-auth-audience-quarantine.js.map +1 -0
  35. package/node_modules/@noodle-borg/service/dist/customer-verifier.js +5 -4
  36. package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
  37. package/node_modules/@noodle-borg/service/dist/options.d.ts +2 -2
  38. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  39. package/node_modules/@noodle-borg/service/dist/platform-account-reset-quarantine-postgres.d.ts.map +1 -1
  40. package/node_modules/@noodle-borg/service/dist/platform-account-reset-quarantine-postgres.js +20 -8
  41. package/node_modules/@noodle-borg/service/dist/platform-account-reset-quarantine-postgres.js.map +1 -1
  42. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.d.ts +2 -0
  43. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.d.ts.map +1 -1
  44. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.js +58 -13
  45. package/node_modules/@noodle-borg/service/dist/platform-account-reset-rollback-postgres.js.map +1 -1
  46. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.d.ts +1 -0
  47. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.d.ts.map +1 -1
  48. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.js +3 -0
  49. package/node_modules/@noodle-borg/service/dist/platform-auth-inventory-source-fence-transaction-postgres.js.map +1 -1
  50. package/node_modules/@noodle-borg/service/dist/platform-auth-operator.d.ts +24 -24
  51. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts +2 -1
  52. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.d.ts.map +1 -1
  53. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js +4 -1
  54. package/node_modules/@noodle-borg/service/dist/platform-auth-runtime.js.map +1 -1
  55. package/node_modules/@noodle-borg/service/dist/registry-access.d.ts +5 -1
  56. package/node_modules/@noodle-borg/service/dist/registry-access.d.ts.map +1 -1
  57. package/node_modules/@noodle-borg/service/dist/registry-access.js +64 -15
  58. package/node_modules/@noodle-borg/service/dist/registry-access.js.map +1 -1
  59. package/node_modules/@noodle-borg/service/dist/registry-rollback.d.ts +19 -0
  60. package/node_modules/@noodle-borg/service/dist/registry-rollback.d.ts.map +1 -0
  61. package/node_modules/@noodle-borg/service/dist/registry-rollback.js +91 -0
  62. package/node_modules/@noodle-borg/service/dist/registry-rollback.js.map +1 -0
  63. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +18 -2
  64. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -1
  65. package/node_modules/@noodle-borg/service/dist/registry-state.js +83 -7
  66. package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -1
  67. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +8 -0
  68. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  69. package/node_modules/@noodle-borg/service/dist/registry-targets.js +24 -0
  70. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  71. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +1 -1
  72. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts.map +1 -1
  73. package/node_modules/@noodle-borg/service/dist/registry.d.ts +2 -1
  74. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  75. package/node_modules/@noodle-borg/service/dist/registry.js +72 -83
  76. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  77. package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts.map +1 -1
  78. package/node_modules/@noodle-borg/service/dist/routes/archive.js +14 -0
  79. package/node_modules/@noodle-borg/service/dist/routes/archive.js.map +1 -1
  80. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-dispatch.d.ts.map +1 -1
  81. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-dispatch.js +4 -0
  82. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-dispatch.js.map +1 -1
  83. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.d.ts +1 -0
  84. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.d.ts.map +1 -1
  85. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js +17 -4
  86. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js.map +1 -1
  87. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts +9 -9
  88. package/node_modules/@noodle-borg/service/dist/routes/private-platform-auth-dispatch.d.ts.map +1 -1
  89. package/node_modules/@noodle-borg/service/dist/routes/private-platform-auth-dispatch.js +1 -1
  90. package/node_modules/@noodle-borg/service/dist/routes/private-platform-auth-dispatch.js.map +1 -1
  91. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  92. package/node_modules/@noodle-borg/service/dist/serve.js +4 -2
  93. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  94. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts +5 -2
  95. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts.map +1 -1
  96. package/node_modules/@noodle-borg/service/dist/store/in-memory.js +51 -8
  97. package/node_modules/@noodle-borg/service/dist/store/in-memory.js.map +1 -1
  98. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +5 -2
  99. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -1
  100. package/node_modules/@noodle-borg/service/dist/store/json-file.js +55 -6
  101. package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -1
  102. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts +2 -2
  103. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts.map +1 -1
  104. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js +30 -15
  105. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js.map +1 -1
  106. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience-schema.d.ts +16 -0
  107. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience-schema.d.ts.map +1 -0
  108. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience-schema.js +329 -0
  109. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience-schema.js.map +1 -0
  110. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience.d.ts +5 -0
  111. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience.d.ts.map +1 -0
  112. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience.js +24 -0
  113. package/node_modules/@noodle-borg/service/dist/store/postgres-customer-auth-audience.js.map +1 -0
  114. package/node_modules/@noodle-borg/service/dist/store/postgres-deploy-records.d.ts.map +1 -1
  115. package/node_modules/@noodle-borg/service/dist/store/postgres-deploy-records.js +2 -1
  116. package/node_modules/@noodle-borg/service/dist/store/postgres-deploy-records.js.map +1 -1
  117. package/node_modules/@noodle-borg/service/dist/store/postgres-deployment-access.d.ts +9 -0
  118. package/node_modules/@noodle-borg/service/dist/store/postgres-deployment-access.d.ts.map +1 -0
  119. package/node_modules/@noodle-borg/service/dist/store/postgres-deployment-access.js +53 -0
  120. package/node_modules/@noodle-borg/service/dist/store/postgres-deployment-access.js.map +1 -0
  121. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts.map +1 -1
  122. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js +2 -1
  123. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js.map +1 -1
  124. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts +2 -1
  125. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -1
  126. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +2 -24
  127. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -1
  128. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts +2 -1
  129. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  130. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +3 -0
  131. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  132. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +7 -2
  133. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  134. package/node_modules/@noodle-borg/service/dist/store/postgres.js +27 -31
  135. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  136. package/node_modules/@noodle-borg/service/dist/store.d.ts +20 -1
  137. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  138. package/package.json +1 -1
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Install and backfill the database-owned customer audience invariant.
3
+ *
4
+ * Row triggers retain released ownership reservations and use compatible NOWAIT key-share/update locks to
5
+ * claim or transfer them instead of deleting OLD bindings. A non-blocking per-binding advisory lock closes
6
+ * the absent-row insertion race. This removes OLD→NEW cycles while letting preceding revisions participate
7
+ * without a global lock or rolling-version lock inversion.
8
+ */
9
+ export async function ensureCustomerAuthAudienceSchema(pool) {
10
+ const client = await pool.connect();
11
+ try {
12
+ await client.query('BEGIN');
13
+ await client.query('LOCK TABLE deploy_records IN SHARE ROW EXCLUSIVE MODE');
14
+ await client.query(`
15
+ CREATE INDEX IF NOT EXISTS deploy_records_active_customer_auth
16
+ ON deploy_records(org_slug, app_slug, environment)
17
+ INCLUDE(server_auth)
18
+ WHERE active AND archived_at IS NULL AND access_mode = 'customers' AND server_auth IS NOT NULL
19
+ `);
20
+ await client.query(`
21
+ CREATE TABLE IF NOT EXISTS customer_auth_audience_bindings (
22
+ issuer text NOT NULL,
23
+ audience text NOT NULL,
24
+ org_slug text NOT NULL,
25
+ app_slug text NOT NULL,
26
+ environment text NOT NULL,
27
+ PRIMARY KEY (issuer, audience)
28
+ )
29
+ `);
30
+ await client.query(`
31
+ CREATE OR REPLACE FUNCTION noodle_customer_auth_is_valid(auth jsonb)
32
+ RETURNS boolean
33
+ LANGUAGE sql
34
+ IMMUTABLE
35
+ AS $$
36
+ SELECT CASE
37
+ WHEN auth IS NULL OR jsonb_typeof(auth) <> 'object'
38
+ THEN false
39
+ WHEN COALESCE(auth->>'kind', 'oidc') = 'bridge'
40
+ THEN COALESCE(btrim(auth->>'provider'), '') <> ''
41
+ WHEN COALESCE(auth->>'kind', 'oidc') = 'federatedOidc'
42
+ THEN jsonb_typeof(auth->'issuers') = 'array'
43
+ AND jsonb_array_length(
44
+ CASE
45
+ WHEN jsonb_typeof(auth->'issuers') = 'array' THEN auth->'issuers'
46
+ ELSE '[]'::jsonb
47
+ END
48
+ ) > 0
49
+ AND NOT EXISTS (
50
+ SELECT 1
51
+ FROM jsonb_array_elements(
52
+ CASE
53
+ WHEN jsonb_typeof(auth->'issuers') = 'array' THEN auth->'issuers'
54
+ ELSE '[]'::jsonb
55
+ END
56
+ ) issuer
57
+ WHERE jsonb_typeof(issuer) <> 'object'
58
+ OR COALESCE(btrim(issuer->>'issuer'), '') = ''
59
+ OR COALESCE(btrim(issuer->>'audience'), '') = ''
60
+ )
61
+ WHEN COALESCE(auth->>'kind', 'oidc') = 'oidc'
62
+ THEN COALESCE(btrim(auth->>'issuer'), '') <> ''
63
+ AND COALESCE(btrim(auth->>'audience'), '') <> ''
64
+ ELSE false
65
+ END
66
+ $$
67
+ `);
68
+ await client.query(`
69
+ CREATE OR REPLACE FUNCTION noodle_customer_auth_bindings(auth jsonb)
70
+ RETURNS TABLE(issuer text, audience text)
71
+ LANGUAGE sql
72
+ IMMUTABLE
73
+ AS $$
74
+ SELECT regexp_replace(auth->>'issuer', '/+$', ''), auth->>'audience'
75
+ WHERE COALESCE(auth->>'kind', 'oidc') = 'oidc'
76
+ UNION ALL
77
+ SELECT regexp_replace(candidate->>'issuer', '/+$', ''), candidate->>'audience'
78
+ FROM jsonb_array_elements(
79
+ CASE
80
+ WHEN jsonb_typeof(auth->'issuers') = 'array' THEN auth->'issuers'
81
+ ELSE '[]'::jsonb
82
+ END
83
+ ) candidate
84
+ WHERE auth->>'kind' = 'federatedOidc'
85
+ $$
86
+ `);
87
+ await client.query(`
88
+ CREATE OR REPLACE FUNCTION noodle_reconcile_customer_auth_audiences()
89
+ RETURNS void
90
+ LANGUAGE plpgsql
91
+ AS $$
92
+ BEGIN
93
+ DELETE FROM customer_auth_audience_bindings;
94
+ INSERT INTO customer_auth_audience_bindings
95
+ (issuer, audience, org_slug, app_slug, environment)
96
+ SELECT DISTINCT ON (binding.issuer, binding.audience)
97
+ binding.issuer, binding.audience,
98
+ record.org_slug, record.app_slug, record.environment
99
+ FROM deploy_records record
100
+ CROSS JOIN LATERAL noodle_customer_auth_bindings(record.server_auth) binding
101
+ WHERE record.active
102
+ AND record.archived_at IS NULL
103
+ AND record.access_mode = 'customers'
104
+ AND noodle_customer_auth_is_valid(record.server_auth)
105
+ ORDER BY binding.issuer, binding.audience,
106
+ record.org_slug, record.app_slug, record.environment;
107
+ END
108
+ $$
109
+ `);
110
+ await client.query(`
111
+ CREATE OR REPLACE FUNCTION noodle_customer_auth_audience_row_trigger()
112
+ RETURNS trigger
113
+ LANGUAGE plpgsql
114
+ AS $$
115
+ DECLARE
116
+ binding record;
117
+ owner_org text;
118
+ owner_app text;
119
+ owner_environment text;
120
+ BEGIN
121
+ IF TG_OP <> 'DELETE'
122
+ AND NEW.active
123
+ AND NEW.archived_at IS NULL
124
+ AND NEW.access_mode = 'customers'
125
+ THEN
126
+ IF NOT noodle_customer_auth_is_valid(NEW.server_auth) THEN
127
+ RAISE EXCEPTION USING
128
+ ERRCODE = 'NDA02',
129
+ MESSAGE = 'customer auth audience projection invalid';
130
+ END IF;
131
+ FOR binding IN
132
+ SELECT *
133
+ FROM noodle_customer_auth_bindings(NEW.server_auth)
134
+ ORDER BY issuer, audience
135
+ LOOP
136
+ IF EXISTS (
137
+ SELECT 1
138
+ FROM deploy_records current_record
139
+ CROSS JOIN LATERAL
140
+ noodle_customer_auth_bindings(current_record.server_auth) current_binding
141
+ WHERE current_record.active
142
+ AND current_record.archived_at IS NULL
143
+ AND current_record.access_mode = 'customers'
144
+ AND noodle_customer_auth_is_valid(current_record.server_auth)
145
+ AND current_binding.issuer = binding.issuer
146
+ AND current_binding.audience = binding.audience
147
+ AND (
148
+ current_record.org_slug <> NEW.org_slug
149
+ OR current_record.app_slug <> NEW.app_slug
150
+ OR current_record.environment <> NEW.environment
151
+ )
152
+ ) THEN
153
+ RAISE EXCEPTION USING
154
+ ERRCODE = 'NDA01',
155
+ MESSAGE = 'customer auth audience conflict';
156
+ END IF;
157
+ <<claim_binding>>
158
+ LOOP
159
+ SELECT ownership.org_slug, ownership.app_slug, ownership.environment
160
+ INTO owner_org, owner_app, owner_environment
161
+ FROM customer_auth_audience_bindings ownership
162
+ WHERE ownership.issuer = binding.issuer
163
+ AND ownership.audience = binding.audience;
164
+ IF NOT FOUND THEN
165
+ IF NOT pg_try_advisory_xact_lock(
166
+ hashtextextended(
167
+ jsonb_build_array(binding.issuer, binding.audience)::text,
168
+ 0
169
+ )
170
+ ) THEN
171
+ RAISE EXCEPTION USING
172
+ ERRCODE = 'NDA01',
173
+ MESSAGE = 'customer auth audience conflict';
174
+ END IF;
175
+ SELECT ownership.org_slug, ownership.app_slug, ownership.environment
176
+ INTO owner_org, owner_app, owner_environment
177
+ FROM customer_auth_audience_bindings ownership
178
+ WHERE ownership.issuer = binding.issuer
179
+ AND ownership.audience = binding.audience;
180
+ IF FOUND THEN
181
+ CONTINUE claim_binding;
182
+ END IF;
183
+ INSERT INTO customer_auth_audience_bindings
184
+ (issuer, audience, org_slug, app_slug, environment)
185
+ VALUES (
186
+ binding.issuer,
187
+ binding.audience,
188
+ NEW.org_slug,
189
+ NEW.app_slug,
190
+ NEW.environment
191
+ );
192
+ EXIT claim_binding;
193
+ END IF;
194
+
195
+ IF owner_org = NEW.org_slug
196
+ AND owner_app = NEW.app_slug
197
+ AND owner_environment = NEW.environment
198
+ THEN
199
+ PERFORM 1
200
+ FROM customer_auth_audience_bindings ownership
201
+ WHERE ownership.issuer = binding.issuer
202
+ AND ownership.audience = binding.audience
203
+ AND ownership.org_slug = owner_org
204
+ AND ownership.app_slug = owner_app
205
+ AND ownership.environment = owner_environment
206
+ FOR KEY SHARE NOWAIT;
207
+ IF FOUND THEN
208
+ EXIT claim_binding;
209
+ END IF;
210
+ CONTINUE claim_binding;
211
+ END IF;
212
+
213
+ SELECT ownership.org_slug, ownership.app_slug, ownership.environment
214
+ INTO owner_org, owner_app, owner_environment
215
+ FROM customer_auth_audience_bindings ownership
216
+ WHERE ownership.issuer = binding.issuer
217
+ AND ownership.audience = binding.audience
218
+ FOR UPDATE NOWAIT;
219
+ IF NOT FOUND THEN
220
+ CONTINUE claim_binding;
221
+ END IF;
222
+ IF owner_org = NEW.org_slug
223
+ AND owner_app = NEW.app_slug
224
+ AND owner_environment = NEW.environment
225
+ THEN
226
+ EXIT claim_binding;
227
+ END IF;
228
+ IF EXISTS (
229
+ SELECT 1
230
+ FROM deploy_records current_record
231
+ CROSS JOIN LATERAL
232
+ noodle_customer_auth_bindings(current_record.server_auth) current_binding
233
+ WHERE current_record.active
234
+ AND current_record.archived_at IS NULL
235
+ AND current_record.access_mode = 'customers'
236
+ AND current_record.org_slug = owner_org
237
+ AND current_record.app_slug = owner_app
238
+ AND current_record.environment = owner_environment
239
+ AND current_binding.issuer = binding.issuer
240
+ AND current_binding.audience = binding.audience
241
+ ) THEN
242
+ RAISE EXCEPTION USING
243
+ ERRCODE = 'NDA01',
244
+ MESSAGE = 'customer auth audience conflict';
245
+ END IF;
246
+ UPDATE customer_auth_audience_bindings ownership
247
+ SET org_slug = NEW.org_slug,
248
+ app_slug = NEW.app_slug,
249
+ environment = NEW.environment
250
+ WHERE ownership.issuer = binding.issuer
251
+ AND ownership.audience = binding.audience;
252
+ EXIT claim_binding;
253
+ END LOOP claim_binding;
254
+ END LOOP;
255
+ END IF;
256
+ RETURN NULL;
257
+ EXCEPTION
258
+ WHEN lock_not_available OR unique_violation THEN
259
+ RAISE EXCEPTION USING
260
+ ERRCODE = 'NDA01',
261
+ MESSAGE = 'customer auth audience conflict';
262
+ END
263
+ $$
264
+ `);
265
+ await client.query('DROP TRIGGER IF EXISTS deploy_records_customer_auth_audience ON deploy_records');
266
+ await client.query(`
267
+ CREATE TRIGGER deploy_records_customer_auth_audience
268
+ AFTER INSERT OR UPDATE OR DELETE ON deploy_records
269
+ FOR EACH ROW
270
+ EXECUTE FUNCTION noodle_customer_auth_audience_row_trigger()
271
+ `);
272
+ await client.query('SELECT noodle_reconcile_customer_auth_audiences()');
273
+ const report = await client.query(`
274
+ WITH active_customer_records AS (
275
+ SELECT org_slug, app_slug, environment, server_auth
276
+ FROM deploy_records
277
+ WHERE active
278
+ AND archived_at IS NULL
279
+ AND access_mode = 'customers'
280
+ ),
281
+ valid_bindings AS (
282
+ SELECT DISTINCT binding.issuer, binding.audience,
283
+ record.org_slug, record.app_slug, record.environment
284
+ FROM active_customer_records record
285
+ CROSS JOIN LATERAL noodle_customer_auth_bindings(record.server_auth) binding
286
+ WHERE noodle_customer_auth_is_valid(record.server_auth)
287
+ ),
288
+ conflicting_bindings AS (
289
+ SELECT issuer, audience
290
+ FROM valid_bindings
291
+ GROUP BY issuer, audience
292
+ HAVING count(*) > 1
293
+ ),
294
+ conflicting_boundaries AS (
295
+ SELECT DISTINCT binding.org_slug, binding.app_slug, binding.environment
296
+ FROM valid_bindings binding
297
+ INNER JOIN conflicting_bindings conflict
298
+ ON conflict.issuer = binding.issuer
299
+ AND conflict.audience = binding.audience
300
+ )
301
+ SELECT
302
+ (
303
+ SELECT count(DISTINCT ROW(org_slug, app_slug, environment))::int
304
+ FROM active_customer_records
305
+ WHERE NOT noodle_customer_auth_is_valid(server_auth)
306
+ ) AS invalid_boundaries,
307
+ (SELECT count(*)::int FROM conflicting_bindings) AS conflicting_bindings,
308
+ (SELECT count(*)::int FROM conflicting_boundaries) AS conflicting_boundaries
309
+ `);
310
+ const row = report.rows[0];
311
+ if (row === undefined) {
312
+ throw new Error('customer auth audience reconciliation report missing');
313
+ }
314
+ await client.query('COMMIT');
315
+ return {
316
+ invalidBoundaries: row.invalid_boundaries,
317
+ conflictingBindings: row.conflicting_bindings,
318
+ conflictingBoundaries: row.conflicting_boundaries,
319
+ };
320
+ }
321
+ catch (error) {
322
+ await client.query('ROLLBACK').catch(() => undefined);
323
+ throw error;
324
+ }
325
+ finally {
326
+ client.release();
327
+ }
328
+ }
329
+ //# sourceMappingURL=postgres-customer-auth-audience-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-customer-auth-audience-schema.js","sourceRoot":"","sources":["../../src/store/postgres-customer-auth-audience-schema.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,IAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC5E,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;KAKlB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;KASlB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqClB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;KAkBlB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;KAsBlB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0JlB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAChB,gFAAgF,CACjF,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;KAKlB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoCxE,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO;YACL,iBAAiB,EAAE,GAAG,CAAC,kBAAkB;YACzC,mBAAmB,EAAE,GAAG,CAAC,oBAAoB;YAC7C,qBAAqB,EAAE,GAAG,CAAC,sBAAsB;SAClD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Pool } from 'pg';
2
+ import type { TenantAuthConfig, TenantRef } from '../store.js';
3
+ /** Efficient shared-store lookup used to fail closed on cross-boundary OIDC audience reuse. */
4
+ export declare function findActiveCustomerAuthAudienceConflictRow(pool: Pool, ref: TenantRef, auth: TenantAuthConfig): Promise<TenantRef | undefined>;
5
+ //# sourceMappingURL=postgres-customer-auth-audience.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-customer-auth-audience.d.ts","sourceRoot":"","sources":["../../src/store/postgres-customer-auth-audience.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAK/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAU/D,+FAA+F;AAC/F,wBAAsB,yCAAyC,CAC7D,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CA4BhC"}
@@ -0,0 +1,24 @@
1
+ import { customerAuthAudienceBindings, isTenantAuthConfig, } from '../customer-auth-audience-binding.js';
2
+ import { validateTenantRef } from '../store.js';
3
+ /** Efficient shared-store lookup used to fail closed on cross-boundary OIDC audience reuse. */
4
+ export async function findActiveCustomerAuthAudienceConflictRow(pool, ref, auth) {
5
+ const safe = validateTenantRef(ref);
6
+ const keys = new Set(customerAuthAudienceBindings(auth).map((binding) => JSON.stringify([binding.issuer, binding.audience])));
7
+ if (keys.size === 0)
8
+ return undefined;
9
+ const { rows } = await pool.query(`SELECT org_slug, app_slug, environment, server_auth
10
+ FROM deploy_records
11
+ WHERE active = true
12
+ AND archived_at IS NULL
13
+ AND access_mode = 'customers'
14
+ AND NOT (org_slug = $1 AND app_slug = $2 AND environment = $3)`, [safe.org, safe.app, safe.env]);
15
+ for (const row of rows) {
16
+ if (!isTenantAuthConfig(row.server_auth))
17
+ continue;
18
+ if (customerAuthAudienceBindings(row.server_auth).some((binding) => keys.has(JSON.stringify([binding.issuer, binding.audience])))) {
19
+ return { org: row.org_slug, app: row.app_slug, env: row.environment };
20
+ }
21
+ }
22
+ return undefined;
23
+ }
24
+ //# sourceMappingURL=postgres-customer-auth-audience.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-customer-auth-audience.js","sourceRoot":"","sources":["../../src/store/postgres-customer-auth-audience.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAShD,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,yCAAyC,CAC7D,IAAU,EACV,GAAc,EACd,IAAsB;IAEtB,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,4BAA4B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACjD,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CACnD,CACF,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;;;;sEAKkE,EAClE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAC/B,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,SAAS;QACnD,IACE,4BAA4B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7D,EACD,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-deploy-records.d.ts","sourceRoot":"","sources":["../../src/store/postgres-deploy-records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF5F"}
1
+ {"version":3,"file":"postgres-deploy-records.d.ts","sourceRoot":"","sources":["../../src/store/postgres-deploy-records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAO/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF5F"}
@@ -1,4 +1,5 @@
1
1
  import { assertProductionAppCapacityTx, lockBillingEnforcementLifecycleSharedTx, prepareProductionAppAdmissionTx, } from '../billing/postgres-production-app-admission.js';
2
+ import { translateCustomerAuthAudienceDatabaseError } from '../customer-auth-audience-binding.js';
2
3
  import { DEPLOYMENT_ID_PATTERN, validateTenantRef } from '../store.js';
3
4
  import { deployRecordParams } from './postgres-rows.js';
4
5
  /**
@@ -78,7 +79,7 @@ export async function appendDeployRecordRows(pool, record) {
78
79
  }
79
80
  catch (error) {
80
81
  await client.query('ROLLBACK');
81
- throw error;
82
+ throw translateCustomerAuthAudienceDatabaseError(error);
82
83
  }
83
84
  finally {
84
85
  client.release();
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-deploy-records.js","sourceRoot":"","sources":["../../src/store/postgres-deploy-records.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,+BAA+B,GAChC,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAU,EAAE,MAAoB;IAC3E,6FAA6F;IAC7F,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,uCAAuC,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,MAAM,+BAA+B,CAAC,MAAM,EAAE;gBAC9D,GAAG,EAAE,MAAM,CAAC,OAAO;gBACnB,GAAG,EAAE,MAAM,CAAC,OAAO;aACpB,CAAC,CAAC;YACH,MAAM,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE;YAC1F,MAAM,CAAC,OAAO;SACf,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAChB;+CACyC,EACzC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CACjC,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAChB;;;;yDAImD,EACnD,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CACrD,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,KAAK,CAChB;;;;;sDAK8C,EAC9C,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,CACnF,CAAC;QACJ,CAAC;QACD,wGAAwG;QACxG,MAAM,MAAM,CAAC,KAAK,CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;gEA2B0D,EAC1D,kBAAkB,CAAC,MAAM,CAAC,CAC3B,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"postgres-deploy-records.js","sourceRoot":"","sources":["../../src/store/postgres-deploy-records.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAC7B,uCAAuC,EACvC,+BAA+B,GAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,0CAA0C,EAAE,MAAM,sCAAsC,CAAC;AAElG,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAU,EAAE,MAAoB;IAC3E,6FAA6F;IAC7F,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,uCAAuC,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,MAAM,+BAA+B,CAAC,MAAM,EAAE;gBAC9D,GAAG,EAAE,MAAM,CAAC,OAAO;gBACnB,GAAG,EAAE,MAAM,CAAC,OAAO;aACpB,CAAC,CAAC;YACH,MAAM,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE;YAC1F,MAAM,CAAC,OAAO;SACf,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAChB;+CACyC,EACzC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CACjC,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAChB;;;;yDAImD,EACnD,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CACrD,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,KAAK,CAChB;;;;;sDAK8C,EAC9C,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,CACnF,CAAC;QACJ,CAAC;QACD,wGAAwG;QACxG,MAAM,MAAM,CAAC,KAAK,CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;gEA2B0D,EAC1D,kBAAkB,CAAC,MAAM,CAAC,CAC3B,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,0CAA0C,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { AccessMode } from '@noodle-borg/transport-http';
2
+ import type { Pool } from 'pg';
3
+ import type { DeployRecord, TenantAuthConfig, TenantRef } from '../store.js';
4
+ /** Compare-and-set one active deployment's access mode and customer auth projection atomically. */
5
+ export declare function updateActiveDeploymentAccessRow(pool: Pool, ref: TenantRef, deploymentId: string, accessMode: AccessMode, precondition: {
6
+ readonly expectedAccessMode: AccessMode | undefined;
7
+ readonly serverAuth?: TenantAuthConfig;
8
+ }): Promise<DeployRecord | undefined>;
9
+ //# sourceMappingURL=postgres-deployment-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-deployment-access.d.ts","sourceRoot":"","sources":["../../src/store/postgres-deployment-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7E,mGAAmG;AACnG,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE;IACZ,QAAQ,CAAC,kBAAkB,EAAE,UAAU,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACxC,GACA,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA+CnC"}
@@ -0,0 +1,53 @@
1
+ import { translateCustomerAuthAudienceDatabaseError } from '../customer-auth-audience-binding.js';
2
+ import { DEPLOYMENT_ID_PATTERN, validateTenantRef } from '../store.js';
3
+ import { rowToRecord } from './postgres-rows.js';
4
+ /** Compare-and-set one active deployment's access mode and customer auth projection atomically. */
5
+ export async function updateActiveDeploymentAccessRow(pool, ref, deploymentId, accessMode, precondition) {
6
+ const safe = validateTenantRef(ref);
7
+ if (!DEPLOYMENT_ID_PATTERN.test(deploymentId))
8
+ return undefined;
9
+ const client = await pool.connect();
10
+ try {
11
+ await client.query('BEGIN');
12
+ const { rows } = await client.query(`UPDATE deploy_records
13
+ SET access_mode = CASE
14
+ WHEN COALESCE(access_mode, 'owner-only') = $5 THEN access_mode
15
+ ELSE $5
16
+ END,
17
+ server_auth = CASE
18
+ WHEN $5 = 'customers' AND $7::jsonb IS NOT NULL THEN $7::jsonb
19
+ ELSE server_auth
20
+ END
21
+ WHERE deployment_id = $1
22
+ AND org_slug = $2
23
+ AND app_slug = $3
24
+ AND environment = $4
25
+ AND active = true
26
+ AND archived_at IS NULL
27
+ AND access_mode IS NOT DISTINCT FROM $6
28
+ RETURNING *`, [
29
+ deploymentId,
30
+ safe.org,
31
+ safe.app,
32
+ safe.env,
33
+ accessMode,
34
+ precondition.expectedAccessMode ?? null,
35
+ precondition.serverAuth === undefined ? null : JSON.stringify(precondition.serverAuth),
36
+ ]);
37
+ const updated = rows[0];
38
+ if (updated === undefined) {
39
+ await client.query('ROLLBACK');
40
+ return undefined;
41
+ }
42
+ await client.query('COMMIT');
43
+ return rowToRecord(updated);
44
+ }
45
+ catch (error) {
46
+ await client.query('ROLLBACK').catch(() => undefined);
47
+ throw translateCustomerAuthAudienceDatabaseError(error);
48
+ }
49
+ finally {
50
+ client.release();
51
+ }
52
+ }
53
+ //# sourceMappingURL=postgres-deployment-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-deployment-access.js","sourceRoot":"","sources":["../../src/store/postgres-deployment-access.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0CAA0C,EAAE,MAAM,sCAAsC,CAAC;AAElG,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAkB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,IAAU,EACV,GAAc,EACd,YAAoB,EACpB,UAAsB,EACtB,YAGC;IAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC;;;;;;;;;;;;;;;;mBAgBa,EACb;YACE,YAAY;YACZ,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,UAAU;YACV,YAAY,CAAC,kBAAkB,IAAI,IAAI;YACvC,YAAY,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC;SACvF,CACF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,0CAA0C,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-github-runs.d.ts","sourceRoot":"","sources":["../../src/store/postgres-github-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAM3C,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAE1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAE/B,MAAM,aAAa,CAAC;AA+DrB,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,IAAI,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAkEhC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAMtC;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAKtC;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACrC,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,IAAI,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,eAAe,EACnB,KAAK,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7E,OAAO,CAAC,yBAAyB,CAAC,CA0CpC;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,IAAI,EACf,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAoB5B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CA2E3C"}
1
+ {"version":3,"file":"postgres-github-runs.d.ts","sourceRoot":"","sources":["../../src/store/postgres-github-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAO3C,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAE1B,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAE/B,MAAM,aAAa,CAAC;AA+DrB,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,IAAI,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAkEhC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAMtC;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAKtC;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACrC,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,IAAI,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,eAAe,EACnB,KAAK,GAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7E,OAAO,CAAC,yBAAyB,CAAC,CA0CpC;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,IAAI,EACf,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAoB5B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CA2E3C"}
@@ -1,4 +1,5 @@
1
1
  import { assertProductionAppCapacityTx, lockBillingEnforcementLifecycleSharedTx, prepareProductionAppAdmissionTx, } from '../billing/postgres-production-app-admission.js';
2
+ import { translateCustomerAuthAudienceDatabaseError } from '../customer-auth-audience-binding.js';
2
3
  import { DEPLOYMENT_ID_PATTERN, validateTenantRef, } from '../store.js';
3
4
  import { applyDeployRunTransition, DEFAULT_DEPLOY_RUN_LIST_LIMIT, validateCancelFilter, validateCreateDeployRunInput, } from './github-runs.js';
4
5
  import { rowToRecord as deployRecordFromRow } from './postgres-rows.js';
@@ -225,7 +226,7 @@ export async function activateDeploymentForRunTx(pool, ref, deploymentId, runId)
225
226
  }
226
227
  catch (error) {
227
228
  await client.query('ROLLBACK').catch(() => undefined);
228
- throw error;
229
+ throw translateCustomerAuthAudienceDatabaseError(error);
229
230
  }
230
231
  finally {
231
232
  client.release();
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-github-runs.js","sourceRoot":"","sources":["../../src/store/postgres-github-runs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-github-runs.js","sourceRoot":"","sources":["../../src/store/postgres-github-runs.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,10 @@
4
4
  */
5
5
  import type { HostedPackagedAsset } from '@noodle-borg/compiler';
6
6
  import type { SecretBox } from '@noodle-borg/runtime';
7
+ import { isTenantAuthConfig } from '../customer-auth-audience-binding.js';
7
8
  import type { ConfigScope, ConfigValueMetadata, DeployRecord, ManagedConfigKind, SecretEnvelope } from '../store.js';
8
9
  import type { PostgresStoreOptions } from './postgres.js';
10
+ export { isTenantAuthConfig };
9
11
  /** The on-disk-equivalent row shape. `created_at` comes back as a `Date`; `secrets` is parsed `jsonb`. */
10
12
  export interface DeployRow {
11
13
  readonly deployment_id: string;
@@ -49,7 +51,6 @@ export interface ConfigRow {
49
51
  export declare function deployRecordParams(record: DeployRecord): unknown[];
50
52
  export declare function rowToRecord(row: DeployRow): DeployRecord;
51
53
  export declare function configRowToMetadata(row: ConfigRow): ConfigValueMetadata;
52
- export declare function isTenantAuthConfig(value: unknown): value is NonNullable<DeployRecord['serverAuth']>;
53
54
  export declare function validateConfigKind(kind: ManagedConfigKind): ManagedConfigKind;
54
55
  export declare function scopeParts(scope: ConfigScope): {
55
56
  readonly level: ConfigScope['level'];
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-rows.d.ts","sourceRoot":"","sources":["../../src/store/postgres-rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-rows.d.ts","sourceRoot":"","sources":["../../src/store/postgres-rows.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
  * Row shapes + row↔record mapping for the relational store (extracted verbatim from `postgres.ts`
3
3
  * to keep that file under the size gate). Pure mapping/validation — no SQL here.
4
4
  */
5
+ import { isTenantAuthConfig } from '../customer-auth-audience-binding.js';
6
+ export { isTenantAuthConfig };
5
7
  /** Ordered bind values for the deploy-record upsert in {@link PostgresArtifactStore}. */
6
8
  export function deployRecordParams(record) {
7
9
  return [
@@ -87,30 +89,6 @@ export function configRowToMetadata(row) {
87
89
  : {}),
88
90
  };
89
91
  }
90
- export function isTenantAuthConfig(value) {
91
- if (typeof value !== 'object' || value === null)
92
- return false;
93
- const auth = value;
94
- if (auth.kind === 'bridge') {
95
- return typeof auth.provider === 'string' && auth.provider.trim().length > 0;
96
- }
97
- if (auth.kind === 'federatedOidc') {
98
- return (Array.isArray(auth.issuers) &&
99
- auth.issuers.length > 0 &&
100
- auth.issuers.every((entry) => typeof entry === 'object' &&
101
- entry !== null &&
102
- typeof entry.issuer === 'string' &&
103
- entry.issuer.trim().length > 0 &&
104
- typeof entry.audience === 'string' &&
105
- entry.audience.trim().length > 0));
106
- }
107
- if (auth.kind !== undefined && auth.kind !== 'oidc')
108
- return false;
109
- return (typeof auth.issuer === 'string' &&
110
- auth.issuer.trim().length > 0 &&
111
- typeof auth.audience === 'string' &&
112
- auth.audience.trim().length > 0);
113
- }
114
92
  export function validateConfigKind(kind) {
115
93
  if (kind !== 'secret' && kind !== 'variable')
116
94
  throw new Error(`invalid config kind: ${kind}`);