@lucern/contracts 0.3.0-alpha.8 → 1.0.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 (261) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/api-enums.contract.d.ts +5 -3
  3. package/dist/api-enums.contract.js +14 -12
  4. package/dist/api-enums.contract.js.map +1 -1
  5. package/dist/auth-context.contract.js +14 -2
  6. package/dist/auth-context.contract.js.map +1 -1
  7. package/dist/auth-session.contract.js +14 -2
  8. package/dist/auth-session.contract.js.map +1 -1
  9. package/dist/auth.contract.d.ts +1 -1
  10. package/dist/auth.contract.js +14 -2
  11. package/dist/auth.contract.js.map +1 -1
  12. package/dist/component-boundary.contract.d.ts +1 -1
  13. package/dist/component-boundary.contract.js +46 -26
  14. package/dist/component-boundary.contract.js.map +1 -1
  15. package/dist/component-host-boundary.contract.d.ts +10 -5
  16. package/dist/component-host-boundary.contract.js +10 -4
  17. package/dist/component-host-boundary.contract.js.map +1 -1
  18. package/dist/{defineTable-CBQ03FXl.d.ts → defineTable-t1wr5wgn.d.ts} +1 -1
  19. package/dist/{dsl-djCRfuWC.d.ts → dsl-DVPthQGY.d.ts} +1 -1
  20. package/dist/dsl.d.ts +2 -2
  21. package/dist/dsl.js.map +1 -1
  22. package/dist/edge-policy-manifest-Dw5IhT1L.d.ts +133 -0
  23. package/dist/function-registry/beliefs.d.ts +23 -10
  24. package/dist/function-registry/beliefs.js +467 -36
  25. package/dist/function-registry/beliefs.js.map +1 -1
  26. package/dist/function-registry/coding.d.ts +15 -6
  27. package/dist/function-registry/coding.js +531 -22
  28. package/dist/function-registry/coding.js.map +1 -1
  29. package/dist/function-registry/context.d.ts +9 -3
  30. package/dist/function-registry/context.js +464 -21
  31. package/dist/function-registry/context.js.map +1 -1
  32. package/dist/function-registry/contracts.d.ts +9 -3
  33. package/dist/function-registry/contracts.js +464 -21
  34. package/dist/function-registry/contracts.js.map +1 -1
  35. package/dist/function-registry/coordination.d.ts +21 -9
  36. package/dist/function-registry/coordination.js +464 -21
  37. package/dist/function-registry/coordination.js.map +1 -1
  38. package/dist/function-registry/edges.d.ts +167 -2
  39. package/dist/function-registry/edges.js +661 -52
  40. package/dist/function-registry/edges.js.map +1 -1
  41. package/dist/function-registry/evidence.d.ts +19 -8
  42. package/dist/function-registry/evidence.js +473 -40
  43. package/dist/function-registry/evidence.js.map +1 -1
  44. package/dist/function-registry/graph.d.ts +33 -15
  45. package/dist/function-registry/graph.js +464 -21
  46. package/dist/function-registry/graph.js.map +1 -1
  47. package/dist/function-registry/helpers.d.ts +6 -3
  48. package/dist/function-registry/helpers.js +465 -22
  49. package/dist/function-registry/helpers.js.map +1 -1
  50. package/dist/function-registry/identity.d.ts +62 -16
  51. package/dist/function-registry/identity.js +487 -27
  52. package/dist/function-registry/identity.js.map +1 -1
  53. package/dist/function-registry/index.d.ts +4 -2
  54. package/dist/function-registry/index.js +468 -22
  55. package/dist/function-registry/index.js.map +1 -1
  56. package/dist/function-registry/judgments.d.ts +7 -2
  57. package/dist/function-registry/judgments.js +464 -21
  58. package/dist/function-registry/judgments.js.map +1 -1
  59. package/dist/function-registry/legacy.d.ts +5 -1
  60. package/dist/function-registry/legacy.js +464 -21
  61. package/dist/function-registry/legacy.js.map +1 -1
  62. package/dist/function-registry/lenses.d.ts +11 -4
  63. package/dist/function-registry/lenses.js +464 -21
  64. package/dist/function-registry/lenses.js.map +1 -1
  65. package/dist/function-registry/manifest.d.ts +4 -4
  66. package/dist/function-registry/manifest.js +16 -1
  67. package/dist/function-registry/manifest.js.map +1 -1
  68. package/dist/function-registry/nodes.d.ts +412 -0
  69. package/dist/function-registry/nodes.js +5354 -0
  70. package/dist/function-registry/nodes.js.map +1 -0
  71. package/dist/function-registry/ontologies.d.ts +25 -11
  72. package/dist/function-registry/ontologies.js +464 -21
  73. package/dist/function-registry/ontologies.js.map +1 -1
  74. package/dist/function-registry/pipeline.d.ts +9 -3
  75. package/dist/function-registry/pipeline.js +464 -21
  76. package/dist/function-registry/pipeline.js.map +1 -1
  77. package/dist/function-registry/questions.d.ts +27 -12
  78. package/dist/function-registry/questions.js +466 -26
  79. package/dist/function-registry/questions.js.map +1 -1
  80. package/dist/function-registry/tasks.d.ts +11 -4
  81. package/dist/function-registry/tasks.js +497 -30
  82. package/dist/function-registry/tasks.js.map +1 -1
  83. package/dist/function-registry/topics.d.ts +93 -5
  84. package/dist/function-registry/topics.js +534 -24
  85. package/dist/function-registry/topics.js.map +1 -1
  86. package/dist/function-registry/types.d.ts +7 -3
  87. package/dist/function-registry/worktrees.d.ts +25 -11
  88. package/dist/function-registry/worktrees.js +480 -21
  89. package/dist/function-registry/worktrees.js.map +1 -1
  90. package/dist/gateway.contract.d.ts +4 -0
  91. package/dist/gateway.contract.js.map +1 -1
  92. package/dist/generated/convexSchemas.d.ts +3 -3
  93. package/dist/generated/convexSchemas.js +37 -17
  94. package/dist/generated/convexSchemas.js.map +1 -1
  95. package/dist/generated/infisicalRuntimeEnv.d.ts +70 -0
  96. package/dist/generated/infisicalRuntimeEnv.js +27585 -0
  97. package/dist/generated/infisicalRuntimeEnv.js.map +1 -0
  98. package/dist/generated/lucernGatewayEnv.d.ts +17 -0
  99. package/dist/generated/lucernGatewayEnv.js +38 -0
  100. package/dist/generated/lucernGatewayEnv.js.map +1 -0
  101. package/dist/generated/lucernWebPublicEnv.d.ts +26 -0
  102. package/dist/generated/lucernWebPublicEnv.js +32 -0
  103. package/dist/generated/lucernWebPublicEnv.js.map +1 -0
  104. package/dist/generated/lucernWebServerEnv.d.ts +33 -0
  105. package/dist/generated/lucernWebServerEnv.js +51 -0
  106. package/dist/generated/lucernWebServerEnv.js.map +1 -0
  107. package/dist/generated/schema-manifest.json +1221 -114
  108. package/dist/generated/tableOwnership.d.ts +48 -28
  109. package/dist/generated/tableOwnership.js +66 -26
  110. package/dist/generated/tableOwnership.js.map +1 -1
  111. package/dist/generated/tier-expectations.json +64 -9
  112. package/dist/{index-O09U2xHk.d.ts → index-CM1Pl_vI.d.ts} +3 -3
  113. package/dist/index.d.ts +12 -7
  114. package/dist/index.js +32892 -459
  115. package/dist/index.js.map +1 -1
  116. package/dist/infisical-runtime.contract.d.ts +1763 -6
  117. package/dist/infisical-runtime.contract.js +2994 -15
  118. package/dist/infisical-runtime.contract.js.map +1 -1
  119. package/dist/manifests/edge-policy-manifest.d.ts +1 -1
  120. package/dist/manifests/edge-policy-manifest.data.d.ts +6 -20
  121. package/dist/manifests/edge-policy-manifest.data.js +18 -26
  122. package/dist/manifests/edge-policy-manifest.data.js.map +1 -1
  123. package/dist/manifests/edge-policy-manifest.js +31 -4
  124. package/dist/manifests/edge-policy-manifest.js.map +1 -1
  125. package/dist/manifests/infisical-runtime-manifest.d.ts +1689 -6
  126. package/dist/manifests/infisical-runtime-manifest.js +2847 -12
  127. package/dist/manifests/infisical-runtime-manifest.js.map +1 -1
  128. package/dist/manifests/tenant-client-manifest.d.ts +19 -14
  129. package/dist/manifests/tenant-client-manifest.js +29 -12
  130. package/dist/manifests/tenant-client-manifest.js.map +1 -1
  131. package/dist/mcp-gateway-boundary.contract.d.ts +23 -3
  132. package/dist/mcp-gateway-boundary.contract.js +2 -0
  133. package/dist/mcp-gateway-boundary.contract.js.map +1 -1
  134. package/dist/permit-principal-projection.contract.d.ts +74 -0
  135. package/dist/permit-principal-projection.contract.js +167 -0
  136. package/dist/permit-principal-projection.contract.js.map +1 -0
  137. package/dist/projections/check-convex-args-shape.js +10 -6
  138. package/dist/projections/check-convex-args-shape.js.map +1 -1
  139. package/dist/projections/create-evidence.projection.d.ts +6 -6
  140. package/dist/projections/create-evidence.projection.js +2 -3
  141. package/dist/projections/create-evidence.projection.js.map +1 -1
  142. package/dist/projections/index.d.ts +3 -3
  143. package/dist/projections/index.js +10 -6
  144. package/dist/projections/index.js.map +1 -1
  145. package/dist/projections/list-tasks.projection.d.ts +20 -8
  146. package/dist/projections/list-tasks.projection.js +8 -3
  147. package/dist/projections/list-tasks.projection.js.map +1 -1
  148. package/dist/proof-attestation.json +45 -0
  149. package/dist/schemas/component-table-manifest.d.ts +6 -6
  150. package/dist/schemas/component-table-manifest.js +2 -2
  151. package/dist/schemas/component-table-manifest.js.map +1 -1
  152. package/dist/schemas/index.d.ts +2 -2
  153. package/dist/schemas/index.js +1123 -137
  154. package/dist/schemas/index.js.map +1 -1
  155. package/dist/schemas/manifest.d.ts +2102 -132
  156. package/dist/schemas/manifest.js +1121 -135
  157. package/dist/schemas/manifest.js.map +1 -1
  158. package/dist/schemas/tables/controlPlane/accessControl.d.ts +260 -0
  159. package/dist/schemas/tables/controlPlane/accessControl.js +658 -0
  160. package/dist/schemas/tables/controlPlane/accessControl.js.map +1 -0
  161. package/dist/schemas/tables/{identity → controlPlane}/agent.d.ts +1 -1
  162. package/dist/schemas/tables/{identity → controlPlane}/agent.js +3 -3
  163. package/dist/schemas/tables/controlPlane/agent.js.map +1 -0
  164. package/dist/schemas/tables/{identity → controlPlane}/epistemic.d.ts +1 -1
  165. package/dist/schemas/tables/{identity → controlPlane}/epistemic.js +3 -3
  166. package/dist/schemas/tables/controlPlane/epistemic.js.map +1 -0
  167. package/dist/schemas/tables/{identity → controlPlane}/model.d.ts +1 -1
  168. package/dist/schemas/tables/{identity → controlPlane}/model.js +6 -6
  169. package/dist/schemas/tables/controlPlane/model.js.map +1 -0
  170. package/dist/schemas/tables/{identity → controlPlane}/platform.d.ts +1 -1
  171. package/dist/schemas/tables/{identity → controlPlane}/platform.js +18 -18
  172. package/dist/schemas/tables/controlPlane/platform.js.map +1 -0
  173. package/dist/schemas/tables/{identity → controlPlane}/project.d.ts +1 -1
  174. package/dist/schemas/tables/{identity → controlPlane}/project.js +3 -3
  175. package/dist/schemas/tables/controlPlane/project.js.map +1 -0
  176. package/dist/schemas/tables/{identity → controlPlane}/user.d.ts +1 -1
  177. package/dist/schemas/tables/{identity → controlPlane}/user.js +3 -3
  178. package/dist/schemas/tables/controlPlane/user.js.map +1 -0
  179. package/dist/schemas/tables/kernel/config.d.ts +1 -1
  180. package/dist/schemas/tables/kernel/config.js.map +1 -1
  181. package/dist/schemas/tables/kernel/coordination.d.ts +1 -1
  182. package/dist/schemas/tables/kernel/coordination.js.map +1 -1
  183. package/dist/schemas/tables/kernel/decision.d.ts +1 -1
  184. package/dist/schemas/tables/kernel/decision.js.map +1 -1
  185. package/dist/schemas/tables/kernel/embedding.d.ts +1 -1
  186. package/dist/schemas/tables/kernel/embedding.js.map +1 -1
  187. package/dist/schemas/tables/kernel/epistemic.d.ts +1 -1
  188. package/dist/schemas/tables/kernel/epistemic.js.map +1 -1
  189. package/dist/schemas/tables/kernel/events.d.ts +21 -0
  190. package/dist/schemas/tables/kernel/events.js +43 -0
  191. package/dist/schemas/tables/kernel/events.js.map +1 -0
  192. package/dist/schemas/tables/kernel/idempotency.d.ts +1 -1
  193. package/dist/schemas/tables/kernel/idempotency.js.map +1 -1
  194. package/dist/schemas/tables/kernel/infra.d.ts +1 -1
  195. package/dist/schemas/tables/kernel/infra.js.map +1 -1
  196. package/dist/schemas/tables/kernel/intelligence.d.ts +1 -1
  197. package/dist/schemas/tables/kernel/intelligence.js.map +1 -1
  198. package/dist/schemas/tables/kernel/lens.d.ts +1 -1
  199. package/dist/schemas/tables/kernel/lens.js.map +1 -1
  200. package/dist/schemas/tables/kernel/ontology.d.ts +1 -1
  201. package/dist/schemas/tables/kernel/ontology.js.map +1 -1
  202. package/dist/schemas/tables/kernel/platform.d.ts +1 -1
  203. package/dist/schemas/tables/kernel/platform.js.map +1 -1
  204. package/dist/schemas/tables/kernel/spine.d.ts +2 -1
  205. package/dist/schemas/tables/kernel/spine.js +1 -0
  206. package/dist/schemas/tables/kernel/spine.js.map +1 -1
  207. package/dist/schemas/tables/kernel/task.d.ts +1 -1
  208. package/dist/schemas/tables/kernel/task.js.map +1 -1
  209. package/dist/schemas/tables/kernel/topic.d.ts +1 -1
  210. package/dist/schemas/tables/kernel/topic.js +1 -0
  211. package/dist/schemas/tables/kernel/topic.js.map +1 -1
  212. package/dist/schemas/tables/kernel/workflow.d.ts +1 -1
  213. package/dist/schemas/tables/kernel/workflow.js.map +1 -1
  214. package/dist/schemas/tables/kernel/worktree.d.ts +17 -17
  215. package/dist/schemas/tables/kernel/worktree.js.map +1 -1
  216. package/dist/schemas/tables/mc/identity.d.ts +19 -2
  217. package/dist/schemas/tables/mc/identity.js +32 -1
  218. package/dist/schemas/tables/mc/identity.js.map +1 -1
  219. package/dist/schemas/tables/mc/methodology.d.ts +1 -1
  220. package/dist/schemas/tables/mc/methodology.js.map +1 -1
  221. package/dist/schemas/tables/mc/pack.d.ts +1 -1
  222. package/dist/schemas/tables/mc/pack.js.map +1 -1
  223. package/dist/schemas/tables/mc/policy.d.ts +2 -2
  224. package/dist/schemas/tables/mc/policy.js +1 -1
  225. package/dist/schemas/tables/mc/policy.js.map +1 -1
  226. package/dist/schemas/tables/mc/registry.d.ts +1 -1
  227. package/dist/schemas/tables/mc/registry.js.map +1 -1
  228. package/dist/schemas/tables/mc/runtime.d.ts +109 -3
  229. package/dist/schemas/tables/mc/runtime.js +330 -104
  230. package/dist/schemas/tables/mc/runtime.js.map +1 -1
  231. package/dist/schemas/tables/mc/tenant.d.ts +4 -2
  232. package/dist/schemas/tables/mc/tenant.js +3 -1
  233. package/dist/schemas/tables/mc/tenant.js.map +1 -1
  234. package/dist/schemas/tables/mc/workspace.d.ts +22 -5
  235. package/dist/schemas/tables/mc/workspace.js +34 -2
  236. package/dist/schemas/tables/mc/workspace.js.map +1 -1
  237. package/dist/{sdk-tools.contract-Ci8bkoai.d.ts → sdk-tools.contract-CKmSsrZ2.d.ts} +1 -1
  238. package/dist/sdk-tools.contract.d.ts +2 -2
  239. package/dist/sdk-tools.contract.js +417 -13
  240. package/dist/sdk-tools.contract.js.map +1 -1
  241. package/dist/tenant-bootstrap-seed.contract.d.ts +244 -56
  242. package/dist/tenant-bootstrap-seed.contract.js +139 -28
  243. package/dist/tenant-bootstrap-seed.contract.js.map +1 -1
  244. package/dist/tenant-bootstrap-seed.defaults.d.ts +2 -2
  245. package/dist/tenant-bootstrap-seed.defaults.js +31 -13
  246. package/dist/tenant-bootstrap-seed.defaults.js.map +1 -1
  247. package/dist/tenant-client.contract.d.ts +20 -15
  248. package/dist/tenant-client.contract.js +29 -12
  249. package/dist/tenant-client.contract.js.map +1 -1
  250. package/dist/{tool-contracts-B4iWhejG.d.ts → tool-contracts-C_xvM9q2.d.ts} +32 -2
  251. package/dist/tool-contracts.d.ts +1 -1
  252. package/dist/tool-contracts.js +418 -14
  253. package/dist/tool-contracts.js.map +1 -1
  254. package/package.json +22 -1
  255. package/dist/edge-policy-manifest-Byv6cQPP.d.ts +0 -132
  256. package/dist/schemas/tables/identity/agent.js.map +0 -1
  257. package/dist/schemas/tables/identity/epistemic.js.map +0 -1
  258. package/dist/schemas/tables/identity/model.js.map +0 -1
  259. package/dist/schemas/tables/identity/platform.js.map +0 -1
  260. package/dist/schemas/tables/identity/project.js.map +0 -1
  261. package/dist/schemas/tables/identity/user.js.map +0 -1
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Host deployments may call component APIs, but they must not create or mutate
5
5
  * component-owned tables directly through top-level ctx.db. This contract keeps
