@rehearsal-db/core 0.1.0-beta.9 → 0.1.0-rc.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 (247) hide show
  1. package/CHANGELOG.md +319 -1
  2. package/COMPATIBILITY.md +15 -0
  3. package/README.md +73 -16
  4. package/dist/package.json +100 -0
  5. package/dist/scripts/install/create_root_config.d.mts +3 -0
  6. package/dist/scripts/install/create_root_config.mjs +13 -0
  7. package/dist/scripts/runtime/manage_database.d.mts +6 -0
  8. package/{scripts → dist/scripts}/runtime/manage_database.mjs +6 -8
  9. package/dist/src/application/interactive_task.d.mts +30 -0
  10. package/dist/src/application/interactive_task.mjs +83 -0
  11. package/dist/src/application/session.d.mts +97 -0
  12. package/dist/src/application/session.mjs +380 -0
  13. package/dist/src/baseline/artifact.d.mts +119 -0
  14. package/dist/src/baseline/artifact.mjs +522 -0
  15. package/dist/src/baseline/builder.d.mts +19 -0
  16. package/dist/src/baseline/builder.mjs +142 -0
  17. package/dist/src/baseline/input_discovery.d.mts +13 -0
  18. package/dist/src/baseline/input_discovery.mjs +149 -0
  19. package/dist/src/baseline/policy_review.d.mts +56 -0
  20. package/dist/src/baseline/policy_review.mjs +73 -0
  21. package/dist/src/baseline/preparation.d.mts +63 -0
  22. package/dist/src/baseline/preparation.mjs +295 -0
  23. package/dist/src/baseline/privacy_contract.d.mts +147 -0
  24. package/dist/src/baseline/privacy_contract.mjs +2 -0
  25. package/dist/src/baseline/privacy_dependency_graph.d.mts +7 -0
  26. package/dist/src/baseline/privacy_dependency_graph.mjs +110 -0
  27. package/dist/src/baseline/privacy_engine.d.mts +5 -0
  28. package/dist/src/baseline/privacy_engine.mjs +4 -0
  29. package/dist/src/baseline/privacy_key.d.mts +7 -0
  30. package/dist/src/baseline/privacy_key.mjs +42 -0
  31. package/dist/src/baseline/privacy_pipeline.d.mts +7 -0
  32. package/dist/src/baseline/privacy_pipeline.mjs +127 -0
  33. package/dist/src/baseline/privacy_policy.d.mts +6 -0
  34. package/dist/src/baseline/privacy_policy.mjs +237 -0
  35. package/dist/src/baseline/privacy_recipe_validation.d.mts +5 -0
  36. package/dist/src/baseline/privacy_recipe_validation.mjs +289 -0
  37. package/dist/src/baseline/privacy_rule_registry.d.mts +18 -0
  38. package/dist/src/baseline/privacy_rule_registry.mjs +143 -0
  39. package/dist/src/baseline/privacy_structured_json.d.mts +66 -0
  40. package/dist/src/baseline/privacy_structured_json.mjs +464 -0
  41. package/dist/src/baseline/privacy_transforms.d.mts +18 -0
  42. package/dist/src/baseline/privacy_transforms.mjs +142 -0
  43. package/dist/src/baseline/privacy_validation_shared.d.mts +31 -0
  44. package/dist/src/baseline/privacy_validation_shared.mjs +127 -0
  45. package/dist/src/baseline/sanitization_policy.d.mts +69 -0
  46. package/dist/src/baseline/sanitization_policy.mjs +227 -0
  47. package/dist/src/baseline/schema_snapshot.d.mts +19 -0
  48. package/dist/src/baseline/schema_snapshot.mjs +79 -0
  49. package/dist/src/cli/application_command_handlers.d.mts +8 -0
  50. package/dist/src/cli/application_command_handlers.mjs +52 -0
  51. package/dist/src/cli/arguments.d.mts +38 -0
  52. package/dist/src/cli/arguments.mjs +130 -0
  53. package/dist/src/cli/basic_command_handlers.d.mts +4 -0
  54. package/dist/src/cli/basic_command_handlers.mjs +57 -0
  55. package/dist/src/cli/cli_commands.d.mts +14 -0
  56. package/dist/src/cli/cli_commands.mjs +34 -0
  57. package/dist/src/cli/command_contract.d.mts +57 -0
  58. package/dist/src/cli/command_contract.mjs +39 -0
  59. package/dist/src/cli/command_output.d.mts +12 -0
  60. package/dist/src/cli/command_output.mjs +20 -0
  61. package/dist/src/cli/command_registry.d.mts +7 -0
  62. package/dist/src/cli/command_registry.mjs +14 -0
  63. package/dist/src/cli/guided.d.mts +53 -0
  64. package/dist/src/cli/guided.mjs +727 -0
  65. package/dist/src/cli/identity_command_handlers.d.mts +12 -0
  66. package/dist/src/cli/identity_command_handlers.mjs +239 -0
  67. package/dist/src/cli/identity_renderer.d.mts +8 -0
  68. package/dist/src/cli/identity_renderer.mjs +33 -0
  69. package/dist/src/cli/init_command.d.mts +21 -0
  70. package/dist/src/cli/init_command.mjs +90 -0
  71. package/dist/src/cli/inspection_command_handlers.d.mts +3 -0
  72. package/dist/src/cli/inspection_command_handlers.mjs +79 -0
  73. package/dist/src/cli/project_command_handlers.d.mts +11 -0
  74. package/dist/src/cli/project_command_handlers.mjs +92 -0
  75. package/dist/src/cli/project_commands.d.mts +283 -0
  76. package/dist/src/cli/project_commands.mjs +192 -0
  77. package/dist/src/cli/rehearsal.d.mts +7 -0
  78. package/dist/src/cli/rehearsal.mjs +190 -0
  79. package/dist/src/cli/renderers.d.mts +299 -0
  80. package/dist/src/cli/renderers.mjs +554 -0
  81. package/dist/src/cli/runtime_action_handlers.d.mts +12 -0
  82. package/dist/src/cli/runtime_action_handlers.mjs +201 -0
  83. package/dist/src/cli/runtime_commands.d.mts +294 -0
  84. package/dist/src/cli/runtime_commands.mjs +619 -0
  85. package/dist/src/cli/source_command_handlers.d.mts +8 -0
  86. package/dist/src/cli/source_command_handlers.mjs +62 -0
  87. package/dist/src/cli/source_commands.d.mts +436 -0
  88. package/dist/src/cli/source_commands.mjs +301 -0
  89. package/dist/src/cli/terminal.d.mts +59 -0
  90. package/dist/src/cli/terminal.mjs +230 -0
  91. package/dist/src/identity/claim.d.mts +5 -0
  92. package/dist/src/identity/claim.mjs +4 -0
  93. package/dist/src/identity/claim_contract.d.mts +135 -0
  94. package/dist/src/identity/claim_contract.mjs +6 -0
  95. package/dist/src/identity/claim_executor.d.mts +10 -0
  96. package/dist/src/identity/claim_executor.mjs +358 -0
  97. package/dist/src/identity/claim_identity_lookup.d.mts +23 -0
  98. package/dist/src/identity/claim_identity_lookup.mjs +134 -0
  99. package/dist/src/identity/claim_plan.d.mts +8 -0
  100. package/dist/src/identity/claim_plan.mjs +61 -0
  101. package/dist/src/identity/claim_policy.d.mts +3 -0
  102. package/dist/src/identity/claim_policy.mjs +377 -0
  103. package/dist/src/identity/claim_sql.d.mts +10 -0
  104. package/dist/src/identity/claim_sql.mjs +46 -0
  105. package/dist/src/identity/claim_verification.d.mts +13 -0
  106. package/dist/src/identity/claim_verification.mjs +35 -0
  107. package/dist/src/identity/connect.d.mts +30 -0
  108. package/dist/src/identity/connect.mjs +111 -0
  109. package/dist/src/identity/provider_configuration.d.mts +37 -0
  110. package/dist/src/identity/provider_configuration.mjs +132 -0
  111. package/dist/src/identity/storage.d.mts +21 -0
  112. package/dist/src/identity/storage.mjs +122 -0
  113. package/dist/src/index.d.mts +4 -0
  114. package/dist/src/index.mjs +3 -0
  115. package/dist/src/project/configuration.d.mts +13 -0
  116. package/dist/src/project/configuration.mjs +9 -0
  117. package/dist/src/project/configuration_contract.d.mts +125 -0
  118. package/dist/src/project/configuration_contract.mjs +27 -0
  119. package/dist/src/project/configuration_discovery.d.mts +7 -0
  120. package/dist/src/project/configuration_discovery.mjs +37 -0
  121. package/dist/src/project/configuration_normalization.d.mts +107 -0
  122. package/dist/src/project/configuration_normalization.mjs +302 -0
  123. package/dist/src/project/configuration_rendering.d.mts +14 -0
  124. package/dist/src/project/configuration_rendering.mjs +228 -0
  125. package/dist/src/project/configuration_resolution.d.mts +125 -0
  126. package/dist/src/project/configuration_resolution.mjs +81 -0
  127. package/dist/src/project/configuration_schema.d.mts +22 -0
  128. package/dist/src/project/configuration_schema.mjs +160 -0
  129. package/dist/src/project/configuration_validation.d.mts +22 -0
  130. package/dist/src/project/configuration_validation.mjs +136 -0
  131. package/dist/src/project/install_scaffold.d.mts +42 -0
  132. package/dist/src/project/install_scaffold.mjs +263 -0
  133. package/dist/src/project/project_detection.d.mts +14 -0
  134. package/dist/src/project/project_detection.mjs +47 -0
  135. package/dist/src/project/setup.d.mts +87 -0
  136. package/dist/src/project/setup.mjs +414 -0
  137. package/dist/src/project/support_report.d.mts +88 -0
  138. package/dist/src/project/support_report.mjs +83 -0
  139. package/dist/src/runtime/cleanup.d.mts +85 -0
  140. package/dist/src/runtime/cleanup.mjs +311 -0
  141. package/dist/src/runtime/lifecycle_engine.d.mts +63 -0
  142. package/dist/src/runtime/lifecycle_engine.mjs +114 -0
  143. package/dist/src/runtime/migration_history.d.mts +51 -0
  144. package/dist/src/runtime/migration_history.mjs +170 -0
  145. package/dist/src/runtime/plan.d.mts +134 -0
  146. package/dist/src/runtime/plan.mjs +640 -0
  147. package/dist/src/runtime/policy.d.mts +66 -0
  148. package/dist/src/runtime/policy.mjs +369 -0
  149. package/dist/src/runtime/restore.d.mts +22 -0
  150. package/dist/src/runtime/restore.mjs +276 -0
  151. package/dist/src/runtime/service_environment.d.mts +11 -0
  152. package/dist/src/runtime/service_environment.mjs +58 -0
  153. package/dist/src/runtime/topology.d.mts +51 -0
  154. package/dist/src/runtime/topology.mjs +128 -0
  155. package/dist/src/shared/diagnostics.d.mts +97 -0
  156. package/dist/src/shared/diagnostics.mjs +170 -0
  157. package/dist/src/shared/human_output.d.mts +2 -0
  158. package/{src → dist/src}/shared/human_output.mjs +1 -3
  159. package/dist/src/shared/node_runtime.d.mts +14 -0
  160. package/dist/src/shared/node_runtime.mjs +25 -0
  161. package/dist/src/shared/operation_guard.d.mts +22 -0
  162. package/dist/src/shared/operation_guard.mjs +150 -0
  163. package/dist/src/shared/process_environment.d.mts +15 -0
  164. package/dist/src/shared/process_environment.mjs +50 -0
  165. package/dist/src/source/access.d.mts +165 -0
  166. package/dist/src/source/access.mjs +602 -0
  167. package/dist/src/source/asset_transfer.d.mts +27 -0
  168. package/dist/src/source/asset_transfer.mjs +202 -0
  169. package/dist/src/source/baseline.d.mts +66 -0
  170. package/dist/src/source/baseline.mjs +372 -0
  171. package/dist/src/source/external_reader.d.mts +42 -0
  172. package/dist/src/source/external_reader.mjs +278 -0
  173. package/dist/src/source/postgresql_access.d.mts +86 -0
  174. package/dist/src/source/postgresql_access.mjs +454 -0
  175. package/dist/src/source/privacy_paths.d.mts +10 -0
  176. package/dist/src/source/privacy_paths.mjs +27 -0
  177. package/dist/src/targets/driver.d.mts +2 -0
  178. package/dist/src/targets/driver.mjs +13 -0
  179. package/dist/src/targets/postgresql.d.mts +5 -0
  180. package/dist/src/targets/postgresql.mjs +620 -0
  181. package/dist/src/targets/supabase.d.mts +8 -0
  182. package/dist/src/targets/supabase.mjs +629 -0
  183. package/dist/src/targets/supabase_environment.d.mts +54 -0
  184. package/dist/src/targets/supabase_environment.mjs +184 -0
  185. package/dist/src/targets/target.d.mts +33 -0
  186. package/dist/src/targets/target.mjs +39 -0
  187. package/docs/README.md +35 -16
  188. package/docs/architecture.md +135 -10
  189. package/docs/commands.md +53 -15
  190. package/docs/configuration.md +186 -31
  191. package/docs/getting-started.md +66 -9
  192. package/docs/index.md +67 -0
  193. package/docs/production-source.md +175 -17
  194. package/docs/releasing.md +24 -12
  195. package/docs/roadmap.md +3 -2
  196. package/docs/runtime-lifecycle.md +99 -0
  197. package/docs/runtime-policies.md +80 -7
  198. package/docs/sanitization.md +572 -4
  199. package/docs/security-model.md +8 -0
  200. package/docs/stability.md +70 -0
  201. package/docs/standalone-workflow.md +36 -13
  202. package/docs/troubleshooting.md +82 -10
  203. package/docs/tutorial.md +7 -1
  204. package/docs/typescript.md +134 -0
  205. package/package.json +44 -29
  206. package/types/configuration.d.mts +5 -0
  207. package/src/README.md +0 -17
  208. package/src/application/session.mjs +0 -313
  209. package/src/baseline/artifact.mjs +0 -661
  210. package/src/baseline/builder.mjs +0 -164
  211. package/src/baseline/input_discovery.mjs +0 -155
  212. package/src/baseline/policy_review.mjs +0 -92
  213. package/src/baseline/preparation.mjs +0 -323
  214. package/src/baseline/privacy_engine.mjs +0 -413
  215. package/src/baseline/sanitization_policy.mjs +0 -299
  216. package/src/baseline/schema_snapshot.mjs +0 -113
  217. package/src/cli/arguments.mjs +0 -120
  218. package/src/cli/guided.mjs +0 -807
  219. package/src/cli/rehearsal.mjs +0 -933
  220. package/src/cli/renderers.mjs +0 -584
  221. package/src/cli/runtime_commands.mjs +0 -553
  222. package/src/cli/source_commands.mjs +0 -326
  223. package/src/cli/terminal.mjs +0 -275
  224. package/src/identity/claim.mjs +0 -975
  225. package/src/identity/storage.mjs +0 -165
  226. package/src/project/configuration.d.mts +0 -153
  227. package/src/project/configuration.mjs +0 -1197
  228. package/src/project/setup.mjs +0 -379
  229. package/src/project/support_report.mjs +0 -105
  230. package/src/runtime/cleanup.mjs +0 -381
  231. package/src/runtime/migration_history.mjs +0 -220
  232. package/src/runtime/plan.mjs +0 -685
  233. package/src/runtime/policy.mjs +0 -438
  234. package/src/runtime/restore.mjs +0 -329
  235. package/src/runtime/service_environment.mjs +0 -82
  236. package/src/runtime/topology.mjs +0 -177
  237. package/src/shared/diagnostics.mjs +0 -199
  238. package/src/shared/operation_guard.mjs +0 -162
  239. package/src/shared/process_environment.mjs +0 -68
  240. package/src/source/access.mjs +0 -578
  241. package/src/source/asset_transfer.mjs +0 -177
  242. package/src/source/baseline.mjs +0 -446
  243. package/src/source/postgresql_access.mjs +0 -480
  244. package/src/targets/postgresql.mjs +0 -808
  245. package/src/targets/supabase.mjs +0 -830
  246. package/src/targets/supabase_environment.mjs +0 -229
  247. package/src/targets/target.mjs +0 -66
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Purpose: Build and compare content-addressed application migration histories for
3
+ * Rehearsal without trusting timestamp-only migration alignment. Do not run directly;
4
+ * this module is reusable script infrastructure.
5
+ */
6
+ import { createHash } from "node:crypto";
7
+ import { readFile, readdir } from "node:fs/promises";
8
+ const migrationNamePattern = /^(\d{14})_(.+)\.sql$/u;
9
+ const sha256 = (value) => createHash("sha256").update(value).digest("hex");
10
+ const canonicalJson = (value) => `${JSON.stringify(value, null, "\t")}\n`;
11
+ const normalizeStatement = (statement) => {
12
+ if (typeof statement !== "string") {
13
+ throw new Error("A Rehearsal migration ledger statement is not text.");
14
+ }
15
+ return statement.replaceAll("\r\n", "\n").replaceAll("\r", "\n");
16
+ };
17
+ const assertOrderedUniqueHistory = (entries, label) => {
18
+ const seen = new Set();
19
+ let previous = null;
20
+ for (const entry of entries) {
21
+ if (!/^\d{14}$/u.test(entry.version)) {
22
+ throw new Error(`${label} has an invalid migration version: ${entry.version}`);
23
+ }
24
+ if (seen.has(entry.version)) {
25
+ throw new Error(`${label} contains duplicate migration ${entry.version}.`);
26
+ }
27
+ if (previous !== null && entry.version <= previous) {
28
+ throw new Error(`${label} is not in strictly increasing migration order at ${entry.version}.`);
29
+ }
30
+ seen.add(entry.version);
31
+ previous = entry.version;
32
+ }
33
+ return entries;
34
+ };
35
+ export const readMigrationFileInventory = async (directory) => {
36
+ const names = (await readdir(directory))
37
+ .filter((name) => name.endsWith(".sql"))
38
+ .sort();
39
+ const entries = [];
40
+ for (const filename of names) {
41
+ const match = migrationNamePattern.exec(filename);
42
+ if (!match) {
43
+ throw new Error(`Invalid migration filename in ${directory}: ${filename}`);
44
+ }
45
+ const bytes = await readFile(new URL(filename, directory));
46
+ entries.push({
47
+ version: match[1],
48
+ name: match[2],
49
+ filename,
50
+ fileSha256: sha256(bytes),
51
+ });
52
+ }
53
+ return [...assertOrderedUniqueHistory(entries, "Migration files")];
54
+ };
55
+ export const readMigrationSourceBundle = async ({ directory, sourceLedger, }) => {
56
+ assertOrderedUniqueHistory(sourceLedger, "Source migration ledger");
57
+ const inventory = await readMigrationFileInventory(directory);
58
+ if (sourceLedger.length > inventory.length) {
59
+ throw new Error("The source migration history contains a version absent from local migration source.");
60
+ }
61
+ const bundle = [];
62
+ for (let index = 0; index < sourceLedger.length; index += 1) {
63
+ const source = sourceLedger[index];
64
+ const file = inventory[index];
65
+ if (source.version !== file.version || source.name !== file.name) {
66
+ throw new Error(`Source migration ${source.version}_${source.name} does not match local file ${file.filename}.`);
67
+ }
68
+ bundle.push({
69
+ ...file,
70
+ content: await readFile(new URL(file.filename, directory), "utf8"),
71
+ });
72
+ }
73
+ return bundle;
74
+ };
75
+ export const buildMigrationLedgerInventory = (rows, label = "Migration ledger") => {
76
+ if (!Array.isArray(rows) || rows.length === 0) {
77
+ throw new Error(`${label} is empty or unavailable.`);
78
+ }
79
+ const entries = rows.map((row) => {
80
+ if (!row ||
81
+ typeof row !== "object" ||
82
+ !("name" in row) ||
83
+ typeof row.name !== "string") {
84
+ throw new Error(`${label} contains an invalid row.`);
85
+ }
86
+ if (!("statements" in row) ||
87
+ !Array.isArray(row.statements) ||
88
+ row.statements.length === 0) {
89
+ throw new Error(`${label} migration ${"version" in row ? String(row.version) : "unknown"} has no applied statements.`);
90
+ }
91
+ const statements = row.statements.map(normalizeStatement);
92
+ return {
93
+ version: String("version" in row ? row.version : ""),
94
+ name: row.name,
95
+ statementCount: statements.length,
96
+ statementSha256: sha256(JSON.stringify(statements)),
97
+ };
98
+ });
99
+ return [...assertOrderedUniqueHistory(entries, label)];
100
+ };
101
+ export const createMigrationReplayReceipt = ({ files, ledger, }) => {
102
+ assertOrderedUniqueHistory(files, "Migration files");
103
+ assertOrderedUniqueHistory(ledger, "Replayed migration ledger");
104
+ if (files.length !== ledger.length) {
105
+ throw new Error(`Migration replay length mismatch: ${files.length} files but ${ledger.length} applied ledger rows.`);
106
+ }
107
+ const entries = files.map((file, index) => {
108
+ const applied = ledger[index];
109
+ if (file.version !== applied.version || file.name !== applied.name) {
110
+ throw new Error(`Migration replay mismatch at ${file.filename}: ledger contains ${applied.version}_${applied.name}.`);
111
+ }
112
+ return {
113
+ version: file.version,
114
+ name: file.name,
115
+ filename: file.filename,
116
+ fileSha256: file.fileSha256,
117
+ statementCount: applied.statementCount,
118
+ statementSha256: applied.statementSha256,
119
+ };
120
+ });
121
+ return {
122
+ entries,
123
+ historySha256: sha256(canonicalJson(entries)),
124
+ };
125
+ };
126
+ export const compareSourceToReplay = ({ sourceLedger, replayReceipt, snapshotSchemaSha256, }) => {
127
+ assertOrderedUniqueHistory(sourceLedger, "Source migration ledger");
128
+ if (!replayReceipt?.entries?.length || !replayReceipt.historySha256) {
129
+ throw new Error("The migration replay receipt is missing or invalid.");
130
+ }
131
+ if (sourceLedger.length > replayReceipt.entries.length) {
132
+ throw new Error("The source migration history contains a version absent from the reviewed replay.");
133
+ }
134
+ const snapshotBacked = snapshotSchemaSha256 !== undefined;
135
+ if (snapshotBacked && !/^[a-f0-9]{64}$/u.test(snapshotSchemaSha256)) {
136
+ throw new Error("The production schema snapshot receipt is invalid.");
137
+ }
138
+ let historicalStatementDifferences = 0;
139
+ for (let index = 0; index < sourceLedger.length; index += 1) {
140
+ const source = sourceLedger[index];
141
+ const replayed = replayReceipt.entries[index];
142
+ if (source.version !== replayed.version || source.name !== replayed.name) {
143
+ throw new Error(`Source migration history is not an exact replay prefix at ${source.version}_${source.name}.`);
144
+ }
145
+ if (source.statementCount !== replayed.statementCount ||
146
+ source.statementSha256 !== replayed.statementSha256) {
147
+ if (!snapshotBacked) {
148
+ throw new Error(`Applied statement content differs for migration ${source.version}_${source.name}.`);
149
+ }
150
+ historicalStatementDifferences += 1;
151
+ }
152
+ }
153
+ const candidates = replayReceipt.entries.slice(sourceLedger.length);
154
+ return {
155
+ cutoff: sourceLedger.at(-1).version,
156
+ candidates,
157
+ candidateSha256: sha256(canonicalJson(candidates)),
158
+ historicalStatementDifferences,
159
+ snapshotSchemaSha256: snapshotBacked ? snapshotSchemaSha256 : null,
160
+ };
161
+ };
162
+ export const assertNoCrossDatabaseMigrationVersions = ({ applicationFiles, apiFiles, }) => {
163
+ const applicationVersions = new Set(applicationFiles.map((entry) => entry.version));
164
+ const collisions = apiFiles
165
+ .map((entry) => entry.version)
166
+ .filter((version) => applicationVersions.has(version));
167
+ if (collisions.length) {
168
+ throw new Error(`Primary and secondary database migration versions collide: ${collisions.join(", ")}.`);
169
+ }
170
+ };
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Purpose: Build the immutable, audit-only Rehearsal execution plan and readiness
3
+ * report from project configuration and verified artifacts. Do not run directly;
4
+ * this module is reusable script infrastructure.
5
+ */
6
+ import type { RehearsalConfigPathOptions } from "../project/configuration.mjs";
7
+ export declare const buildRehearsalPlan: (options?: RehearsalConfigPathOptions) => Promise<{
8
+ config: {
9
+ schemaVersion: 1;
10
+ path: string;
11
+ project: string;
12
+ };
13
+ environment: {
14
+ target: "postgresql" | "supabase";
15
+ kind: string;
16
+ applicationUrl: string;
17
+ projectId: string;
18
+ ports: Readonly<{
19
+ api?: number;
20
+ database: number;
21
+ studio?: number;
22
+ }>;
23
+ hostedAccess: "disabled";
24
+ outboundNetwork: "deny";
25
+ authenticationProviders: readonly string[];
26
+ authenticationCallback: string | null;
27
+ barriers: string[];
28
+ };
29
+ baseline: {
30
+ rehearsalVersion: string;
31
+ formatVersion: 1 | 2;
32
+ generationId: string;
33
+ createdAt: string | null;
34
+ migrationCutoff: string;
35
+ migrationHistorySha256: string;
36
+ sanitizationPolicySha256: string;
37
+ dataSha256: string;
38
+ tableCount: number;
39
+ rowCount: number;
40
+ migrationCount: number;
41
+ verification: string;
42
+ };
43
+ migrations: {
44
+ representedCount: number;
45
+ candidateCount: number;
46
+ candidateSha256: string;
47
+ candidates: {
48
+ filename: string;
49
+ sha256: string;
50
+ }[];
51
+ };
52
+ execution: string[];
53
+ guarantee: string;
54
+ paths: {
55
+ artifactDirectory: string;
56
+ migrationDirectory: string;
57
+ sanitizationPolicy: string;
58
+ };
59
+ }>;
60
+ export declare const inspectRehearsalBaseline: (options?: RehearsalConfigPathOptions) => Promise<{
61
+ rehearsalVersion: string;
62
+ formatVersion: 1 | 2;
63
+ generationId: string;
64
+ createdAt: string | null;
65
+ migrationCutoff: string;
66
+ migrationHistorySha256: string;
67
+ sanitizationPolicySha256: string;
68
+ dataSha256: string;
69
+ tableCount: number;
70
+ rowCount: number;
71
+ migrationCount: number;
72
+ verification: string;
73
+ project: string;
74
+ provenance: {
75
+ configVersion: 1;
76
+ migrationCutoff: string;
77
+ sanitizationPolicySha256: string;
78
+ };
79
+ privacy: {
80
+ sourceRowsExposed: boolean;
81
+ sensitiveValuesIncludedInReport: boolean;
82
+ };
83
+ }>;
84
+ export declare const inspectRehearsalMigrations: (options?: RehearsalConfigPathOptions) => Promise<{
85
+ baselineGenerationId: string;
86
+ baselineCutoff: string;
87
+ candidateSha256: string;
88
+ migrations: {
89
+ version: string;
90
+ name: string;
91
+ filename: string;
92
+ sha256: string;
93
+ status: string;
94
+ }[];
95
+ definitions: {
96
+ represented_by_baseline: string;
97
+ applied_to_current_runtime: string;
98
+ candidate: string;
99
+ modified: string;
100
+ invalid: string;
101
+ };
102
+ }>;
103
+ export declare const runRehearsalDoctor: (options?: RehearsalConfigPathOptions) => Promise<{
104
+ state: string;
105
+ checks: {
106
+ id: string;
107
+ label: string;
108
+ status: string;
109
+ detail: string;
110
+ remediation: string;
111
+ }[];
112
+ ambientHostedVariables?: never;
113
+ } | {
114
+ state: string;
115
+ checks: ({
116
+ id: string;
117
+ label: string;
118
+ status: string;
119
+ detail: unknown;
120
+ durationMs: number;
121
+ remediation?: never;
122
+ } | {
123
+ id: string;
124
+ label: string;
125
+ status: string;
126
+ detail: string;
127
+ remediation: string;
128
+ durationMs: number;
129
+ })[];
130
+ ambientHostedVariables: {
131
+ presentButQuarantined: string[];
132
+ note: string;
133
+ };
134
+ }>;