intentdna 1.7.4 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/LICENSE +201 -0
  4. package/README.md +143 -194
  5. package/dist/assets/candidates.d.ts +124 -0
  6. package/dist/assets/candidates.js +1249 -0
  7. package/dist/assets/catalog.d.ts +101 -0
  8. package/dist/assets/catalog.js +311 -0
  9. package/dist/assets/evidence.d.ts +93 -0
  10. package/dist/assets/evidence.js +391 -0
  11. package/dist/assets/index.d.ts +4 -0
  12. package/dist/assets/index.js +4 -0
  13. package/dist/assets/metadata.d.ts +19 -0
  14. package/dist/assets/metadata.js +227 -0
  15. package/dist/cli/commands/assets.d.ts +65 -0
  16. package/dist/cli/commands/assets.js +2871 -0
  17. package/dist/cli/commands/auth.d.ts +322 -0
  18. package/dist/cli/commands/auth.js +1592 -0
  19. package/dist/cli/commands/cloud-auth-guidance.d.ts +2 -0
  20. package/dist/cli/commands/cloud-auth-guidance.js +4 -0
  21. package/dist/cli/commands/cloud.d.ts +1359 -0
  22. package/dist/cli/commands/cloud.js +8364 -0
  23. package/dist/cli/commands/evolve.js +18 -2
  24. package/dist/cli/commands/generate.js +25 -2
  25. package/dist/cli/commands/guard.d.ts +1 -1
  26. package/dist/cli/commands/guard.js +1 -1
  27. package/dist/cli/commands/guide.d.ts +15 -0
  28. package/dist/cli/commands/guide.js +1747 -0
  29. package/dist/cli/commands/init.d.ts +12 -0
  30. package/dist/cli/commands/init.js +95 -60
  31. package/dist/cli/commands/org.d.ts +16 -0
  32. package/dist/cli/commands/org.js +2393 -0
  33. package/dist/cli/commands/release.d.ts +59 -0
  34. package/dist/cli/commands/release.js +716 -0
  35. package/dist/cli/commands/report.d.ts +82 -0
  36. package/dist/cli/commands/report.js +1516 -0
  37. package/dist/cli/commands/run.d.ts +6 -1
  38. package/dist/cli/commands/run.js +95 -26
  39. package/dist/cli/commands/sync.d.ts +8 -1
  40. package/dist/cli/commands/sync.js +436 -141
  41. package/dist/cli/commands/templates.d.ts +64 -0
  42. package/dist/cli/commands/templates.js +2151 -1
  43. package/dist/cli/commands/workflow.d.ts +26 -0
  44. package/dist/cli/commands/workflow.js +3053 -0
  45. package/dist/cli/index.js +719 -42
  46. package/dist/compiler/cascade.js +4 -9
  47. package/dist/compiler/compile.js +1 -0
  48. package/dist/governance/evidence-capture-attribution.d.ts +12 -0
  49. package/dist/governance/evidence-capture-attribution.js +46 -0
  50. package/dist/governance/index.d.ts +2 -0
  51. package/dist/governance/index.js +1 -0
  52. package/dist/hooks/cli.d.ts +6 -0
  53. package/dist/hooks/cli.js +168 -12
  54. package/dist/hooks/enforce.d.ts +1 -0
  55. package/dist/hooks/protocol.d.ts +1 -1
  56. package/dist/hooks/protocol.js +1 -1
  57. package/dist/hooks/state.d.ts +41 -0
  58. package/dist/hooks/state.js +126 -2
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.js +3 -0
  61. package/dist/mcp/tools-state.js +2 -0
  62. package/dist/organization/index.d.ts +121 -0
  63. package/dist/organization/index.js +413 -0
  64. package/dist/runtime/claude-sync-target.d.ts +49 -0
  65. package/dist/runtime/claude-sync-target.js +280 -0
  66. package/dist/runtime/codex-adapter.d.ts +254 -0
  67. package/dist/runtime/codex-adapter.js +1204 -0
  68. package/dist/runtime/codex-sync-target.d.ts +33 -0
  69. package/dist/runtime/codex-sync-target.js +241 -0
  70. package/dist/runtime/index.d.ts +8 -0
  71. package/dist/runtime/index.js +4 -0
  72. package/dist/runtime/output-artifact-registry.d.ts +1 -1
  73. package/dist/runtime/output-artifact-registry.js +2 -0
  74. package/dist/runtime/settings-adapter.d.ts +1 -1
  75. package/dist/runtime/settings-adapter.js +1 -1
  76. package/dist/runtime/skill-adapter.d.ts +5 -1
  77. package/dist/runtime/skill-adapter.js +120 -34
  78. package/dist/runtime/sync-artifact-registry.d.ts +99 -0
  79. package/dist/runtime/sync-artifact-registry.js +194 -0
  80. package/dist/runtime/sync-target-plan.d.ts +45 -0
  81. package/dist/runtime/sync-target-plan.js +19 -0
  82. package/dist/schema/controller-registry.d.ts +8 -1
  83. package/dist/schema/controller-registry.js +8 -0
  84. package/dist/schema/types.d.ts +35 -23
  85. package/dist/schema/types.js +10 -1
  86. package/dist/schema/validate.js +22 -22
  87. package/dist/schema/validators/controllers.js +38 -20
  88. package/dist/schema/workflow-authoring-contract.d.ts +29 -0
  89. package/dist/schema/workflow-authoring-contract.js +109 -0
  90. package/dist/schema/yaml-parser.js +18 -0
  91. package/dist/templates/api-backend.dna.yaml +19 -0
  92. package/dist/templates/brainstorming-first.dna.yaml +19 -0
  93. package/dist/templates/code-cleanup.dna.yaml +19 -0
  94. package/dist/templates/code-review-pipeline.dna.yaml +18 -0
  95. package/dist/templates/documentation-writer.dna.yaml +19 -0
  96. package/dist/templates/flutter-behavior-lock.dna.yaml +19 -0
  97. package/dist/templates/flutter-refactoring-rescue.dna.yaml +19 -0
  98. package/dist/templates/flutter-rewrite-diagnosis-review.dna.yaml +210 -0
  99. package/dist/templates/flutter-rewrite-fix-review-loop.dna.yaml +260 -0
  100. package/dist/templates/flutter-rewrite-new.dna.yaml +506 -0
  101. package/dist/templates/flutter-rewrite.dna.yaml +20 -0
  102. package/dist/templates/frontend-quality.dna.yaml +19 -0
  103. package/dist/templates/full-pipeline.dna.yaml +20 -0
  104. package/dist/templates/marketplace.d.ts +92 -0
  105. package/dist/templates/marketplace.js +502 -0
  106. package/dist/templates/metadata.d.ts +25 -0
  107. package/dist/templates/metadata.js +136 -3
  108. package/dist/templates/mobile-dev.dna.yaml +19 -0
  109. package/dist/templates/multi-agent-handoff-coordination.dna.yaml +156 -0
  110. package/dist/templates/multi-perspective-review.dna.yaml +19 -0
  111. package/dist/templates/persistent-executor.dna.yaml +19 -0
  112. package/dist/templates/qa-loop.dna.yaml +18 -0
  113. package/dist/templates/release-evidence-gate.dna.yaml +131 -0
  114. package/dist/templates/requirements-gate.dna.yaml +19 -0
  115. package/dist/templates/research-orchestration.dna.yaml +19 -0
  116. package/dist/templates/root-cause-analysis.dna.yaml +19 -0
  117. package/dist/templates/safe-refactoring.dna.yaml +321 -0
  118. package/dist/templates/secure-dev.dna.yaml +19 -0
  119. package/dist/templates/subagent-parallel.dna.yaml +19 -0
  120. package/dist/templates/systematic-debugging.dna.yaml +19 -0
  121. package/dist/templates/tdd-strict.dna.yaml +19 -0
  122. package/dist/templates/ui-visual-regression-qa.dna.yaml +133 -0
  123. package/dist/templates/workflow-author.dna.yaml +302 -0
  124. package/dist/templates/workflow-blocked-scope-triage.dna.yaml +242 -0
  125. package/dist/templates/workflow-completion-audit.dna.yaml +254 -0
  126. package/dist/templates/workflow-cross-boundary-resource-approval.dna.yaml +249 -0
  127. package/dist/templates/workflow-evidence-review.dna.yaml +198 -0
  128. package/dist/templates/workflow-module-inventory.dna.yaml +257 -0
  129. package/dist/templates/workflow-runtime-smoke-review.dna.yaml +252 -0
  130. package/dist/templates/workflow-verification-command-routing.dna.yaml +278 -0
  131. package/dist/workflow/authoring-packet.d.ts +67 -0
  132. package/dist/workflow/authoring-packet.js +218 -0
  133. package/dist/workflow/draft.d.ts +159 -0
  134. package/dist/workflow/draft.js +800 -0
  135. package/dist/workflow/index.d.ts +3 -0
  136. package/dist/workflow/index.js +3 -0
  137. package/dist/workflow/suggestion-review.d.ts +65 -0
  138. package/dist/workflow/suggestion-review.js +245 -0
  139. package/package.json +1 -1
  140. package/spec/README.md +15 -48
  141. package/spec/codex-adapter-contract.md +176 -0
  142. package/spec/sync-target-plan.md +158 -0
  143. package/spec/workflow-capability-ir.md +153 -0
  144. package/spec/agent-dispatch-fix.md +0 -116
  145. package/spec/control-plane-convergence-handoff-2026-04-24.md +0 -432
  146. package/spec/flutter-rewrite-template-optimization.md +0 -301
  147. package/spec/foundation-hardening.md +0 -178
  148. package/spec/hooks-infra-harness-hardening.md +0 -741
  149. package/spec/multi-config.md +0 -172
  150. package/spec/parallel-isolation.md +0 -268
  151. package/spec/template-version-namespace-fix.md +0 -653
  152. package/spec/workflow-pipeline.md +0 -101