6
- * tenant SDK clients from accidentally recreating Lucern kernel/identity tables
6
+ * tenant SDK clients from accidentally recreating Lucern kernel/control-plane tables
7
7
  * as host "ghost tables".
8
8
  */
9
9
  declare const COMPONENT_HOST_BOUNDARY_CONTRACT_VERSION: "2026-04-28";
@@ -14,9 +14,9 @@ declare const COMPONENT_HOST_PROTECTED_TABLE_OWNERS: {
14
14
  readonly backgroundJobSettings: "kernel_component";
15
15
  readonly systemLogs: "kernel_component";
16
16
  readonly epistemicAudit: "reasoning_kernel_component";
17
- readonly platformPolicyDecisionLogs: "identity_component";
18
- readonly tenantApiKeys: "identity_component";
19
- readonly projectGrants: "identity_component";
17
+ readonly platformPolicyDecisionLogs: "control_plane_component";
18
+ readonly tenantApiKeys: "control_plane_component";
19
+ readonly projectGrants: "control_plane_component";
20
20
  readonly userSessions: "tenant_or_control_plane_schema";
21
21
  };
22
22
  declare const COMPONENT_HOST_DB_WRITE_OPERATIONS: readonly ["insert", "patch", "replace", "delete"];
@@ -24,7 +24,7 @@ type ComponentHostDbWriteOperation = (typeof COMPONENT_HOST_DB_WRITE_OPERATIONS)
24
24
  declare const COMPONENT_HOST_DB_READ_OPERATIONS: readonly ["query"];
25
25
  type ComponentHostDbReadOperation = (typeof COMPONENT_HOST_DB_READ_OPERATIONS)[number];
26
26
  type ComponentHostDbOperation = ComponentHostDbWriteOperation | ComponentHostDbReadOperation;
27
- declare const COMPONENT_HOST_WRITE_AUDIT_ROOTS: readonly ["apps/web/convex", "packages/server-core/src", "services/kernel-template/convex", "services/identity-template/convex", "services/master-control/convex"];
27
+ declare const COMPONENT_HOST_WRITE_AUDIT_ROOTS: readonly ["apps/web/convex", "packages/server-core/src", "services/kernel-template/convex", "services/control-plane-template/convex", "services/master-control/convex"];
28
28
  type ComponentHostWriteAuditRoot = (typeof COMPONENT_HOST_WRITE_AUDIT_ROOTS)[number];
