@rehearsal-db/core 0.1.0-beta.13 → 0.1.0-beta.15

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 (169) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/README.md +4 -1
  3. package/dist/package.json +100 -0
  4. package/dist/scripts/install/create_root_config.d.mts +3 -0
  5. package/dist/scripts/install/create_root_config.mjs +13 -0
  6. package/dist/scripts/runtime/manage_database.d.mts +6 -0
  7. package/{scripts → dist/scripts}/runtime/manage_database.mjs +6 -8
  8. package/dist/src/application/session.d.mts +96 -0
  9. package/dist/src/application/session.mjs +380 -0
  10. package/dist/src/baseline/artifact.d.mts +119 -0
  11. package/dist/src/baseline/artifact.mjs +522 -0
  12. package/dist/src/baseline/builder.d.mts +19 -0
  13. package/dist/src/baseline/builder.mjs +142 -0
  14. package/dist/src/baseline/input_discovery.d.mts +13 -0
  15. package/dist/src/baseline/input_discovery.mjs +149 -0
  16. package/dist/src/baseline/policy_review.d.mts +56 -0
  17. package/dist/src/baseline/policy_review.mjs +73 -0
  18. package/dist/src/baseline/preparation.d.mts +63 -0
  19. package/dist/src/baseline/preparation.mjs +295 -0
  20. package/dist/src/baseline/privacy_engine.d.mts +162 -0
  21. package/dist/src/baseline/privacy_engine.mjs +1162 -0
  22. package/dist/src/baseline/privacy_structured_json.d.mts +66 -0
  23. package/dist/src/baseline/privacy_structured_json.mjs +464 -0
  24. package/dist/src/baseline/sanitization_policy.d.mts +69 -0
  25. package/dist/src/baseline/sanitization_policy.mjs +227 -0
  26. package/dist/src/baseline/schema_snapshot.d.mts +19 -0
  27. package/dist/src/baseline/schema_snapshot.mjs +79 -0
  28. package/dist/src/cli/arguments.d.mts +43 -0
  29. package/dist/src/cli/arguments.mjs +135 -0
  30. package/dist/src/cli/guided.d.mts +51 -0
  31. package/dist/src/cli/guided.mjs +713 -0
  32. package/dist/src/cli/init_command.d.mts +21 -0
  33. package/dist/src/cli/init_command.mjs +90 -0
  34. package/dist/src/cli/project_commands.d.mts +157 -0
  35. package/dist/src/cli/project_commands.mjs +183 -0
  36. package/dist/src/cli/rehearsal.d.mts +7 -0
  37. package/dist/src/cli/rehearsal.mjs +706 -0
  38. package/dist/src/cli/renderers.d.mts +299 -0
  39. package/dist/src/cli/renderers.mjs +554 -0
  40. package/dist/src/cli/runtime_commands.d.mts +265 -0
  41. package/dist/src/cli/runtime_commands.mjs +599 -0
  42. package/dist/src/cli/source_commands.d.mts +432 -0
  43. package/dist/src/cli/source_commands.mjs +299 -0
  44. package/dist/src/cli/terminal.d.mts +59 -0
  45. package/dist/src/cli/terminal.mjs +230 -0
  46. package/dist/src/identity/claim.d.mts +144 -0
  47. package/dist/src/identity/claim.mjs +947 -0
  48. package/dist/src/identity/provider_configuration.d.mts +37 -0
  49. package/dist/src/identity/provider_configuration.mjs +132 -0
  50. package/dist/src/identity/storage.d.mts +21 -0
  51. package/dist/src/identity/storage.mjs +122 -0
  52. package/dist/src/index.d.mts +4 -0
  53. package/dist/src/index.mjs +3 -0
  54. package/dist/src/project/configuration.d.mts +181 -0
  55. package/dist/src/project/configuration.mjs +958 -0
  56. package/dist/src/project/install_scaffold.d.mts +42 -0
  57. package/dist/src/project/install_scaffold.mjs +263 -0
  58. package/dist/src/project/setup.d.mts +87 -0
  59. package/dist/src/project/setup.mjs +414 -0
  60. package/dist/src/project/support_report.d.mts +88 -0
  61. package/dist/src/project/support_report.mjs +83 -0
  62. package/dist/src/runtime/cleanup.d.mts +85 -0
  63. package/dist/src/runtime/cleanup.mjs +311 -0
  64. package/dist/src/runtime/migration_history.d.mts +51 -0
  65. package/dist/src/runtime/migration_history.mjs +170 -0
  66. package/dist/src/runtime/plan.d.mts +134 -0
  67. package/dist/src/runtime/plan.mjs +636 -0
  68. package/dist/src/runtime/policy.d.mts +66 -0
  69. package/dist/src/runtime/policy.mjs +369 -0
  70. package/dist/src/runtime/restore.d.mts +22 -0
  71. package/dist/src/runtime/restore.mjs +276 -0
  72. package/dist/src/runtime/service_environment.d.mts +11 -0
  73. package/dist/src/runtime/service_environment.mjs +58 -0
  74. package/dist/src/runtime/topology.d.mts +51 -0
  75. package/dist/src/runtime/topology.mjs +128 -0
  76. package/dist/src/shared/diagnostics.d.mts +97 -0
  77. package/dist/src/shared/diagnostics.mjs +170 -0
  78. package/dist/src/shared/human_output.d.mts +2 -0
  79. package/{src → dist/src}/shared/human_output.mjs +1 -3
  80. package/dist/src/shared/node_runtime.d.mts +14 -0
  81. package/dist/src/shared/node_runtime.mjs +25 -0
  82. package/dist/src/shared/operation_guard.d.mts +22 -0
  83. package/dist/src/shared/operation_guard.mjs +150 -0
  84. package/dist/src/shared/process_environment.d.mts +15 -0
  85. package/dist/src/shared/process_environment.mjs +50 -0
  86. package/dist/src/source/access.d.mts +165 -0
  87. package/dist/src/source/access.mjs +602 -0
  88. package/dist/src/source/asset_transfer.d.mts +27 -0
  89. package/dist/src/source/asset_transfer.mjs +202 -0
  90. package/dist/src/source/baseline.d.mts +66 -0
  91. package/dist/src/source/baseline.mjs +372 -0
  92. package/dist/src/source/external_reader.d.mts +42 -0
  93. package/dist/src/source/external_reader.mjs +278 -0
  94. package/dist/src/source/postgresql_access.d.mts +86 -0
  95. package/dist/src/source/postgresql_access.mjs +454 -0
  96. package/dist/src/source/privacy_paths.d.mts +10 -0
  97. package/dist/src/source/privacy_paths.mjs +27 -0
  98. package/dist/src/targets/driver.d.mts +2 -0
  99. package/dist/src/targets/driver.mjs +13 -0
  100. package/dist/src/targets/postgresql.d.mts +5 -0
  101. package/dist/src/targets/postgresql.mjs +641 -0
  102. package/dist/src/targets/supabase.d.mts +8 -0
  103. package/dist/src/targets/supabase.mjs +659 -0
  104. package/dist/src/targets/supabase_environment.d.mts +49 -0
  105. package/dist/src/targets/supabase_environment.mjs +162 -0
  106. package/dist/src/targets/target.d.mts +33 -0
  107. package/dist/src/targets/target.mjs +39 -0
  108. package/docs/README.md +1 -0
  109. package/docs/architecture.md +17 -9
  110. package/docs/configuration.md +49 -8
  111. package/docs/getting-started.md +28 -0
  112. package/docs/index.md +1 -0
  113. package/docs/production-source.md +43 -7
  114. package/docs/releasing.md +5 -3
  115. package/docs/roadmap.md +3 -2
  116. package/docs/sanitization.md +415 -14
  117. package/docs/standalone-workflow.md +12 -6
  118. package/docs/troubleshooting.md +5 -1
  119. package/docs/tutorial.md +5 -0
  120. package/docs/typescript.md +87 -0
  121. package/package.json +35 -29
  122. package/scripts/install/create_root_config.mjs +0 -36
  123. package/src/README.md +0 -17
  124. package/src/application/session.mjs +0 -435
  125. package/src/baseline/artifact.mjs +0 -684
  126. package/src/baseline/builder.mjs +0 -164
  127. package/src/baseline/input_discovery.mjs +0 -155
  128. package/src/baseline/policy_review.mjs +0 -92
  129. package/src/baseline/preparation.mjs +0 -323
  130. package/src/baseline/privacy_engine.mjs +0 -952
  131. package/src/baseline/sanitization_policy.mjs +0 -299
  132. package/src/baseline/schema_snapshot.mjs +0 -113
  133. package/src/cli/arguments.mjs +0 -126
  134. package/src/cli/guided.mjs +0 -814
  135. package/src/cli/init_command.mjs +0 -94
  136. package/src/cli/rehearsal.mjs +0 -970
  137. package/src/cli/renderers.mjs +0 -626
  138. package/src/cli/runtime_commands.mjs +0 -707
  139. package/src/cli/source_commands.mjs +0 -347
  140. package/src/cli/terminal.mjs +0 -275
  141. package/src/identity/claim.mjs +0 -1163
  142. package/src/identity/provider_configuration.mjs +0 -177
  143. package/src/identity/storage.mjs +0 -165
  144. package/src/project/configuration.mjs +0 -1337
  145. package/src/project/install_scaffold.mjs +0 -291
  146. package/src/project/setup.mjs +0 -466
  147. package/src/project/support_report.mjs +0 -105
  148. package/src/runtime/cleanup.mjs +0 -381
  149. package/src/runtime/migration_history.mjs +0 -220
  150. package/src/runtime/plan.mjs +0 -722
  151. package/src/runtime/policy.mjs +0 -438
  152. package/src/runtime/restore.mjs +0 -337
  153. package/src/runtime/service_environment.mjs +0 -82
  154. package/src/runtime/topology.mjs +0 -177
  155. package/src/shared/diagnostics.mjs +0 -207
  156. package/src/shared/node_runtime.mjs +0 -31
  157. package/src/shared/operation_guard.mjs +0 -162
  158. package/src/shared/process_environment.mjs +0 -68
  159. package/src/source/access.mjs +0 -753
  160. package/src/source/asset_transfer.mjs +0 -207
  161. package/src/source/baseline.mjs +0 -482
  162. package/src/source/external_reader.mjs +0 -255
  163. package/src/source/postgresql_access.mjs +0 -581
  164. package/src/source/privacy_paths.mjs +0 -38
  165. package/src/targets/postgresql.mjs +0 -808
  166. package/src/targets/supabase.mjs +0 -840
  167. package/src/targets/supabase_environment.mjs +0 -229
  168. package/src/targets/target.mjs +0 -66
  169. /package/{src/project → types}/configuration.d.mts +0 -0
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Execute reviewed privacy policy version 2 without project-owned callbacks.
3
+ * The engine is intentionally small and fail-closed: unsupported shapes and
4
+ * recipes must be reviewed and added here instead of evaluated as code.
5
+ */
6
+ type PrivacyAction = "KEEP" | "PSEUDONYMIZE" | "REPLACE" | "EXCLUDE" | "DERIVE";
7
+ interface PseudonymRecipe {
8
+ format: "uuid" | "email" | "text" | "integer" | "hex" | "gtin" | "url";
9
+ namespace: string;
10
+ maxLength?: number;
11
+ length?: number;
12
+ allowedLengths?: readonly number[];
13
+ origin?: string;
14
+ }
15
+ interface ConstantRecipe {
16
+ kind: "constant";
17
+ value: unknown;
18
+ }
19
+ interface DateShiftRecipe {
20
+ kind: "date-shift";
21
+ days: number;
22
+ representation: "iso-string" | "epoch-milliseconds";
23
+ group?: string;
24
+ }
25
+ interface EnumRecipe {
26
+ kind: "enum";
27
+ allowNull: boolean;
28
+ values: readonly (string | number | boolean)[];
29
+ }
30
+ interface ValidatedStringRecipe {
31
+ kind: "validated-string";
32
+ format: "portable-code";
33
+ maximumBytes: number;
34
+ allowNull: boolean;
35
+ }
36
+ interface DigestRecipe {
37
+ kind: "digest";
38
+ format: "hex";
39
+ length: number;
40
+ namespace: string;
41
+ inputs: readonly string[];
42
+ }
43
+ interface BindingSubstituteRecipe {
44
+ kind: "binding-substitute";
45
+ binding: string;
46
+ format: "uuid";
47
+ namespace: string;
48
+ maximumBytes: number;
49
+ }
50
+ interface PathMapRecipe {
51
+ kind: "path-map";
52
+ mapping: string;
53
+ }
54
+ interface ApprovedOwnerRecipe {
55
+ kind: "approved-owner";
56
+ approved: NormalizedDeclaration;
57
+ otherwise: NormalizedDeclaration;
58
+ }
59
+ interface JsonArrayRecipe {
60
+ kind: "json-array";
61
+ allowNull: boolean;
62
+ maximumBytes: number;
63
+ maximumDepth: number;
64
+ maximumItems: number;
65
+ items: NormalizedDeclaration;
66
+ }
67
+ interface JsonObjectRecipe {
68
+ kind: "json-object";
69
+ allowNull: boolean;
70
+ maximumBytes: number;
71
+ maximumDepth: number;
72
+ fields: Readonly<Record<string, NormalizedDeclaration>>;
73
+ }
74
+ interface JsonUnionRecipe {
75
+ kind: "json-union";
76
+ allowNull: boolean;
77
+ maximumBytes: number;
78
+ maximumDepth: number;
79
+ maximumItems: number;
80
+ variants: Readonly<Record<string, NormalizedDeclaration>>;
81
+ }
82
+ interface JsonDictionaryRecipe {
83
+ kind: "json-dictionary";
84
+ allowNull: boolean;
85
+ maximumBytes: number;
86
+ maximumDepth: number;
87
+ maximumItems: number;
88
+ keys: Readonly<Record<string, unknown>>;
89
+ values: NormalizedDeclaration;
90
+ }
91
+ type DerivationRecipe = DateShiftRecipe | EnumRecipe | ValidatedStringRecipe | DigestRecipe | BindingSubstituteRecipe | PathMapRecipe | ApprovedOwnerRecipe | JsonArrayRecipe | JsonObjectRecipe | JsonUnionRecipe | JsonDictionaryRecipe;
92
+ type NormalizedRecipe = PseudonymRecipe | ConstantRecipe | DerivationRecipe | null;
93
+ interface NormalizedDeclaration {
94
+ action: PrivacyAction;
95
+ recipe: NormalizedRecipe;
96
+ required?: boolean;
97
+ }
98
+ interface PrivacyBinding {
99
+ environmentVariable: string;
100
+ approvedValueSha256: string;
101
+ }
102
+ interface PrivacyPathMapping extends PseudonymRecipe {
103
+ binding: string;
104
+ format: "uuid" | "text";
105
+ maximumBytes: number;
106
+ maximumSegments: number;
107
+ }
108
+ export interface PrivacyForeignKey {
109
+ readonly schema: string;
110
+ readonly table: string;
111
+ readonly column: string;
112
+ }
113
+ export interface PrivacyColumn extends NormalizedDeclaration {
114
+ name: string;
115
+ generated: "ALWAYS" | "NEVER";
116
+ identity: "YES" | "NO";
117
+ foreignKey: PrivacyForeignKey | null;
118
+ }
119
+ export interface PrivacyTable {
120
+ schema: string;
121
+ name: string;
122
+ sourceRows: "STREAM AND SANITIZE" | "EXCLUDE";
123
+ ownerBinding: Readonly<{
124
+ binding: string;
125
+ columns: readonly string[];
126
+ match: "any";
127
+ nullBehavior?: "otherwise";
128
+ }> | null;
129
+ columns: readonly PrivacyColumn[];
130
+ }
131
+ export interface ExecutablePrivacyPolicy {
132
+ readonly policyVersion: 2;
133
+ readonly migrationCutoff: string;
134
+ readonly bindings: Readonly<Record<string, PrivacyBinding>>;
135
+ readonly pathMappings: Readonly<Record<string, PrivacyPathMapping>>;
136
+ readonly tables: readonly PrivacyTable[];
137
+ }
138
+ export declare const validateExecutablePrivacyPolicy: (policy: unknown) => ExecutablePrivacyPolicy;
139
+ export interface PrivacySourceRecord {
140
+ schema?: string;
141
+ table: string;
142
+ row: Record<string, unknown>;
143
+ }
144
+ export interface PrivacyEngine {
145
+ readonly keyFingerprint: string;
146
+ remapPath(input: {
147
+ mapping: string;
148
+ value: string;
149
+ }): string;
150
+ sanitize(record: unknown): PrivacySourceRecord | null;
151
+ }
152
+ export declare const createPrivacyEngine: ({ policy, key, environment, }: {
153
+ policy: unknown;
154
+ key: Uint8Array | string;
155
+ environment?: NodeJS.ProcessEnv;
156
+ }) => Readonly<PrivacyEngine>;
157
+ export declare const createPrivacyKey: (path: string) => Promise<{
158
+ fingerprint: string;
159
+ }>;
160
+ export declare const readPrivacyKey: (path: string) => Promise<Buffer>;
161
+ export declare const assertPrivacyKeyFingerprint: (key: Uint8Array, expected: unknown) => void;
162
+ export {};