@@ -0,0 +1,1359 @@
1
+ export interface CloudOptions {
2
+ subcommand: string;
3
+ json?: boolean;
4
+ env?: NodeJS.ProcessEnv;
5
+ configDir?: string;
6
+ adminUserId?: string;
7
+ adminEmail?: string;
8
+ orgName?: string;
9
+ projectName?: string;
10
+ projectHint?: string;
11
+ tokenName?: string;
12
+ tokenPepper?: string;
13
+ expiresAt?: string;
14
+ output?: string;
15
+ endpoint?: string;
16
+ deploymentUrl?: string;
17
+ dryRun?: boolean;
18
+ yes?: boolean;
19
+ templateName?: string;
20
+ receiptPath?: string;
21
+ secretsCheckPath?: string;
22
+ vercelEnvCheckPath?: string;
23
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
24
+ edgeCheckRunner?: CloudEdgeCheckRunner;
25
+ deployExecuteRunner?: CloudCommandRunner;
26
+ smokeExecuteRunner?: CloudCommandRunner;
27
+ vercelEnvRunner?: CloudCommandRunner;
28
+ vercelEnvApplyRunner?: CloudCommandRunner;
29
+ secretsCheckRunner?: CloudCommandRunner;
30
+ secretsApplyRunner?: CloudCommandRunner;
31
+ functionHealthFetch?: typeof globalThis.fetch;
32
+ }
33
+ interface CloudDailyVisibleResultUrl {
34
+ id: "online_surface" | "online_workflows" | "online_setup" | "online_receipts";
35
+ title: string;
36
+ url: string;
37
+ accepted_as: "current_online_surface_projection";
38
+ boundary: string;
39
+ }
40
+ interface CloudDailyLocalPreviewResult {
41
+ status: "running" | "preview_url_hint";
42
+ title: "Local Online V2 product preview";
43
+ url: string;
44
+ source: "INTENTDNA_ONLINE_LOCAL_PREVIEW_URL" | "local_preview_state" | "default_online_preview";
45
+ start_command: string;
46
+ accepted_as: "local_preview_projection";
47
+ boundary: string;
48
+ }
49
+ interface CloudDailyVisibleResults {
50
+ status: "release_surface_recorded" | "release_surface_pending" | "not_recorded";
51
+ source_packet: "intentdna.release_evidence.v1";
52
+ source_path: string;
53
+ local_preview: CloudDailyLocalPreviewResult;
54
+ openable_urls: CloudDailyVisibleResultUrl[];
55
+ checked_routes: string[];
56
+ public_web_release_complete: boolean;
57
+ browser_release_complete: false;
58
+ runtime_authority: false;
59
+ live_saas_complete: false;
60
+ trusted_cloud_ingestion: false;
61
+ private_storage_evidence: false;
62
+ append_only_audit_evidence: false;
63
+ boundary: string;
64
+ notes: string[];
65
+ }
66
+ interface CloudDeployToolInfo {
67
+ present: boolean;
68
+ command: string;
69
+ source: "global" | "npx" | "override" | "missing";
70
+ required_for: string[];
71
+ }
72
+ interface CloudStatus {
73
+ schema_version: "intentdna.cloud_status.v1";
74
+ mode: "supabase_config_status";
75
+ provider: "supabase";
76
+ configured: boolean;
77
+ overall_status: "local_upload_ready_live_blocked" | "local_upload_blocked" | "live_deploy_ready";
78
+ ready_for: Array<"local_upload_dry_run" | "live_deploy_preflight">;
79
+ not_ready_for: Array<"live_saas_completion" | "live_report_upload" | "browser_account_projection" | "local_upload_dry_run">;
80
+ summary: {
81
+ local_upload: "ready" | "blocked";
82
+ live_saas: "blocked";
83
+ explanation: string;
84
+ };
85
+ readiness: {
86
+ local_endpoint_configured: boolean;
87
+ browser_public_configured: boolean;
88
+ cli_ingest_configured: boolean;
89
+ upload_dry_run_ready: boolean;
90
+ live_saas_ready: false;
91
+ };
92
+ local_upload: {
93
+ status: "ready" | "blocked";
94
+ endpoint_ready: boolean;
95
+ token_ready: boolean;
96
+ missing: string[];
97
+ next_commands: string[];
98
+ };
99
+ live_readiness: {
100
+ status: "ready" | "blocked";
101
+ ready_to_deploy: boolean;
102
+ live_saas_complete: false;
103
+ source_status: CloudCredentialCheck["source_status"];
104
+ gates: Array<{
105
+ id: CloudCredentialGate["id"];
106
+ owner: CloudCredentialGate["owner"];
107
+ status: CloudCredentialGate["status"];
108
+ missing: string[];
109
+ next_command: string;
110
+ }>;
111
+ action_groups: CloudCredentialActionGroup[];
112
+ blocked_by: string[];
113
+ next_commands: string[];
114
+ };
115
+ manager_brief: CloudManagerBrief;
116
+ visible_results: CloudDailyVisibleResults;
117
+ network_performed: false;
118
+ runtime_authority: false;
119
+ cli_auth: {
120
+ token_present: boolean;
121
+ token_preview?: string;
122
+ config_path: string;
123
+ source: "env" | "user_config" | "none";
124
+ };
125
+ supabase: {
126
+ url_present: boolean;
127
+ url?: string;
128
+ anon_key_present: boolean;
129
+ anon_key_preview?: string;
130
+ service_role_key_present: boolean;
131
+ service_role_key_accepted_for_client: false;
132
+ };
133
+ missing: string[];
134
+ boundaries: string[];
135
+ next_commands: string[];
136
+ }
137
+ type CloudDailyReportBlockerGroupId = "local_upload_config" | "browser_public_env" | "server_secret_store" | "account_auth_and_cli_token" | "bootstrap_tenant" | "billing_and_retention" | "live_deploy_and_evidence";
138
+ interface CloudDailyReportBlockerGroup {
139
+ id: CloudDailyReportBlockerGroupId;
140
+ title: string;
141
+ owner: "agent" | "operator" | "user";
142
+ status: "ready" | "blocked" | "manual";
143
+ blockers: string[];
144
+ next_commands: string[];
145
+ boundary: string;
146
+ }
147
+ interface CloudBootstrapToken {
148
+ name: string;
149
+ raw_token?: string;
150
+ raw_token_printed_once: boolean;
151
+ token_prefix?: string;
152
+ token_hash?: string;
153
+ hash_algorithm: "sha256(INTENTDNA_TOKEN_PEPPER + ':' + raw_token)";
154
+ scopes: ["report:ingest", "template:read", "template:publish"];
155
+ expires_at: string | null;
156
+ }
157
+ interface CloudBootstrapPlan {
158
+ schema_version: "intentdna.cloud_bootstrap_plan.v1";
159
+ mode: "supabase_initial_seed";
160
+ provider: "supabase";
161
+ status: "ready" | "pending";
162
+ generated_at: string;
163
+ network_performed: false;
164
+ runtime_authority: false;
165
+ admin: {
166
+ user_id?: string;
167
+ email?: string;
168
+ };
169
+ organization: {
170
+ id?: string;
171
+ name?: string;
172
+ slug?: string;
173
+ };
174
+ project: {
175
+ id?: string;
176
+ name?: string;
177
+ slug?: string;
178
+ local_project_hint?: string;
179
+ };
180
+ api_token: CloudBootstrapToken;
181
+ server_secret: {
182
+ name: "INTENTDNA_TOKEN_PEPPER";
183
+ source: "generated" | "provided" | "missing";
184
+ value?: string;
185
+ preview?: string;
186
+ printed_once: boolean;
187
+ storage: "Supabase Function secret only";
188
+ };
189
+ seed_sql?: string;
190
+ files?: {
191
+ seed_sql?: string;
192
+ };
193
+ missing: string[];
194
+ boundaries: string[];
195
+ next_commands: string[];
196
+ }
197
+ type CloudDeployTool = "supabase" | "deno";
198
+ type CloudDeployStepStatus = "ready" | "blocked" | "manual";
199
+ interface CloudDeployStep {
200
+ id: string;
201
+ status: CloudDeployStepStatus;
202
+ title: string;
203
+ commands: string[];
204
+ requires: string[];
205
+ }
206
+ interface CloudDeployPlan {
207
+ schema_version: "intentdna.cloud_deploy_plan.v1";
208
+ mode: "supabase_live_deploy_plan";
209
+ provider: "supabase";
210
+ status: "ready" | "blocked";
211
+ generated_at: string;
212
+ network_performed: false;
213
+ runtime_authority: false;
214
+ project: {
215
+ ref_present: boolean;
216
+ ref?: string;
217
+ ref_source?: "env" | "linked_project";
218
+ url_present: boolean;
219
+ url?: string;
220
+ anon_key_present: boolean;
221
+ access_token_present: boolean;
222
+ operator_auth_present?: boolean;
223
+ operator_auth_source?: "env" | "linked_project" | "none";
224
+ service_secret_present: boolean;
225
+ token_pepper_present: boolean;
226
+ };
227
+ local_artifacts: {
228
+ migrations: string[];
229
+ functions: string[];
230
+ config_present: boolean;
231
+ };
232
+ tools: Record<CloudDeployTool, CloudDeployToolInfo>;
233
+ missing: string[];
234
+ steps: CloudDeployStep[];
235
+ manager_summary: CloudManagerSummary;
236
+ boundaries: string[];
237
+ }
238
+ interface CloudDeployExecuteStep {
239
+ id: string;
240
+ title: string;
241
+ status: "ready" | "blocked" | "skipped" | "passed" | "failed";
242
+ commands: string[];
243
+ requires: string[];
244
+ executed: boolean;
245
+ exit_code?: number | null;
246
+ signal?: string | null;
247
+ stdout_tail?: string;
248
+ stderr_tail?: string;
249
+ }
250
+ interface CloudDeployExecuteResult {
251
+ schema_version: "intentdna.cloud_deploy_execute.v1";
252
+ mode: "supabase_live_deploy_execute";
253
+ provider: "supabase";
254
+ status: "ready" | "blocked" | "executed" | "failed";
255
+ generated_at: string;
256
+ dry_run: boolean;
257
+ confirmation_required: boolean;
258
+ network_intent: "manual_operator";
259
+ network_performed: boolean;
260
+ mutation_performed: boolean;
261
+ runtime_authority: false;
262
+ secrets_redacted: true;
263
+ source_plan_status: CloudDeployPlan["status"];
264
+ project: CloudDeployPlan["project"];
265
+ steps: CloudDeployExecuteStep[];
266
+ missing: string[];
267
+ next_commands: string[];
268
+ boundaries: string[];
269
+ }
270
+ interface CloudSmokeStep {
271
+ id: string;
272
+ status: "ready" | "blocked" | "manual";
273
+ title: string;
274
+ commands: string[];
275
+ requires: string[];
276
+ }
277
+ interface CloudSmokePlan {
278
+ schema_version: "intentdna.cloud_smoke_plan.v1";
279
+ mode: "supabase_cloud_ingest_smoke_plan";
280
+ provider: "supabase";
281
+ status: "ready" | "blocked";
282
+ ready_for: Array<"local_upload_dry_run" | "post_deploy_manual_smoke_sequence">;
283
+ not_ready_for: Array<"live_saas_completion" | "live_report_upload_without_deployment" | "cloud_receipt_claim" | "runtime_authority">;
284
+ readiness_explanation: string;
285
+ generated_at: string;
286
+ network_performed: false;
287
+ runtime_authority: false;
288
+ endpoint?: string;
289
+ auth: {
290
+ token_present: boolean;
291
+ token_preview?: string;
292
+ source: "env" | "user_config" | "none";
293
+ };
294
+ missing: string[];
295
+ steps: CloudSmokeStep[];
296
+ boundaries: string[];
297
+ }
298
+ interface CloudSmokeExecuteStep {
299
+ id: string;
300
+ title: string;
301
+ status: "ready" | "blocked" | "skipped" | "passed" | "failed";
302
+ commands: string[];
303
+ requires: string[];
304
+ executed: boolean;
305
+ exit_code?: number | null;
306
+ signal?: string | null;
307
+ stdout_tail?: string;
308
+ stderr_tail?: string;
309
+ parsed_schema_version?: string;
310
+ envelope_path?: string;
311
+ publication_id?: string;
312
+ }
313
+ interface CloudSmokeExecuteResult {
314
+ schema_version: "intentdna.cloud_smoke_execute.v1";
315
+ mode: "supabase_cloud_ingest_smoke_execute";
316
+ provider: "supabase";
317
+ status: "ready" | "blocked" | "executed" | "failed";
318
+ generated_at: string;
319
+ dry_run: boolean;
320
+ confirmation_required: boolean;
321
+ network_intent: "manual_operator";
322
+ network_performed: boolean;
323
+ mutation_performed: boolean;
324
+ runtime_authority: false;
325
+ secrets_redacted: true;
326
+ source_plan_status: CloudSmokePlan["status"];
327
+ endpoint?: string;
328
+ auth: CloudSmokePlan["auth"];
329
+ template_smoke: {
330
+ requested: boolean;
331
+ status: "not_requested" | "ready" | "blocked";
332
+ organization?: string;
333
+ project?: string;
334
+ template?: string;
335
+ receipt?: string;
336
+ missing: string[];
337
+ };
338
+ steps: CloudSmokeExecuteStep[];
339
+ missing: string[];
340
+ next_commands: string[];
341
+ boundaries: string[];
342
+ }
343
+ type CloudRolloutGateStatus = "ready" | "blocked" | "manual";
344
+ interface CloudRolloutGate {
345
+ id: "supabase_account" | "credentials" | "local_tools" | "server_secrets" | "initial_tenant" | "cli_token" | "vercel" | "vercel_public_env" | "cost_guard" | "billing";
346
+ status: CloudRolloutGateStatus;
347
+ owner: "user" | "operator" | "agent";
348
+ title: string;
349
+ requires: string[];
350
+ notes: string[];
351
+ }
352
+ interface CloudRolloutPhase {
353
+ id: string;
354
+ status: CloudRolloutGateStatus;
355
+ title: string;
356
+ commands: string[];
357
+ requires: string[];
358
+ }
359
+ interface CloudRolloutPack {
360
+ schema_version: "intentdna.cloud_rollout_pack.v1";
361
+ mode: "supabase_saas_rollout_operator_pack";
362
+ provider: "supabase";
363
+ status: "ready" | "blocked";
364
+ generated_at: string;
365
+ network_performed: false;
366
+ runtime_authority: false;
367
+ deploy_plan_status: CloudDeployPlan["status"];
368
+ smoke_plan_status: CloudSmokePlan["status"];
369
+ account_auth_model: "supabase_user_jwt_to_intentdna_api_token";
370
+ cli_auth_model: "intentdna_cli_api_token";
371
+ gates: CloudRolloutGate[];
372
+ phases: CloudRolloutPhase[];
373
+ environment: {
374
+ browser_public: string[];
375
+ cli_user: string[];
376
+ supabase_operator: string[];
377
+ server_only: string[];
378
+ manual_confirmation: string[];
379
+ };
380
+ changed_surfaces: string[];
381
+ vercel: {
382
+ deployment_required_for_online_changes: boolean;
383
+ env_check_status: "ready" | "blocked" | "manual";
384
+ env_names_present: string[];
385
+ env_names_missing: string[];
386
+ commands: string[];
387
+ requires: string[];
388
+ };
389
+ visible_results: CloudDailyVisibleResults;
390
+ blocked_by: string[];
391
+ user_inputs_required: string[];
392
+ cost_watch: string[];
393
+ manager_summary: CloudManagerSummary;
394
+ boundaries: string[];
395
+ }
396
+ type CloudEnvDestination = "browser_public" | "cli_user" | "supabase_operator" | "supabase_function_secret" | "manual_confirmation";
397
+ type CloudEnvSecretClass = "public" | "user_secret" | "operator_secret" | "server_secret" | "manual_confirmation";
398
+ interface CloudEnvEntry {
399
+ name: string;
400
+ aliases: string[];
401
+ destination: CloudEnvDestination;
402
+ secret_class: CloudEnvSecretClass;
403
+ required: boolean;
404
+ present: boolean;
405
+ source?: string;
406
+ value_preview?: string;
407
+ default_value?: string;
408
+ accepted_in_browser: boolean;
409
+ accepted_in_cli_config: boolean;
410
+ purpose: string;
411
+ notes: string[];
412
+ }
413
+ interface CloudEnvManifest {
414
+ schema_version: "intentdna.cloud_env_manifest.v1";
415
+ mode: "supabase_saas_environment_manifest";
416
+ provider: "supabase";
417
+ status: "ready" | "blocked";
418
+ generated_at: string;
419
+ network_performed: false;
420
+ runtime_authority: false;
421
+ groups: {
422
+ browser_public: CloudEnvEntry[];
423
+ cli_user: CloudEnvEntry[];
424
+ supabase_operator: CloudEnvEntry[];
425
+ server_only: CloudEnvEntry[];
426
+ manual_confirmation: CloudEnvEntry[];
427
+ };
428
+ missing: string[];
429
+ unsafe_public_env: string[];
430
+ evidence_overlay?: CloudEnvManifestEvidenceOverlay;
431
+ sample_env: {
432
+ browser_public: string[];
433
+ cli_user: string[];
434
+ supabase_operator: string[];
435
+ supabase_secrets: string[];
436
+ manual_confirmation: string[];
437
+ };
438
+ next_commands: string[];
439
+ manager_summary: CloudManagerSummary;
440
+ boundaries: string[];
441
+ }
442
+ interface CloudEnvManifestEvidenceOverlay {
443
+ source_status: {
444
+ secrets_check_status?: CloudSecretsCheck["status"];
445
+ vercel_env_check_status?: CloudVercelEnvCheck["status"];
446
+ };
447
+ covered_missing: Array<{
448
+ name: "VITE_SUPABASE_URL" | "VITE_SUPABASE_ANON_KEY" | "SUPABASE_SECRET_KEYS" | "INTENTDNA_TOKEN_PEPPER";
449
+ covered_by: "vercel-env-check" | "secrets-check";
450
+ local_env_present: false;
451
+ accepted_as: "remote_browser_env_name_presence" | "remote_server_secret_name_presence";
452
+ boundary: string;
453
+ }>;
454
+ uncovered_missing: string[];
455
+ notes: string[];
456
+ }
457
+ interface CloudVercelEnvPlan {
458
+ schema_version: "intentdna.cloud_vercel_env_plan.v1";
459
+ mode: "supabase_online_vercel_environment_plan";
460
+ provider: "vercel";
461
+ status: "ready" | "blocked";
462
+ generated_at: string;
463
+ network_performed: false;
464
+ mutation_performed: false;
465
+ runtime_authority: false;
466
+ secrets_redacted: true;
467
+ app: {
468
+ path: "apps/online";
469
+ framework: "static_typescript";
470
+ target: "production";
471
+ };
472
+ public_env: Array<{
473
+ name: "VITE_SUPABASE_URL" | "VITE_SUPABASE_ANON_KEY";
474
+ present: boolean;
475
+ source?: string;
476
+ value_preview?: string;
477
+ accepted_in_browser: true;
478
+ }>;
479
+ forbidden_public_env: string[];
480
+ blocked_by: string[];
481
+ commands: {
482
+ inspect_existing: string[];
483
+ set_public_env: string[];
484
+ deploy_and_verify: string[];
485
+ release_evidence: string[];
486
+ };
487
+ next_commands: string[];
488
+ manager_summary: CloudManagerSummary;
489
+ boundaries: string[];
490
+ }
491
+ interface CloudVercelEnvCheck {
492
+ schema_version: "intentdna.cloud_vercel_env_check.v1";
493
+ mode: "supabase_online_vercel_env_live_check";
494
+ provider: "vercel";
495
+ status: "ready" | "blocked";
496
+ generated_at: string;
497
+ network_performed: boolean;
498
+ mutation_performed: false;
499
+ runtime_authority: false;
500
+ secrets_redacted: true;
501
+ app: {
502
+ path: "apps/online";
503
+ target: "production";
504
+ };
505
+ command: string;
506
+ exit_code?: number | null;
507
+ signal?: string | null;
508
+ parsed_json: boolean;
509
+ observed_env_names: string[];
510
+ required_public_env: Array<{
511
+ name: "VITE_SUPABASE_URL" | "VITE_SUPABASE_ANON_KEY";
512
+ present: boolean;
513
+ target: "production";
514
+ accepted_in_browser: true;
515
+ }>;
516
+ forbidden_public_env: string[];
517
+ blocked_by: string[];
518
+ stderr_tail?: string;
519
+ error?: string;
520
+ next_commands: string[];
521
+ manager_summary: CloudManagerSummary;
522
+ boundaries: string[];
523
+ }
524
+ interface CloudVercelEnvApplyStep {
525
+ id: "set-supabase-url" | "set-supabase-anon-key";
526
+ name: "VITE_SUPABASE_URL" | "VITE_SUPABASE_ANON_KEY";
527
+ title: string;
528
+ status: "ready" | "blocked" | "skipped" | "passed" | "failed";
529
+ commands: string[];
530
+ requires: string[];
531
+ executed: boolean;
532
+ exit_code?: number | null;
533
+ signal?: string | null;
534
+ stdout_tail?: string;
535
+ stderr_tail?: string;
536
+ }
537
+ interface CloudVercelEnvApplyResult {
538
+ schema_version: "intentdna.cloud_vercel_env_apply.v1";
539
+ mode: "supabase_online_vercel_env_apply";
540
+ provider: "vercel";
541
+ status: "ready" | "blocked" | "executed" | "failed";
542
+ generated_at: string;
543
+ dry_run: boolean;
544
+ confirmation_required: boolean;
545
+ network_intent: "manual_operator";
546
+ network_performed: boolean;
547
+ mutation_performed: boolean;
548
+ runtime_authority: false;
549
+ secrets_redacted: true;
550
+ source_plan_status: CloudVercelEnvPlan["status"];
551
+ app: CloudVercelEnvPlan["app"];
552
+ public_env: CloudVercelEnvPlan["public_env"];
553
+ steps: CloudVercelEnvApplyStep[];
554
+ missing: string[];
555
+ next_commands: string[];
556
+ boundaries: string[];
557
+ }
558
+ interface CloudSecretEntry {
559
+ name: "INTENTDNA_TOKEN_PEPPER" | "SUPABASE_SECRET_KEYS" | "INTENTDNA_INGEST_MAX_BYTES" | "INTENTDNA_INGEST_RATE_LIMIT_PER_HOUR";
560
+ source?: string;
561
+ required: boolean;
562
+ present: boolean;
563
+ default_value?: string;
564
+ value_preview?: string;
565
+ destination: "supabase_function_secret";
566
+ secret_class: "server_secret";
567
+ accepted_in_browser: false;
568
+ accepted_in_cli_config: false;
569
+ purpose: string;
570
+ }
571
+ interface CloudSecretsPlanStep {
572
+ id: "link" | "set-token-pepper" | "set-secret-keys" | "set-ingest-max-bytes" | "set-rate-limit";
573
+ title: string;
574
+ status: "ready" | "blocked";
575
+ commands: string[];
576
+ requires: string[];
577
+ }
578
+ interface CloudSecretsPlan {
579
+ schema_version: "intentdna.cloud_secrets_plan.v1";
580
+ mode: "supabase_edge_function_secrets_plan";
581
+ provider: "supabase";
582
+ status: "ready" | "blocked";
583
+ generated_at: string;
584
+ network_performed: false;
585
+ mutation_performed: false;
586
+ runtime_authority: false;
587
+ secrets_redacted: true;
588
+ project: {
589
+ ref_present: boolean;
590
+ ref?: string;
591
+ access_token_present: boolean;
592
+ operator_auth_present?: boolean;
593
+ operator_auth_source?: "env" | "linked_project" | "none";
594
+ };
595
+ tool: CloudDeployToolInfo;
596
+ secrets: CloudSecretEntry[];
597
+ missing: string[];
598
+ steps: CloudSecretsPlanStep[];
599
+ next_commands: string[];
600
+ boundaries: string[];
601
+ }
602
+ interface CloudSecretsCheck {
603
+ schema_version: "intentdna.cloud_secrets_check.v1";
604
+ mode: "supabase_edge_function_secrets_live_check";
605
+ provider: "supabase";
606
+ status: "ready" | "blocked";
607
+ generated_at: string;
608
+ network_performed: boolean;
609
+ mutation_performed: false;
610
+ runtime_authority: false;
611
+ secrets_redacted: true;
612
+ project: {
613
+ ref_present: boolean;
614
+ ref?: string;
615
+ ref_source?: "env" | "linked_project";
616
+ };
617
+ tool: CloudDeployToolInfo;
618
+ command: string;
619
+ exit_code?: number | null;
620
+ signal?: string | null;
621
+ parsed_json: boolean;
622
+ observed_secret_names: string[];
623
+ required_server_secrets: Array<{
624
+ name: "INTENTDNA_TOKEN_PEPPER" | "SUPABASE_SECRET_KEYS";
625
+ present: boolean;
626
+ destination: "supabase_function_secret";
627
+ accepted_in_browser: false;
628
+ }>;
629
+ blocked_by: string[];
630
+ stderr_tail?: string;
631
+ error?: string;
632
+ manager_brief: CloudManagerBrief;
633
+ next_commands: string[];
634
+ boundaries: string[];
635
+ }
636
+ type CloudSecretsApplyStep = Omit<CloudSecretsPlanStep, "status"> & {
637
+ status: "ready" | "blocked" | "skipped" | "passed" | "failed";
638
+ executed: boolean;
639
+ exit_code?: number | null;
640
+ signal?: string | null;
641
+ stdout_tail?: string;
642
+ stderr_tail?: string;
643
+ };
644
+ interface CloudSecretsApplyResult {
645
+ schema_version: "intentdna.cloud_secrets_apply.v1";
646
+ mode: "supabase_edge_function_secrets_apply";
647
+ provider: "supabase";
648
+ status: "ready" | "blocked" | "executed" | "failed";
649
+ generated_at: string;
650
+ dry_run: boolean;
651
+ confirmation_required: boolean;
652
+ network_intent: "manual_operator";
653
+ network_performed: boolean;
654
+ mutation_performed: boolean;
655
+ runtime_authority: false;
656
+ secrets_redacted: true;
657
+ source_plan_status: CloudSecretsPlan["status"];
658
+ project: CloudSecretsPlan["project"];
659
+ secrets: CloudSecretEntry[];
660
+ steps: CloudSecretsApplyStep[];
661
+ missing: string[];
662
+ next_commands: string[];
663
+ boundaries: string[];
664
+ }
665
+ type CloudCredentialGateStatus = "ready" | "blocked" | "manual";
666
+ interface CloudCredentialGate {
667
+ id: "browser-public" | "operator-deploy" | "server-secrets" | "cli-account" | "cli-ingest" | "bootstrap" | "cost-guard" | "billing";
668
+ status: CloudCredentialGateStatus;
669
+ owner: "agent" | "operator" | "user";
670
+ title: string;
671
+ credential_state?: {
672
+ status: "missing" | "present" | "expired";
673
+ source?: string;
674
+ expires_at?: string;
675
+ reason?: string;
676
+ };
677
+ present: string[];
678
+ missing: string[];
679
+ next_commands: string[];
680
+ notes: string[];
681
+ }
682
+ interface CloudCredentialAdminSummaryItem {
683
+ gate: CloudCredentialGate["id"];
684
+ status: CloudCredentialGateStatus;
685
+ owner: CloudCredentialGate["owner"];
686
+ user_task: string;
687
+ where_to_set: string;
688
+ why_it_matters: string;
689
+ boundary: string;
690
+ blocked_by: string[];
691
+ next_command: string;
692
+ }
693
+ interface CloudCredentialActionGroup {
694
+ id: "agent_can_continue" | "browser_public_env" | "server_secret_store" | "account_auth_and_cli_token" | "user_decision";
695
+ title: string;
696
+ status: "ready" | "blocked" | "manual";
697
+ gate_ids: CloudCredentialGate["id"][];
698
+ blocked_by: string[];
699
+ next_commands: string[];
700
+ boundary: string;
701
+ }
702
+ interface CloudCredentialBlockerPacketSection {
703
+ id: CloudCredentialActionGroup["id"];
704
+ title: string;
705
+ status: CloudCredentialActionGroup["status"];
706
+ blocked_by: string[];
707
+ next_commands: string[];
708
+ boundary: string;
709
+ }
710
+ interface CloudCredentialBlockerPacket {
711
+ headline: string;
712
+ status: "ready" | "blocked";
713
+ live_saas_complete: false;
714
+ can_agent_continue_locally: boolean;
715
+ requires_external_authority: boolean;
716
+ blocked_by: CloudCredentialBlockerPacketSection[];
717
+ next_commands: string[];
718
+ forbidden_locations: string[];
719
+ boundaries: string[];
720
+ }
721
+ interface CloudCredentialExecutionBrief {
722
+ headline: string;
723
+ current_progress: string[];
724
+ agent_can_do_next: string[];
725
+ external_authority_needed: string[];
726
+ user_decisions_needed: string[];
727
+ not_blocked_by_code: string[];
728
+ do_not_put_values_in: string[];
729
+ next_local_command: string;
730
+ next_external_command?: string;
731
+ }
732
+ interface CloudManagerBrief {
733
+ headline: string;
734
+ lane: "M4/M6 Supabase SaaS readiness";
735
+ status: "local_work_can_continue" | "ready_for_operator" | "external_authority_required";
736
+ dependency_core: string[];
737
+ completed_locally: string[];
738
+ local_next_actions: string[];
739
+ external_inputs_needed: string[];
740
+ verification_gates: string[];
741
+ daily_report: {
742
+ purpose: "manager_progress";
743
+ use_when: string;
744
+ headline: string;
745
+ lane: "M4/M6 Supabase SaaS readiness";
746
+ overall_status: CloudManagerBrief["status"];
747
+ local_progress: string[];
748
+ online_or_live_evidence: string[];
749
+ remaining_external_gates: string[];
750
+ user_action_required_only_for: string[];
751
+ next_24h_local_work: string[];
752
+ verification_sources: string[];
753
+ reporting_recovery: {
754
+ heartbeat_schedule: string[];
755
+ heartbeat_delivery_constraints: string[];
756
+ visible_report_missing_means: string;
757
+ recovery_commands: string[];
758
+ evidence_surfaces: string[];
759
+ agent_response: string[];
760
+ escalation_boundary: string[];
761
+ };
762
+ };
763
+ contract_alignment: {
764
+ drift_signal_detected: false;
765
+ boundaries_preserved: string[];
766
+ };
767
+ out_of_scope: string[];
768
+ }
769
+ interface CloudCredentialCheck {
770
+ schema_version: "intentdna.cloud_credential_check.v1";
771
+ mode: "supabase_saas_credential_readiness";
772
+ provider: "supabase";
773
+ status: "ready" | "blocked";
774
+ generated_at: string;
775
+ network_performed: false;
776
+ mutation_performed: false;
777
+ runtime_authority: false;
778
+ secrets_redacted: true;
779
+ source_status: {
780
+ env_manifest_status: CloudEnvManifest["status"];
781
+ deploy_plan_status: CloudDeployPlan["status"];
782
+ smoke_plan_status: CloudSmokePlan["status"];
783
+ secrets_check_status?: CloudSecretsCheck["status"];
784
+ vercel_env_check_status?: CloudVercelEnvCheck["status"];
785
+ };
786
+ summary: {
787
+ gates: number;
788
+ ready: number;
789
+ blocked: number;
790
+ manual: number;
791
+ };
792
+ admin_summary: {
793
+ headline: string;
794
+ ready_to_deploy: boolean;
795
+ live_saas_complete: boolean;
796
+ items: CloudCredentialAdminSummaryItem[];
797
+ };
798
+ execution_brief: CloudCredentialExecutionBrief;
799
+ manager_brief: CloudManagerBrief;
800
+ visible_results: CloudDailyVisibleResults;
801
+ action_groups: CloudCredentialActionGroup[];
802
+ blocker_packet: CloudCredentialBlockerPacket;
803
+ gates: CloudCredentialGate[];
804
+ missing: string[];
805
+ unsafe_public_env: string[];
806
+ next_commands: string[];
807
+ boundaries: string[];
808
+ }
809
+ interface CloudHandoffInput {
810
+ name: string;
811
+ aliases: string[];
812
+ destination: CloudEnvDestination;
813
+ secret_class: CloudEnvSecretClass;
814
+ required: boolean;
815
+ present: boolean;
816
+ source?: string;
817
+ placeholder: string;
818
+ accepted_in_browser: boolean;
819
+ accepted_in_cli_config: boolean;
820
+ notes: string[];
821
+ }
822
+ interface CloudHandoffStep {
823
+ id: string;
824
+ owner: "user" | "operator" | "agent";
825
+ status: CloudDeployStepStatus;
826
+ title: string;
827
+ commands: string[];
828
+ requires: string[];
829
+ }
830
+ interface CloudHandoffPack {
831
+ schema_version: "intentdna.cloud_handoff_pack.v1";
832
+ mode: "supabase_operator_credential_handoff";
833
+ provider: "supabase";
834
+ status: "ready" | "blocked";
835
+ generated_at: string;
836
+ network_performed: false;
837
+ runtime_authority: false;
838
+ secrets_redacted: true;
839
+ deployment_state: {
840
+ deploy_plan_status: CloudDeployPlan["status"];
841
+ rollout_pack_status: CloudRolloutPack["status"];
842
+ smoke_plan_status: CloudSmokePlan["status"];
843
+ };
844
+ required_inputs: CloudHandoffInput[];
845
+ operator_env_template: string[];
846
+ cli_user_auth_commands: string[];
847
+ command_sequence: CloudHandoffStep[];
848
+ forbidden_locations: string[];
849
+ next_commands: string[];
850
+ blocked_by: string[];
851
+ boundaries: string[];
852
+ }
853
+ interface CloudRunbookCommand {
854
+ id: string;
855
+ source: "intent-tests" | "env-manifest" | "handoff" | "contract-check" | "deploy-plan" | "rollout-pack" | "function-health" | "smoke-plan" | "smoke-receipt-check" | "vercel-production";
856
+ owner: "agent" | "operator" | "user";
857
+ status: CloudDeployStepStatus;
858
+ title: string;
859
+ commands: string[];
860
+ requires: string[];
861
+ network_intent: "none" | "manual_operator" | "production_deploy";
862
+ }
863
+ interface CloudRunbookPack {
864
+ schema_version: "intentdna.cloud_runbook.v1";
865
+ mode: "supabase_saas_operator_runbook";
866
+ provider: "supabase";
867
+ status: "ready" | "blocked";
868
+ generated_at: string;
869
+ network_performed: false;
870
+ runtime_authority: false;
871
+ secrets_redacted: true;
872
+ files?: {
873
+ runbook?: string;
874
+ mode?: "0600";
875
+ };
876
+ source_status: {
877
+ env_manifest_status: CloudEnvManifest["status"];
878
+ deploy_plan_status: CloudDeployPlan["status"];
879
+ edge_check_status: CloudEdgeCheckResult["status"];
880
+ contract_check_status: CloudContractCheckResult["status"];
881
+ handoff_status: CloudHandoffPack["status"];
882
+ rollout_pack_status: CloudRolloutPack["status"];
883
+ vercel_env_check_status: CloudRolloutPack["vercel"]["env_check_status"];
884
+ smoke_plan_status: CloudSmokePlan["status"];
885
+ };
886
+ visible_results: CloudDailyVisibleResults;
887
+ manager_brief: CloudManagerBrief;
888
+ required_inputs: CloudHandoffInput[];
889
+ operator_env_template: string[];
890
+ cli_user_auth_commands: string[];
891
+ command_sequence: CloudRunbookCommand[];
892
+ forbidden_locations: string[];
893
+ production_release: {
894
+ deploy_requested_by_user: boolean;
895
+ deployment_executed_by_runbook: false;
896
+ commands: string[];
897
+ requires: string[];
898
+ };
899
+ blocked_by: string[];
900
+ next_commands: string[];
901
+ boundaries: string[];
902
+ }
903
+ type CloudOperatorChecklistStatus = "ready" | "blocked" | "manual";
904
+ interface CloudOperatorChecklistItem {
905
+ id: "local-intent-tests" | "vercel-public-env" | "supabase-operator" | "server-secrets" | "cli-account" | "cli-ingest-token" | "tenant-bootstrap" | "billing-retention" | "supabase-deploy" | "function-health" | "live-ingest-smoke" | "production-evidence";
906
+ owner: "agent" | "operator" | "user";
907
+ status: CloudOperatorChecklistStatus;
908
+ title: string;
909
+ purpose: string;
910
+ inputs: string[];
911
+ commands: string[];
912
+ verifies: string[];
913
+ blocked_by: string[];
914
+ secret_handling: string[];
915
+ source_refs: string[];
916
+ }
917
+ interface CloudOperatorChecklist {
918
+ schema_version: "intentdna.cloud_operator_checklist.v1";
919
+ mode: "supabase_saas_operator_checklist";
920
+ provider: "supabase";
921
+ status: "ready" | "blocked";
922
+ generated_at: string;
923
+ network_performed: false;
924
+ mutation_performed: false;
925
+ runtime_authority: false;
926
+ secrets_redacted: true;
927
+ source_status: {
928
+ env_manifest_status: CloudEnvManifest["status"];
929
+ vercel_env_plan_status: CloudVercelEnvPlan["status"];
930
+ credential_check_status: CloudCredentialCheck["status"];
931
+ handoff_status: CloudHandoffPack["status"];
932
+ runbook_status: CloudRunbookPack["status"];
933
+ rollout_pack_status: CloudRolloutPack["status"];
934
+ deploy_plan_status: CloudDeployPlan["status"];
935
+ smoke_plan_status: CloudSmokePlan["status"];
936
+ };
937
+ summary: {
938
+ items: number;
939
+ ready: number;
940
+ blocked: number;
941
+ manual: number;
942
+ user_owned: number;
943
+ operator_owned: number;
944
+ agent_owned: number;
945
+ };
946
+ visible_results: CloudDailyVisibleResults;
947
+ items: CloudOperatorChecklistItem[];
948
+ required_user_inputs: string[];
949
+ operator_private_env: string[];
950
+ cli_user_auth_commands: string[];
951
+ blocked_by: string[];
952
+ next_commands: string[];
953
+ manager_summary: CloudManagerSummary;
954
+ boundaries: string[];
955
+ }
956
+ interface CloudManagerSummary {
957
+ purpose: "manager_handoff";
958
+ source: "manager_brief.daily_report";
959
+ source_schema: "intentdna.cloud_daily_report.v1";
960
+ source_command: "dna cloud daily-report --json";
961
+ headline: string;
962
+ lane: "M4/M6 Supabase SaaS readiness";
963
+ overall_status: CloudManagerBrief["status"];
964
+ local_progress: string[];
965
+ online_or_live_evidence: string[];
966
+ visible_results?: CloudDailyVisibleResults;
967
+ remaining_external_gates: string[];
968
+ blocker_groups: CloudDailyReportBlockerGroup[];
969
+ user_action_required_only_for: string[];
970
+ next_24h_local_work: string[];
971
+ verification_sources: string[];
972
+ reporting_recovery: CloudManagerBrief["daily_report"]["reporting_recovery"];
973
+ boundary: string;
974
+ }
975
+ type CloudEdgeFunctionName = "issue-api-token" | "bootstrap-account" | "ingest-report" | "list-receipts" | "manage-api-tokens" | "list-projects" | "publish-template" | "list-template-publications" | "revoke-template-publication";
976
+ type CloudEdgeCheckStatus = "passed" | "failed" | "blocked";
977
+ type CloudFunctionHealthStatus = "ready" | "failed" | "blocked";
978
+ type CloudFunctionHealthNetworkCategory = "dns" | "proxy" | "tls" | "timeout" | "connection" | "network";
979
+ interface CloudFunctionHealthNetworkError {
980
+ category: CloudFunctionHealthNetworkCategory;
981
+ code?: string;
982
+ message: string;
983
+ }
984
+ interface CloudEdgeCheckRunResult {
985
+ status: number | null;
986
+ stdout?: string;
987
+ stderr?: string;
988
+ signal?: string | null;
989
+ error?: string;
990
+ }
991
+ type CloudEdgeCheckRunner = (command: string, env: NodeJS.ProcessEnv) => CloudEdgeCheckRunResult;
992
+ type CloudCommandRunner = (command: string, env: NodeJS.ProcessEnv) => CloudEdgeCheckRunResult;
993
+ interface CloudEdgeFunctionCheck {
994
+ name: CloudEdgeFunctionName;
995
+ index_path: string;
996
+ config_path: string;
997
+ command: string;
998
+ status: CloudEdgeCheckStatus;
999
+ exit_code?: number | null;
1000
+ signal?: string | null;
1001
+ stdout_tail?: string;
1002
+ stderr_tail?: string;
1003
+ missing: string[];
1004
+ }
1005
+ interface CloudEdgeCheckResult {
1006
+ schema_version: "intentdna.cloud_edge_check.v1";
1007
+ mode: "supabase_edge_function_typecheck";
1008
+ provider: "supabase";
1009
+ status: "ready" | "blocked";
1010
+ generated_at: string;
1011
+ network_performed: false;
1012
+ supabase_network_performed: false;
1013
+ local_processes_executed: boolean;
1014
+ runtime_authority: false;
1015
+ tools: {
1016
+ deno: CloudDeployToolInfo;
1017
+ };
1018
+ summary: {
1019
+ total: number;
1020
+ passed: number;
1021
+ failed: number;
1022
+ blocked: number;
1023
+ };
1024
+ functions: CloudEdgeFunctionCheck[];
1025
+ missing: string[];
1026
+ next_commands: string[];
1027
+ boundaries: string[];
1028
+ }
1029
+ interface CloudFunctionHealthCheck {
1030
+ name: CloudEdgeFunctionName;
1031
+ url: string;
1032
+ method: "OPTIONS";
1033
+ status: CloudFunctionHealthStatus;
1034
+ http_status?: number;
1035
+ reason: string;
1036
+ network_error?: CloudFunctionHealthNetworkError;
1037
+ missing: string[];
1038
+ }
1039
+ interface CloudFunctionHealthResult {
1040
+ schema_version: "intentdna.cloud_function_health.v1";
1041
+ mode: "supabase_edge_function_health";
1042
+ provider: "supabase";
1043
+ status: CloudFunctionHealthStatus;
1044
+ generated_at: string;
1045
+ network_performed: boolean;
1046
+ mutation_performed: false;
1047
+ auth_sent: false;
1048
+ runtime_authority: false;
1049
+ base_url?: string;
1050
+ summary: {
1051
+ total: number;
1052
+ ready: number;
1053
+ failed: number;
1054
+ blocked: number;
1055
+ };
1056
+ functions: CloudFunctionHealthCheck[];
1057
+ missing: string[];
1058
+ next_commands: string[];
1059
+ boundaries: string[];
1060
+ }
1061
+ type CloudContractCheckSeverity = "required" | "warning";
1062
+ interface CloudContractCheck {
1063
+ id: string;
1064
+ severity: CloudContractCheckSeverity;
1065
+ status: "pass" | "fail";
1066
+ title: string;
1067
+ files: string[];
1068
+ evidence: string[];
1069
+ missing: string[];
1070
+ }
1071
+ interface CloudContractCheckResult {
1072
+ schema_version: "intentdna.cloud_contract_check.v1";
1073
+ mode: "supabase_saas_contract_check";
1074
+ provider: "supabase";
1075
+ status: "ready" | "blocked";
1076
+ generated_at: string;
1077
+ network_performed: false;
1078
+ runtime_authority: false;
1079
+ summary: {
1080
+ required: number;
1081
+ passed: number;
1082
+ failed: number;
1083
+ warnings: number;
1084
+ };
1085
+ migrations: string[];
1086
+ functions: string[];
1087
+ checks: CloudContractCheck[];
1088
+ blocked_by: string[];
1089
+ next_commands: string[];
1090
+ boundaries: string[];
1091
+ }
1092
+ type CloudProductionEvidenceStatus = "ready" | "blocked";
1093
+ interface CloudProductionEvidenceGate {
1094
+ id: "credentials" | "server_secrets" | "local_contracts" | "edge_typecheck" | "deploy_execution" | "function_health" | "ingestion_smoke" | "online_production" | "online_vercel_env" | "rollout";
1095
+ status: "ready" | "blocked" | "manual";
1096
+ evidence: string[];
1097
+ missing: string[];
1098
+ }
1099
+ interface CloudProductionEvidence {
1100
+ schema_version: "intentdna.cloud_production_evidence.v1";
1101
+ mode: "supabase_saas_backend_production_evidence";
1102
+ provider: "supabase";
1103
+ status: CloudProductionEvidenceStatus;
1104
+ generated_at: string;
1105
+ network_performed: boolean;
1106
+ mutation_performed: false;
1107
+ runtime_authority: false;
1108
+ secrets_redacted: true;
1109
+ supabase: {
1110
+ project_ref_present: boolean;
1111
+ cloud_url?: string;
1112
+ anon_key_present: boolean;
1113
+ access_token_present: boolean;
1114
+ operator_auth_present?: boolean;
1115
+ operator_auth_source?: "env" | "linked_project" | "none";
1116
+ service_secret_present: boolean;
1117
+ token_pepper_present: boolean;
1118
+ secrets_check_status?: CloudSecretsCheck["status"];
1119
+ secret_names_present?: string[];
1120
+ secret_names_missing?: string[];
1121
+ };
1122
+ online: {
1123
+ deployment_url?: string;
1124
+ deployment_recorded: boolean;
1125
+ vercel_env_check_status?: CloudVercelEnvCheck["status"];
1126
+ vercel_env_names_present?: string[];
1127
+ vercel_env_names_missing?: string[];
1128
+ production_alias_hint?: string;
1129
+ };
1130
+ source_status: {
1131
+ credential_check: CloudCredentialCheck["status"];
1132
+ secrets_check: CloudSecretsCheck["status"];
1133
+ deploy_execute: CloudDeployExecuteResult["status"];
1134
+ contract_check: CloudContractCheckResult["status"];
1135
+ edge_check: CloudEdgeCheckResult["status"];
1136
+ function_health: CloudFunctionHealthResult["status"];
1137
+ smoke_execute: CloudSmokeExecuteResult["status"];
1138
+ rollout_pack: CloudRolloutPack["status"];
1139
+ runbook: CloudRunbookPack["status"];
1140
+ };
1141
+ live_receipt: {
1142
+ provided: boolean;
1143
+ path?: string;
1144
+ schema_version?: string;
1145
+ status?: string;
1146
+ trusted_cloud_ingestion?: boolean;
1147
+ runtime_authority?: boolean;
1148
+ package_sha256?: string;
1149
+ receipt_id?: string;
1150
+ audit_event_id?: string;
1151
+ accepted_as_production_smoke: boolean;
1152
+ missing: string[];
1153
+ };
1154
+ gates: CloudProductionEvidenceGate[];
1155
+ blocked_by: string[];
1156
+ next_commands: string[];
1157
+ boundaries: string[];
1158
+ }
1159
+ interface CloudSmokeReceiptCheck {
1160
+ schema_version: "intentdna.cloud_smoke_receipt_check.v1";
1161
+ mode: "supabase_cloud_ingest_smoke_receipt_check";
1162
+ provider: "supabase";
1163
+ status: "ready" | "blocked";
1164
+ generated_at: string;
1165
+ network_performed: false;
1166
+ mutation_performed: false;
1167
+ runtime_authority: false;
1168
+ secrets_redacted: true;
1169
+ receipt: CloudProductionEvidence["live_receipt"];
1170
+ accepted_as_cloud_ingest_smoke: boolean;
1171
+ missing: string[];
1172
+ next_commands: string[];
1173
+ boundaries: string[];
1174
+ }
1175
+ export declare function linkedSupabaseProjectUrl(env?: NodeJS.ProcessEnv, readLinkedFiles?: boolean): string | undefined;
1176
+ export declare function buildCloudStatus(env?: NodeJS.ProcessEnv, configDir?: string): Promise<CloudStatus>;
1177
+ export declare function buildCloudStatusWithEvidence(params?: {
1178
+ env?: NodeJS.ProcessEnv;
1179
+ configDir?: string;
1180
+ secretsCheck?: CloudSecretsCheck;
1181
+ vercelEnvCheck?: CloudVercelEnvCheck;
1182
+ }): Promise<CloudStatus>;
1183
+ export declare function buildCloudBootstrap(params?: {
1184
+ adminUserId?: string;
1185
+ adminEmail?: string;
1186
+ orgName?: string;
1187
+ projectName?: string;
1188
+ projectHint?: string;
1189
+ tokenName?: string;
1190
+ tokenPepper?: string;
1191
+ expiresAt?: string;
1192
+ env?: NodeJS.ProcessEnv;
1193
+ generatedAt?: string;
1194
+ rawToken?: string;
1195
+ generatedPepper?: string;
1196
+ orgId?: string;
1197
+ projectId?: string;
1198
+ tokenId?: string;
1199
+ }): CloudBootstrapPlan;
1200
+ export declare function buildCloudDeployPlan(params?: {
1201
+ env?: NodeJS.ProcessEnv;
1202
+ generatedAt?: string;
1203
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1204
+ secretsCheck?: CloudSecretsCheck;
1205
+ vercelEnvCheck?: CloudVercelEnvCheck;
1206
+ }): CloudDeployPlan;
1207
+ export declare function buildCloudDeployExecute(params?: {
1208
+ env?: NodeJS.ProcessEnv;
1209
+ generatedAt?: string;
1210
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1211
+ dryRun?: boolean;
1212
+ yes?: boolean;
1213
+ runner?: CloudCommandRunner;
1214
+ }): CloudDeployExecuteResult;
1215
+ export declare function buildCloudSmokeExecute(params?: {
1216
+ env?: NodeJS.ProcessEnv;
1217
+ configDir?: string;
1218
+ endpoint?: string;
1219
+ generatedAt?: string;
1220
+ dryRun?: boolean;
1221
+ yes?: boolean;
1222
+ orgName?: string;
1223
+ projectName?: string;
1224
+ templateName?: string;
1225
+ receiptPath?: string;
1226
+ runner?: CloudCommandRunner;
1227
+ }): Promise<CloudSmokeExecuteResult>;
1228
+ export declare function buildCloudEnvManifest(params?: {
1229
+ env?: NodeJS.ProcessEnv;
1230
+ configDir?: string;
1231
+ generatedAt?: string;
1232
+ secretsCheck?: CloudSecretsCheck;
1233
+ vercelEnvCheck?: CloudVercelEnvCheck;
1234
+ }): CloudEnvManifest;
1235
+ export declare function buildCloudVercelEnvPlan(params?: {
1236
+ env?: NodeJS.ProcessEnv;
1237
+ generatedAt?: string;
1238
+ }): CloudVercelEnvPlan;
1239
+ export declare function buildCloudSecretsPlan(params?: {
1240
+ env?: NodeJS.ProcessEnv;
1241
+ generatedAt?: string;
1242
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1243
+ }): CloudSecretsPlan;
1244
+ export declare function buildCloudSecretsApply(params?: {
1245
+ env?: NodeJS.ProcessEnv;
1246
+ generatedAt?: string;
1247
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1248
+ dryRun?: boolean;
1249
+ yes?: boolean;
1250
+ runner?: CloudCommandRunner;
1251
+ }): CloudSecretsApplyResult;
1252
+ export declare function buildCloudVercelEnvCheck(params?: {
1253
+ env?: NodeJS.ProcessEnv;
1254
+ generatedAt?: string;
1255
+ runner?: CloudCommandRunner;
1256
+ }): CloudVercelEnvCheck;
1257
+ export declare function buildCloudSecretsCheck(params?: {
1258
+ env?: NodeJS.ProcessEnv;
1259
+ generatedAt?: string;
1260
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1261
+ runner?: CloudCommandRunner;
1262
+ }): CloudSecretsCheck;
1263
+ export declare function buildCloudVercelEnvApply(params?: {
1264
+ env?: NodeJS.ProcessEnv;
1265
+ generatedAt?: string;
1266
+ dryRun?: boolean;
1267
+ yes?: boolean;
1268
+ runner?: CloudCommandRunner;
1269
+ }): CloudVercelEnvApplyResult;
1270
+ export declare function buildCloudCredentialCheck(params?: {
1271
+ env?: NodeJS.ProcessEnv;
1272
+ configDir?: string;
1273
+ endpoint?: string;
1274
+ generatedAt?: string;
1275
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1276
+ secretsCheck?: CloudSecretsCheck;
1277
+ vercelEnvCheck?: CloudVercelEnvCheck;
1278
+ }): Promise<CloudCredentialCheck>;
1279
+ export declare function buildCloudContractCheck(params?: {
1280
+ generatedAt?: string;
1281
+ }): CloudContractCheckResult;
1282
+ export declare function buildCloudEdgeCheck(params?: {
1283
+ env?: NodeJS.ProcessEnv;
1284
+ generatedAt?: string;
1285
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1286
+ runner?: CloudEdgeCheckRunner;
1287
+ }): CloudEdgeCheckResult;
1288
+ export declare function buildCloudHandoffPack(params?: {
1289
+ env?: NodeJS.ProcessEnv;
1290
+ configDir?: string;
1291
+ endpoint?: string;
1292
+ generatedAt?: string;
1293
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1294
+ secretsCheck?: CloudSecretsCheck;
1295
+ vercelEnvCheck?: CloudVercelEnvCheck;
1296
+ }): Promise<CloudHandoffPack>;
1297
+ export declare function buildCloudOperatorChecklist(params?: {
1298
+ env?: NodeJS.ProcessEnv;
1299
+ configDir?: string;
1300
+ endpoint?: string;
1301
+ deploymentUrl?: string;
1302
+ generatedAt?: string;
1303
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1304
+ secretsCheck?: CloudSecretsCheck;
1305
+ vercelEnvCheck?: CloudVercelEnvCheck;
1306
+ }): Promise<CloudOperatorChecklist>;
1307
+ export declare function buildCloudRunbook(params?: {
1308
+ env?: NodeJS.ProcessEnv;
1309
+ configDir?: string;
1310
+ endpoint?: string;
1311
+ generatedAt?: string;
1312
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1313
+ secretsCheck?: CloudSecretsCheck;
1314
+ vercelEnvCheck?: CloudVercelEnvCheck;
1315
+ }): Promise<CloudRunbookPack>;
1316
+ export declare function buildCloudSmokeReceiptCheck(params?: {
1317
+ receiptPath?: string;
1318
+ generatedAt?: string;
1319
+ }): CloudSmokeReceiptCheck;
1320
+ export declare function buildCloudProductionEvidence(params?: {
1321
+ env?: NodeJS.ProcessEnv;
1322
+ configDir?: string;
1323
+ endpoint?: string;
1324
+ deploymentUrl?: string;
1325
+ receiptPath?: string;
1326
+ secretsCheckPath?: string;
1327
+ generatedAt?: string;
1328
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1329
+ functionHealthFetch?: typeof globalThis.fetch;
1330
+ edgeCheckRunner?: CloudEdgeCheckRunner;
1331
+ deployExecuteRunner?: CloudCommandRunner;
1332
+ smokeExecuteRunner?: CloudCommandRunner;
1333
+ secretsCheckRunner?: CloudCommandRunner;
1334
+ vercelEnvRunner?: CloudCommandRunner;
1335
+ vercelEnvCheck?: CloudVercelEnvCheck;
1336
+ }): Promise<CloudProductionEvidence>;
1337
+ export declare function buildCloudFunctionHealth(params?: {
1338
+ env?: NodeJS.ProcessEnv;
1339
+ endpoint?: string;
1340
+ generatedAt?: string;
1341
+ fetch?: typeof globalThis.fetch;
1342
+ }): Promise<CloudFunctionHealthResult>;
1343
+ export declare function buildCloudSmokePlan(params?: {
1344
+ env?: NodeJS.ProcessEnv;
1345
+ configDir?: string;
1346
+ endpoint?: string;
1347
+ generatedAt?: string;
1348
+ }): Promise<CloudSmokePlan>;
1349
+ export declare function buildCloudRolloutPack(params?: {
1350
+ env?: NodeJS.ProcessEnv;
1351
+ configDir?: string;
1352
+ endpoint?: string;
1353
+ generatedAt?: string;
1354
+ toolAvailability?: Partial<Record<CloudDeployTool, boolean>>;
1355
+ secretsCheck?: CloudSecretsCheck;
1356
+ vercelEnvCheck?: CloudVercelEnvCheck;
1357
+ }): Promise<CloudRolloutPack>;
1358
+ export declare function runCloud(options: CloudOptions): Promise<number>;
1359
+ export {};