29
29
  declare const COMPONENT_HOST_WRITE_ALLOWED_EXCEPTIONS: readonly [{
30
30
  readonly file: "services/master-control/convex/userSessions.ts";
@@ -36,6 +36,11 @@ declare const COMPONENT_HOST_WRITE_ALLOWED_EXCEPTIONS: readonly [{
36
36
  readonly table: "userSessions";
37
37
  readonly operation: "query";
38
38
  readonly reason: "Master Control declares and owns its own userSessions table for gateway session validation.";
39
+ }, {
40
+ readonly file: "services/master-control/convex/permitEnforcement.ts";
41
+ readonly table: "userSessions";
42
+ readonly operation: "query";
43
+ readonly reason: "Permit enforcement validates MC-owned agent session scope before allowing protected control-plane functions.";
39
44
  }];
40
45
 
41
46
  export { COMPONENT_HOST_BOUNDARY_CONTRACT_VERSION, COMPONENT_HOST_DB_READ_OPERATIONS, COMPONENT_HOST_DB_WRITE_OPERATIONS, COMPONENT_HOST_PROTECTED_TABLES, COMPONENT_HOST_PROTECTED_TABLE_OWNERS, COMPONENT_HOST_WRITE_ALLOWED_EXCEPTIONS, COMPONENT_HOST_WRITE_AUDIT_ROOTS, type ComponentHostDbOperation, type ComponentHostDbReadOperation, type ComponentHostDbWriteOperation, type ComponentHostProtectedTable, type ComponentHostWriteAuditRoot };
@@ -15,9 +15,9 @@ var COMPONENT_HOST_PROTECTED_TABLE_OWNERS = {
15
15
  backgroundJobSettings: "kernel_component",
16
16
  systemLogs: "kernel_component",
17
17
  epistemicAudit: "reasoning_kernel_component",
18
- platformPolicyDecisionLogs: "identity_component",
19
- tenantApiKeys: "identity_component",
20
- projectGrants: "identity_component",
18
+ platformPolicyDecisionLogs: "control_plane_component",
19
+ tenantApiKeys: "control_plane_component",
20
+ projectGrants: "control_plane_component",
21
21
  userSessions: "tenant_or_control_plane_schema"
22
22
  };
23
23
  var COMPONENT_HOST_DB_WRITE_OPERATIONS = [
@@ -31,7 +31,7 @@ var COMPONENT_HOST_WRITE_AUDIT_ROOTS = [
31
31
  "apps/web/convex",
32
32
  "packages/server-core/src",
33
33
  "services/kernel-template/convex",
34
- "services/identity-template/convex",
34
+ "services/control-plane-template/convex",
35
35
  "services/master-control/convex"
36
36
  ];
37
37
  var COMPONENT_HOST_WRITE_ALLOWED_EXCEPTIONS = [
@@ -46,6 +46,12 @@ var COMPONENT_HOST_WRITE_ALLOWED_EXCEPTIONS = [
46
46
  table: "userSessions",
47
47
  operation: "query",
48
48
  reason: "Master Control declares and owns its own userSessions table for gateway session validation."
49
+ },
50
+ {
51
+ file: "services/master-control/convex/permitEnforcement.ts",
52
+ table: "userSessions",
53
+ operation: "query",
54
+ reason: "Permit enforcement validates MC-owned agent session scope before allowing protected control-plane functions."
49
55
  }
50
56
  ];
51
57
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component-host-boundary.contract.ts"],"names":[],"mappings":";AASO,IAAM,wCAAA,GAA2C;AAEjD,IAAM,+BAAA,GAAkC;AAAA,EAC7C,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,4BAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF;AAIO,IAAM,qCAAA,GAAwC;AAAA,EACnD,iBAAA,EAAmB,kBAAA;AAAA,EACnB,qBAAA,EAAuB,kBAAA;AAAA,EACvB,UAAA,EAAY,kBAAA;AAAA,EACZ,cAAA,EAAgB,4BAAA;AAAA,EAChB,0BAAA,EAA4B,oBAAA;AAAA,EAC5B,aAAA,EAAe,oBAAA;AAAA,EACf,aAAA,EAAe,oBAAA;AAAA,EACf,YAAA,EAAc;AAChB;AAEO,IAAM,kCAAA,GAAqC;AAAA,EAChD,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF;AAIO,IAAM,iCAAA,GAAoC,CAAC,OAAO;AAQlD,IAAM,gCAAA,GAAmC;AAAA,EAC9C,iBAAA;AAAA,EACA,0BAAA;AAAA,EACA,iCAAA;AAAA,EACA,mCAAA;AAAA,EACA;AACF;AAIO,IAAM,uCAAA,GAA0C;AAAA,EACrD;AAAA,IACE,IAAA,EAAM,gDAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,MAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,IAAA,EAAM,gDAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,SAAA,EAAW,OAAA;AAAA,IACX,MAAA,EACE;AAAA;AAEN","file":"component-host-boundary.contract.js","sourcesContent":["/**\n * Component host persistence boundary\n *\n * Host deployments may call component APIs, but they must not create or mutate\n * component-owned tables directly through top-level ctx.db. This contract keeps\n * tenant SDK clients from accidentally recreating Lucern kernel/identity tables\n * as host \"ghost tables\".\n */\n\nexport const COMPONENT_HOST_BOUNDARY_CONTRACT_VERSION = \"2026-04-28\" as const;\n\nexport const COMPONENT_HOST_PROTECTED_TABLES = [\n \"backgroundJobRuns\",\n \"backgroundJobSettings\",\n \"systemLogs\",\n \"epistemicAudit\",\n \"platformPolicyDecisionLogs\",\n \"tenantApiKeys\",\n \"projectGrants\",\n \"userSessions\",\n] as const;\nexport type ComponentHostProtectedTable =\n (typeof COMPONENT_HOST_PROTECTED_TABLES)[number];\n\nexport const COMPONENT_HOST_PROTECTED_TABLE_OWNERS = {\n backgroundJobRuns: \"kernel_component\",\n backgroundJobSettings: \"kernel_component\",\n systemLogs: \"kernel_component\",\n epistemicAudit: \"reasoning_kernel_component\",\n platformPolicyDecisionLogs: \"identity_component\",\n tenantApiKeys: \"identity_component\",\n projectGrants: \"identity_component\",\n userSessions: \"tenant_or_control_plane_schema\",\n} as const satisfies Record<ComponentHostProtectedTable, string>;\n\nexport const COMPONENT_HOST_DB_WRITE_OPERATIONS = [\n \"insert\",\n \"patch\",\n \"replace\",\n \"delete\",\n] as const;\nexport type ComponentHostDbWriteOperation =\n (typeof COMPONENT_HOST_DB_WRITE_OPERATIONS)[number];\n\nexport const COMPONENT_HOST_DB_READ_OPERATIONS = [\"query\"] as const;\nexport type ComponentHostDbReadOperation =\n (typeof COMPONENT_HOST_DB_READ_OPERATIONS)[number];\n\nexport type ComponentHostDbOperation =\n | ComponentHostDbWriteOperation\n | ComponentHostDbReadOperation;\n\nexport const COMPONENT_HOST_WRITE_AUDIT_ROOTS = [\n \"apps/web/convex\",\n \"packages/server-core/src\",\n \"services/kernel-template/convex\",\n \"services/identity-template/convex\",\n \"services/master-control/convex\",\n] as const;\nexport type ComponentHostWriteAuditRoot =\n (typeof COMPONENT_HOST_WRITE_AUDIT_ROOTS)[number];\n\nexport const COMPONENT_HOST_WRITE_ALLOWED_EXCEPTIONS = [\n {\n file: \"services/master-control/convex/userSessions.ts\",\n table: \"userSessions\",\n operation: \"insert\",\n reason:\n \"Master Control declares and owns its own userSessions table for gateway session validation.\",\n },\n {\n file: \"services/master-control/convex/userSessions.ts\",\n table: \"userSessions\",\n operation: \"query\",\n reason:\n \"Master Control declares and owns its own userSessions table for gateway session validation.\",\n },\n] as const satisfies ReadonlyArray<{\n file: string;\n table: ComponentHostProtectedTable;\n operation: ComponentHostDbOperation;\n reason: string;\n}>;\n"]}
1
+ {"version":3,"sources":["../src/component-host-boundary.contract.ts"],"names":[],"mappings":";AASO,IAAM,wCAAA,GAA2C;AAEjD,IAAM,+BAAA,GAAkC;AAAA,EAC7C,mBAAA;AAAA,EACA,uBAAA;AAAA,EACA,YAAA;AAAA,EACA,gBAAA;AAAA,EACA,4BAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF;AAIO,IAAM,qCAAA,GAAwC;AAAA,EACnD,iBAAA,EAAmB,kBAAA;AAAA,EACnB,qBAAA,EAAuB,kBAAA;AAAA,EACvB,UAAA,EAAY,kBAAA;AAAA,EACZ,cAAA,EAAgB,4BAAA;AAAA,EAChB,0BAAA,EAA4B,yBAAA;AAAA,EAC5B,aAAA,EAAe,yBAAA;AAAA,EACf,aAAA,EAAe,yBAAA;AAAA,EACf,YAAA,EAAc;AAChB;AAEO,IAAM,kCAAA,GAAqC;AAAA,EAChD,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF;AAIO,IAAM,iCAAA,GAAoC,CAAC,OAAO;AAQlD,IAAM,gCAAA,GAAmC;AAAA,EAC9C,iBAAA;AAAA,EACA,0BAAA;AAAA,EACA,iCAAA;AAAA,EACA,wCAAA;AAAA,EACA;AACF;AAIO,IAAM,uCAAA,GAA0C;AAAA,EACrD;AAAA,IACE,IAAA,EAAM,gDAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,SAAA,EAAW,QAAA;AAAA,IACX,MAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,IAAA,EAAM,gDAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,SAAA,EAAW,OAAA;AAAA,IACX,MAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,IAAA,EAAM,qDAAA;AAAA,IACN,KAAA,EAAO,cAAA;AAAA,IACP,SAAA,EAAW,OAAA;AAAA,IACX,MAAA,EACE;AAAA;AAEN","file":"component-host-boundary.contract.js","sourcesContent":["/**\n * Component host persistence boundary\n *\n * Host deployments may call component APIs, but they must not create or mutate\n * component-owned tables directly through top-level ctx.db. This contract keeps\n * tenant SDK clients from accidentally recreating Lucern kernel/control-plane tables\n * as host \"ghost tables\".\n */\n\nexport const COMPONENT_HOST_BOUNDARY_CONTRACT_VERSION = \"2026-04-28\" as const;\n\nexport const COMPONENT_HOST_PROTECTED_TABLES = [\n \"backgroundJobRuns\",\n \"backgroundJobSettings\",\n \"systemLogs\",\n \"epistemicAudit\",\n \"platformPolicyDecisionLogs\",\n \"tenantApiKeys\",\n \"projectGrants\",\n \"userSessions\",\n] as const;\nexport type ComponentHostProtectedTable =\n (typeof COMPONENT_HOST_PROTECTED_TABLES)[number];\n\nexport const COMPONENT_HOST_PROTECTED_TABLE_OWNERS = {\n backgroundJobRuns: \"kernel_component\",\n backgroundJobSettings: \"kernel_component\",\n systemLogs: \"kernel_component\",\n epistemicAudit: \"reasoning_kernel_component\",\n platformPolicyDecisionLogs: \"control_plane_component\",\n tenantApiKeys: \"control_plane_component\",\n projectGrants: \"control_plane_component\",\n userSessions: \"tenant_or_control_plane_schema\",\n} as const satisfies Record<ComponentHostProtectedTable, string>;\n\nexport const COMPONENT_HOST_DB_WRITE_OPERATIONS = [\n \"insert\",\n \"patch\",\n \"replace\",\n \"delete\",\n] as const;\nexport type ComponentHostDbWriteOperation =\n (typeof COMPONENT_HOST_DB_WRITE_OPERATIONS)[number];\n\nexport const COMPONENT_HOST_DB_READ_OPERATIONS = [\"query\"] as const;\nexport type ComponentHostDbReadOperation =\n (typeof COMPONENT_HOST_DB_READ_OPERATIONS)[number];\n\nexport type ComponentHostDbOperation =\n | ComponentHostDbWriteOperation\n | ComponentHostDbReadOperation;\n\nexport const COMPONENT_HOST_WRITE_AUDIT_ROOTS = [\n \"apps/web/convex\",\n \"packages/server-core/src\",\n \"services/kernel-template/convex\",\n \"services/control-plane-template/convex\",\n \"services/master-control/convex\",\n] as const;\nexport type ComponentHostWriteAuditRoot =\n (typeof COMPONENT_HOST_WRITE_AUDIT_ROOTS)[number];\n\nexport const COMPONENT_HOST_WRITE_ALLOWED_EXCEPTIONS = [\n {\n file: \"services/master-control/convex/userSessions.ts\",\n table: \"userSessions\",\n operation: \"insert\",\n reason:\n \"Master Control declares and owns its own userSessions table for gateway session validation.\",\n },\n {\n file: \"services/master-control/convex/userSessions.ts\",\n table: \"userSessions\",\n operation: \"query\",\n reason:\n \"Master Control declares and owns its own userSessions table for gateway session validation.\",\n },\n {\n file: \"services/master-control/convex/permitEnforcement.ts\",\n table: \"userSessions\",\n operation: \"query\",\n reason:\n \"Permit enforcement validates MC-owned agent session scope before allowing protected control-plane functions.\",\n },\n] as const satisfies ReadonlyArray<{\n file: string;\n table: ComponentHostProtectedTable;\n operation: ComponentHostDbOperation;\n reason: string;\n}>;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { ZodRawShape, ZodObject } from 'zod';
2
2
 
3
- type TableComponent = "mc" | "kernel" | "identity" | "developer-pack";
3
+ type TableComponent = "mc" | "kernel" | "control-plane" | "developer-pack";
4
4
  type TableIndex = {
5
5
  kind: "index";
6
6
  name: string;
@@ -1,5 +1,5 @@
1
1
  import { a as FunctionContract, F as FunctionEffect, d as defineFunction } from './defineFunction-DO97DKs4.js';
2
- import { a as TableIndex, b as TableComponent, T as TableContract, c as TableDeprecation, d as defineTable } from './defineTable-CBQ03FXl.js';
2
+ import { a as TableIndex, b as TableComponent, T as TableContract, c as TableDeprecation, d as defineTable } from './defineTable-t1wr5wgn.js';
3
3
  import { a as CONVEX_ID_TABLE, C as ConvexIdSchema, g as getConvexIdTable, i as idOf } from './idOf-DR8tkhQS.js';
4
4
  import { z, ZodTypeAny } from 'zod';
5
5
 
package/dist/dsl.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { a as FunctionContract, F as FunctionEffect, d as defineFunction } from './defineFunction-DO97DKs4.js';
2
- export { b as TableComponent, T as TableContract, c as TableDeprecation, a as TableIndex, d as defineTable } from './defineTable-CBQ03FXl.js';
3
- export { A as AdapterContext, a as AdapterKind, b as AdapterPurpose, C as CliCommandSpec, c as CliOptionKind, e as CliOptionSpec, f as ConvexDefault, J as JsonSchema, S as SchemaAdapterError, Z as ZodToCliOptions, g as ZodToConvexOptions, h as ZodToConvexResult, i as ZodToJsonSchemaOptions, s as schemaAdapterError, t as tableIndexToConvexSource, z as zodToCli, j as zodToConvex, k as zodToJsonSchema } from './dsl-djCRfuWC.js';
2
+ export { b as TableComponent, T as TableContract, c as TableDeprecation, a as TableIndex, d as defineTable } from './defineTable-t1wr5wgn.js';
3
+ export { A as AdapterContext, a as AdapterKind, b as AdapterPurpose, C as CliCommandSpec, c as CliOptionKind, e as CliOptionSpec, f as ConvexDefault, J as JsonSchema, S as SchemaAdapterError, Z as ZodToCliOptions, g as ZodToConvexOptions, h as ZodToConvexResult, i as ZodToJsonSchemaOptions, s as schemaAdapterError, t as tableIndexToConvexSource, z as zodToCli, j as zodToConvex, k as zodToJsonSchema } from './dsl-DVPthQGY.js';
4
4
  export { a as CONVEX_ID_TABLE, C as ConvexIdSchema, g as getConvexIdTable, i as idOf } from './idOf-DR8tkhQS.js';
5
5
  import 'zod';
package/dist/dsl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dsl/defineFunction.ts","../src/dsl/defineTable.ts","../src/dsl/errors.ts","../src/dsl/idOf.ts","../src/dsl/adapters/zod-to-cli.ts","../src/dsl/adapters/zod-to-convex.ts","../src/dsl/adapters/zod-to-jsonschema.ts"],"names":["getObjectShape","ZodFirstPartyTypeKind","unsupported","unwrapOptionalLike","convertLazy","convertSchema"],"mappings":"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","file":"dsl.js","sourcesContent":["import { z, type ZodObject, type ZodRawShape } from \"zod\";\n\nexport type FunctionEffect = \"read\" | \"write\" | \"admin\";\n\nexport type FunctionContract<\n A extends ZodRawShape = ZodRawShape,\n R extends z.ZodTypeAny = z.ZodTypeAny,\n> = {\n name: string;\n args: ZodObject<A>;\n returns: R;\n effects: readonly FunctionEffect[];\n idempotent?: boolean;\n invariants?: readonly string[];\n};\n\nexport function defineFunction<\n A extends ZodRawShape,\n R extends z.ZodTypeAny,\n>(spec: FunctionContract<A, R>): FunctionContract<A, R> {\n return spec;\n}\n","import type { ZodObject, ZodRawShape } from \"zod\";\n\nexport type TableComponent = \"mc\" | \"kernel\" | \"identity\" | \"developer-pack\";\n\nexport type TableIndex =\n | {\n kind: \"index\";\n name: string;\n columns: readonly string[];\n }\n | {\n kind: \"search\";\n name: string;\n searchField: string;\n filterFields?: readonly string[];\n }\n | {\n kind: \"vector\";\n name: string;\n vectorField: string;\n dimensions: number;\n filterFields?: readonly string[];\n };\n\nexport type TableDeprecation = {\n since: string;\n reason: string;\n replacement?: string;\n};\n\nexport type TableContract<S extends ZodRawShape = ZodRawShape> = {\n name: string;\n component: TableComponent;\n category: string;\n shape: ZodObject<S>;\n indices: readonly TableIndex[];\n deprecated?: TableDeprecation;\n invariants?: readonly string[];\n};\n\nexport function defineTable<S extends ZodRawShape>(\n spec: TableContract<S>\n): TableContract<S> {\n return spec;\n}\n","export type AdapterKind = \"convex\" | \"jsonschema\" | \"cli\";\n\nexport type AdapterPurpose = \"table\" | \"function_args\" | \"function_returns\";\n\nexport type AdapterContext = {\n adapter: AdapterKind;\n purpose?: AdapterPurpose;\n location?: string;\n path?: readonly string[];\n};\n\nfunction formatPath(path?: readonly string[]) {\n if (!path || path.length === 0) {\n return \"\";\n }\n\n return path.join(\".\");\n}\n\nfunction formatLocation(context: AdapterContext) {\n const segments: string[] = [context.adapter];\n if (context.purpose) {\n segments.push(context.purpose);\n }\n if (context.location) {\n segments.push(context.location);\n }\n const formattedPath = formatPath(context.path);\n if (formattedPath) {\n segments.push(formattedPath);\n }\n return segments.join(\" :: \");\n}\n\nexport class SchemaAdapterError extends Error {\n readonly context: AdapterContext;\n\n constructor(message: string, context: AdapterContext) {\n super(`${message} [${formatLocation(context)}]`);\n this.name = \"SchemaAdapterError\";\n this.context = context;\n }\n}\n\nexport function schemaAdapterError(\n message: string,\n context: AdapterContext\n): SchemaAdapterError {\n return new SchemaAdapterError(message, context);\n}\n","import { z } from \"zod\";\n\nexport const CONVEX_ID_TABLE = Symbol.for(\"lucern.contracts.convexIdTable\");\n\nexport type ConvexIdSchema<T extends string> = z.ZodBranded<\n z.ZodString,\n `Id<${T}>`\n> & {\n readonly [CONVEX_ID_TABLE]: T;\n};\n\nexport function idOf<T extends string>(table: T): ConvexIdSchema<T> {\n const schema = z.string().brand<`Id<${T}>`>();\n Object.defineProperty(schema, CONVEX_ID_TABLE, {\n configurable: false,\n enumerable: false,\n value: table,\n writable: false,\n });\n return schema as ConvexIdSchema<T>;\n}\n\nexport function getConvexIdTable(schema: z.ZodTypeAny): string | undefined {\n return (schema as Partial<Record<typeof CONVEX_ID_TABLE, string>>)[\n CONVEX_ID_TABLE\n ];\n}\n","import { z, ZodFirstPartyTypeKind, type ZodTypeAny } from \"zod\";\nimport { schemaAdapterError } from \"../errors.js\";\n\nexport type CliOptionKind = \"string\" | \"number\" | \"bigint\" | \"boolean\" | \"json\";\n\nexport type CliOptionSpec = {\n name: string;\n kind: CliOptionKind;\n required: boolean;\n variadic?: boolean;\n nullable?: boolean;\n choices?: readonly (string | number | boolean)[];\n defaultValue?: unknown;\n description?: string;\n};\n\nexport type CliCommandSpec = {\n options: readonly CliOptionSpec[];\n};\n\nexport type ZodToCliOptions = {\n location?: string;\n};\n\ntype FieldState = {\n schema: ZodTypeAny;\n required: boolean;\n nullable: boolean;\n defaultValue?: unknown;\n};\n\ntype ConversionState = {\n location?: string;\n seenLazySchemas: WeakSet<object>;\n};\n\nfunction unsupported(\n message: string,\n state: ConversionState,\n path: readonly string[]\n): never {\n throw schemaAdapterError(message, {\n adapter: \"cli\",\n location: state.location,\n path,\n });\n}\n\nfunction getObjectShape(schema: z.ZodObject<z.ZodRawShape>) {\n const shape =\n typeof schema._def.shape === \"function\" ? schema._def.shape() : schema._def.shape;\n return shape as z.ZodRawShape;\n}\n\nfunction unwrapField(\n schema: ZodTypeAny,\n path: readonly string[]\n): FieldState {\n let current = schema;\n let required = true;\n let nullable = false;\n let defaultValue: unknown;\n\n while (true) {\n switch (current._def.typeName) {\n case ZodFirstPartyTypeKind.ZodOptional:\n required = false;\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodDefault:\n required = false;\n defaultValue = current._def.defaultValue();\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodNullable:\n nullable = true;\n current = current._def.innerType;\n continue;\n default:\n return {\n schema: current,\n required,\n nullable,\n defaultValue,\n };\n }\n }\n}\n\nfunction primitiveOption(\n name: string,\n kind: CliOptionKind,\n field: FieldState,\n choices?: readonly (string | number | boolean)[]\n): CliOptionSpec {\n return {\n name,\n kind,\n required: field.required,\n nullable: field.nullable || undefined,\n defaultValue: field.defaultValue,\n choices,\n description: field.schema.description,\n };\n}\n\nfunction optionFromSchema(\n name: string,\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): CliOptionSpec {\n const field = unwrapField(schema, path);\n\n switch (field.schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return primitiveOption(name, \"string\", field);\n case ZodFirstPartyTypeKind.ZodNumber:\n return primitiveOption(name, \"number\", field);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return primitiveOption(name, \"bigint\", field);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return primitiveOption(name, \"boolean\", field);\n case ZodFirstPartyTypeKind.ZodEnum:\n return primitiveOption(name, \"string\", field, field.schema._def.values);\n case ZodFirstPartyTypeKind.ZodNativeEnum: {\n const values = [...new Set(Object.values(field.schema._def.values))].filter(\n (value): value is string | number | boolean =>\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n );\n return primitiveOption(\n name,\n values.every((value) => typeof value === \"number\") ? \"number\" : \"string\",\n field,\n values\n );\n }\n case ZodFirstPartyTypeKind.ZodLiteral:\n return primitiveOption(name, \"string\", field, [field.schema._def.value]);\n case ZodFirstPartyTypeKind.ZodArray: {\n const item = unwrapField(field.schema._def.type, [...path, \"[]\"]);\n switch (item.schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return { ...primitiveOption(name, \"string\", field), variadic: true };\n case ZodFirstPartyTypeKind.ZodNumber:\n return { ...primitiveOption(name, \"number\", field), variadic: true };\n case ZodFirstPartyTypeKind.ZodBigInt:\n return { ...primitiveOption(name, \"bigint\", field), variadic: true };\n case ZodFirstPartyTypeKind.ZodBoolean:\n return { ...primitiveOption(name, \"boolean\", field), variadic: true };\n default:\n return {\n ...primitiveOption(name, \"json\", field),\n variadic: false,\n };\n }\n }\n case ZodFirstPartyTypeKind.ZodLazy: {\n const lazySchema = field.schema as z.ZodLazy<ZodTypeAny>;\n if (state.seenLazySchemas.has(lazySchema)) {\n unsupported(\n \"Recursive z.lazy schemas are not supported by the CLI adapter\",\n state,\n path\n );\n }\n state.seenLazySchemas.add(lazySchema);\n try {\n return optionFromSchema(name, lazySchema._def.getter(), state, path);\n } finally {\n state.seenLazySchemas.delete(lazySchema);\n }\n }\n case ZodFirstPartyTypeKind.ZodBranded:\n return primitiveOption(name, \"string\", field);\n case ZodFirstPartyTypeKind.ZodObject:\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n case ZodFirstPartyTypeKind.ZodRecord:\n case ZodFirstPartyTypeKind.ZodAny:\n case ZodFirstPartyTypeKind.ZodUnknown:\n return primitiveOption(name, \"json\", field);\n default:\n unsupported(\n `Unsupported Zod schema kind ${field.schema._def.typeName}`,\n state,\n path\n );\n }\n}\n\nexport function zodToCli(\n schema: z.ZodObject<z.ZodRawShape>,\n options: ZodToCliOptions = {}\n): CliCommandSpec {\n if (schema._def.typeName !== ZodFirstPartyTypeKind.ZodObject) {\n throw schemaAdapterError(\"CLI generation requires a Zod object schema\", {\n adapter: \"cli\",\n location: options.location,\n path: [],\n });\n }\n\n const state: ConversionState = {\n location: options.location,\n seenLazySchemas: new WeakSet<object>(),\n };\n const optionsList = Object.entries(getObjectShape(schema))\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([name, value]) => optionFromSchema(name, value, state, [name]));\n\n return {\n options: optionsList,\n };\n}\n","import { z, ZodFirstPartyTypeKind, type ZodTypeAny } from \"zod\";\nimport type { TableIndex } from \"../defineTable.js\";\nimport {\n SchemaAdapterError,\n schemaAdapterError,\n type AdapterPurpose,\n} from \"../errors.js\";\nimport { getConvexIdTable } from \"../idOf.js\";\n\nexport type ConvexDefault = {\n path: readonly string[];\n value: unknown;\n};\n\nexport type ZodToConvexOptions = {\n purpose?: AdapterPurpose;\n location?: string;\n};\n\nexport type ZodToConvexResult = {\n source: string;\n defaults: readonly ConvexDefault[];\n};\n\ntype ConversionState = {\n location?: string;\n purpose: AdapterPurpose;\n seenLazySchemas: WeakSet<object>;\n};\n\ntype ConvertedSchema = {\n source: string;\n defaults: ConvexDefault[];\n};\n\nfunction encodeLiteral(value: string | number | bigint | boolean | null) {\n if (typeof value === \"bigint\") {\n return `${value}n`;\n }\n return JSON.stringify(value);\n}\n\nfunction sortEntries<T>(entries: readonly [string, T][]) {\n return [...entries].sort(([left], [right]) => left.localeCompare(right));\n}\n\nfunction getObjectShape(schema: z.ZodObject<z.ZodRawShape>) {\n const shape =\n typeof schema._def.shape === \"function\" ? schema._def.shape() : schema._def.shape;\n return shape as z.ZodRawShape;\n}\n\nfunction unwrapOptionalLike(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): {\n schema: ZodTypeAny;\n isOptional: boolean;\n defaults: ConvexDefault[];\n} {\n const defaults: ConvexDefault[] = [];\n let current = schema;\n let isOptional = false;\n\n while (true) {\n switch (current._def.typeName) {\n case ZodFirstPartyTypeKind.ZodOptional:\n isOptional = true;\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodDefault: {\n if (state.purpose === \"table\") {\n throw schemaAdapterError(\n \"Zod defaults are not allowed in table contracts\",\n {\n adapter: \"convex\",\n purpose: state.purpose,\n location: state.location,\n path,\n }\n );\n }\n isOptional = true;\n defaults.push({\n path,\n value: current._def.defaultValue(),\n });\n current = current._def.innerType;\n continue;\n }\n default:\n return {\n schema: current,\n isOptional,\n defaults,\n };\n }\n }\n}\n\nfunction convertSchema(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): ConvertedSchema {\n const { schema: unwrapped, isOptional, defaults } = unwrapOptionalLike(\n schema,\n state,\n path\n );\n const converted = convertSchemaInner(unwrapped, state, path);\n return {\n source: isOptional ? `v.optional(${converted.source})` : converted.source,\n defaults: [...defaults, ...converted.defaults],\n };\n}\n\nfunction enumToUnion(values: readonly (string | number)[]) {\n if (values.length === 0) {\n return \"v.never()\";\n }\n if (values.length === 1) {\n return `v.literal(${encodeLiteral(values[0])})`;\n }\n return `v.union(${values\n .map((value) => `v.literal(${encodeLiteral(value)})`)\n .join(\", \")})`;\n}\n\nfunction unsupported(\n message: string,\n state: ConversionState,\n path: readonly string[]\n): never {\n throw schemaAdapterError(message, {\n adapter: \"convex\",\n purpose: state.purpose,\n location: state.location,\n path,\n });\n}\n\nfunction convertLazy(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): ConvertedSchema {\n const lazySchema = schema as z.ZodLazy<ZodTypeAny>;\n if (state.seenLazySchemas.has(lazySchema)) {\n unsupported(\n \"Recursive z.lazy schemas are not supported by the Convex adapter\",\n state,\n path\n );\n }\n state.seenLazySchemas.add(lazySchema);\n try {\n return convertSchema(lazySchema._def.getter(), state, path);\n } finally {\n state.seenLazySchemas.delete(lazySchema);\n }\n}\n\nfunction convertSchemaInner(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): ConvertedSchema {\n const idTable = getConvexIdTable(schema);\n if (idTable) {\n return {\n source: `v.id(${JSON.stringify(idTable)})`,\n defaults: [],\n };\n }\n\n switch (schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return { source: \"v.string()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodNumber:\n return { source: \"v.number()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodBigInt:\n return { source: \"v.int64()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodBoolean:\n return { source: \"v.boolean()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodNull:\n return { source: \"v.null()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodAny:\n case ZodFirstPartyTypeKind.ZodUnknown:\n return { source: \"v.any()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodLiteral: {\n return {\n source: `v.literal(${encodeLiteral(schema._def.value)})`,\n defaults: [],\n };\n }\n case ZodFirstPartyTypeKind.ZodEnum:\n return {\n source: enumToUnion(schema._def.values),\n defaults: [],\n };\n case ZodFirstPartyTypeKind.ZodNativeEnum: {\n const values = Object.values(schema._def.values).filter(\n (value): value is string | number =>\n typeof value === \"string\" || typeof value === \"number\"\n );\n return {\n source: enumToUnion([...new Set(values)]),\n defaults: [],\n };\n }\n case ZodFirstPartyTypeKind.ZodNullable: {\n const inner = convertSchema(schema._def.innerType, state, path);\n return {\n source: `v.nullable(${inner.source})`,\n defaults: inner.defaults,\n };\n }\n case ZodFirstPartyTypeKind.ZodArray: {\n const inner = convertSchema(schema._def.type, state, [...path, \"[]\"]);\n return {\n source: `v.array(${inner.source})`,\n defaults: inner.defaults,\n };\n }\n case ZodFirstPartyTypeKind.ZodObject: {\n const objectSchema = schema as z.ZodObject<z.ZodRawShape>;\n if (\n objectSchema._def.catchall &&\n objectSchema._def.catchall._def.typeName !== ZodFirstPartyTypeKind.ZodNever\n ) {\n unsupported(\n \"Zod objects with catchall/passthrough fields cannot be lowered to Convex validators\",\n state,\n path\n );\n }\n const fields = sortEntries(Object.entries(getObjectShape(objectSchema)));\n const convertedFields = fields.map(([key, value]) => [\n key,\n convertSchema(value, state, [...path, key]),\n ] as const);\n return {\n source: `v.object({ ${convertedFields\n .map(([key, converted]) => `${JSON.stringify(key)}: ${converted.source}`)\n .join(\", \")} })`,\n defaults: convertedFields.flatMap(([, converted]) => converted.defaults),\n };\n }\n case ZodFirstPartyTypeKind.ZodUnion: {\n const members = schema._def.options.map((option: ZodTypeAny, index: number) =>\n convertSchema(option, state, [...path, String(index)])\n );\n return {\n source: `v.union(${members\n .map((member: ConvertedSchema) => member.source)\n .join(\", \")})`,\n defaults: members.flatMap((member: ConvertedSchema) => member.defaults),\n };\n }\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {\n const discriminatedUnion = schema as z.ZodDiscriminatedUnion<\n string,\n [z.ZodObject<z.ZodRawShape>, ...z.ZodObject<z.ZodRawShape>[]]\n >;\n const options =\n discriminatedUnion.options instanceof Map\n ? [...discriminatedUnion.options.values()]\n : [...discriminatedUnion.options];\n const members = options.map((option, index) =>\n convertSchema(option, state, [...path, String(index)])\n );\n return {\n source: `v.union(${members\n .map((member: ConvertedSchema) => member.source)\n .join(\", \")})`,\n defaults: members.flatMap((member: ConvertedSchema) => member.defaults),\n };\n }\n case ZodFirstPartyTypeKind.ZodRecord: {\n const keyType = schema._def.keyType;\n if (\n keyType &&\n keyType._def.typeName !== ZodFirstPartyTypeKind.ZodString\n ) {\n unsupported(\n \"Only string-keyed z.record schemas can be lowered to Convex validators\",\n state,\n path\n );\n }\n const value = convertSchema(schema._def.valueType, state, [...path, \"{}\"]);\n return {\n source: `v.record(v.string(), ${value.source})`,\n defaults: value.defaults,\n };\n }\n case ZodFirstPartyTypeKind.ZodLazy:\n return convertLazy(schema, state, path);\n case ZodFirstPartyTypeKind.ZodBranded: {\n return convertSchema(schema._def.type, state, path);\n }\n case ZodFirstPartyTypeKind.ZodEffects: {\n return convertSchema(schema._def.schema, state, path);\n }\n default:\n unsupported(`Unsupported Zod schema kind ${schema._def.typeName}`, state, path);\n }\n}\n\nexport function zodToConvex(\n schema: ZodTypeAny,\n options: ZodToConvexOptions = {}\n): ZodToConvexResult {\n const state: ConversionState = {\n location: options.location,\n purpose: options.purpose ?? \"function_returns\",\n seenLazySchemas: new WeakSet<object>(),\n };\n const converted = convertSchema(schema, state, []);\n return {\n source: converted.source,\n defaults: converted.defaults,\n };\n}\n\nexport function tableIndexToConvexSource(index: TableIndex): string {\n switch (index.kind) {\n case \"index\":\n return `.index(${JSON.stringify(index.name)}, [${index.columns\n .map((column) => JSON.stringify(column))\n .join(\", \")}])`;\n case \"search\":\n return `.searchIndex(${JSON.stringify(index.name)}, { searchField: ${JSON.stringify(\n index.searchField\n )}${index.filterFields?.length ? `, filterFields: [${index.filterFields\n .map((field) => JSON.stringify(field))\n .join(\", \")}]` : \"\"} })`;\n case \"vector\":\n return `.vectorIndex(${JSON.stringify(index.name)}, { vectorField: ${JSON.stringify(\n index.vectorField\n )}, dimensions: ${index.dimensions}${\n index.filterFields?.length\n ? `, filterFields: [${index.filterFields\n .map((field) => JSON.stringify(field))\n .join(\", \")}]`\n : \"\"\n } })`;\n default: {\n const exhaustive: never = index;\n throw new SchemaAdapterError(\n `Unsupported table index kind ${(exhaustive as { kind?: string }).kind ?? \"unknown\"}`,\n { adapter: \"convex\" }\n );\n }\n }\n}\n","import { z, ZodFirstPartyTypeKind, type ZodTypeAny } from \"zod\";\nimport { schemaAdapterError } from \"../errors.js\";\nimport { getConvexIdTable } from \"../idOf.js\";\n\nexport type JsonSchema =\n | boolean\n | {\n $schema?: string;\n type?: string | readonly string[];\n properties?: Record<string, JsonSchema>;\n required?: readonly string[];\n additionalProperties?: boolean | JsonSchema;\n items?: JsonSchema;\n enum?: readonly (string | number | boolean)[];\n const?: string | number | boolean | null;\n anyOf?: readonly JsonSchema[];\n oneOf?: readonly JsonSchema[];\n default?: unknown;\n format?: string;\n description?: string;\n [key: string]: unknown;\n };\n\nexport type ZodToJsonSchemaOptions = {\n location?: string;\n};\n\ntype JsonField = {\n schema: JsonSchema;\n required: boolean;\n};\n\ntype ConversionState = {\n location?: string;\n seenLazySchemas: WeakSet<object>;\n};\n\nfunction unsupported(\n message: string,\n state: ConversionState,\n path: readonly string[]\n): never {\n throw schemaAdapterError(message, {\n adapter: \"jsonschema\",\n location: state.location,\n path,\n });\n}\n\nfunction getObjectShape(schema: z.ZodObject<z.ZodRawShape>) {\n const shape =\n typeof schema._def.shape === \"function\" ? schema._def.shape() : schema._def.shape;\n return shape as z.ZodRawShape;\n}\n\nfunction unwrapOptionalLike(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): {\n schema: ZodTypeAny;\n required: boolean;\n defaultValue?: unknown;\n} {\n let current = schema;\n let required = true;\n let defaultValue: unknown;\n\n while (true) {\n switch (current._def.typeName) {\n case ZodFirstPartyTypeKind.ZodOptional:\n required = false;\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodDefault:\n required = false;\n defaultValue = current._def.defaultValue();\n current = current._def.innerType;\n continue;\n default:\n return {\n schema: current,\n required,\n defaultValue,\n };\n }\n }\n}\n\nfunction convertLazy(\n schema: z.ZodLazy<ZodTypeAny>,\n state: ConversionState,\n path: readonly string[]\n): JsonSchema {\n if (state.seenLazySchemas.has(schema)) {\n unsupported(\n \"Recursive z.lazy schemas are not supported by the JSON Schema adapter\",\n state,\n path\n );\n }\n state.seenLazySchemas.add(schema);\n try {\n return convertSchema(schema._def.getter(), state, path);\n } finally {\n state.seenLazySchemas.delete(schema);\n }\n}\n\nfunction literalType(value: unknown) {\n switch (typeof value) {\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isInteger(value) ? \"integer\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"bigint\":\n return \"integer\";\n default:\n return value === null ? \"null\" : undefined;\n }\n}\n\nfunction convertField(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): JsonField {\n const { schema: unwrapped, required, defaultValue } = unwrapOptionalLike(\n schema,\n state,\n path\n );\n const field = convertSchema(unwrapped, state, path);\n if (typeof field === \"boolean\") {\n return {\n schema: field,\n required,\n };\n }\n return {\n schema:\n defaultValue === undefined ? field : { ...field, default: defaultValue },\n required,\n };\n}\n\nfunction convertSchema(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): JsonSchema {\n const idTable = getConvexIdTable(schema);\n if (idTable) {\n return {\n type: \"string\",\n \"x-convex-id-table\": idTable,\n };\n }\n\n switch (schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return { type: \"string\" };\n case ZodFirstPartyTypeKind.ZodNumber:\n return { type: \"number\" };\n case ZodFirstPartyTypeKind.ZodBigInt:\n return { type: \"integer\", format: \"int64\" };\n case ZodFirstPartyTypeKind.ZodBoolean:\n return { type: \"boolean\" };\n case ZodFirstPartyTypeKind.ZodNull:\n return { type: \"null\" };\n case ZodFirstPartyTypeKind.ZodAny:\n case ZodFirstPartyTypeKind.ZodUnknown:\n return {};\n case ZodFirstPartyTypeKind.ZodLiteral:\n return {\n const: schema._def.value,\n type: literalType(schema._def.value),\n };\n case ZodFirstPartyTypeKind.ZodEnum:\n return {\n type: \"string\",\n enum: schema._def.values,\n };\n case ZodFirstPartyTypeKind.ZodNativeEnum: {\n const values = [...new Set(Object.values(schema._def.values))].filter(\n (value): value is string | number | boolean =>\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n );\n return {\n type: values.every((value) => typeof value === \"number\")\n ? \"number\"\n : \"string\",\n enum: values,\n };\n }\n case ZodFirstPartyTypeKind.ZodNullable: {\n const inner = convertSchema(schema._def.innerType, state, path);\n return {\n anyOf: [inner, { type: \"null\" }],\n };\n }\n case ZodFirstPartyTypeKind.ZodArray:\n return {\n type: \"array\",\n items: convertSchema(schema._def.type, state, [...path, \"[]\"]),\n };\n case ZodFirstPartyTypeKind.ZodObject: {\n const objectSchema = schema as z.ZodObject<z.ZodRawShape>;\n if (\n objectSchema._def.catchall &&\n objectSchema._def.catchall._def.typeName !== ZodFirstPartyTypeKind.ZodNever\n ) {\n unsupported(\n \"Zod objects with catchall/passthrough fields cannot be lowered to JSON Schema\",\n state,\n path\n );\n }\n const entries = Object.entries(getObjectShape(objectSchema)).sort(([a], [b]) =>\n a.localeCompare(b)\n );\n const converted = entries.map(([key, value]) => [\n key,\n convertField(value, state, [...path, key]),\n ] as const);\n const required = converted\n .filter(([, field]) => field.required)\n .map(([key]) => key);\n return {\n type: \"object\",\n properties: Object.fromEntries(\n converted.map(([key, field]) => [key, field.schema])\n ),\n additionalProperties: false,\n ...(required.length > 0 ? { required } : {}),\n };\n }\n case ZodFirstPartyTypeKind.ZodUnion:\n return {\n anyOf: schema._def.options.map((option: ZodTypeAny, index: number) =>\n convertSchema(option, state, [...path, String(index)])\n ),\n };\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {\n const discriminatedUnion = schema as z.ZodDiscriminatedUnion<\n string,\n [z.ZodObject<z.ZodRawShape>, ...z.ZodObject<z.ZodRawShape>[]]\n >;\n const options =\n discriminatedUnion.options instanceof Map\n ? [...discriminatedUnion.options.values()]\n : [...discriminatedUnion.options];\n return {\n oneOf: options.map((option, index) =>\n convertSchema(option, state, [...path, String(index)])\n ),\n };\n }\n case ZodFirstPartyTypeKind.ZodRecord: {\n const keyType = schema._def.keyType;\n if (\n keyType &&\n keyType._def.typeName !== ZodFirstPartyTypeKind.ZodString\n ) {\n unsupported(\n \"Only string-keyed z.record schemas can be lowered to JSON Schema\",\n state,\n path\n );\n }\n return {\n type: \"object\",\n additionalProperties: convertSchema(\n schema._def.valueType,\n state,\n [...path, \"{}\"]\n ),\n };\n }\n case ZodFirstPartyTypeKind.ZodLazy:\n return convertLazy(schema as z.ZodLazy<ZodTypeAny>, state, path);\n case ZodFirstPartyTypeKind.ZodBranded:\n return convertSchema(schema._def.type, state, path);\n default:\n unsupported(\n `Unsupported Zod schema kind ${schema._def.typeName}`,\n state,\n path\n );\n }\n}\n\nexport function zodToJsonSchema(\n schema: ZodTypeAny,\n options: ZodToJsonSchemaOptions = {}\n): JsonSchema {\n const converted = convertSchema(schema, {\n location: options.location,\n seenLazySchemas: new WeakSet<object>(),\n }, []);\n if (typeof converted === \"boolean\") {\n return converted;\n }\n return {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n ...converted,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/dsl/defineFunction.ts","../src/dsl/defineTable.ts","../src/dsl/errors.ts","../src/dsl/idOf.ts","../src/dsl/adapters/zod-to-cli.ts","../src/dsl/adapters/zod-to-convex.ts","../src/dsl/adapters/zod-to-jsonschema.ts"],"names":["getObjectShape","ZodFirstPartyTypeKind","unsupported","unwrapOptionalLike","convertLazy","convertSchema"],"mappings":";;;AAgBO,SAAS,eAGd,IAAA,EAAsD;AACtD,EAAA,OAAO,IAAA;AACT;;;ACmBO,SAAS,YACd,IAAA,EACkB;AAClB,EAAA,OAAO,IAAA;AACT;;;ACjCA,SAAS,WAAW,IAAA,EAA0B;AAC5C,EAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC9B,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CAAK,KAAK,GAAG,CAAA;AACtB;AAEA,SAAS,eAAe,OAAA,EAAyB;AAC/C,EAAA,MAAM,QAAA,GAAqB,CAAC,OAAA,CAAQ,OAAO,CAAA;AAC3C,EAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,IAAA,QAAA,CAAS,IAAA,CAAK,QAAQ,OAAO,CAAA;AAAA,EAC/B;AACA,EAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,IAAA,QAAA,CAAS,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAAA,EAChC;AACA,EAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA;AAC7C,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,QAAA,CAAS,KAAK,aAAa,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,QAAA,CAAS,KAAK,MAAM,CAAA;AAC7B;AAEO,IAAM,kBAAA,GAAN,cAAiC,KAAA,CAAM;AAAA,EACnC,OAAA;AAAA,EAET,WAAA,CAAY,SAAiB,OAAA,EAAyB;AACpD,IAAA,KAAA,CAAM,GAAG,OAAO,CAAA,EAAA,EAAK,cAAA,CAAe,OAAO,CAAC,CAAA,CAAA,CAAG,CAAA;AAC/C,IAAA,IAAA,CAAK,IAAA,GAAO,oBAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF;AAEO,SAAS,kBAAA,CACd,SACA,OAAA,EACoB;AACpB,EAAA,OAAO,IAAI,kBAAA,CAAmB,OAAA,EAAS,OAAO,CAAA;AAChD;AC/CO,IAAM,eAAA,mBAAkB,MAAA,CAAO,GAAA,CAAI,gCAAgC;AASnE,SAAS,KAAuB,KAAA,EAA6B;AAClE,EAAA,MAAM,MAAA,GAAS,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,EAAkB;AAC5C,EAAA,MAAA,CAAO,cAAA,CAAe,QAAQ,eAAA,EAAiB;AAAA,IAC7C,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,KAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,iBAAiB,MAAA,EAA0C;AACzE,EAAA,OAAQ,OACN,eACF,CAAA;AACF;ACUA,SAAS,WAAA,CACP,OAAA,EACA,KAAA,EACA,IAAA,EACO;AACP,EAAA,MAAM,mBAAmB,OAAA,EAAS;AAAA,IAChC,OAAA,EAAS,KAAA;AAAA,IACT,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB;AAAA,GACD,CAAA;AACH;AAEA,SAAS,eAAe,MAAA,EAAoC;AAC1D,EAAA,MAAM,KAAA,GACJ,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,KAAU,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,KAAA,EAAM,GAAI,MAAA,CAAO,IAAA,CAAK,KAAA;AAC9E,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,WAAA,CACP,QACA,IAAA,EACY;AACZ,EAAA,IAAI,OAAA,GAAU,MAAA;AACd,EAAA,IAAI,QAAA,GAAW,IAAA;AACf,EAAA,IAAI,QAAA,GAAW,KAAA;AACf,EAAA,IAAI,YAAA;AAEJ,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,QAAQ,OAAA,CAAQ,KAAK,QAAA;AAAU,MAC7B,KAAK,qBAAA,CAAsB,WAAA;AACzB,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,OAAA,GAAU,QAAQ,IAAA,CAAK,SAAA;AACvB,QAAA;AAAA,MACF,KAAK,qBAAA,CAAsB,UAAA;AACzB,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,YAAA,GAAe,OAAA,CAAQ,KAAK,YAAA,EAAa;AACzC,QAAA,OAAA,GAAU,QAAQ,IAAA,CAAK,SAAA;AACvB,QAAA;AAAA,MACF,KAAK,qBAAA,CAAsB,WAAA;AACzB,QAAA,QAAA,GAAW,IAAA;AACX,QAAA,OAAA,GAAU,QAAQ,IAAA,CAAK,SAAA;AACvB,QAAA;AAAA,MACF;AACE,QAAA,OAAO;AAAA,UACL,MAAA,EAAQ,OAAA;AAAA,UACR,QAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACF;AAAA;AACJ,EACF;AACF;AAEA,SAAS,eAAA,CACP,IAAA,EACA,IAAA,EACA,KAAA,EACA,OAAA,EACe;AACf,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB,QAAA,EAAU,MAAM,QAAA,IAAY,MAAA;AAAA,IAC5B,cAAc,KAAA,CAAM,YAAA;AAAA,IACpB,OAAA;AAAA,IACA,WAAA,EAAa,MAAM,MAAA,CAAO;AAAA,GAC5B;AACF;AAEA,SAAS,gBAAA,CACP,IAAA,EACA,MAAA,EACA,KAAA,EACA,IAAA,EACe;AACf,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,MAAY,CAAA;AAEtC,EAAA,QAAQ,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,QAAA;AAAU,IAClC,KAAK,qBAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,IAAA,EAAM,QAAA,EAAU,KAAK,CAAA;AAAA,IAC9C,KAAK,qBAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,IAAA,EAAM,QAAA,EAAU,KAAK,CAAA;AAAA,IAC9C,KAAK,qBAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,IAAA,EAAM,QAAA,EAAU,KAAK,CAAA;AAAA,IAC9C,KAAK,qBAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,IAAA,EAAM,SAAA,EAAW,KAAK,CAAA;AAAA,IAC/C,KAAK,qBAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,gBAAgB,IAAA,EAAM,QAAA,EAAU,OAAO,KAAA,CAAM,MAAA,CAAO,KAAK,MAAM,CAAA;AAAA,IACxE,KAAK,sBAAsB,aAAA,EAAe;AACxC,MAAA,MAAM,MAAA,GAAS,CAAC,GAAG,IAAI,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAAE,MAAA;AAAA,QACnE,CAAC,UACC,OAAO,KAAA,KAAU,YACjB,OAAO,KAAA,KAAU,QAAA,IACjB,OAAO,KAAA,KAAU;AAAA,OACrB;AACA,MAAA,OAAO,eAAA;AAAA,QACL,IAAA;AAAA,QACA,MAAA,CAAO,MAAM,CAAC,KAAA,KAAU,OAAO,KAAA,KAAU,QAAQ,IAAI,QAAA,GAAW,QAAA;AAAA,QAChE,KAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,IACA,KAAK,qBAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,MAAM,QAAA,EAAU,KAAA,EAAO,CAAC,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,IACzE,KAAK,sBAAsB,QAAA,EAAU;AACnC,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,MAAM,CAAC,GAAG,IAAA,EAAM,IAAI,CAAC,CAAA;AAChE,MAAA,QAAQ,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,QAAA;AAAU,QACjC,KAAK,qBAAA,CAAsB,SAAA;AACzB,UAAA,OAAO,EAAE,GAAG,eAAA,CAAgB,IAAA,EAAM,UAAU,KAAK,CAAA,EAAG,UAAU,IAAA,EAAK;AAAA,QACrE,KAAK,qBAAA,CAAsB,SAAA;AACzB,UAAA,OAAO,EAAE,GAAG,eAAA,CAAgB,IAAA,EAAM,UAAU,KAAK,CAAA,EAAG,UAAU,IAAA,EAAK;AAAA,QACrE,KAAK,qBAAA,CAAsB,SAAA;AACzB,UAAA,OAAO,EAAE,GAAG,eAAA,CAAgB,IAAA,EAAM,UAAU,KAAK,CAAA,EAAG,UAAU,IAAA,EAAK;AAAA,QACrE,KAAK,qBAAA,CAAsB,UAAA;AACzB,UAAA,OAAO,EAAE,GAAG,eAAA,CAAgB,IAAA,EAAM,WAAW,KAAK,CAAA,EAAG,UAAU,IAAA,EAAK;AAAA,QACtE;AACE,UAAA,OAAO;AAAA,YACL,GAAG,eAAA,CAAgB,IAAA,EAAM,MAAA,EAAQ,KAAK,CAAA;AAAA,YACtC,QAAA,EAAU;AAAA,WACZ;AAAA;AACJ,IACF;AAAA,IACA,KAAK,sBAAsB,OAAA,EAAS;AAClC,MAAA,MAAM,aAAa,KAAA,CAAM,MAAA;AACzB,MAAA,IAAI,KAAA,CAAM,eAAA,CAAgB,GAAA,CAAI,UAAU,CAAA,EAAG;AACzC,QAAA,WAAA;AAAA,UACE,+DAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,KAAA,CAAM,eAAA,CAAgB,IAAI,UAAU,CAAA;AACpC,MAAA,IAAI;AACF,QAAA,OAAO,iBAAiB,IAAA,EAAM,UAAA,CAAW,KAAK,MAAA,EAAO,EAAG,OAAO,IAAI,CAAA;AAAA,MACrE,CAAA,SAAE;AACA,QAAA,KAAA,CAAM,eAAA,CAAgB,OAAO,UAAU,CAAA;AAAA,MACzC;AAAA,IACF;AAAA,IACA,KAAK,qBAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,IAAA,EAAM,QAAA,EAAU,KAAK,CAAA;AAAA,IAC9C,KAAK,qBAAA,CAAsB,SAAA;AAAA,IAC3B,KAAK,qBAAA,CAAsB,QAAA;AAAA,IAC3B,KAAK,qBAAA,CAAsB,qBAAA;AAAA,IAC3B,KAAK,qBAAA,CAAsB,SAAA;AAAA,IAC3B,KAAK,qBAAA,CAAsB,MAAA;AAAA,IAC3B,KAAK,qBAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,eAAA,CAAgB,IAAA,EAAM,MAAA,EAAQ,KAAK,CAAA;AAAA,IAC5C;AACE,MAAA,WAAA;AAAA,QACE,CAAA,4BAAA,EAA+B,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,QACzD,KAAA;AAAA,QACA;AAAA,OACF;AAAA;AAEN;AAEO,SAAS,QAAA,CACd,MAAA,EACA,OAAA,GAA2B,EAAC,EACZ;AAChB,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,QAAA,KAAa,qBAAA,CAAsB,SAAA,EAAW;AAC5D,IAAA,MAAM,mBAAmB,6CAAA,EAA+C;AAAA,MACtE,OAAA,EAAS,KAAA;AAAA,MACT,UAAU,OAAA,CAAQ,QAAA;AAAA,MAClB,MAAM;AAAC,KACR,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,KAAA,GAAyB;AAAA,IAC7B,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,eAAA,sBAAqB,OAAA;AAAgB,GACvC;AACA,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,OAAA,CAAQ,cAAA,CAAe,MAAM,CAAC,CAAA,CACtD,IAAA,CAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,KAAM,gBAAA,CAAiB,MAAM,KAAA,EAAO,KAAA,EAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAEtE,EAAA,OAAO;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AACF;ACrLA,SAAS,cAAc,KAAA,EAAkD;AACvE,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAA,CAAA,CAAA;AAAA,EACjB;AACA,EAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAC7B;AAEA,SAAS,YAAe,OAAA,EAAiC;AACvD,EAAA,OAAO,CAAC,GAAG,OAAO,CAAA,CAAE,KAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAC,CAAA;AACzE;AAEA,SAASA,gBAAe,MAAA,EAAoC;AAC1D,EAAA,MAAM,KAAA,GACJ,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,KAAU,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,KAAA,EAAM,GAAI,MAAA,CAAO,IAAA,CAAK,KAAA;AAC9E,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,kBAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EAKA;AACA,EAAA,MAAM,WAA4B,EAAC;AACnC,EAAA,IAAI,OAAA,GAAU,MAAA;AACd,EAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,QAAQ,OAAA,CAAQ,KAAK,QAAA;AAAU,MAC7B,KAAKC,qBAAAA,CAAsB,WAAA;AACzB,QAAA,UAAA,GAAa,IAAA;AACb,QAAA,OAAA,GAAU,QAAQ,IAAA,CAAK,SAAA;AACvB,QAAA;AAAA,MACF,KAAKA,sBAAsB,UAAA,EAAY;AACrC,QAAA,IAAI,KAAA,CAAM,YAAY,OAAA,EAAS;AAC7B,UAAA,MAAM,kBAAA;AAAA,YACJ,iDAAA;AAAA,YACA;AAAA,cACE,OAAA,EAAS,QAAA;AAAA,cACT,SAAS,KAAA,CAAM,OAAA;AAAA,cACf,UAAU,KAAA,CAAM,QAAA;AAAA,cAChB;AAAA;AACF,WACF;AAAA,QACF;AACA,QAAA,UAAA,GAAa,IAAA;AACb,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAA;AAAA,UACA,KAAA,EAAO,OAAA,CAAQ,IAAA,CAAK,YAAA;AAAa,SAClC,CAAA;AACD,QAAA,OAAA,GAAU,QAAQ,IAAA,CAAK,SAAA;AACvB,QAAA;AAAA,MACF;AAAA,MACA;AACE,QAAA,OAAO;AAAA,UACL,MAAA,EAAQ,OAAA;AAAA,UACR,UAAA;AAAA,UACA;AAAA,SACF;AAAA;AACJ,EACF;AACF;AAEA,SAAS,aAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,UAAA,EAAY,UAAS,GAAI,kBAAA;AAAA,IAClD,MAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,SAAA,GAAY,kBAAA,CAAmB,SAAA,EAAW,KAAA,EAAO,IAAI,CAAA;AAC3D,EAAA,OAAO;AAAA,IACL,QAAQ,UAAA,GAAa,CAAA,WAAA,EAAc,SAAA,CAAU,MAAM,MAAM,SAAA,CAAU,MAAA;AAAA,IACnE,UAAU,CAAC,GAAG,QAAA,EAAU,GAAG,UAAU,QAAQ;AAAA,GAC/C;AACF;AAEA,SAAS,YAAY,MAAA,EAAsC;AACzD,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,WAAA;AAAA,EACT;AACA,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,CAAA,UAAA,EAAa,aAAA,CAAc,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,CAAA,QAAA,EAAW,MAAA,CACf,GAAA,CAAI,CAAC,KAAA,KAAU,CAAA,UAAA,EAAa,aAAA,CAAc,KAAK,CAAC,CAAA,CAAA,CAAG,CAAA,CACnD,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AACf;AAEA,SAASC,YAAAA,CACP,OAAA,EACA,KAAA,EACA,IAAA,EACO;AACP,EAAA,MAAM,mBAAmB,OAAA,EAAS;AAAA,IAChC,OAAA,EAAS,QAAA;AAAA,IACT,SAAS,KAAA,CAAM,OAAA;AAAA,IACf,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB;AAAA,GACD,CAAA;AACH;AAEA,SAAS,WAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,UAAA,GAAa,MAAA;AACnB,EAAA,IAAI,KAAA,CAAM,eAAA,CAAgB,GAAA,CAAI,UAAU,CAAA,EAAG;AACzC,IAAAA,YAAAA;AAAA,MACE,kEAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,KAAA,CAAM,eAAA,CAAgB,IAAI,UAAU,CAAA;AACpC,EAAA,IAAI;AACF,IAAA,OAAO,cAAc,UAAA,CAAW,IAAA,CAAK,MAAA,EAAO,EAAG,OAAO,IAAI,CAAA;AAAA,EAC5D,CAAA,SAAE;AACA,IAAA,KAAA,CAAM,eAAA,CAAgB,OAAO,UAAU,CAAA;AAAA,EACzC;AACF;AAEA,SAAS,kBAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,OAAA,GAAU,iBAAiB,MAAM,CAAA;AACvC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,CAAA,KAAA,EAAQ,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA,CAAA,CAAA;AAAA,MACvC,UAAU;AAAC,KACb;AAAA,EACF;AAEA,EAAA,QAAQ,MAAA,CAAO,KAAK,QAAA;AAAU,IAC5B,KAAKD,qBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,EAAE,MAAA,EAAQ,YAAA,EAAc,QAAA,EAAU,EAAC,EAAE;AAAA,IAC9C,KAAKA,qBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,EAAE,MAAA,EAAQ,YAAA,EAAc,QAAA,EAAU,EAAC,EAAE;AAAA,IAC9C,KAAKA,qBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,EAAE,MAAA,EAAQ,WAAA,EAAa,QAAA,EAAU,EAAC,EAAE;AAAA,IAC7C,KAAKA,qBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,EAAE,MAAA,EAAQ,aAAA,EAAe,QAAA,EAAU,EAAC,EAAE;AAAA,IAC/C,KAAKA,qBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,EAAE,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,EAAC,EAAE;AAAA,IAC5C,KAAKA,qBAAAA,CAAsB,MAAA;AAAA,IAC3B,KAAKA,qBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,EAAE,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,EAAC,EAAE;AAAA,IAC3C,KAAKA,sBAAsB,UAAA,EAAY;AACrC,MAAA,OAAO;AAAA,QACL,QAAQ,CAAA,UAAA,EAAa,aAAA,CAAc,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACrD,UAAU;AAAC,OACb;AAAA,IACF;AAAA,IACA,KAAKA,qBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,WAAA,CAAY,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAA,QACtC,UAAU;AAAC,OACb;AAAA,IACF,KAAKA,sBAAsB,aAAA,EAAe;AACxC,MAAA,MAAM,SAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA;AAAA,QAC/C,CAAC,KAAA,KACC,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,KAAA,KAAU;AAAA,OAClD;AACA,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,YAAY,CAAC,GAAG,IAAI,GAAA,CAAI,MAAM,CAAC,CAAC,CAAA;AAAA,QACxC,UAAU;AAAC,OACb;AAAA,IACF;AAAA,IACA,KAAKA,sBAAsB,WAAA,EAAa;AACtC,MAAA,MAAM,QAAQ,aAAA,CAAc,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,OAAO,IAAI,CAAA;AAC9D,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,WAAA,EAAc,KAAA,CAAM,MAAM,CAAA,CAAA,CAAA;AAAA,QAClC,UAAU,KAAA,CAAM;AAAA,OAClB;AAAA,IACF;AAAA,IACA,KAAKA,sBAAsB,QAAA,EAAU;AACnC,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,OAAO,CAAC,GAAG,IAAA,EAAM,IAAI,CAAC,CAAA;AACpE,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,QAAA,EAAW,KAAA,CAAM,MAAM,CAAA,CAAA,CAAA;AAAA,QAC/B,UAAU,KAAA,CAAM;AAAA,OAClB;AAAA,IACF;AAAA,IACA,KAAKA,sBAAsB,SAAA,EAAW;AACpC,MAAA,MAAM,YAAA,GAAe,MAAA;AACrB,MAAA,IACE,YAAA,CAAa,KAAK,QAAA,IAClB,YAAA,CAAa,KAAK,QAAA,CAAS,IAAA,CAAK,QAAA,KAAaA,qBAAAA,CAAsB,QAAA,EACnE;AACA,QAAAC,YAAAA;AAAA,UACE,qFAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,SAAS,WAAA,CAAY,MAAA,CAAO,QAAQF,eAAAA,CAAe,YAAY,CAAC,CAAC,CAAA;AACvE,MAAA,MAAM,kBAAkB,MAAA,CAAO,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAAA,QACnD,GAAA;AAAA,QACA,cAAc,KAAA,EAAO,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,GAAG,CAAC;AAAA,OAClC,CAAA;AACV,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,cAAc,eAAA,CACnB,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,SAAS,CAAA,KAAM,CAAA,EAAG,KAAK,SAAA,CAAU,GAAG,CAAC,CAAA,EAAA,EAAK,SAAA,CAAU,MAAM,CAAA,CAAE,CAAA,CACvE,IAAA,CAAK,IAAI,CAAC,CAAA,GAAA,CAAA;AAAA,QACb,QAAA,EAAU,gBAAgB,OAAA,CAAQ,CAAC,GAAG,SAAS,CAAA,KAAM,SAAA,CAAU,QAAQ;AAAA,OACzE;AAAA,IACF;AAAA,IACA,KAAKC,sBAAsB,QAAA,EAAU;AACnC,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,GAAA;AAAA,QAAI,CAAC,MAAA,EAAoB,KAAA,KAC3D,aAAA,CAAc,MAAA,EAAQ,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC,CAAC;AAAA,OACvD;AACA,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,QAAA,EAAW,OAAA,CAChB,GAAA,CAAI,CAAC,MAAA,KAA4B,MAAA,CAAO,MAAM,CAAA,CAC9C,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,QACb,UAAU,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAA4B,OAAO,QAAQ;AAAA,OACxE;AAAA,IACF;AAAA,IACA,KAAKA,sBAAsB,qBAAA,EAAuB;AAChD,MAAA,MAAM,kBAAA,GAAqB,MAAA;AAI3B,MAAA,MAAM,OAAA,GACJ,kBAAA,CAAmB,OAAA,YAAmB,GAAA,GAClC,CAAC,GAAG,kBAAA,CAAmB,OAAA,CAAQ,MAAA,EAAQ,CAAA,GACvC,CAAC,GAAG,mBAAmB,OAAO,CAAA;AACpC,MAAA,MAAM,UAAU,OAAA,CAAQ,GAAA;AAAA,QAAI,CAAC,MAAA,EAAQ,KAAA,KACnC,aAAA,CAAc,MAAA,EAAQ,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC,CAAC;AAAA,OACvD;AACA,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,QAAA,EAAW,OAAA,CAChB,GAAA,CAAI,CAAC,MAAA,KAA4B,MAAA,CAAO,MAAM,CAAA,CAC9C,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,QACb,UAAU,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAA4B,OAAO,QAAQ;AAAA,OACxE;AAAA,IACF;AAAA,IACA,KAAKA,sBAAsB,SAAA,EAAW;AACpC,MAAA,MAAM,OAAA,GAAU,OAAO,IAAA,CAAK,OAAA;AAC5B,MAAA,IACE,OAAA,IACA,OAAA,CAAQ,IAAA,CAAK,QAAA,KAAaA,sBAAsB,SAAA,EAChD;AACA,QAAAC,YAAAA;AAAA,UACE,wEAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,OAAO,CAAC,GAAG,IAAA,EAAM,IAAI,CAAC,CAAA;AACzE,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,CAAA,qBAAA,EAAwB,KAAA,CAAM,MAAM,CAAA,CAAA,CAAA;AAAA,QAC5C,UAAU,KAAA,CAAM;AAAA,OAClB;AAAA,IACF;AAAA,IACA,KAAKD,qBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,WAAA,CAAY,MAAA,EAAQ,KAAA,EAAO,IAAI,CAAA;AAAA,IACxC,KAAKA,sBAAsB,UAAA,EAAY;AACrC,MAAA,OAAO,aAAA,CAAc,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,OAAO,IAAI,CAAA;AAAA,IACpD;AAAA,IACA,KAAKA,sBAAsB,UAAA,EAAY;AACrC,MAAA,OAAO,aAAA,CAAc,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,OAAO,IAAI,CAAA;AAAA,IACtD;AAAA,IACA;AACE,MAAAC,aAAY,CAAA,4BAAA,EAA+B,MAAA,CAAO,KAAK,QAAQ,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA;AAAA;AAEpF;AAEO,SAAS,WAAA,CACd,MAAA,EACA,OAAA,GAA8B,EAAC,EACZ;AACnB,EAAA,MAAM,KAAA,GAAyB;AAAA,IAC7B,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,OAAA,EAAS,QAAQ,OAAA,IAAW,kBAAA;AAAA,IAC5B,eAAA,sBAAqB,OAAA;AAAgB,GACvC;AACA,EAAA,MAAM,SAAA,GAAY,aAAA,CAAc,MAAA,EAAQ,KAAA,EAAO,EAAE,CAAA;AACjD,EAAA,OAAO;AAAA,IACL,QAAQ,SAAA,CAAU,MAAA;AAAA,IAClB,UAAU,SAAA,CAAU;AAAA,GACtB;AACF;AAEO,SAAS,yBAAyB,KAAA,EAA2B;AAClE,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,OAAA;AACH,MAAA,OAAO,UAAU,IAAA,CAAK,SAAA,CAAU,MAAM,IAAI,CAAC,MAAM,KAAA,CAAM,OAAA,CACpD,IAAI,CAAC,MAAA,KAAW,KAAK,SAAA,CAAU,MAAM,CAAC,CAAA,CACtC,IAAA,CAAK,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,IACf,KAAK,QAAA;AACH,MAAA,OAAO,gBAAgB,IAAA,CAAK,SAAA,CAAU,MAAM,IAAI,CAAC,oBAAoB,IAAA,CAAK,SAAA;AAAA,QACxE,KAAA,CAAM;AAAA,OACP,GAAG,KAAA,CAAM,YAAA,EAAc,SAAS,CAAA,iBAAA,EAAoB,KAAA,CAAM,aACxD,GAAA,CAAI,CAAC,UAAU,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CACpC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAA,GAAA,CAAA;AAAA,IACvB,KAAK,QAAA;AACH,MAAA,OAAO,gBAAgB,IAAA,CAAK,SAAA,CAAU,MAAM,IAAI,CAAC,oBAAoB,IAAA,CAAK,SAAA;AAAA,QACxE,KAAA,CAAM;AAAA,OACP,iBAAiB,KAAA,CAAM,UAAU,GAChC,KAAA,CAAM,YAAA,EAAc,MAAA,GAChB,CAAA,iBAAA,EAAoB,KAAA,CAAM,YAAA,CACvB,IAAI,CAAC,KAAA,KAAU,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,EACpC,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA,GACb,EACN,CAAA,GAAA,CAAA;AAAA,IACF,SAAS;AACP,MAAA,MAAM,UAAA,GAAoB,KAAA;AAC1B,MAAA,MAAM,IAAI,kBAAA;AAAA,QACR,CAAA,6BAAA,EAAiC,UAAA,CAAiC,IAAA,IAAQ,SAAS,CAAA,CAAA;AAAA,QACnF,EAAE,SAAS,QAAA;AAAS,OACtB;AAAA,IACF;AAAA;AAEJ;AChUA,SAASA,YAAAA,CACP,OAAA,EACA,KAAA,EACA,IAAA,EACO;AACP,EAAA,MAAM,mBAAmB,OAAA,EAAS;AAAA,IAChC,OAAA,EAAS,YAAA;AAAA,IACT,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB;AAAA,GACD,CAAA;AACH;AAEA,SAASF,gBAAe,MAAA,EAAoC;AAC1D,EAAA,MAAM,KAAA,GACJ,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,KAAU,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,KAAA,EAAM,GAAI,MAAA,CAAO,IAAA,CAAK,KAAA;AAC9E,EAAA,OAAO,KAAA;AACT;AAEA,SAASG,mBAAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EAKA;AACA,EAAA,IAAI,OAAA,GAAU,MAAA;AACd,EAAA,IAAI,QAAA,GAAW,IAAA;AACf,EAAA,IAAI,YAAA;AAEJ,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,QAAQ,OAAA,CAAQ,KAAK,QAAA;AAAU,MAC7B,KAAKF,qBAAAA,CAAsB,WAAA;AACzB,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,OAAA,GAAU,QAAQ,IAAA,CAAK,SAAA;AACvB,QAAA;AAAA,MACF,KAAKA,qBAAAA,CAAsB,UAAA;AACzB,QAAA,QAAA,GAAW,KAAA;AACX,QAAA,YAAA,GAAe,OAAA,CAAQ,KAAK,YAAA,EAAa;AACzC,QAAA,OAAA,GAAU,QAAQ,IAAA,CAAK,SAAA;AACvB,QAAA;AAAA,MACF;AACE,QAAA,OAAO;AAAA,UACL,MAAA,EAAQ,OAAA;AAAA,UACR,QAAA;AAAA,UACA;AAAA,SACF;AAAA;AACJ,EACF;AACF;AAEA,SAASG,YAAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EACY;AACZ,EAAA,IAAI,KAAA,CAAM,eAAA,CAAgB,GAAA,CAAI,MAAM,CAAA,EAAG;AACrC,IAAAF,YAAAA;AAAA,MACE,uEAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,KAAA,CAAM,eAAA,CAAgB,IAAI,MAAM,CAAA;AAChC,EAAA,IAAI;AACF,IAAA,OAAOG,eAAc,MAAA,CAAO,IAAA,CAAK,MAAA,EAAO,EAAG,OAAO,IAAI,CAAA;AAAA,EACxD,CAAA,SAAE;AACA,IAAA,KAAA,CAAM,eAAA,CAAgB,OAAO,MAAM,CAAA;AAAA,EACrC;AACF;AAEA,SAAS,YAAY,KAAA,EAAgB;AACnC,EAAA,QAAQ,OAAO,KAAA;AAAO,IACpB,KAAK,QAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA,GAAI,SAAA,GAAY,QAAA;AAAA,IAC/C,KAAK,SAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT;AACE,MAAA,OAAO,KAAA,KAAU,OAAO,MAAA,GAAS,MAAA;AAAA;AAEvC;AAEA,SAAS,YAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EACW;AACX,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,cAAa,GAAIF,mBAAAA;AAAA,IACpD,MAGF,CAAA;AACA,EAAA,MAAM,KAAA,GAAQE,cAAAA,CAAc,SAAA,EAAW,KAAA,EAAO,IAAI,CAAA;AAClD,EAAA,IAAI,OAAO,UAAU,SAAA,EAAW;AAC9B,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAA,EACE,iBAAiB,MAAA,GAAY,KAAA,GAAQ,EAAE,GAAG,KAAA,EAAO,SAAS,YAAA,EAAa;AAAA,IACzE;AAAA,GACF;AACF;AAEA,SAASA,cAAAA,CACP,MAAA,EACA,KAAA,EACA,IAAA,EACY;AACZ,EAAA,MAAM,OAAA,GAAU,iBAAiB,MAAM,CAAA;AACvC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,QAAA;AAAA,MACN,mBAAA,EAAqB;AAAA,KACvB;AAAA,EACF;AAEA,EAAA,QAAQ,MAAA,CAAO,KAAK,QAAA;AAAU,IAC5B,KAAKJ,qBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,EAAE,MAAM,QAAA,EAAS;AAAA,IAC1B,KAAKA,qBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,EAAE,MAAM,QAAA,EAAS;AAAA,IAC1B,KAAKA,qBAAAA,CAAsB,SAAA;AACzB,MAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,MAAA,EAAQ,OAAA,EAAQ;AAAA,IAC5C,KAAKA,qBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,EAAE,MAAM,SAAA,EAAU;AAAA,IAC3B,KAAKA,qBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,IACxB,KAAKA,qBAAAA,CAAsB,MAAA;AAAA,IAC3B,KAAKA,qBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO,EAAC;AAAA,IACV,KAAKA,qBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,OAAO,IAAA,CAAK,KAAA;AAAA,QACnB,IAAA,EAAM,WAAA,CAAY,MAAA,CAAO,IAAA,CAAK,KAAK;AAAA,OACrC;AAAA,IACF,KAAKA,qBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,OAAO,IAAA,CAAK;AAAA,OACpB;AAAA,IACF,KAAKA,sBAAsB,aAAA,EAAe;AACxC,MAAA,MAAM,MAAA,GAAS,CAAC,GAAG,IAAI,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAAE,MAAA;AAAA,QAC7D,CAAC,UACC,OAAO,KAAA,KAAU,YACjB,OAAO,KAAA,KAAU,QAAA,IACjB,OAAO,KAAA,KAAU;AAAA,OACrB;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAO,KAAA,CAAM,CAAC,UAAU,OAAO,KAAA,KAAU,QAAQ,CAAA,GACnD,QAAA,GACA,QAAA;AAAA,QACJ,IAAA,EAAM;AAAA,OACR;AAAA,IACF;AAAA,IACA,KAAKA,sBAAsB,WAAA,EAAa;AACtC,MAAA,MAAM,QAAQI,cAAAA,CAAc,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,OAAO,IAAI,CAAA;AAC9D,MAAA,OAAO;AAAA,QACL,OAAO,CAAC,KAAA,EAAO,EAAE,IAAA,EAAM,QAAQ;AAAA,OACjC;AAAA,IACF;AAAA,IACA,KAAKJ,qBAAAA,CAAsB,QAAA;AACzB,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAOI,cAAAA,CAAc,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,OAAO,CAAC,GAAG,IAAA,EAAM,IAAI,CAAC;AAAA,OAC/D;AAAA,IACF,KAAKJ,sBAAsB,SAAA,EAAW;AACpC,MAAA,MAAM,YAAA,GAAe,MAAA;AACrB,MAAA,IACE,YAAA,CAAa,KAAK,QAAA,IAClB,YAAA,CAAa,KAAK,QAAA,CAAS,IAAA,CAAK,QAAA,KAAaA,qBAAAA,CAAsB,QAAA,EACnE;AACA,QAAAC,YAAAA;AAAA,UACE,+EAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,MAAM,UAAU,MAAA,CAAO,OAAA,CAAQF,eAAAA,CAAe,YAAY,CAAC,CAAA,CAAE,IAAA;AAAA,QAAK,CAAC,CAAC,CAAC,CAAA,EAAG,CAAC,CAAC,CAAA,KACxE,CAAA,CAAE,aAAA,CAAc,CAAC;AAAA,OACnB;AACA,MAAA,MAAM,YAAY,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAAA,QAC9C,GAAA;AAAA,QACA,aAAa,KAAA,EAAO,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,GAAG,CAAC;AAAA,OACjC,CAAA;AACV,MAAA,MAAM,WAAW,SAAA,CACd,MAAA,CAAO,CAAC,GAAG,KAAK,CAAA,KAAM,KAAA,CAAM,QAAQ,EACpC,GAAA,CAAI,CAAC,CAAC,GAAG,MAAM,GAAG,CAAA;AACrB,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,YAAY,MAAA,CAAO,WAAA;AAAA,UACjB,SAAA,CAAU,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,CAAC,GAAA,EAAK,KAAA,CAAM,MAAM,CAAC;AAAA,SACrD;AAAA,QACA,oBAAA,EAAsB,KAAA;AAAA,QACtB,GAAI,QAAA,CAAS,MAAA,GAAS,IAAI,EAAE,QAAA,KAAa;AAAC,OAC5C;AAAA,IACF;AAAA,IACA,KAAKC,qBAAAA,CAAsB,QAAA;AACzB,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,GAAA;AAAA,UAAI,CAAC,MAAA,EAAoB,KAAA,KAClDI,cAAAA,CAAc,MAAA,EAAQ,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC,CAAC;AAAA;AACvD,OACF;AAAA,IACF,KAAKJ,sBAAsB,qBAAA,EAAuB;AAChD,MAAA,MAAM,kBAAA,GAAqB,MAAA;AAI3B,MAAA,MAAM,OAAA,GACJ,kBAAA,CAAmB,OAAA,YAAmB,GAAA,GAClC,CAAC,GAAG,kBAAA,CAAmB,OAAA,CAAQ,MAAA,EAAQ,CAAA,GACvC,CAAC,GAAG,mBAAmB,OAAO,CAAA;AACpC,MAAA,OAAO;AAAA,QACL,OAAO,OAAA,CAAQ,GAAA;AAAA,UAAI,CAAC,MAAA,EAAQ,KAAA,KAC1BI,cAAAA,CAAc,MAAA,EAAQ,KAAA,EAAO,CAAC,GAAG,IAAA,EAAM,MAAA,CAAO,KAAK,CAAC,CAAC;AAAA;AACvD,OACF;AAAA,IACF;AAAA,IACA,KAAKJ,sBAAsB,SAAA,EAAW;AACpC,MAAA,MAAM,OAAA,GAAU,OAAO,IAAA,CAAK,OAAA;AAC5B,MAAA,IACE,OAAA,IACA,OAAA,CAAQ,IAAA,CAAK,QAAA,KAAaA,sBAAsB,SAAA,EAChD;AACA,QAAAC,YAAAA;AAAA,UACE,kEAAA;AAAA,UACA,KAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,oBAAA,EAAsBG,cAAAA;AAAA,UACpB,OAAO,IAAA,CAAK,SAAA;AAAA,UACZ,KAAA;AAAA,UACA,CAAC,GAAG,IAAA,EAAM,IAAI;AAAA;AAChB,OACF;AAAA,IACF;AAAA,IACA,KAAKJ,qBAAAA,CAAsB,OAAA;AACzB,MAAA,OAAOG,YAAAA,CAAY,MAAA,EAAiC,KAAA,EAAO,IAAI,CAAA;AAAA,IACjE,KAAKH,qBAAAA,CAAsB,UAAA;AACzB,MAAA,OAAOI,cAAAA,CAAc,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,OAAO,IAAI,CAAA;AAAA,IACpD;AACE,MAAAH,YAAAA;AAAA,QACE,CAAA,4BAAA,EAA+B,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,QACnD,KAAA;AAAA,QACA;AAAA,OACF;AAAA;AAEN;AAEO,SAAS,eAAA,CACd,MAAA,EACA,OAAA,GAAkC,EAAC,EACvB;AACZ,EAAA,MAAM,SAAA,GAAYG,eAAc,MAAA,EAAQ;AAAA,IACtC,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,eAAA,sBAAqB,OAAA;AAAgB,GACvC,EAAG,EAAE,CAAA;AACL,EAAA,IAAI,OAAO,cAAc,SAAA,EAAW;AAClC,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,yCAAA;AAAA,IACT,GAAG;AAAA,GACL;AACF","file":"dsl.js","sourcesContent":["import { z, type ZodObject, type ZodRawShape } from \"zod\";\n\nexport type FunctionEffect = \"read\" | \"write\" | \"admin\";\n\nexport type FunctionContract<\n A extends ZodRawShape = ZodRawShape,\n R extends z.ZodTypeAny = z.ZodTypeAny,\n> = {\n name: string;\n args: ZodObject<A>;\n returns: R;\n effects: readonly FunctionEffect[];\n idempotent?: boolean;\n invariants?: readonly string[];\n};\n\nexport function defineFunction<\n A extends ZodRawShape,\n R extends z.ZodTypeAny,\n>(spec: FunctionContract<A, R>): FunctionContract<A, R> {\n return spec;\n}\n","import type { ZodObject, ZodRawShape } from \"zod\";\n\nexport type TableComponent = \"mc\" | \"kernel\" | \"control-plane\" | \"developer-pack\";\n\nexport type TableIndex =\n | {\n kind: \"index\";\n name: string;\n columns: readonly string[];\n }\n | {\n kind: \"search\";\n name: string;\n searchField: string;\n filterFields?: readonly string[];\n }\n | {\n kind: \"vector\";\n name: string;\n vectorField: string;\n dimensions: number;\n filterFields?: readonly string[];\n };\n\nexport type TableDeprecation = {\n since: string;\n reason: string;\n replacement?: string;\n};\n\nexport type TableContract<S extends ZodRawShape = ZodRawShape> = {\n name: string;\n component: TableComponent;\n category: string;\n shape: ZodObject<S>;\n indices: readonly TableIndex[];\n deprecated?: TableDeprecation;\n invariants?: readonly string[];\n};\n\nexport function defineTable<S extends ZodRawShape>(\n spec: TableContract<S>\n): TableContract<S> {\n return spec;\n}\n","export type AdapterKind = \"convex\" | \"jsonschema\" | \"cli\";\n\nexport type AdapterPurpose = \"table\" | \"function_args\" | \"function_returns\";\n\nexport type AdapterContext = {\n adapter: AdapterKind;\n purpose?: AdapterPurpose;\n location?: string;\n path?: readonly string[];\n};\n\nfunction formatPath(path?: readonly string[]) {\n if (!path || path.length === 0) {\n return \"\";\n }\n\n return path.join(\".\");\n}\n\nfunction formatLocation(context: AdapterContext) {\n const segments: string[] = [context.adapter];\n if (context.purpose) {\n segments.push(context.purpose);\n }\n if (context.location) {\n segments.push(context.location);\n }\n const formattedPath = formatPath(context.path);\n if (formattedPath) {\n segments.push(formattedPath);\n }\n return segments.join(\" :: \");\n}\n\nexport class SchemaAdapterError extends Error {\n readonly context: AdapterContext;\n\n constructor(message: string, context: AdapterContext) {\n super(`${message} [${formatLocation(context)}]`);\n this.name = \"SchemaAdapterError\";\n this.context = context;\n }\n}\n\nexport function schemaAdapterError(\n message: string,\n context: AdapterContext\n): SchemaAdapterError {\n return new SchemaAdapterError(message, context);\n}\n","import { z } from \"zod\";\n\nexport const CONVEX_ID_TABLE = Symbol.for(\"lucern.contracts.convexIdTable\");\n\nexport type ConvexIdSchema<T extends string> = z.ZodBranded<\n z.ZodString,\n `Id<${T}>`\n> & {\n readonly [CONVEX_ID_TABLE]: T;\n};\n\nexport function idOf<T extends string>(table: T): ConvexIdSchema<T> {\n const schema = z.string().brand<`Id<${T}>`>();\n Object.defineProperty(schema, CONVEX_ID_TABLE, {\n configurable: false,\n enumerable: false,\n value: table,\n writable: false,\n });\n return schema as ConvexIdSchema<T>;\n}\n\nexport function getConvexIdTable(schema: z.ZodTypeAny): string | undefined {\n return (schema as Partial<Record<typeof CONVEX_ID_TABLE, string>>)[\n CONVEX_ID_TABLE\n ];\n}\n","import { z, ZodFirstPartyTypeKind, type ZodTypeAny } from \"zod\";\nimport { schemaAdapterError } from \"../errors.js\";\n\nexport type CliOptionKind = \"string\" | \"number\" | \"bigint\" | \"boolean\" | \"json\";\n\nexport type CliOptionSpec = {\n name: string;\n kind: CliOptionKind;\n required: boolean;\n variadic?: boolean;\n nullable?: boolean;\n choices?: readonly (string | number | boolean)[];\n defaultValue?: unknown;\n description?: string;\n};\n\nexport type CliCommandSpec = {\n options: readonly CliOptionSpec[];\n};\n\nexport type ZodToCliOptions = {\n location?: string;\n};\n\ntype FieldState = {\n schema: ZodTypeAny;\n required: boolean;\n nullable: boolean;\n defaultValue?: unknown;\n};\n\ntype ConversionState = {\n location?: string;\n seenLazySchemas: WeakSet<object>;\n};\n\nfunction unsupported(\n message: string,\n state: ConversionState,\n path: readonly string[]\n): never {\n throw schemaAdapterError(message, {\n adapter: \"cli\",\n location: state.location,\n path,\n });\n}\n\nfunction getObjectShape(schema: z.ZodObject<z.ZodRawShape>) {\n const shape =\n typeof schema._def.shape === \"function\" ? schema._def.shape() : schema._def.shape;\n return shape as z.ZodRawShape;\n}\n\nfunction unwrapField(\n schema: ZodTypeAny,\n path: readonly string[]\n): FieldState {\n let current = schema;\n let required = true;\n let nullable = false;\n let defaultValue: unknown;\n\n while (true) {\n switch (current._def.typeName) {\n case ZodFirstPartyTypeKind.ZodOptional:\n required = false;\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodDefault:\n required = false;\n defaultValue = current._def.defaultValue();\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodNullable:\n nullable = true;\n current = current._def.innerType;\n continue;\n default:\n return {\n schema: current,\n required,\n nullable,\n defaultValue,\n };\n }\n }\n}\n\nfunction primitiveOption(\n name: string,\n kind: CliOptionKind,\n field: FieldState,\n choices?: readonly (string | number | boolean)[]\n): CliOptionSpec {\n return {\n name,\n kind,\n required: field.required,\n nullable: field.nullable || undefined,\n defaultValue: field.defaultValue,\n choices,\n description: field.schema.description,\n };\n}\n\nfunction optionFromSchema(\n name: string,\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): CliOptionSpec {\n const field = unwrapField(schema, path);\n\n switch (field.schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return primitiveOption(name, \"string\", field);\n case ZodFirstPartyTypeKind.ZodNumber:\n return primitiveOption(name, \"number\", field);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return primitiveOption(name, \"bigint\", field);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return primitiveOption(name, \"boolean\", field);\n case ZodFirstPartyTypeKind.ZodEnum:\n return primitiveOption(name, \"string\", field, field.schema._def.values);\n case ZodFirstPartyTypeKind.ZodNativeEnum: {\n const values = [...new Set(Object.values(field.schema._def.values))].filter(\n (value): value is string | number | boolean =>\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n );\n return primitiveOption(\n name,\n values.every((value) => typeof value === \"number\") ? \"number\" : \"string\",\n field,\n values\n );\n }\n case ZodFirstPartyTypeKind.ZodLiteral:\n return primitiveOption(name, \"string\", field, [field.schema._def.value]);\n case ZodFirstPartyTypeKind.ZodArray: {\n const item = unwrapField(field.schema._def.type, [...path, \"[]\"]);\n switch (item.schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return { ...primitiveOption(name, \"string\", field), variadic: true };\n case ZodFirstPartyTypeKind.ZodNumber:\n return { ...primitiveOption(name, \"number\", field), variadic: true };\n case ZodFirstPartyTypeKind.ZodBigInt:\n return { ...primitiveOption(name, \"bigint\", field), variadic: true };\n case ZodFirstPartyTypeKind.ZodBoolean:\n return { ...primitiveOption(name, \"boolean\", field), variadic: true };\n default:\n return {\n ...primitiveOption(name, \"json\", field),\n variadic: false,\n };\n }\n }\n case ZodFirstPartyTypeKind.ZodLazy: {\n const lazySchema = field.schema as z.ZodLazy<ZodTypeAny>;\n if (state.seenLazySchemas.has(lazySchema)) {\n unsupported(\n \"Recursive z.lazy schemas are not supported by the CLI adapter\",\n state,\n path\n );\n }\n state.seenLazySchemas.add(lazySchema);\n try {\n return optionFromSchema(name, lazySchema._def.getter(), state, path);\n } finally {\n state.seenLazySchemas.delete(lazySchema);\n }\n }\n case ZodFirstPartyTypeKind.ZodBranded:\n return primitiveOption(name, \"string\", field);\n case ZodFirstPartyTypeKind.ZodObject:\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n case ZodFirstPartyTypeKind.ZodRecord:\n case ZodFirstPartyTypeKind.ZodAny:\n case ZodFirstPartyTypeKind.ZodUnknown:\n return primitiveOption(name, \"json\", field);\n default:\n unsupported(\n `Unsupported Zod schema kind ${field.schema._def.typeName}`,\n state,\n path\n );\n }\n}\n\nexport function zodToCli(\n schema: z.ZodObject<z.ZodRawShape>,\n options: ZodToCliOptions = {}\n): CliCommandSpec {\n if (schema._def.typeName !== ZodFirstPartyTypeKind.ZodObject) {\n throw schemaAdapterError(\"CLI generation requires a Zod object schema\", {\n adapter: \"cli\",\n location: options.location,\n path: [],\n });\n }\n\n const state: ConversionState = {\n location: options.location,\n seenLazySchemas: new WeakSet<object>(),\n };\n const optionsList = Object.entries(getObjectShape(schema))\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([name, value]) => optionFromSchema(name, value, state, [name]));\n\n return {\n options: optionsList,\n };\n}\n","import { z, ZodFirstPartyTypeKind, type ZodTypeAny } from \"zod\";\nimport type { TableIndex } from \"../defineTable.js\";\nimport {\n SchemaAdapterError,\n schemaAdapterError,\n type AdapterPurpose,\n} from \"../errors.js\";\nimport { getConvexIdTable } from \"../idOf.js\";\n\nexport type ConvexDefault = {\n path: readonly string[];\n value: unknown;\n};\n\nexport type ZodToConvexOptions = {\n purpose?: AdapterPurpose;\n location?: string;\n};\n\nexport type ZodToConvexResult = {\n source: string;\n defaults: readonly ConvexDefault[];\n};\n\ntype ConversionState = {\n location?: string;\n purpose: AdapterPurpose;\n seenLazySchemas: WeakSet<object>;\n};\n\ntype ConvertedSchema = {\n source: string;\n defaults: ConvexDefault[];\n};\n\nfunction encodeLiteral(value: string | number | bigint | boolean | null) {\n if (typeof value === \"bigint\") {\n return `${value}n`;\n }\n return JSON.stringify(value);\n}\n\nfunction sortEntries<T>(entries: readonly [string, T][]) {\n return [...entries].sort(([left], [right]) => left.localeCompare(right));\n}\n\nfunction getObjectShape(schema: z.ZodObject<z.ZodRawShape>) {\n const shape =\n typeof schema._def.shape === \"function\" ? schema._def.shape() : schema._def.shape;\n return shape as z.ZodRawShape;\n}\n\nfunction unwrapOptionalLike(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): {\n schema: ZodTypeAny;\n isOptional: boolean;\n defaults: ConvexDefault[];\n} {\n const defaults: ConvexDefault[] = [];\n let current = schema;\n let isOptional = false;\n\n while (true) {\n switch (current._def.typeName) {\n case ZodFirstPartyTypeKind.ZodOptional:\n isOptional = true;\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodDefault: {\n if (state.purpose === \"table\") {\n throw schemaAdapterError(\n \"Zod defaults are not allowed in table contracts\",\n {\n adapter: \"convex\",\n purpose: state.purpose,\n location: state.location,\n path,\n }\n );\n }\n isOptional = true;\n defaults.push({\n path,\n value: current._def.defaultValue(),\n });\n current = current._def.innerType;\n continue;\n }\n default:\n return {\n schema: current,\n isOptional,\n defaults,\n };\n }\n }\n}\n\nfunction convertSchema(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): ConvertedSchema {\n const { schema: unwrapped, isOptional, defaults } = unwrapOptionalLike(\n schema,\n state,\n path\n );\n const converted = convertSchemaInner(unwrapped, state, path);\n return {\n source: isOptional ? `v.optional(${converted.source})` : converted.source,\n defaults: [...defaults, ...converted.defaults],\n };\n}\n\nfunction enumToUnion(values: readonly (string | number)[]) {\n if (values.length === 0) {\n return \"v.never()\";\n }\n if (values.length === 1) {\n return `v.literal(${encodeLiteral(values[0])})`;\n }\n return `v.union(${values\n .map((value) => `v.literal(${encodeLiteral(value)})`)\n .join(\", \")})`;\n}\n\nfunction unsupported(\n message: string,\n state: ConversionState,\n path: readonly string[]\n): never {\n throw schemaAdapterError(message, {\n adapter: \"convex\",\n purpose: state.purpose,\n location: state.location,\n path,\n });\n}\n\nfunction convertLazy(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): ConvertedSchema {\n const lazySchema = schema as z.ZodLazy<ZodTypeAny>;\n if (state.seenLazySchemas.has(lazySchema)) {\n unsupported(\n \"Recursive z.lazy schemas are not supported by the Convex adapter\",\n state,\n path\n );\n }\n state.seenLazySchemas.add(lazySchema);\n try {\n return convertSchema(lazySchema._def.getter(), state, path);\n } finally {\n state.seenLazySchemas.delete(lazySchema);\n }\n}\n\nfunction convertSchemaInner(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): ConvertedSchema {\n const idTable = getConvexIdTable(schema);\n if (idTable) {\n return {\n source: `v.id(${JSON.stringify(idTable)})`,\n defaults: [],\n };\n }\n\n switch (schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return { source: \"v.string()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodNumber:\n return { source: \"v.number()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodBigInt:\n return { source: \"v.int64()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodBoolean:\n return { source: \"v.boolean()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodNull:\n return { source: \"v.null()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodAny:\n case ZodFirstPartyTypeKind.ZodUnknown:\n return { source: \"v.any()\", defaults: [] };\n case ZodFirstPartyTypeKind.ZodLiteral: {\n return {\n source: `v.literal(${encodeLiteral(schema._def.value)})`,\n defaults: [],\n };\n }\n case ZodFirstPartyTypeKind.ZodEnum:\n return {\n source: enumToUnion(schema._def.values),\n defaults: [],\n };\n case ZodFirstPartyTypeKind.ZodNativeEnum: {\n const values = Object.values(schema._def.values).filter(\n (value): value is string | number =>\n typeof value === \"string\" || typeof value === \"number\"\n );\n return {\n source: enumToUnion([...new Set(values)]),\n defaults: [],\n };\n }\n case ZodFirstPartyTypeKind.ZodNullable: {\n const inner = convertSchema(schema._def.innerType, state, path);\n return {\n source: `v.nullable(${inner.source})`,\n defaults: inner.defaults,\n };\n }\n case ZodFirstPartyTypeKind.ZodArray: {\n const inner = convertSchema(schema._def.type, state, [...path, \"[]\"]);\n return {\n source: `v.array(${inner.source})`,\n defaults: inner.defaults,\n };\n }\n case ZodFirstPartyTypeKind.ZodObject: {\n const objectSchema = schema as z.ZodObject<z.ZodRawShape>;\n if (\n objectSchema._def.catchall &&\n objectSchema._def.catchall._def.typeName !== ZodFirstPartyTypeKind.ZodNever\n ) {\n unsupported(\n \"Zod objects with catchall/passthrough fields cannot be lowered to Convex validators\",\n state,\n path\n );\n }\n const fields = sortEntries(Object.entries(getObjectShape(objectSchema)));\n const convertedFields = fields.map(([key, value]) => [\n key,\n convertSchema(value, state, [...path, key]),\n ] as const);\n return {\n source: `v.object({ ${convertedFields\n .map(([key, converted]) => `${JSON.stringify(key)}: ${converted.source}`)\n .join(\", \")} })`,\n defaults: convertedFields.flatMap(([, converted]) => converted.defaults),\n };\n }\n case ZodFirstPartyTypeKind.ZodUnion: {\n const members = schema._def.options.map((option: ZodTypeAny, index: number) =>\n convertSchema(option, state, [...path, String(index)])\n );\n return {\n source: `v.union(${members\n .map((member: ConvertedSchema) => member.source)\n .join(\", \")})`,\n defaults: members.flatMap((member: ConvertedSchema) => member.defaults),\n };\n }\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {\n const discriminatedUnion = schema as z.ZodDiscriminatedUnion<\n string,\n [z.ZodObject<z.ZodRawShape>, ...z.ZodObject<z.ZodRawShape>[]]\n >;\n const options =\n discriminatedUnion.options instanceof Map\n ? [...discriminatedUnion.options.values()]\n : [...discriminatedUnion.options];\n const members = options.map((option, index) =>\n convertSchema(option, state, [...path, String(index)])\n );\n return {\n source: `v.union(${members\n .map((member: ConvertedSchema) => member.source)\n .join(\", \")})`,\n defaults: members.flatMap((member: ConvertedSchema) => member.defaults),\n };\n }\n case ZodFirstPartyTypeKind.ZodRecord: {\n const keyType = schema._def.keyType;\n if (\n keyType &&\n keyType._def.typeName !== ZodFirstPartyTypeKind.ZodString\n ) {\n unsupported(\n \"Only string-keyed z.record schemas can be lowered to Convex validators\",\n state,\n path\n );\n }\n const value = convertSchema(schema._def.valueType, state, [...path, \"{}\"]);\n return {\n source: `v.record(v.string(), ${value.source})`,\n defaults: value.defaults,\n };\n }\n case ZodFirstPartyTypeKind.ZodLazy:\n return convertLazy(schema, state, path);\n case ZodFirstPartyTypeKind.ZodBranded: {\n return convertSchema(schema._def.type, state, path);\n }\n case ZodFirstPartyTypeKind.ZodEffects: {\n return convertSchema(schema._def.schema, state, path);\n }\n default:\n unsupported(`Unsupported Zod schema kind ${schema._def.typeName}`, state, path);\n }\n}\n\nexport function zodToConvex(\n schema: ZodTypeAny,\n options: ZodToConvexOptions = {}\n): ZodToConvexResult {\n const state: ConversionState = {\n location: options.location,\n purpose: options.purpose ?? \"function_returns\",\n seenLazySchemas: new WeakSet<object>(),\n };\n const converted = convertSchema(schema, state, []);\n return {\n source: converted.source,\n defaults: converted.defaults,\n };\n}\n\nexport function tableIndexToConvexSource(index: TableIndex): string {\n switch (index.kind) {\n case \"index\":\n return `.index(${JSON.stringify(index.name)}, [${index.columns\n .map((column) => JSON.stringify(column))\n .join(\", \")}])`;\n case \"search\":\n return `.searchIndex(${JSON.stringify(index.name)}, { searchField: ${JSON.stringify(\n index.searchField\n )}${index.filterFields?.length ? `, filterFields: [${index.filterFields\n .map((field) => JSON.stringify(field))\n .join(\", \")}]` : \"\"} })`;\n case \"vector\":\n return `.vectorIndex(${JSON.stringify(index.name)}, { vectorField: ${JSON.stringify(\n index.vectorField\n )}, dimensions: ${index.dimensions}${\n index.filterFields?.length\n ? `, filterFields: [${index.filterFields\n .map((field) => JSON.stringify(field))\n .join(\", \")}]`\n : \"\"\n } })`;\n default: {\n const exhaustive: never = index;\n throw new SchemaAdapterError(\n `Unsupported table index kind ${(exhaustive as { kind?: string }).kind ?? \"unknown\"}`,\n { adapter: \"convex\" }\n );\n }\n }\n}\n","import { z, ZodFirstPartyTypeKind, type ZodTypeAny } from \"zod\";\nimport { schemaAdapterError } from \"../errors.js\";\nimport { getConvexIdTable } from \"../idOf.js\";\n\nexport type JsonSchema =\n | boolean\n | {\n $schema?: string;\n type?: string | readonly string[];\n properties?: Record<string, JsonSchema>;\n required?: readonly string[];\n additionalProperties?: boolean | JsonSchema;\n items?: JsonSchema;\n enum?: readonly (string | number | boolean)[];\n const?: string | number | boolean | null;\n anyOf?: readonly JsonSchema[];\n oneOf?: readonly JsonSchema[];\n default?: unknown;\n format?: string;\n description?: string;\n [key: string]: unknown;\n };\n\nexport type ZodToJsonSchemaOptions = {\n location?: string;\n};\n\ntype JsonField = {\n schema: JsonSchema;\n required: boolean;\n};\n\ntype ConversionState = {\n location?: string;\n seenLazySchemas: WeakSet<object>;\n};\n\nfunction unsupported(\n message: string,\n state: ConversionState,\n path: readonly string[]\n): never {\n throw schemaAdapterError(message, {\n adapter: \"jsonschema\",\n location: state.location,\n path,\n });\n}\n\nfunction getObjectShape(schema: z.ZodObject<z.ZodRawShape>) {\n const shape =\n typeof schema._def.shape === \"function\" ? schema._def.shape() : schema._def.shape;\n return shape as z.ZodRawShape;\n}\n\nfunction unwrapOptionalLike(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): {\n schema: ZodTypeAny;\n required: boolean;\n defaultValue?: unknown;\n} {\n let current = schema;\n let required = true;\n let defaultValue: unknown;\n\n while (true) {\n switch (current._def.typeName) {\n case ZodFirstPartyTypeKind.ZodOptional:\n required = false;\n current = current._def.innerType;\n continue;\n case ZodFirstPartyTypeKind.ZodDefault:\n required = false;\n defaultValue = current._def.defaultValue();\n current = current._def.innerType;\n continue;\n default:\n return {\n schema: current,\n required,\n defaultValue,\n };\n }\n }\n}\n\nfunction convertLazy(\n schema: z.ZodLazy<ZodTypeAny>,\n state: ConversionState,\n path: readonly string[]\n): JsonSchema {\n if (state.seenLazySchemas.has(schema)) {\n unsupported(\n \"Recursive z.lazy schemas are not supported by the JSON Schema adapter\",\n state,\n path\n );\n }\n state.seenLazySchemas.add(schema);\n try {\n return convertSchema(schema._def.getter(), state, path);\n } finally {\n state.seenLazySchemas.delete(schema);\n }\n}\n\nfunction literalType(value: unknown) {\n switch (typeof value) {\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isInteger(value) ? \"integer\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"bigint\":\n return \"integer\";\n default:\n return value === null ? \"null\" : undefined;\n }\n}\n\nfunction convertField(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): JsonField {\n const { schema: unwrapped, required, defaultValue } = unwrapOptionalLike(\n schema,\n state,\n path\n );\n const field = convertSchema(unwrapped, state, path);\n if (typeof field === \"boolean\") {\n return {\n schema: field,\n required,\n };\n }\n return {\n schema:\n defaultValue === undefined ? field : { ...field, default: defaultValue },\n required,\n };\n}\n\nfunction convertSchema(\n schema: ZodTypeAny,\n state: ConversionState,\n path: readonly string[]\n): JsonSchema {\n const idTable = getConvexIdTable(schema);\n if (idTable) {\n return {\n type: \"string\",\n \"x-convex-id-table\": idTable,\n };\n }\n\n switch (schema._def.typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return { type: \"string\" };\n case ZodFirstPartyTypeKind.ZodNumber:\n return { type: \"number\" };\n case ZodFirstPartyTypeKind.ZodBigInt:\n return { type: \"integer\", format: \"int64\" };\n case ZodFirstPartyTypeKind.ZodBoolean:\n return { type: \"boolean\" };\n case ZodFirstPartyTypeKind.ZodNull:\n return { type: \"null\" };\n case ZodFirstPartyTypeKind.ZodAny:\n case ZodFirstPartyTypeKind.ZodUnknown:\n return {};\n case ZodFirstPartyTypeKind.ZodLiteral:\n return {\n const: schema._def.value,\n type: literalType(schema._def.value),\n };\n case ZodFirstPartyTypeKind.ZodEnum:\n return {\n type: \"string\",\n enum: schema._def.values,\n };\n case ZodFirstPartyTypeKind.ZodNativeEnum: {\n const values = [...new Set(Object.values(schema._def.values))].filter(\n (value): value is string | number | boolean =>\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n );\n return {\n type: values.every((value) => typeof value === \"number\")\n ? \"number\"\n : \"string\",\n enum: values,\n };\n }\n case ZodFirstPartyTypeKind.ZodNullable: {\n const inner = convertSchema(schema._def.innerType, state, path);\n return {\n anyOf: [inner, { type: \"null\" }],\n };\n }\n case ZodFirstPartyTypeKind.ZodArray:\n return {\n type: \"array\",\n items: convertSchema(schema._def.type, state, [...path, \"[]\"]),\n };\n case ZodFirstPartyTypeKind.ZodObject: {\n const objectSchema = schema as z.ZodObject<z.ZodRawShape>;\n if (\n objectSchema._def.catchall &&\n objectSchema._def.catchall._def.typeName !== ZodFirstPartyTypeKind.ZodNever\n ) {\n unsupported(\n \"Zod objects with catchall/passthrough fields cannot be lowered to JSON Schema\",\n state,\n path\n );\n }\n const entries = Object.entries(getObjectShape(objectSchema)).sort(([a], [b]) =>\n a.localeCompare(b)\n );\n const converted = entries.map(([key, value]) => [\n key,\n convertField(value, state, [...path, key]),\n ] as const);\n const required = converted\n .filter(([, field]) => field.required)\n .map(([key]) => key);\n return {\n type: \"object\",\n properties: Object.fromEntries(\n converted.map(([key, field]) => [key, field.schema])\n ),\n additionalProperties: false,\n ...(required.length > 0 ? { required } : {}),\n };\n }\n case ZodFirstPartyTypeKind.ZodUnion:\n return {\n anyOf: schema._def.options.map((option: ZodTypeAny, index: number) =>\n convertSchema(option, state, [...path, String(index)])\n ),\n };\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion: {\n const discriminatedUnion = schema as z.ZodDiscriminatedUnion<\n string,\n [z.ZodObject<z.ZodRawShape>, ...z.ZodObject<z.ZodRawShape>[]]\n >;\n const options =\n discriminatedUnion.options instanceof Map\n ? [...discriminatedUnion.options.values()]\n : [...discriminatedUnion.options];\n return {\n oneOf: options.map((option, index) =>\n convertSchema(option, state, [...path, String(index)])\n ),\n };\n }\n case ZodFirstPartyTypeKind.ZodRecord: {\n const keyType = schema._def.keyType;\n if (\n keyType &&\n keyType._def.typeName !== ZodFirstPartyTypeKind.ZodString\n ) {\n unsupported(\n \"Only string-keyed z.record schemas can be lowered to JSON Schema\",\n state,\n path\n );\n }\n return {\n type: \"object\",\n additionalProperties: convertSchema(\n schema._def.valueType,\n state,\n [...path, \"{}\"]\n ),\n };\n }\n case ZodFirstPartyTypeKind.ZodLazy:\n return convertLazy(schema as z.ZodLazy<ZodTypeAny>, state, path);\n case ZodFirstPartyTypeKind.ZodBranded:\n return convertSchema(schema._def.type, state, path);\n default:\n unsupported(\n `Unsupported Zod schema kind ${schema._def.typeName}`,\n state,\n path\n );\n }\n}\n\nexport function zodToJsonSchema(\n schema: ZodTypeAny,\n options: ZodToJsonSchemaOptions = {}\n): JsonSchema {\n const converted = convertSchema(schema, {\n location: options.location,\n seenLazySchemas: new WeakSet<object>(),\n }, []);\n if (typeof converted === \"boolean\") {\n return converted;\n }\n return {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n ...converted,\n };\n}\n"]}
@@ -0,0 +1,133 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const GRAPH_REF_NODE_TYPES: readonly ["decision", "belief", "question", "theme", "deal", "topic", "claim", "evidence", "synthesis", "answer", "atomic_fact", "excerpt", "source", "company", "person", "investor", "function", "value_chain", "edge", "ontology", "lens", "contradiction"];
4
+ declare const EpistemicNodeTypeSchema: z.ZodEnum<["function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain", ...("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[]]>;
5
+ type EpistemicNodeType = z.infer<typeof EpistemicNodeTypeSchema>;
6
+ type GraphRef = {
7
+ kind: "epistemic_node";
8
+ nodeId: string;
9
+ nodeType: EpistemicNodeType;
10
+ } | {
11
+ kind: "external_belief";
12
+ ref: {
13
+ tenantId: string;
14
+ beliefId: string;
15
+ };
16
+ };
17
+ declare const GraphRefSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
18
+ kind: z.ZodLiteral<"epistemic_node">;
19
+ nodeId: z.ZodString;
20
+ nodeType: z.ZodEnum<["function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain", ...("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[]]>;
21
+ }, "strip", z.ZodTypeAny, {
22
+ kind: "epistemic_node";
23
+ nodeId: string;
24
+ nodeType: "function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain";
25
+ }, {
26
+ kind: "epistemic_node";
27
+ nodeId: string;
28
+ nodeType: "function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain";
29
+ }>, z.ZodObject<{
30
+ kind: z.ZodLiteral<"external_belief">;
31
+ ref: z.ZodObject<{
32
+ tenantId: z.ZodString;
33
+ beliefId: z.ZodString;
34
+ }, "strip", z.ZodTypeAny, {
35
+ tenantId: string;
36
+ beliefId: string;
37
+ }, {
38
+ tenantId: string;
39
+ beliefId: string;
40
+ }>;
41
+ }, "strip", z.ZodTypeAny, {
42
+ kind: "external_belief";
43
+ ref: {
44
+ tenantId: string;
45
+ beliefId: string;
46
+ };
47
+ }, {
48
+ kind: "external_belief";
49
+ ref: {
50
+ tenantId: string;
51
+ beliefId: string;
52
+ };
53
+ }>]>;
54
+
55
+ declare const EdgePolicyEntrySchema: z.ZodObject<{
56
+ edgeType: z.ZodString;
57
+ fromKinds: z.ZodArray<z.ZodEnum<["epistemic_node", "external_belief"]>, "many">;
58
+ fromNodeTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain", ...("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[]]>, "many">>;
59
+ toKinds: z.ZodArray<z.ZodEnum<["epistemic_node", "external_belief"]>, "many">;
60
+ toNodeTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain", ...("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[]]>, "many">>;
61
+ description: z.ZodString;
62
+ }, "strip", z.ZodTypeAny, {
63
+ description: string;
64
+ edgeType: string;
65
+ fromKinds: ("epistemic_node" | "external_belief")[];
66
+ toKinds: ("epistemic_node" | "external_belief")[];
67
+ fromNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
68
+ toNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
69
+ }, {
70
+ description: string;
71
+ edgeType: string;
72
+ fromKinds: ("epistemic_node" | "external_belief")[];
73
+ toKinds: ("epistemic_node" | "external_belief")[];
74
+ fromNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
75
+ toNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
76
+ }>;
77
+ declare const EdgePolicyManifestSchema: z.ZodObject<{
78
+ manifestVersion: z.ZodLiteral<"1.0.0">;
79
+ policies: z.ZodArray<z.ZodObject<{
80
+ edgeType: z.ZodString;
81
+ fromKinds: z.ZodArray<z.ZodEnum<["epistemic_node", "external_belief"]>, "many">;
82
+ fromNodeTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain", ...("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[]]>, "many">>;
83
+ toKinds: z.ZodArray<z.ZodEnum<["epistemic_node", "external_belief"]>, "many">;
84
+ toNodeTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<["function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain", ...("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[]]>, "many">>;
85
+ description: z.ZodString;
86
+ }, "strip", z.ZodTypeAny, {
87
+ description: string;
88
+ edgeType: string;
89
+ fromKinds: ("epistemic_node" | "external_belief")[];
90
+ toKinds: ("epistemic_node" | "external_belief")[];
91
+ fromNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
92
+ toNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
93
+ }, {
94
+ description: string;
95
+ edgeType: string;
96
+ fromKinds: ("epistemic_node" | "external_belief")[];
97
+ toKinds: ("epistemic_node" | "external_belief")[];
98
+ fromNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
99
+ toNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
100
+ }>, "many">;
101
+ }, "strip", z.ZodTypeAny, {
102
+ policies: {
103
+ description: string;
104
+ edgeType: string;
105
+ fromKinds: ("epistemic_node" | "external_belief")[];
106
+ toKinds: ("epistemic_node" | "external_belief")[];
107
+ fromNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
108
+ toNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
109
+ }[];
110
+ manifestVersion: "1.0.0";
111
+ }, {
112
+ policies: {
113
+ description: string;
114
+ edgeType: string;
115
+ fromKinds: ("epistemic_node" | "external_belief")[];
116
+ toKinds: ("epistemic_node" | "external_belief")[];
117
+ fromNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
118
+ toNodeTypes?: ("function" | "belief" | "evidence" | "question" | "edge" | "contradiction" | "topic" | "ontology" | "source" | "lens" | "decision" | "claim" | "answer" | "theme" | "deal" | "synthesis" | "atomic_fact" | "excerpt" | "company" | "person" | "investor" | "value_chain")[] | undefined;
119
+ }[];
120
+ manifestVersion: "1.0.0";
121
+ }>;
122
+ type EdgePolicyEntry = z.infer<typeof EdgePolicyEntrySchema>;
123
+ type EdgePolicyManifest = z.infer<typeof EdgePolicyManifestSchema>;
124
+ type EdgePolicyViolation = {
125
+ code: "POLICY_VIOLATION";
126
+ edgeType: string;
127
+ from: GraphRef;
128
+ to: GraphRef;
129
+ };
130
+ declare function findEdgePolicy(manifest: EdgePolicyManifest, edgeType: string): EdgePolicyEntry | undefined;
131
+ declare function assertEdgePolicyAllowed(manifest: EdgePolicyManifest, edgeType: string, from: GraphRef, to: GraphRef): void;
132
+
133
+ export { type EdgePolicyEntry as E, GRAPH_REF_NODE_TYPES as G, EdgePolicyEntrySchema as a, type EdgePolicyManifest as b, EdgePolicyManifestSchema as c, type EdgePolicyViolation as d, type EpistemicNodeType as e, EpistemicNodeTypeSchema as f, type GraphRef as g, GraphRefSchema as h, assertEdgePolicyAllowed as i, findEdgePolicy as j };