@lucern/contracts 0.3.0-alpha.10 → 0.3.0-alpha.12

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 (234) hide show
  1. package/dist/api-enums.contract.d.ts +5 -3
  2. package/dist/api-enums.contract.js +14 -12
  3. package/dist/api-enums.contract.js.map +1 -1
  4. package/dist/component-boundary.contract.d.ts +1 -1
  5. package/dist/component-boundary.contract.js +45 -26
  6. package/dist/component-boundary.contract.js.map +1 -1
  7. package/dist/component-host-boundary.contract.d.ts +10 -5
  8. package/dist/component-host-boundary.contract.js +10 -4
  9. package/dist/component-host-boundary.contract.js.map +1 -1
  10. package/dist/{defineTable-CBQ03FXl.d.ts → defineTable-t1wr5wgn.d.ts} +1 -1
  11. package/dist/{dsl-djCRfuWC.d.ts → dsl-DVPthQGY.d.ts} +1 -1
  12. package/dist/dsl.d.ts +2 -2
  13. package/dist/dsl.js.map +1 -1
  14. package/dist/function-registry/beliefs.d.ts +13 -0
  15. package/dist/function-registry/beliefs.js +50 -7
  16. package/dist/function-registry/beliefs.js.map +1 -1
  17. package/dist/function-registry/coding.d.ts +9 -0
  18. package/dist/function-registry/coding.js +117 -8
  19. package/dist/function-registry/coding.js.map +1 -1
  20. package/dist/function-registry/context.d.ts +6 -0
  21. package/dist/function-registry/context.js +50 -7
  22. package/dist/function-registry/context.js.map +1 -1
  23. package/dist/function-registry/contracts.d.ts +6 -0
  24. package/dist/function-registry/contracts.js +50 -7
  25. package/dist/function-registry/contracts.js.map +1 -1
  26. package/dist/function-registry/coordination.d.ts +12 -0
  27. package/dist/function-registry/coordination.js +50 -7
  28. package/dist/function-registry/coordination.js.map +1 -1
  29. package/dist/function-registry/edges.d.ts +9 -0
  30. package/dist/function-registry/edges.js +54 -14
  31. package/dist/function-registry/edges.js.map +1 -1
  32. package/dist/function-registry/evidence.d.ts +11 -0
  33. package/dist/function-registry/evidence.js +53 -11
  34. package/dist/function-registry/evidence.js.map +1 -1
  35. package/dist/function-registry/graph.d.ts +18 -0
  36. package/dist/function-registry/graph.js +50 -7
  37. package/dist/function-registry/graph.js.map +1 -1
  38. package/dist/function-registry/helpers.d.ts +4 -1
  39. package/dist/function-registry/helpers.js +51 -8
  40. package/dist/function-registry/helpers.js.map +1 -1
  41. package/dist/function-registry/identity.d.ts +6 -0
  42. package/dist/function-registry/identity.js +50 -7
  43. package/dist/function-registry/identity.js.map +1 -1
  44. package/dist/function-registry/index.d.ts +8 -320
  45. package/dist/function-registry/index.js +54 -384
  46. package/dist/function-registry/index.js.map +1 -1
  47. package/dist/function-registry/judgments.d.ts +5 -0
  48. package/dist/function-registry/judgments.js +50 -7
  49. package/dist/function-registry/judgments.js.map +1 -1
  50. package/dist/function-registry/legacy.d.ts +4 -0
  51. package/dist/function-registry/legacy.js +50 -7
  52. package/dist/function-registry/legacy.js.map +1 -1
  53. package/dist/function-registry/lenses.d.ts +7 -0
  54. package/dist/function-registry/lenses.js +50 -7
  55. package/dist/function-registry/lenses.js.map +1 -1
  56. package/dist/function-registry/nodes.d.ts +412 -0
  57. package/dist/function-registry/nodes.js +5303 -0
  58. package/dist/function-registry/nodes.js.map +1 -0
  59. package/dist/function-registry/ontologies.d.ts +14 -0
  60. package/dist/function-registry/ontologies.js +50 -7
  61. package/dist/function-registry/ontologies.js.map +1 -1
  62. package/dist/function-registry/pipeline.d.ts +6 -0
  63. package/dist/function-registry/pipeline.js +50 -7
  64. package/dist/function-registry/pipeline.js.map +1 -1
  65. package/dist/function-registry/questions.d.ts +15 -0
  66. package/dist/function-registry/questions.js +50 -7
  67. package/dist/function-registry/questions.js.map +1 -1
  68. package/dist/function-registry/tasks.d.ts +7 -0
  69. package/dist/function-registry/tasks.js +69 -16
  70. package/dist/function-registry/tasks.js.map +1 -1
  71. package/dist/function-registry/topics.d.ts +10 -0
  72. package/dist/function-registry/topics.js +50 -7
  73. package/dist/function-registry/topics.js.map +1 -1
  74. package/dist/function-registry/types.d.ts +5 -1
  75. package/dist/function-registry/worktrees.d.ts +14 -0
  76. package/dist/function-registry/worktrees.js +50 -7
  77. package/dist/function-registry/worktrees.js.map +1 -1
  78. package/dist/gateway.contract.d.ts +3 -0
  79. package/dist/gateway.contract.js.map +1 -1
  80. package/dist/generated/convexSchemas.d.ts +3 -3
  81. package/dist/generated/convexSchemas.js +35 -16
  82. package/dist/generated/convexSchemas.js.map +1 -1
  83. package/dist/generated/infisicalRuntimeEnv.d.ts +70 -0
  84. package/dist/generated/infisicalRuntimeEnv.js +26818 -0
  85. package/dist/generated/infisicalRuntimeEnv.js.map +1 -0
  86. package/dist/generated/lucernGatewayEnv.d.ts +17 -0
  87. package/dist/generated/lucernGatewayEnv.js +38 -0
  88. package/dist/generated/lucernGatewayEnv.js.map +1 -0
  89. package/dist/generated/lucernWebPublicEnv.d.ts +26 -0
  90. package/dist/generated/lucernWebPublicEnv.js +32 -0
  91. package/dist/generated/lucernWebPublicEnv.js.map +1 -0
  92. package/dist/generated/lucernWebServerEnv.d.ts +33 -0
  93. package/dist/generated/lucernWebServerEnv.js +51 -0
  94. package/dist/generated/lucernWebServerEnv.js.map +1 -0
  95. package/dist/generated/schema-manifest.json +1165 -150
  96. package/dist/generated/tableOwnership.d.ts +46 -27
  97. package/dist/generated/tableOwnership.js +64 -26
  98. package/dist/generated/tableOwnership.js.map +1 -1
  99. package/dist/generated/tier-expectations.json +60 -8
  100. package/dist/{index-O09U2xHk.d.ts → index-CM1Pl_vI.d.ts} +3 -3
  101. package/dist/index.d.ts +9 -4
  102. package/dist/index.js +31371 -381
  103. package/dist/index.js.map +1 -1
  104. package/dist/infisical-runtime.contract.d.ts +1623 -3
  105. package/dist/infisical-runtime.contract.js +2819 -12
  106. package/dist/infisical-runtime.contract.js.map +1 -1
  107. package/dist/manifests/infisical-runtime-manifest.d.ts +1550 -3
  108. package/dist/manifests/infisical-runtime-manifest.js +2672 -9
  109. package/dist/manifests/infisical-runtime-manifest.js.map +1 -1
  110. package/dist/manifests/tenant-client-manifest.d.ts +11 -11
  111. package/dist/manifests/tenant-client-manifest.js +11 -11
  112. package/dist/manifests/tenant-client-manifest.js.map +1 -1
  113. package/dist/mcp-gateway-boundary.contract.d.ts +23 -3
  114. package/dist/mcp-gateway-boundary.contract.js +2 -0
  115. package/dist/mcp-gateway-boundary.contract.js.map +1 -1
  116. package/dist/permit-principal-projection.contract.d.ts +74 -0
  117. package/dist/permit-principal-projection.contract.js +161 -0
  118. package/dist/permit-principal-projection.contract.js.map +1 -0
  119. package/dist/projections/check-convex-args-shape.js +10 -6
  120. package/dist/projections/check-convex-args-shape.js.map +1 -1
  121. package/dist/projections/create-evidence.projection.d.ts +6 -6
  122. package/dist/projections/create-evidence.projection.js +2 -3
  123. package/dist/projections/create-evidence.projection.js.map +1 -1
  124. package/dist/projections/index.d.ts +3 -3
  125. package/dist/projections/index.js +10 -6
  126. package/dist/projections/index.js.map +1 -1
  127. package/dist/projections/list-tasks.projection.d.ts +20 -8
  128. package/dist/projections/list-tasks.projection.js +8 -3
  129. package/dist/projections/list-tasks.projection.js.map +1 -1
  130. package/dist/proof-attestation.json +45 -0
  131. package/dist/schemas/component-table-manifest.d.ts +6 -6
  132. package/dist/schemas/component-table-manifest.js +2 -2
  133. package/dist/schemas/component-table-manifest.js.map +1 -1
  134. package/dist/schemas/index.d.ts +2 -2
  135. package/dist/schemas/index.js +1088 -137
  136. package/dist/schemas/index.js.map +1 -1
  137. package/dist/schemas/manifest.d.ts +2010 -120
  138. package/dist/schemas/manifest.js +1086 -135
  139. package/dist/schemas/manifest.js.map +1 -1
  140. package/dist/schemas/tables/controlPlane/accessControl.d.ts +260 -0
  141. package/dist/schemas/tables/controlPlane/accessControl.js +655 -0
  142. package/dist/schemas/tables/controlPlane/accessControl.js.map +1 -0
  143. package/dist/schemas/tables/{identity → controlPlane}/agent.d.ts +1 -1
  144. package/dist/schemas/tables/{identity → controlPlane}/agent.js +3 -3
  145. package/dist/schemas/tables/controlPlane/agent.js.map +1 -0
  146. package/dist/schemas/tables/{identity → controlPlane}/epistemic.d.ts +1 -1
  147. package/dist/schemas/tables/{identity → controlPlane}/epistemic.js +3 -3
  148. package/dist/schemas/tables/controlPlane/epistemic.js.map +1 -0
  149. package/dist/schemas/tables/{identity → controlPlane}/model.d.ts +1 -1
  150. package/dist/schemas/tables/{identity → controlPlane}/model.js +6 -6
  151. package/dist/schemas/tables/controlPlane/model.js.map +1 -0
  152. package/dist/schemas/tables/{identity → controlPlane}/platform.d.ts +1 -1
  153. package/dist/schemas/tables/{identity → controlPlane}/platform.js +18 -18
  154. package/dist/schemas/tables/controlPlane/platform.js.map +1 -0
  155. package/dist/schemas/tables/{identity → controlPlane}/project.d.ts +1 -1
  156. package/dist/schemas/tables/{identity → controlPlane}/project.js +3 -3
  157. package/dist/schemas/tables/controlPlane/project.js.map +1 -0
  158. package/dist/schemas/tables/{identity → controlPlane}/user.d.ts +1 -1
  159. package/dist/schemas/tables/{identity → controlPlane}/user.js +3 -3
  160. package/dist/schemas/tables/controlPlane/user.js.map +1 -0
  161. package/dist/schemas/tables/kernel/config.d.ts +1 -1
  162. package/dist/schemas/tables/kernel/config.js.map +1 -1
  163. package/dist/schemas/tables/kernel/coordination.d.ts +1 -1
  164. package/dist/schemas/tables/kernel/coordination.js.map +1 -1
  165. package/dist/schemas/tables/kernel/decision.d.ts +1 -1
  166. package/dist/schemas/tables/kernel/decision.js.map +1 -1
  167. package/dist/schemas/tables/kernel/embedding.d.ts +1 -1
  168. package/dist/schemas/tables/kernel/embedding.js.map +1 -1
  169. package/dist/schemas/tables/kernel/epistemic.d.ts +1 -1
  170. package/dist/schemas/tables/kernel/epistemic.js.map +1 -1
  171. package/dist/schemas/tables/kernel/idempotency.d.ts +1 -1
  172. package/dist/schemas/tables/kernel/idempotency.js.map +1 -1
  173. package/dist/schemas/tables/kernel/infra.d.ts +1 -1
  174. package/dist/schemas/tables/kernel/infra.js.map +1 -1
  175. package/dist/schemas/tables/kernel/intelligence.d.ts +1 -1
  176. package/dist/schemas/tables/kernel/intelligence.js.map +1 -1
  177. package/dist/schemas/tables/kernel/lens.d.ts +1 -1
  178. package/dist/schemas/tables/kernel/lens.js.map +1 -1
  179. package/dist/schemas/tables/kernel/ontology.d.ts +1 -1
  180. package/dist/schemas/tables/kernel/ontology.js.map +1 -1
  181. package/dist/schemas/tables/kernel/platform.d.ts +1 -1
  182. package/dist/schemas/tables/kernel/platform.js.map +1 -1
  183. package/dist/schemas/tables/kernel/spine.d.ts +2 -1
  184. package/dist/schemas/tables/kernel/spine.js +1 -0
  185. package/dist/schemas/tables/kernel/spine.js.map +1 -1
  186. package/dist/schemas/tables/kernel/task.d.ts +1 -1
  187. package/dist/schemas/tables/kernel/task.js.map +1 -1
  188. package/dist/schemas/tables/kernel/topic.d.ts +1 -1
  189. package/dist/schemas/tables/kernel/topic.js.map +1 -1
  190. package/dist/schemas/tables/kernel/workflow.d.ts +1 -1
  191. package/dist/schemas/tables/kernel/workflow.js.map +1 -1
  192. package/dist/schemas/tables/kernel/worktree.d.ts +5 -5
  193. package/dist/schemas/tables/kernel/worktree.js.map +1 -1
  194. package/dist/schemas/tables/mc/identity.d.ts +19 -2
  195. package/dist/schemas/tables/mc/identity.js +32 -1
  196. package/dist/schemas/tables/mc/identity.js.map +1 -1
  197. package/dist/schemas/tables/mc/methodology.d.ts +1 -1
  198. package/dist/schemas/tables/mc/methodology.js.map +1 -1
  199. package/dist/schemas/tables/mc/pack.d.ts +1 -1
  200. package/dist/schemas/tables/mc/pack.js.map +1 -1
  201. package/dist/schemas/tables/mc/policy.d.ts +2 -2
  202. package/dist/schemas/tables/mc/policy.js +1 -1
  203. package/dist/schemas/tables/mc/policy.js.map +1 -1
  204. package/dist/schemas/tables/mc/registry.d.ts +1 -1
  205. package/dist/schemas/tables/mc/registry.js.map +1 -1
  206. package/dist/schemas/tables/mc/runtime.d.ts +109 -3
  207. package/dist/schemas/tables/mc/runtime.js +330 -104
  208. package/dist/schemas/tables/mc/runtime.js.map +1 -1
  209. package/dist/schemas/tables/mc/tenant.d.ts +3 -2
  210. package/dist/schemas/tables/mc/tenant.js +2 -1
  211. package/dist/schemas/tables/mc/tenant.js.map +1 -1
  212. package/dist/schemas/tables/mc/workspace.d.ts +22 -5
  213. package/dist/schemas/tables/mc/workspace.js +34 -2
  214. package/dist/schemas/tables/mc/workspace.js.map +1 -1
  215. package/dist/sdk-tools.contract.js +26 -1
  216. package/dist/sdk-tools.contract.js.map +1 -1
  217. package/dist/tenant-bootstrap-seed.contract.d.ts +226 -58
  218. package/dist/tenant-bootstrap-seed.contract.js +126 -28
  219. package/dist/tenant-bootstrap-seed.contract.js.map +1 -1
  220. package/dist/tenant-bootstrap-seed.defaults.d.ts +1 -1
  221. package/dist/tenant-bootstrap-seed.defaults.js +1 -1
  222. package/dist/tenant-bootstrap-seed.defaults.js.map +1 -1
  223. package/dist/tenant-client.contract.d.ts +12 -12
  224. package/dist/tenant-client.contract.js +11 -11
  225. package/dist/tenant-client.contract.js.map +1 -1
  226. package/dist/tool-contracts.js +26 -1
  227. package/dist/tool-contracts.js.map +1 -1
  228. package/package.json +22 -1
  229. package/dist/schemas/tables/identity/agent.js.map +0 -1
  230. package/dist/schemas/tables/identity/epistemic.js.map +0 -1
  231. package/dist/schemas/tables/identity/model.js.map +0 -1
  232. package/dist/schemas/tables/identity/platform.js.map +0 -1
  233. package/dist/schemas/tables/identity/project.js.map +0 -1
  234. package/dist/schemas/tables/identity/user.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tenant-bootstrap-seed.defaults.ts"],"names":[],"mappings":"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","file":"tenant-bootstrap-seed.defaults.js","sourcesContent":["import { ALL_FUNCTION_CONTRACTS } from \"./function-registry/index.js\";\nimport type { FunctionContract } from \"./function-registry/types.js\";\n\nexport const TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION = \"2026-04-30.1\" as const;\nexport const TENANT_BOOTSTRAP_TEMPLATE_TENANT_ID = \"tenant_template\" as const;\nexport const TENANT_BOOTSTRAP_TEMPLATE_ACTOR =\n \"system:lucern-template-seed\" as const;\n\nexport type TenantBootstrapTemplateSeedRows = {\n kernel: Record<string, Array<Record<string, unknown>>>;\n identity: Record<string, Array<Record<string, unknown>>>;\n};\n\nexport type TenantBootstrapTemplateSeedOptions = {\n now?: number;\n templateTenantId?: string;\n actorPrincipalId?: string;\n version?: string;\n};\n\ntype ToolRole =\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\ntype ToolCategory = \"read\" | \"write\" | \"admin\" | \"system\";\n\nconst DEFAULT_SEED_TIME = Date.UTC(2026, 3, 30);\n\nconst ROLE_GRANTS: Record<ToolRole, ToolRole[]> = {\n viewer: [\"viewer\", \"auditor\", \"editor\", \"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n auditor: [\"auditor\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n editor: [\"editor\", \"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n workspace_admin: [\"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n tenant_admin: [\"tenant_admin\", \"platform_admin\", \"service_agent\"],\n platform_admin: [\"platform_admin\", \"service_agent\"],\n service_agent: [\"service_agent\"],\n};\n\nconst ENUM_VALUES: Record<string, readonly string[]> = {\n topic_type: [\"domain\", \"theme\", \"deal\", \"strategy\", \"constitution\", \"project\", \"portfolio\", \"architecture\", \"capability\", \"runtime\", \"interface\", \"governance\", \"operations\", \"security\", \"data\"],\n branch_schema: [\"pillar\", \"track\", \"dimension\", \"axis\", \"phase\"],\n belief_type: [\"belief\", \"hypothesis\", \"principle\", \"invariant\", \"assumption\", \"tenet\", \"prior\", \"preference\", \"goal\", \"forecast\", \"decision\", \"constraint\", \"tradeoff\", \"policy\", \"implementation_choice\", \"implementation_decision\", \"interface_contract\", \"migration_state\", \"code_pattern\", \"deprecation_notice\"],\n edge_type: [\"supports\", \"informs\", \"depends_on\", \"derived_from\", \"contains\", \"tests\", \"supersedes\", \"responds_to\", \"belongs_to\", \"relates_to_thesis\", \"works_at\", \"invested_in\", \"competes_with\", \"participates_in\", \"founded_by\", \"evaluates\", \"performs\", \"function_in\", \"impacts\", \"raised_from\", \"mentioned_in\", \"perspective_on\", \"plays_theme\"],\n worktree_type: [\"belief_test\", \"lens\", \"existential\", \"contradiction\", \"refinement\", \"coverage\", \"discovery\", \"clarification\", \"confirmation\"],\n worktree_phase: [\"cluster_mapping\", \"hypothesis_formation\", \"question_generation\", \"evidence_collection\", \"synthesis\", \"decision\", \"retrospective\"],\n activity_type: [\"create\", \"update\", \"review\", \"merge\", \"archive\", \"comment\", \"status_change\", \"evidence_added\", \"question_added\"],\n lens_perspective_type: [\"investigation\", \"monitoring\", \"analysis\", \"comparison\", \"taxonomy\"],\n node_type: [\"belief\", \"question\", \"theme\", \"deal\", \"evidence\", \"claim\", \"synthesis\", \"source\", \"excerpt\", \"atomic_fact\", \"person\", \"company\", \"investor\", \"value_chain\", \"function\", \"decision\"],\n};\n\nconst MODEL_REGISTRY = [\n [\"claude-sonnet-4\", \"Claude Sonnet 4\", \"claude-sonnet-4-20250514\", \"anthropic\", 200000, 64000, 1, 3, 15],\n [\"claude-sonnet-4.5\", \"Claude Sonnet 4.5\", \"claude-sonnet-4-5-20250929\", \"anthropic\", 200000, 64000, 1, 3, 15],\n [\"claude-opus-4\", \"Claude Opus 4\", \"claude-opus-4-20250514\", \"anthropic\", 200000, 32000, 1, 15, 75],\n [\"gpt-4o\", \"GPT-4o\", \"gpt-4o\", \"openai\", 128000, 16000, 0.7, 5, 15],\n [\"gpt-4o-mini\", \"GPT-4o Mini\", \"gpt-4o-mini\", \"openai\", 128000, 16000, 0.7, 0.15, 0.6],\n [\"gemini-2.5-pro\", \"Gemini 2.5 Pro\", \"gemini-2.5-pro\", \"google\", 1000000, 32000, 0.7, 1.25, 10],\n [\"sonar-pro\", \"Sonar Pro\", \"sonar-pro\", \"perplexity\", 128000, 8000, 0.3, 3, 15],\n] as const;\n\nconst MODEL_SLOTS = [\n [\"primer_default\", \"primers\", \"Default primer generation for general topics\", \"claude-sonnet-4\", \"agents/primer/system\", 1, 4000, [\"text_generation\", \"reasoning\"]],\n [\"primer_technical\", \"primers\", \"Technical and engineering focused primers\", \"claude-sonnet-4\", \"agents/primer/system\", 0.8, 4000, [\"text_generation\", \"reasoning\", \"code\"]],\n [\"primer_intelligence\", \"document_intelligence\", \"Extract evidence, beliefs, and questions from documents\", \"claude-sonnet-4\", \"agents/primer-intelligence\", 0.3, 8000, [\"text_generation\", \"structured_output\", \"reasoning\"]],\n [\"fact_checker\", \"research\", \"Verify claims without web search\", \"claude-sonnet-4\", \"agents/internet-fact-checker\", 0.3, 4000, [\"text_generation\", \"reasoning\"]],\n [\"fact_checker_web\", \"research\", \"Verify claims with web search\", \"sonar-pro\", \"agents/internet-fact-checker\", 0.3, 4000, [\"web_search\"]],\n [\"deep_research\", \"research\", \"Deep research with extended analysis\", \"claude-opus-4\", undefined, 0.7, 8000, [\"text_generation\", \"reasoning\", \"long_context\"]],\n [\"belief_classifier\", \"classification\", \"Classify beliefs by epistemic type\", \"claude-sonnet-4\", \"classification/belief-category\", 0.2, 1000, [\"text_generation\", \"reasoning\"]],\n [\"evidence_classifier\", \"classification\", \"Classify evidence methodology and quality\", \"claude-sonnet-4\", \"classification/evidence-rules\", 0.3, 1000, [\"text_generation\", \"reasoning\"]],\n [\"edge_classifier\", \"classification\", \"Classify edge reasoning method and temporal class\", \"claude-sonnet-4\", \"classification/epistemic-guidance\", 0.3, 1000, [\"text_generation\", \"reasoning\"]],\n [\"entity_extractor\", \"extraction\", \"Extract entities from text\", \"claude-sonnet-4\", undefined, 0.2, 2000, [\"text_generation\", \"structured_output\"]],\n [\"graph_intelligence_query\", \"graph_intelligence\", \"Analyze graph health, gaps, and structural risks\", \"claude-sonnet-4\", \"graph-intelligence/query\", 0.5, 8000, [\"text_generation\", \"reasoning\", \"tool_use\"]],\n [\"graph_intelligence_suggestions\", \"graph_intelligence\", \"Extract actionable graph suggestions\", \"claude-sonnet-4\", \"graph-intelligence/suggestions-extraction\", 0.2, 4000, [\"text_generation\", \"structured_output\"]],\n [\"text_to_cypher\", \"graph_intelligence\", \"Generate read-only Cypher from graph questions\", \"claude-sonnet-4\", \"graph-intelligence/text-to-cypher\", 0.2, 2000, [\"text_generation\", \"code\", \"reasoning\"]],\n [\"contradiction_verifier\", \"epistemic\", \"Verify semantic contradiction candidates\", \"claude-sonnet-4\", \"lucern/verify-contradiction\", 0.2, 500, [\"text_generation\", \"reasoning\"]],\n [\"task_execution\", \"tasks\", \"Execute research tasks with structured analysis\", \"claude-sonnet-4\", undefined, 0.3, 4000, [\"text_generation\", \"reasoning\", \"structured_output\"]],\n [\"sprint_unified\", \"sprints\", \"Unified worktree chat across all phases\", \"claude-opus-4\", \"worktrees/unified-system-prompt\", 0.7, 8000, [\"text_generation\", \"reasoning\", \"tool_use\"]],\n [\"evidence_assessor\", \"sprints\", \"Assess evidence for belief valence and certainty\", \"claude-sonnet-4\", \"worktrees/scoring/evidence-assessor\", 0.3, 4000, [\"text_generation\", \"reasoning\", \"structured_output\"]],\n [\"title_generator\", \"utility\", \"Generate concise titles\", \"gpt-4o-mini\", undefined, 0.7, 100, [\"text_generation\", \"fast\", \"cheap\"]],\n [\"help_desk_agent\", \"utility\", \"Help desk support agent for workflow guidance\", \"claude-sonnet-4\", \"agents/help-desk-agent\", 0.4, 2000, [\"text_generation\", \"reasoning\"]],\n [\"bug_detective_agent\", \"utility\", \"Bug triage assistant for structured diagnosis\", \"claude-sonnet-4\", \"agents/bug-detective-agent\", 0.3, 2000, [\"text_generation\", \"reasoning\"]],\n] as const;\n\nfunction labelFor(value: string): string {\n return value\n .split(/[_-]/)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction seedContext(options: TenantBootstrapTemplateSeedOptions) {\n return {\n now: options.now ?? DEFAULT_SEED_TIME,\n templateTenantId: options.templateTenantId ?? TENANT_BOOTSTRAP_TEMPLATE_TENANT_ID,\n actor: options.actorPrincipalId ?? TENANT_BOOTSTRAP_TEMPLATE_ACTOR,\n version: options.version ?? TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION,\n };\n}\n\nfunction toolCategory(contract: FunctionContract): ToolCategory {\n if (contract.surfaceIntent === \"system\") return \"system\";\n if (contract.effects.includes(\"admin\")) return \"admin\";\n if (contract.effects.includes(\"write\") || contract.kind !== \"query\") return \"write\";\n return \"read\";\n}\n\nfunction requiredRole(category: ToolCategory): ToolRole {\n if (category === \"system\") return \"service_agent\";\n if (category === \"admin\") return \"tenant_admin\";\n if (category === \"write\") return \"editor\";\n return \"viewer\";\n}\n\nfunction requiredAction(category: ToolCategory) {\n if (category === \"admin\" || category === \"system\") return \"admin\";\n if (category === \"write\") return \"mutate\";\n return \"read\";\n}\n\nfunction enabledSurfaces(contract: FunctionContract): string[] {\n return [\n contract.surfaces.mcp !== \"none\" ? \"mcp\" : undefined,\n contract.surfaces.sdk !== \"none\" ? \"sdk\" : undefined,\n contract.surfaces.cli !== \"none\" ? \"cli\" : undefined,\n contract.surfaces.rest !== \"none\" ? \"api\" : undefined,\n ].filter((value): value is string => Boolean(value));\n}\n\nfunction buildToolRegistry(now: number, actor: string, version: string) {\n const rows = new Map<string, Record<string, unknown>>();\n for (const contract of ALL_FUNCTION_CONTRACTS) {\n const surfaces = enabledSurfaces(contract);\n if (surfaces.length === 0) continue;\n const category = toolCategory(contract);\n const readOnly = category === \"read\";\n const toolName = contract.mcp.toolName || contract.name;\n rows.set(toolName, {\n toolName,\n description: contract.openapi.summary,\n version,\n status: \"active\",\n requiredRole: requiredRole(category),\n requiredAction: requiredAction(category),\n surfaces,\n category,\n parameterSchema: { contract: contract.name, sdk: contract.sdk },\n handlerRef: contract.convex\n ? `${contract.convex.module}.${contract.convex.functionName}`\n : contract.name,\n executionAdapter:\n contract.convex?.kind === \"action\"\n ? \"convex_action\"\n : contract.convex?.kind === \"mutation\"\n ? \"convex_mutation\"\n : \"mcp_tool\",\n safetyMetadata: {\n readOnly,\n idempotent:\n readOnly ||\n contract.idempotent === true ||\n contract.idempotent === \"required\",\n sideEffectLevel: readOnly ? \"none\" : category === \"admin\" ? \"high\" : \"low\",\n },\n isCore: true,\n mcVersion: version,\n registeredBy: actor,\n registeredAt: now,\n });\n }\n return [...rows.values()].sort((a, b) =>\n String(a.toolName).localeCompare(String(b.toolName))\n );\n}\n\nfunction buildToolAcls(tools: Array<Record<string, unknown>>, now: number, actor: string) {\n return tools.flatMap((tool) =>\n (ROLE_GRANTS[tool.requiredRole as ToolRole] ?? [tool.requiredRole as ToolRole]).map(\n (role) => ({ role, toolName: tool.toolName, createdBy: actor, createdAt: now })\n )\n );\n}\n\nfunction buildMcpWritePolicy(now: number, actor: string) {\n return [\n ...[\"viewer\", \"auditor\"].map((role) => ({\n role,\n toolCategory: \"write\",\n permission: \"deny\",\n enabled: true,\n rationale: \"Read-only roles cannot mutate the reasoning graph.\",\n createdAt: now,\n updatedAt: now,\n createdBy: actor,\n })),\n ...[\"editor\", \"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"].map((role) => ({\n role,\n toolCategory: \"write\",\n permission: \"allow\",\n maxWritesPerSession: role === \"editor\" ? 200 : undefined,\n enabled: true,\n rationale: \"Default global write policy for trusted graph mutation roles.\",\n createdAt: now,\n updatedAt: now,\n createdBy: actor,\n })),\n ];\n}\n\nfunction buildTenantPolicies(tenantId: string, now: number, actor: string) {\n const rows = [\n [\"viewer\", \"Read graph and runtime metadata.\", [{ resource: \"graph\", actions: [\"read\"] }]],\n [\"auditor\", \"Read graph, audit, and policy decisions.\", [{ resource: \"audit\", actions: [\"read\", \"export\"] }]],\n [\"editor\", \"Read and mutate tenant reasoning state.\", [{ resource: \"graph\", actions: [\"read\", \"create\", \"update\", \"mutate\"] }]],\n [\"workspace_admin\", \"Manage workspace-scoped reasoning operations.\", [{ resource: \"workspace\", actions: [\"read\", \"update\", \"admin\"] }]],\n [\"tenant_admin\", \"Manage tenant policy, tools, users, and publication.\", [{ resource: \"tenant\", actions: [\"read\", \"update\", \"admin\"] }, { resource: \"policy\", actions: [\"read\", \"create\", \"update\", \"admin\"] }]],\n [\"service_agent\", \"Service principal execution role for automation.\", [{ resource: \"runtime\", actions: [\"read\", \"create\", \"update\"] }, { resource: \"graph\", actions: [\"read\", \"create\", \"update\", \"mutate\"] }]],\n ] as const;\n return rows.map(([roleName, description, permissions]) => ({\n tenantId,\n roleName,\n description,\n permissions,\n groupBindings: [],\n createdAt: now,\n updatedAt: now,\n createdBy: actor,\n updatedBy: actor,\n }));\n}\n\nfunction modelRegistryRows(now: number) {\n return MODEL_REGISTRY.map(([key, name, modelId, provider, contextWindow, maxOutputTokens, defaultTemperature, inputCostPer1M, outputCostPer1M]) => ({\n key,\n name,\n modelId,\n provider,\n capabilities: [\"text_generation\", \"reasoning\"],\n contextWindow,\n maxOutputTokens,\n defaultTemperature,\n inputCostPer1M,\n outputCostPer1M,\n recommended: true,\n enabled: true,\n createdAt: now,\n updatedAt: now,\n }));\n}\n\nfunction modelFunctionSlotRows(now: number) {\n return MODEL_SLOTS.map(([slot, category, description, modelKey, promptName, temperature, maxTokens, requiredCapabilities]) => ({\n slot,\n category,\n description,\n modelKey,\n promptName,\n temperature,\n maxTokens,\n requiredCapabilities,\n enabled: true,\n isDefault: true,\n notes: `Seeded by ${TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION}.`,\n createdAt: now,\n updatedAt: now,\n }));\n}\n\nfunction modelSlotConfigRows(now: number) {\n return MODEL_SLOTS.map(([slot, , , modelKey, , temperature, maxTokens]) => ({\n slot,\n modelKey,\n temperature,\n maxTokens,\n enabled: true,\n notes: `Default routing for ${slot}.`,\n createdAt: now,\n updatedAt: now,\n }));\n}\n\nfunction schemaEnumRows(now: number) {\n return Object.entries(ENUM_VALUES).flatMap(([category, values]) =>\n values.map((value, index) => ({\n category,\n value,\n label: labelFor(value),\n description: `${labelFor(value)} ${category} value.`,\n tier: \"platform\",\n metadata: { seedVersion: TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION },\n isDefault: index === 0,\n sortOrder: index + 1,\n status: \"active\",\n createdAt: now,\n updatedAt: now,\n }))\n );\n}\n\nexport function buildTenantBootstrapTemplateSeedRows(\n options: TenantBootstrapTemplateSeedOptions = {}\n): TenantBootstrapTemplateSeedRows {\n const ctx = seedContext(options);\n const toolRegistry = buildToolRegistry(ctx.now, ctx.actor, ctx.version);\n return {\n kernel: {\n backgroundJobSettings: [\n { jobKey: \"neo4j_sync\", enabled: false, notes: \"Disabled until graph-sync credentials are configured.\", updatedAt: ctx.now, updatedBy: ctx.actor },\n { jobKey: \"calibration_rollups\", enabled: true, notes: \"Compute calibration rollups when calibration data exists.\", updatedAt: ctx.now, updatedBy: ctx.actor },\n ],\n ontologyDefinitions: [\n { ontologyKey: \"lucern-core\", name: \"Lucern Core\", description: \"Core Lucern reasoning taxonomy.\", tier: \"platform\", status: \"active\", createdBy: ctx.actor, createdAt: ctx.now, updatedAt: ctx.now },\n ],\n ontologyVersions: [\n {\n ontologyId: \"lucern-core\",\n ontologyKey: \"lucern-core\",\n version: ctx.version,\n status: \"published\",\n entityTypes: [\"belief\", \"question\", \"evidence\", \"answer\", \"decision\", \"task\", \"worktree\", \"topic\", \"source\"].map((value) => ({ value, label: labelFor(value) })),\n edgeTypes: [\"supports\", \"informs\", \"depends_on\", \"derived_from\", \"contains\", \"tests\", \"supersedes\", \"responds_to\"].map((value) => ({ value, label: labelFor(value) })),\n releaseNotes: \"Initial platform ontology seed.\",\n publishedBy: ctx.actor,\n publishedAt: ctx.now,\n createdAt: ctx.now,\n },\n ],\n publicationRules: [\n { tenantId: ctx.templateTenantId, name: \"publish-high-confidence-beliefs\", description: \"Publish high-confidence beliefs to tenant-level consumers.\", conditionType: \"confidence_threshold\", conditions: { minConfidence: 0.85 }, enabled: true, priority: 100, createdBy: ctx.actor, createdAt: ctx.now, updatedAt: ctx.now },\n ],\n schemaEnumConfig: schemaEnumRows(ctx.now),\n },\n identity: {\n mcpWritePolicy: buildMcpWritePolicy(ctx.now, ctx.actor),\n modelFunctionSlots: modelFunctionSlotRows(ctx.now),\n modelRegistry: modelRegistryRows(ctx.now),\n modelSlotConfigs: modelSlotConfigRows(ctx.now),\n platformAudiences: [\n [\"internal\", \"Internal\", \"internal\"],\n [\"lp\", \"Limited Partners\", \"restricted_external\"],\n [\"public\", \"Public\", \"public\"],\n ].map(([audienceKey, audienceLabel, audienceClass]) => ({ tenantId: ctx.templateTenantId, audienceKey, audienceLabel, audienceClass, status: \"active\", metadata: { seedVersion: ctx.version }, createdBy: ctx.actor, createdAt: ctx.now, updatedAt: ctx.now })),\n tenantConfig: [\n { tenantId: ctx.templateTenantId, authPolicyMode: \"open\", defaultSessionTTL: 28800, defaultTopicVisibility: \"tenant\", featureFlags: { sdkBootstrapSeeds: true, interactiveRoleAuth: true }, maxWorkspaceCount: 25, defaultModelSlotOverrides: {}, updatedAt: ctx.now, updatedBy: ctx.actor },\n ],\n tenantIntegrations: [\n { tenantId: ctx.templateTenantId, integrationKey: \"web-search\", displayName: \"Web Search\", description: \"Tenant-configurable search integration placeholder.\", category: \"search\", capabilities: [\"search\", \"deep_research\", \"summarize\"], config: { apiBaseUrl: \"https://example.invalid/lucern/search\", authType: \"none\", timeout: 30000 }, endpoints: { search: { path: \"/search\", method: \"POST\", queryParamName: \"query\", resultPath: \"results\" } }, status: \"disabled\", usageCount: 0, createdAt: ctx.now, updatedAt: ctx.now, createdBy: ctx.actor },\n ],\n tenantPolicies: buildTenantPolicies(ctx.templateTenantId, ctx.now, ctx.actor),\n toolAcls: buildToolAcls(toolRegistry, ctx.now, ctx.actor),\n toolRegistry,\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/tenant-bootstrap-seed.defaults.ts"],"names":[],"mappings":";;;AAGO,IAAM,sCAAA,GAAyC;AAC/C,IAAM,mCAAA,GAAsC;AAC5C,IAAM,+BAAA,GACX;AAwBF,IAAM,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,GAAG,EAAE,CAAA;AAE9C,IAAM,WAAA,GAA4C;AAAA,EAChD,MAAA,EAAQ,CAAC,QAAA,EAAU,SAAA,EAAW,UAAU,iBAAA,EAAmB,cAAA,EAAgB,kBAAkB,eAAe,CAAA;AAAA,EAC5G,OAAA,EAAS,CAAC,SAAA,EAAW,cAAA,EAAgB,kBAAkB,eAAe,CAAA;AAAA,EACtE,QAAQ,CAAC,QAAA,EAAU,iBAAA,EAAmB,cAAA,EAAgB,kBAAkB,eAAe,CAAA;AAAA,EACvF,eAAA,EAAiB,CAAC,iBAAA,EAAmB,cAAA,EAAgB,kBAAkB,eAAe,CAAA;AAAA,EACtF,YAAA,EAAc,CAAC,cAAA,EAAgB,gBAAA,EAAkB,eAAe,CAAA;AAAA,EAChE,cAAA,EAAgB,CAAC,gBAAA,EAAkB,eAAe,CAAA;AAAA,EAClD,aAAA,EAAe,CAAC,eAAe;AACjC,CAAA;AAEA,IAAM,WAAA,GAAiD;AAAA,EACrD,YAAY,CAAC,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,YAAY,cAAA,EAAgB,SAAA,EAAW,WAAA,EAAa,cAAA,EAAgB,cAAc,SAAA,EAAW,WAAA,EAAa,YAAA,EAAc,YAAA,EAAc,YAAY,MAAM,CAAA;AAAA,EAChM,eAAe,CAAC,QAAA,EAAU,OAAA,EAAS,WAAA,EAAa,QAAQ,OAAO,CAAA;AAAA,EAC/D,WAAA,EAAa,CAAC,QAAA,EAAU,YAAA,EAAc,aAAa,WAAA,EAAa,YAAA,EAAc,SAAS,OAAA,EAAS,YAAA,EAAc,QAAQ,UAAA,EAAY,UAAA,EAAY,cAAc,UAAA,EAAY,QAAA,EAAU,yBAAyB,yBAAA,EAA2B,oBAAA,EAAsB,iBAAA,EAAmB,cAAA,EAAgB,oBAAoB,CAAA;AAAA,EACnT,SAAA,EAAW,CAAC,UAAA,EAAY,SAAA,EAAW,YAAA,EAAc,gBAAgB,UAAA,EAAY,OAAA,EAAS,YAAA,EAAc,aAAA,EAAe,YAAA,EAAc,mBAAA,EAAqB,YAAY,aAAA,EAAe,eAAA,EAAiB,iBAAA,EAAmB,YAAA,EAAc,WAAA,EAAa,UAAA,EAAY,eAAe,SAAA,EAAW,aAAA,EAAe,cAAA,EAAgB,gBAAA,EAAkB,aAAa,CAAA;AAAA,EACpV,aAAA,EAAe,CAAC,aAAA,EAAe,MAAA,EAAQ,aAAA,EAAe,iBAAiB,YAAA,EAAc,UAAA,EAAY,WAAA,EAAa,eAAA,EAAiB,cAAc,CAAA;AAAA,EAC7I,cAAA,EAAgB,CAAC,iBAAA,EAAmB,sBAAA,EAAwB,uBAAuB,qBAAA,EAAuB,WAAA,EAAa,YAAY,eAAe,CAAA;AAAA,EAClJ,aAAA,EAAe,CAAC,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,SAAS,SAAA,EAAW,SAAA,EAAW,eAAA,EAAiB,gBAAA,EAAkB,gBAAgB,CAAA;AAAA,EAChI,uBAAuB,CAAC,eAAA,EAAiB,YAAA,EAAc,UAAA,EAAY,cAAc,UAAU,CAAA;AAAA,EAC3F,WAAW,CAAC,QAAA,EAAU,UAAA,EAAY,OAAA,EAAS,QAAQ,UAAA,EAAY,OAAA,EAAS,WAAA,EAAa,QAAA,EAAU,WAAW,aAAA,EAAe,QAAA,EAAU,WAAW,UAAA,EAAY,aAAA,EAAe,YAAY,UAAU;AACjM,CAAA;AAEA,IAAM,cAAA,GAAiB;AAAA,EACrB,CAAC,mBAAmB,iBAAA,EAAmB,0BAAA,EAA4B,aAAa,GAAA,EAAQ,IAAA,EAAO,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA;AAAA,EACvG,CAAC,qBAAqB,mBAAA,EAAqB,4BAAA,EAA8B,aAAa,GAAA,EAAQ,IAAA,EAAO,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA;AAAA,EAC7G,CAAC,iBAAiB,eAAA,EAAiB,wBAAA,EAA0B,aAAa,GAAA,EAAQ,IAAA,EAAO,CAAA,EAAG,EAAA,EAAI,EAAE,CAAA;AAAA,EAClG,CAAC,UAAU,QAAA,EAAU,QAAA,EAAU,UAAU,KAAA,EAAQ,IAAA,EAAO,GAAA,EAAK,CAAA,EAAG,EAAE,CAAA;AAAA,EAClE,CAAC,eAAe,aAAA,EAAe,aAAA,EAAe,UAAU,KAAA,EAAQ,IAAA,EAAO,GAAA,EAAK,IAAA,EAAM,GAAG,CAAA;AAAA,EACrF,CAAC,kBAAkB,gBAAA,EAAkB,gBAAA,EAAkB,UAAU,GAAA,EAAS,IAAA,EAAO,GAAA,EAAK,IAAA,EAAM,EAAE,CAAA;AAAA,EAC9F,CAAC,aAAa,WAAA,EAAa,WAAA,EAAa,cAAc,KAAA,EAAQ,GAAA,EAAM,GAAA,EAAK,CAAA,EAAG,EAAE;AAChF,CAAA;AAEA,IAAM,WAAA,GAAc;AAAA,EAClB,CAAC,gBAAA,EAAkB,SAAA,EAAW,8CAAA,EAAgD,iBAAA,EAAmB,sBAAA,EAAwB,CAAA,EAAG,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAW,CAAC,CAAA;AAAA,EAClK,CAAC,kBAAA,EAAoB,SAAA,EAAW,2CAAA,EAA6C,iBAAA,EAAmB,sBAAA,EAAwB,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAA,EAAa,MAAM,CAAC,CAAA;AAAA,EAC3K,CAAC,qBAAA,EAAuB,uBAAA,EAAyB,yDAAA,EAA2D,iBAAA,EAAmB,4BAAA,EAA8B,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,mBAAA,EAAqB,WAAW,CAAC,CAAA;AAAA,EAC7N,CAAC,cAAA,EAAgB,UAAA,EAAY,kCAAA,EAAoC,iBAAA,EAAmB,8BAAA,EAAgC,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAW,CAAC,CAAA;AAAA,EAC/J,CAAC,kBAAA,EAAoB,UAAA,EAAY,+BAAA,EAAiC,WAAA,EAAa,gCAAgC,GAAA,EAAK,GAAA,EAAM,CAAC,YAAY,CAAC,CAAA;AAAA,EACxI,CAAC,eAAA,EAAiB,UAAA,EAAY,sCAAA,EAAwC,eAAA,EAAiB,MAAA,EAAW,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,EAC7J,CAAC,mBAAA,EAAqB,gBAAA,EAAkB,oCAAA,EAAsC,iBAAA,EAAmB,gCAAA,EAAkC,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAW,CAAC,CAAA;AAAA,EAC9K,CAAC,qBAAA,EAAuB,gBAAA,EAAkB,2CAAA,EAA6C,iBAAA,EAAmB,+BAAA,EAAiC,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAW,CAAC,CAAA;AAAA,EACtL,CAAC,iBAAA,EAAmB,gBAAA,EAAkB,mDAAA,EAAqD,iBAAA,EAAmB,mCAAA,EAAqC,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAW,CAAC,CAAA;AAAA,EAC9L,CAAC,kBAAA,EAAoB,YAAA,EAAc,4BAAA,EAA8B,iBAAA,EAAmB,MAAA,EAAW,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,mBAAmB,CAAC,CAAA;AAAA,EAClJ,CAAC,0BAAA,EAA4B,oBAAA,EAAsB,kDAAA,EAAoD,iBAAA,EAAmB,0BAAA,EAA4B,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAA,EAAa,UAAU,CAAC,CAAA;AAAA,EAC7M,CAAC,gCAAA,EAAkC,oBAAA,EAAsB,sCAAA,EAAwC,iBAAA,EAAmB,2CAAA,EAA6C,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,mBAAmB,CAAC,CAAA;AAAA,EACpN,CAAC,gBAAA,EAAkB,oBAAA,EAAsB,gDAAA,EAAkD,iBAAA,EAAmB,mCAAA,EAAqC,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,MAAA,EAAQ,WAAW,CAAC,CAAA;AAAA,EACtM,CAAC,wBAAA,EAA0B,WAAA,EAAa,0CAAA,EAA4C,iBAAA,EAAmB,6BAAA,EAA+B,GAAA,EAAK,GAAA,EAAK,CAAC,iBAAA,EAAmB,WAAW,CAAC,CAAA;AAAA,EAChL,CAAC,gBAAA,EAAkB,OAAA,EAAS,iDAAA,EAAmD,iBAAA,EAAmB,MAAA,EAAW,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAA,EAAa,mBAAmB,CAAC,CAAA;AAAA,EAC7K,CAAC,gBAAA,EAAkB,SAAA,EAAW,yCAAA,EAA2C,eAAA,EAAiB,iCAAA,EAAmC,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAA,EAAa,UAAU,CAAC,CAAA;AAAA,EACpL,CAAC,mBAAA,EAAqB,SAAA,EAAW,kDAAA,EAAoD,iBAAA,EAAmB,qCAAA,EAAuC,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAA,EAAa,mBAAmB,CAAC,CAAA;AAAA,EAC/M,CAAC,iBAAA,EAAmB,SAAA,EAAW,yBAAA,EAA2B,aAAA,EAAe,MAAA,EAAW,GAAA,EAAK,GAAA,EAAK,CAAC,iBAAA,EAAmB,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,EAClI,CAAC,iBAAA,EAAmB,SAAA,EAAW,+CAAA,EAAiD,iBAAA,EAAmB,wBAAA,EAA0B,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAW,CAAC,CAAA;AAAA,EACxK,CAAC,qBAAA,EAAuB,SAAA,EAAW,+CAAA,EAAiD,iBAAA,EAAmB,4BAAA,EAA8B,GAAA,EAAK,GAAA,EAAM,CAAC,iBAAA,EAAmB,WAAW,CAAC;AAClL,CAAA;AAEA,SAAS,SAAS,KAAA,EAAuB;AACvC,EAAA,OAAO,MACJ,KAAA,CAAM,MAAM,EACZ,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAC1D,KAAK,GAAG,CAAA;AACb;AAEA,SAAS,YAAY,OAAA,EAA6C;AAChE,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,QAAQ,GAAA,IAAO,iBAAA;AAAA,IACpB,gBAAA,EAAkB,QAAQ,gBAAA,IAAoB,mCAAA;AAAA,IAC9C,KAAA,EAAO,QAAQ,gBAAA,IAAoB,+BAAA;AAAA,IACnC,OAAA,EAAS,QAAQ,OAAA,IAAW;AAAA,GAC9B;AACF;AAEA,SAAS,aAAa,QAAA,EAA0C;AAC9D,EAAA,IAAI,QAAA,CAAS,aAAA,KAAkB,QAAA,EAAU,OAAO,QAAA;AAChD,EAAA,IAAI,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,OAAO,GAAG,OAAO,OAAA;AAC/C,EAAA,IAAI,QAAA,CAAS,QAAQ,QAAA,CAAS,OAAO,KAAK,QAAA,CAAS,IAAA,KAAS,SAAS,OAAO,OAAA;AAC5E,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,aAAa,QAAA,EAAkC;AACtD,EAAA,IAAI,QAAA,KAAa,UAAU,OAAO,eAAA;AAClC,EAAA,IAAI,QAAA,KAAa,SAAS,OAAO,cAAA;AACjC,EAAA,IAAI,QAAA,KAAa,SAAS,OAAO,QAAA;AACjC,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,eAAe,QAAA,EAAwB;AAC9C,EAAA,IAAI,QAAA,KAAa,OAAA,IAAW,QAAA,KAAa,QAAA,EAAU,OAAO,OAAA;AAC1D,EAAA,IAAI,QAAA,KAAa,SAAS,OAAO,QAAA;AACjC,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,gBAAgB,QAAA,EAAsC;AAC7D,EAAA,OAAO;AAAA,IACL,QAAA,CAAS,QAAA,CAAS,GAAA,KAAQ,MAAA,GAAS,KAAA,GAAQ,MAAA;AAAA,IAC3C,QAAA,CAAS,QAAA,CAAS,GAAA,KAAQ,MAAA,GAAS,KAAA,GAAQ,MAAA;AAAA,IAC3C,QAAA,CAAS,QAAA,CAAS,GAAA,KAAQ,MAAA,GAAS,KAAA,GAAQ,MAAA;AAAA,IAC3C,QAAA,CAAS,QAAA,CAAS,IAAA,KAAS,MAAA,GAAS,KAAA,GAAQ;AAAA,IAC5C,MAAA,CAAO,CAAC,KAAA,KAA2B,OAAA,CAAQ,KAAK,CAAC,CAAA;AACrD;AAEA,SAAS,iBAAA,CAAkB,GAAA,EAAa,KAAA,EAAe,OAAA,EAAiB;AACtE,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAqC;AACtD,EAAA,KAAA,MAAW,YAAY,sBAAA,EAAwB;AAC7C,IAAA,MAAM,QAAA,GAAW,gBAAgB,QAAQ,CAAA;AACzC,IAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AAC3B,IAAA,MAAM,QAAA,GAAW,aAAa,QAAQ,CAAA;AACtC,IAAA,MAAM,WAAW,QAAA,KAAa,MAAA;AAC9B,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,GAAA,CAAI,QAAA,IAAY,QAAA,CAAS,IAAA;AACnD,IAAA,IAAA,CAAK,IAAI,QAAA,EAAU;AAAA,MACjB,QAAA;AAAA,MACA,WAAA,EAAa,SAAS,OAAA,CAAQ,OAAA;AAAA,MAC9B,OAAA;AAAA,MACA,MAAA,EAAQ,QAAA;AAAA,MACR,YAAA,EAAc,aAAa,QAAQ,CAAA;AAAA,MACnC,cAAA,EAAgB,eAAe,QAAQ,CAAA;AAAA,MACvC,QAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAiB,EAAE,QAAA,EAAU,SAAS,IAAA,EAAM,GAAA,EAAK,SAAS,GAAA,EAAI;AAAA,MAC9D,UAAA,EAAY,QAAA,CAAS,MAAA,GACjB,CAAA,EAAG,QAAA,CAAS,MAAA,CAAO,MAAM,CAAA,CAAA,EAAI,QAAA,CAAS,MAAA,CAAO,YAAY,CAAA,CAAA,GACzD,QAAA,CAAS,IAAA;AAAA,MACb,gBAAA,EACE,QAAA,CAAS,MAAA,EAAQ,IAAA,KAAS,QAAA,GACtB,kBACA,QAAA,CAAS,MAAA,EAAQ,IAAA,KAAS,UAAA,GACxB,iBAAA,GACA,UAAA;AAAA,MACR,cAAA,EAAgB;AAAA,QACd,QAAA;AAAA,QACA,YACE,QAAA,IACA,QAAA,CAAS,UAAA,KAAe,IAAA,IACxB,SAAS,UAAA,KAAe,UAAA;AAAA,QAC1B,eAAA,EAAiB,QAAA,GAAW,MAAA,GAAS,QAAA,KAAa,UAAU,MAAA,GAAS;AAAA,OACvE;AAAA,MACA,MAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAc,KAAA;AAAA,MACd,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AACA,EAAA,OAAO,CAAC,GAAG,IAAA,CAAK,MAAA,EAAQ,CAAA,CAAE,IAAA;AAAA,IAAK,CAAC,CAAA,EAAG,CAAA,KACjC,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAA,CAAE,aAAA,CAAc,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAC;AAAA,GACrD;AACF;AAEA,SAAS,aAAA,CAAc,KAAA,EAAuC,GAAA,EAAa,KAAA,EAAe;AACxF,EAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IAAQ,CAAC,UACnB,WAAA,CAAY,IAAA,CAAK,YAAwB,CAAA,IAAK,CAAC,IAAA,CAAK,YAAwB,CAAA,EAAG,GAAA;AAAA,MAC9E,CAAC,IAAA,MAAU,EAAE,IAAA,EAAM,QAAA,EAAU,KAAK,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,GAAA,EAAI;AAAA;AAC/E,GACF;AACF;AAEA,SAAS,mBAAA,CAAoB,KAAa,KAAA,EAAe;AACvD,EAAA,OAAO;AAAA,IACL,GAAG,CAAC,QAAA,EAAU,SAAS,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MACtC,IAAA;AAAA,MACA,YAAA,EAAc,OAAA;AAAA,MACd,UAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,oDAAA;AAAA,MACX,SAAA,EAAW,GAAA;AAAA,MACX,SAAA,EAAW,GAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb,CAAE,CAAA;AAAA,IACF,GAAG,CAAC,QAAA,EAAU,iBAAA,EAAmB,cAAA,EAAgB,kBAAkB,eAAe,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MACjG,IAAA;AAAA,MACA,YAAA,EAAc,OAAA;AAAA,MACd,UAAA,EAAY,OAAA;AAAA,MACZ,mBAAA,EAAqB,IAAA,KAAS,QAAA,GAAW,GAAA,GAAM,MAAA;AAAA,MAC/C,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,+DAAA;AAAA,MACX,SAAA,EAAW,GAAA;AAAA,MACX,SAAA,EAAW,GAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb,CAAE;AAAA,GACJ;AACF;AAEA,SAAS,mBAAA,CAAoB,QAAA,EAAkB,GAAA,EAAa,KAAA,EAAe;AACzE,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,CAAC,QAAA,EAAU,kCAAA,EAAoC,CAAC,EAAE,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,CAAC,MAAM,CAAA,EAAG,CAAC,CAAA;AAAA,IACzF,CAAC,SAAA,EAAW,0CAAA,EAA4C,CAAC,EAAE,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,CAAC,MAAA,EAAQ,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IAC5G,CAAC,QAAA,EAAU,yCAAA,EAA2C,CAAC,EAAE,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,CAAC,QAAQ,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,IAC9H,CAAC,iBAAA,EAAmB,+CAAA,EAAiD,CAAC,EAAE,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,CAAC,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA,EAAG,CAAC,CAAA;AAAA,IACtI,CAAC,cAAA,EAAgB,sDAAA,EAAwD,CAAC,EAAE,UAAU,QAAA,EAAU,OAAA,EAAS,CAAC,MAAA,EAAQ,QAAA,EAAU,OAAO,GAAE,EAAG,EAAE,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,CAAC,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,OAAO,CAAA,EAAG,CAAC,CAAA;AAAA,IAC/M,CAAC,eAAA,EAAiB,kDAAA,EAAoD,CAAC,EAAE,UAAU,SAAA,EAAW,OAAA,EAAS,CAAC,MAAA,EAAQ,QAAA,EAAU,QAAQ,GAAE,EAAG,EAAE,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,CAAC,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA,EAAG,CAAC;AAAA,GAChN;AACA,EAAA,OAAO,KAAK,GAAA,CAAI,CAAC,CAAC,QAAA,EAAU,WAAA,EAAa,WAAW,CAAA,MAAO;AAAA,IACzD,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAe,EAAC;AAAA,IAChB,SAAA,EAAW,GAAA;AAAA,IACX,SAAA,EAAW,GAAA;AAAA,IACX,SAAA,EAAW,KAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb,CAAE,CAAA;AACJ;AAEA,SAAS,kBAAkB,GAAA,EAAa;AACtC,EAAA,OAAO,cAAA,CAAe,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAA,EAAe,eAAA,EAAiB,kBAAA,EAAoB,cAAA,EAAgB,eAAe,CAAA,MAAO;AAAA,IAClJ,GAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA,EAAc,CAAC,iBAAA,EAAmB,WAAW,CAAA;AAAA,IAC7C,aAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA,EAAa,IAAA;AAAA,IACb,OAAA,EAAS,IAAA;AAAA,IACT,SAAA,EAAW,GAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb,CAAE,CAAA;AACJ;AAEA,SAAS,sBAAsB,GAAA,EAAa;AAC1C,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,UAAA,EAAY,WAAA,EAAa,SAAA,EAAW,oBAAoB,CAAA,MAAO;AAAA,IAC7H,IAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,oBAAA;AAAA,IACA,OAAA,EAAS,IAAA;AAAA,IACT,SAAA,EAAW,IAAA;AAAA,IACX,KAAA,EAAO,aAAa,sCAAsC,CAAA,CAAA,CAAA;AAAA,IAC1D,SAAA,EAAW,GAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb,CAAE,CAAA;AACJ;AAEA,SAAS,oBAAoB,GAAA,EAAa;AACxC,EAAA,OAAO,WAAA,CAAY,GAAA,CAAI,CAAC,CAAC,IAAA,MAAU,QAAA,IAAY,WAAA,EAAa,SAAS,CAAA,MAAO;AAAA,IAC1E,IAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA,EAAS,IAAA;AAAA,IACT,KAAA,EAAO,uBAAuB,IAAI,CAAA,CAAA,CAAA;AAAA,IAClC,SAAA,EAAW,GAAA;AAAA,IACX,SAAA,EAAW;AAAA,GACb,CAAE,CAAA;AACJ;AAEA,SAAS,eAAe,GAAA,EAAa;AACnC,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,CAAE,OAAA;AAAA,IAAQ,CAAC,CAAC,QAAA,EAAU,MAAM,MAC3D,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,MAAW;AAAA,MAC5B,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA,EAAO,SAAS,KAAK,CAAA;AAAA,MACrB,aAAa,CAAA,EAAG,QAAA,CAAS,KAAK,CAAC,IAAI,QAAQ,CAAA,OAAA,CAAA;AAAA,MAC3C,IAAA,EAAM,UAAA;AAAA,MACN,QAAA,EAAU,EAAE,WAAA,EAAa,sCAAA,EAAuC;AAAA,MAChE,WAAW,KAAA,KAAU,CAAA;AAAA,MACrB,WAAW,KAAA,GAAQ,CAAA;AAAA,MACnB,MAAA,EAAQ,QAAA;AAAA,MACR,SAAA,EAAW,GAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb,CAAE;AAAA,GACJ;AACF;AAEO,SAAS,oCAAA,CACd,OAAA,GAA8C,EAAC,EACd;AACjC,EAAA,MAAM,GAAA,GAAM,YAAY,OAAO,CAAA;AAC/B,EAAA,MAAM,eAAe,iBAAA,CAAkB,GAAA,CAAI,KAAK,GAAA,CAAI,KAAA,EAAO,IAAI,OAAO,CAAA;AACtE,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ;AAAA,MACN,qBAAA,EAAuB;AAAA,QACrB,EAAE,MAAA,EAAQ,YAAA,EAAc,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,uDAAA,EAAyD,SAAA,EAAW,GAAA,CAAI,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,KAAA,EAAM;AAAA,QACjJ,EAAE,MAAA,EAAQ,qBAAA,EAAuB,OAAA,EAAS,IAAA,EAAM,KAAA,EAAO,2DAAA,EAA6D,SAAA,EAAW,GAAA,CAAI,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,KAAA;AAAM,OAC/J;AAAA,MACA,mBAAA,EAAqB;AAAA,QACnB,EAAE,WAAA,EAAa,aAAA,EAAe,MAAM,aAAA,EAAe,WAAA,EAAa,mCAAmC,IAAA,EAAM,UAAA,EAAY,QAAQ,QAAA,EAAU,SAAA,EAAW,IAAI,KAAA,EAAO,SAAA,EAAW,IAAI,GAAA,EAAK,SAAA,EAAW,IAAI,GAAA;AAAI,OACtM;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB;AAAA,UACE,UAAA,EAAY,aAAA;AAAA,UACZ,WAAA,EAAa,aAAA;AAAA,UACb,SAAS,GAAA,CAAI,OAAA;AAAA,UACb,MAAA,EAAQ,WAAA;AAAA,UACR,WAAA,EAAa,CAAC,QAAA,EAAU,UAAA,EAAY,YAAY,QAAA,EAAU,UAAA,EAAY,QAAQ,UAAA,EAAY,OAAA,EAAS,QAAQ,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,MAAW,EAAE,OAAO,KAAA,EAAO,QAAA,CAAS,KAAK,CAAA,EAAE,CAAE,CAAA;AAAA,UAC/J,SAAA,EAAW,CAAC,UAAA,EAAY,SAAA,EAAW,cAAc,cAAA,EAAgB,UAAA,EAAY,SAAS,YAAA,EAAc,aAAa,EAAE,GAAA,CAAI,CAAC,WAAW,EAAE,KAAA,EAAO,OAAO,QAAA,CAAS,KAAK,GAAE,CAAE,CAAA;AAAA,UACrK,YAAA,EAAc,iCAAA;AAAA,UACd,aAAa,GAAA,CAAI,KAAA;AAAA,UACjB,aAAa,GAAA,CAAI,GAAA;AAAA,UACjB,WAAW,GAAA,CAAI;AAAA;AACjB,OACF;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,EAAE,QAAA,EAAU,GAAA,CAAI,gBAAA,EAAkB,IAAA,EAAM,iCAAA,EAAmC,WAAA,EAAa,4DAAA,EAA8D,aAAA,EAAe,sBAAA,EAAwB,UAAA,EAAY,EAAE,aAAA,EAAe,IAAA,EAAK,EAAG,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,KAAA,EAAO,SAAA,EAAW,GAAA,CAAI,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,GAAA;AAAI,OAC/T;AAAA,MACA,gBAAA,EAAkB,cAAA,CAAe,GAAA,CAAI,GAAG;AAAA,KAC1C;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,cAAA,EAAgB,mBAAA,CAAoB,GAAA,CAAI,GAAA,EAAK,IAAI,KAAK,CAAA;AAAA,MACtD,kBAAA,EAAoB,qBAAA,CAAsB,GAAA,CAAI,GAAG,CAAA;AAAA,MACjD,aAAA,EAAe,iBAAA,CAAkB,GAAA,CAAI,GAAG,CAAA;AAAA,MACxC,gBAAA,EAAkB,mBAAA,CAAoB,GAAA,CAAI,GAAG,CAAA;AAAA,MAC7C,iBAAA,EAAmB;AAAA,QACjB,CAAC,UAAA,EAAY,UAAA,EAAY,UAAU,CAAA;AAAA,QACnC,CAAC,IAAA,EAAM,kBAAA,EAAoB,qBAAqB,CAAA;AAAA,QAChD,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ;AAAA,OAC/B,CAAE,GAAA,CAAI,CAAC,CAAC,aAAa,aAAA,EAAe,aAAa,CAAA,MAAO,EAAE,QAAA,EAAU,GAAA,CAAI,gBAAA,EAAkB,WAAA,EAAa,eAAe,aAAA,EAAe,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,EAAE,WAAA,EAAa,GAAA,CAAI,OAAA,IAAW,SAAA,EAAW,GAAA,CAAI,KAAA,EAAO,SAAA,EAAW,GAAA,CAAI,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,KAAI,CAAE,CAAA;AAAA,MAC9P,YAAA,EAAc;AAAA,QACZ,EAAE,QAAA,EAAU,GAAA,CAAI,gBAAA,EAAkB,cAAA,EAAgB,MAAA,EAAQ,iBAAA,EAAmB,KAAA,EAAO,sBAAA,EAAwB,QAAA,EAAU,YAAA,EAAc,EAAE,iBAAA,EAAmB,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAK,EAAG,iBAAA,EAAmB,EAAA,EAAI,yBAAA,EAA2B,EAAC,EAAG,SAAA,EAAW,GAAA,CAAI,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,KAAA;AAAM,OAC7R;AAAA,MACA,kBAAA,EAAoB;AAAA,QAClB,EAAE,QAAA,EAAU,GAAA,CAAI,gBAAA,EAAkB,cAAA,EAAgB,cAAc,WAAA,EAAa,YAAA,EAAc,WAAA,EAAa,qDAAA,EAAuD,QAAA,EAAU,QAAA,EAAU,cAAc,CAAC,QAAA,EAAU,eAAA,EAAiB,WAAW,CAAA,EAAG,MAAA,EAAQ,EAAE,UAAA,EAAY,uCAAA,EAAyC,QAAA,EAAU,MAAA,EAAQ,OAAA,EAAS,GAAA,IAAS,SAAA,EAAW,EAAE,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,QAAQ,MAAA,EAAQ,cAAA,EAAgB,OAAA,EAAS,UAAA,EAAY,SAAA,EAAU,IAAK,MAAA,EAAQ,UAAA,EAAY,UAAA,EAAY,CAAA,EAAG,SAAA,EAAW,GAAA,CAAI,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,GAAA,EAAK,SAAA,EAAW,GAAA,CAAI,KAAA;AAAM,OAC5hB;AAAA,MACA,gBAAgB,mBAAA,CAAoB,GAAA,CAAI,kBAAkB,GAAA,CAAI,GAAA,EAAK,IAAI,KAAK,CAAA;AAAA,MAC5E,UAAU,aAAA,CAAc,YAAA,EAAc,GAAA,CAAI,GAAA,EAAK,IAAI,KAAK,CAAA;AAAA,MACxD;AAAA;AACF,GACF;AACF","file":"tenant-bootstrap-seed.defaults.js","sourcesContent":["import { ALL_FUNCTION_CONTRACTS } from \"./function-registry/index.js\";\nimport type { FunctionContract } from \"./function-registry/types.js\";\n\nexport const TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION = \"2026-04-30.1\" as const;\nexport const TENANT_BOOTSTRAP_TEMPLATE_TENANT_ID = \"tenant_template\" as const;\nexport const TENANT_BOOTSTRAP_TEMPLATE_ACTOR =\n \"system:lucern-template-seed\" as const;\n\nexport type TenantBootstrapTemplateSeedRows = {\n kernel: Record<string, Array<Record<string, unknown>>>;\n \"control-plane\": Record<string, Array<Record<string, unknown>>>;\n};\n\nexport type TenantBootstrapTemplateSeedOptions = {\n now?: number;\n templateTenantId?: string;\n actorPrincipalId?: string;\n version?: string;\n};\n\ntype ToolRole =\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\ntype ToolCategory = \"read\" | \"write\" | \"admin\" | \"system\";\n\nconst DEFAULT_SEED_TIME = Date.UTC(2026, 3, 30);\n\nconst ROLE_GRANTS: Record<ToolRole, ToolRole[]> = {\n viewer: [\"viewer\", \"auditor\", \"editor\", \"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n auditor: [\"auditor\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n editor: [\"editor\", \"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n workspace_admin: [\"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"],\n tenant_admin: [\"tenant_admin\", \"platform_admin\", \"service_agent\"],\n platform_admin: [\"platform_admin\", \"service_agent\"],\n service_agent: [\"service_agent\"],\n};\n\nconst ENUM_VALUES: Record<string, readonly string[]> = {\n topic_type: [\"domain\", \"theme\", \"deal\", \"strategy\", \"constitution\", \"project\", \"portfolio\", \"architecture\", \"capability\", \"runtime\", \"interface\", \"governance\", \"operations\", \"security\", \"data\"],\n branch_schema: [\"pillar\", \"track\", \"dimension\", \"axis\", \"phase\"],\n belief_type: [\"belief\", \"hypothesis\", \"principle\", \"invariant\", \"assumption\", \"tenet\", \"prior\", \"preference\", \"goal\", \"forecast\", \"decision\", \"constraint\", \"tradeoff\", \"policy\", \"implementation_choice\", \"implementation_decision\", \"interface_contract\", \"migration_state\", \"code_pattern\", \"deprecation_notice\"],\n edge_type: [\"supports\", \"informs\", \"depends_on\", \"derived_from\", \"contains\", \"tests\", \"supersedes\", \"responds_to\", \"belongs_to\", \"relates_to_thesis\", \"works_at\", \"invested_in\", \"competes_with\", \"participates_in\", \"founded_by\", \"evaluates\", \"performs\", \"function_in\", \"impacts\", \"raised_from\", \"mentioned_in\", \"perspective_on\", \"plays_theme\"],\n worktree_type: [\"belief_test\", \"lens\", \"existential\", \"contradiction\", \"refinement\", \"coverage\", \"discovery\", \"clarification\", \"confirmation\"],\n worktree_phase: [\"cluster_mapping\", \"hypothesis_formation\", \"question_generation\", \"evidence_collection\", \"synthesis\", \"decision\", \"retrospective\"],\n activity_type: [\"create\", \"update\", \"review\", \"merge\", \"archive\", \"comment\", \"status_change\", \"evidence_added\", \"question_added\"],\n lens_perspective_type: [\"investigation\", \"monitoring\", \"analysis\", \"comparison\", \"taxonomy\"],\n node_type: [\"belief\", \"question\", \"theme\", \"deal\", \"evidence\", \"claim\", \"synthesis\", \"source\", \"excerpt\", \"atomic_fact\", \"person\", \"company\", \"investor\", \"value_chain\", \"function\", \"decision\"],\n};\n\nconst MODEL_REGISTRY = [\n [\"claude-sonnet-4\", \"Claude Sonnet 4\", \"claude-sonnet-4-20250514\", \"anthropic\", 200000, 64000, 1, 3, 15],\n [\"claude-sonnet-4.5\", \"Claude Sonnet 4.5\", \"claude-sonnet-4-5-20250929\", \"anthropic\", 200000, 64000, 1, 3, 15],\n [\"claude-opus-4\", \"Claude Opus 4\", \"claude-opus-4-20250514\", \"anthropic\", 200000, 32000, 1, 15, 75],\n [\"gpt-4o\", \"GPT-4o\", \"gpt-4o\", \"openai\", 128000, 16000, 0.7, 5, 15],\n [\"gpt-4o-mini\", \"GPT-4o Mini\", \"gpt-4o-mini\", \"openai\", 128000, 16000, 0.7, 0.15, 0.6],\n [\"gemini-2.5-pro\", \"Gemini 2.5 Pro\", \"gemini-2.5-pro\", \"google\", 1000000, 32000, 0.7, 1.25, 10],\n [\"sonar-pro\", \"Sonar Pro\", \"sonar-pro\", \"perplexity\", 128000, 8000, 0.3, 3, 15],\n] as const;\n\nconst MODEL_SLOTS = [\n [\"primer_default\", \"primers\", \"Default primer generation for general topics\", \"claude-sonnet-4\", \"agents/primer/system\", 1, 4000, [\"text_generation\", \"reasoning\"]],\n [\"primer_technical\", \"primers\", \"Technical and engineering focused primers\", \"claude-sonnet-4\", \"agents/primer/system\", 0.8, 4000, [\"text_generation\", \"reasoning\", \"code\"]],\n [\"primer_intelligence\", \"document_intelligence\", \"Extract evidence, beliefs, and questions from documents\", \"claude-sonnet-4\", \"agents/primer-intelligence\", 0.3, 8000, [\"text_generation\", \"structured_output\", \"reasoning\"]],\n [\"fact_checker\", \"research\", \"Verify claims without web search\", \"claude-sonnet-4\", \"agents/internet-fact-checker\", 0.3, 4000, [\"text_generation\", \"reasoning\"]],\n [\"fact_checker_web\", \"research\", \"Verify claims with web search\", \"sonar-pro\", \"agents/internet-fact-checker\", 0.3, 4000, [\"web_search\"]],\n [\"deep_research\", \"research\", \"Deep research with extended analysis\", \"claude-opus-4\", undefined, 0.7, 8000, [\"text_generation\", \"reasoning\", \"long_context\"]],\n [\"belief_classifier\", \"classification\", \"Classify beliefs by epistemic type\", \"claude-sonnet-4\", \"classification/belief-category\", 0.2, 1000, [\"text_generation\", \"reasoning\"]],\n [\"evidence_classifier\", \"classification\", \"Classify evidence methodology and quality\", \"claude-sonnet-4\", \"classification/evidence-rules\", 0.3, 1000, [\"text_generation\", \"reasoning\"]],\n [\"edge_classifier\", \"classification\", \"Classify edge reasoning method and temporal class\", \"claude-sonnet-4\", \"classification/epistemic-guidance\", 0.3, 1000, [\"text_generation\", \"reasoning\"]],\n [\"entity_extractor\", \"extraction\", \"Extract entities from text\", \"claude-sonnet-4\", undefined, 0.2, 2000, [\"text_generation\", \"structured_output\"]],\n [\"graph_intelligence_query\", \"graph_intelligence\", \"Analyze graph health, gaps, and structural risks\", \"claude-sonnet-4\", \"graph-intelligence/query\", 0.5, 8000, [\"text_generation\", \"reasoning\", \"tool_use\"]],\n [\"graph_intelligence_suggestions\", \"graph_intelligence\", \"Extract actionable graph suggestions\", \"claude-sonnet-4\", \"graph-intelligence/suggestions-extraction\", 0.2, 4000, [\"text_generation\", \"structured_output\"]],\n [\"text_to_cypher\", \"graph_intelligence\", \"Generate read-only Cypher from graph questions\", \"claude-sonnet-4\", \"graph-intelligence/text-to-cypher\", 0.2, 2000, [\"text_generation\", \"code\", \"reasoning\"]],\n [\"contradiction_verifier\", \"epistemic\", \"Verify semantic contradiction candidates\", \"claude-sonnet-4\", \"lucern/verify-contradiction\", 0.2, 500, [\"text_generation\", \"reasoning\"]],\n [\"task_execution\", \"tasks\", \"Execute research tasks with structured analysis\", \"claude-sonnet-4\", undefined, 0.3, 4000, [\"text_generation\", \"reasoning\", \"structured_output\"]],\n [\"sprint_unified\", \"sprints\", \"Unified worktree chat across all phases\", \"claude-opus-4\", \"worktrees/unified-system-prompt\", 0.7, 8000, [\"text_generation\", \"reasoning\", \"tool_use\"]],\n [\"evidence_assessor\", \"sprints\", \"Assess evidence for belief valence and certainty\", \"claude-sonnet-4\", \"worktrees/scoring/evidence-assessor\", 0.3, 4000, [\"text_generation\", \"reasoning\", \"structured_output\"]],\n [\"title_generator\", \"utility\", \"Generate concise titles\", \"gpt-4o-mini\", undefined, 0.7, 100, [\"text_generation\", \"fast\", \"cheap\"]],\n [\"help_desk_agent\", \"utility\", \"Help desk support agent for workflow guidance\", \"claude-sonnet-4\", \"agents/help-desk-agent\", 0.4, 2000, [\"text_generation\", \"reasoning\"]],\n [\"bug_detective_agent\", \"utility\", \"Bug triage assistant for structured diagnosis\", \"claude-sonnet-4\", \"agents/bug-detective-agent\", 0.3, 2000, [\"text_generation\", \"reasoning\"]],\n] as const;\n\nfunction labelFor(value: string): string {\n return value\n .split(/[_-]/)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction seedContext(options: TenantBootstrapTemplateSeedOptions) {\n return {\n now: options.now ?? DEFAULT_SEED_TIME,\n templateTenantId: options.templateTenantId ?? TENANT_BOOTSTRAP_TEMPLATE_TENANT_ID,\n actor: options.actorPrincipalId ?? TENANT_BOOTSTRAP_TEMPLATE_ACTOR,\n version: options.version ?? TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION,\n };\n}\n\nfunction toolCategory(contract: FunctionContract): ToolCategory {\n if (contract.surfaceIntent === \"system\") return \"system\";\n if (contract.effects.includes(\"admin\")) return \"admin\";\n if (contract.effects.includes(\"write\") || contract.kind !== \"query\") return \"write\";\n return \"read\";\n}\n\nfunction requiredRole(category: ToolCategory): ToolRole {\n if (category === \"system\") return \"service_agent\";\n if (category === \"admin\") return \"tenant_admin\";\n if (category === \"write\") return \"editor\";\n return \"viewer\";\n}\n\nfunction requiredAction(category: ToolCategory) {\n if (category === \"admin\" || category === \"system\") return \"admin\";\n if (category === \"write\") return \"mutate\";\n return \"read\";\n}\n\nfunction enabledSurfaces(contract: FunctionContract): string[] {\n return [\n contract.surfaces.mcp !== \"none\" ? \"mcp\" : undefined,\n contract.surfaces.sdk !== \"none\" ? \"sdk\" : undefined,\n contract.surfaces.cli !== \"none\" ? \"cli\" : undefined,\n contract.surfaces.rest !== \"none\" ? \"api\" : undefined,\n ].filter((value): value is string => Boolean(value));\n}\n\nfunction buildToolRegistry(now: number, actor: string, version: string) {\n const rows = new Map<string, Record<string, unknown>>();\n for (const contract of ALL_FUNCTION_CONTRACTS) {\n const surfaces = enabledSurfaces(contract);\n if (surfaces.length === 0) continue;\n const category = toolCategory(contract);\n const readOnly = category === \"read\";\n const toolName = contract.mcp.toolName || contract.name;\n rows.set(toolName, {\n toolName,\n description: contract.openapi.summary,\n version,\n status: \"active\",\n requiredRole: requiredRole(category),\n requiredAction: requiredAction(category),\n surfaces,\n category,\n parameterSchema: { contract: contract.name, sdk: contract.sdk },\n handlerRef: contract.convex\n ? `${contract.convex.module}.${contract.convex.functionName}`\n : contract.name,\n executionAdapter:\n contract.convex?.kind === \"action\"\n ? \"convex_action\"\n : contract.convex?.kind === \"mutation\"\n ? \"convex_mutation\"\n : \"mcp_tool\",\n safetyMetadata: {\n readOnly,\n idempotent:\n readOnly ||\n contract.idempotent === true ||\n contract.idempotent === \"required\",\n sideEffectLevel: readOnly ? \"none\" : category === \"admin\" ? \"high\" : \"low\",\n },\n isCore: true,\n mcVersion: version,\n registeredBy: actor,\n registeredAt: now,\n });\n }\n return [...rows.values()].sort((a, b) =>\n String(a.toolName).localeCompare(String(b.toolName))\n );\n}\n\nfunction buildToolAcls(tools: Array<Record<string, unknown>>, now: number, actor: string) {\n return tools.flatMap((tool) =>\n (ROLE_GRANTS[tool.requiredRole as ToolRole] ?? [tool.requiredRole as ToolRole]).map(\n (role) => ({ role, toolName: tool.toolName, createdBy: actor, createdAt: now })\n )\n );\n}\n\nfunction buildMcpWritePolicy(now: number, actor: string) {\n return [\n ...[\"viewer\", \"auditor\"].map((role) => ({\n role,\n toolCategory: \"write\",\n permission: \"deny\",\n enabled: true,\n rationale: \"Read-only roles cannot mutate the reasoning graph.\",\n createdAt: now,\n updatedAt: now,\n createdBy: actor,\n })),\n ...[\"editor\", \"workspace_admin\", \"tenant_admin\", \"platform_admin\", \"service_agent\"].map((role) => ({\n role,\n toolCategory: \"write\",\n permission: \"allow\",\n maxWritesPerSession: role === \"editor\" ? 200 : undefined,\n enabled: true,\n rationale: \"Default global write policy for trusted graph mutation roles.\",\n createdAt: now,\n updatedAt: now,\n createdBy: actor,\n })),\n ];\n}\n\nfunction buildTenantPolicies(tenantId: string, now: number, actor: string) {\n const rows = [\n [\"viewer\", \"Read graph and runtime metadata.\", [{ resource: \"graph\", actions: [\"read\"] }]],\n [\"auditor\", \"Read graph, audit, and policy decisions.\", [{ resource: \"audit\", actions: [\"read\", \"export\"] }]],\n [\"editor\", \"Read and mutate tenant reasoning state.\", [{ resource: \"graph\", actions: [\"read\", \"create\", \"update\", \"mutate\"] }]],\n [\"workspace_admin\", \"Manage workspace-scoped reasoning operations.\", [{ resource: \"workspace\", actions: [\"read\", \"update\", \"admin\"] }]],\n [\"tenant_admin\", \"Manage tenant policy, tools, users, and publication.\", [{ resource: \"tenant\", actions: [\"read\", \"update\", \"admin\"] }, { resource: \"policy\", actions: [\"read\", \"create\", \"update\", \"admin\"] }]],\n [\"service_agent\", \"Service principal execution role for automation.\", [{ resource: \"runtime\", actions: [\"read\", \"create\", \"update\"] }, { resource: \"graph\", actions: [\"read\", \"create\", \"update\", \"mutate\"] }]],\n ] as const;\n return rows.map(([roleName, description, permissions]) => ({\n tenantId,\n roleName,\n description,\n permissions,\n groupBindings: [],\n createdAt: now,\n updatedAt: now,\n createdBy: actor,\n updatedBy: actor,\n }));\n}\n\nfunction modelRegistryRows(now: number) {\n return MODEL_REGISTRY.map(([key, name, modelId, provider, contextWindow, maxOutputTokens, defaultTemperature, inputCostPer1M, outputCostPer1M]) => ({\n key,\n name,\n modelId,\n provider,\n capabilities: [\"text_generation\", \"reasoning\"],\n contextWindow,\n maxOutputTokens,\n defaultTemperature,\n inputCostPer1M,\n outputCostPer1M,\n recommended: true,\n enabled: true,\n createdAt: now,\n updatedAt: now,\n }));\n}\n\nfunction modelFunctionSlotRows(now: number) {\n return MODEL_SLOTS.map(([slot, category, description, modelKey, promptName, temperature, maxTokens, requiredCapabilities]) => ({\n slot,\n category,\n description,\n modelKey,\n promptName,\n temperature,\n maxTokens,\n requiredCapabilities,\n enabled: true,\n isDefault: true,\n notes: `Seeded by ${TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION}.`,\n createdAt: now,\n updatedAt: now,\n }));\n}\n\nfunction modelSlotConfigRows(now: number) {\n return MODEL_SLOTS.map(([slot, , , modelKey, , temperature, maxTokens]) => ({\n slot,\n modelKey,\n temperature,\n maxTokens,\n enabled: true,\n notes: `Default routing for ${slot}.`,\n createdAt: now,\n updatedAt: now,\n }));\n}\n\nfunction schemaEnumRows(now: number) {\n return Object.entries(ENUM_VALUES).flatMap(([category, values]) =>\n values.map((value, index) => ({\n category,\n value,\n label: labelFor(value),\n description: `${labelFor(value)} ${category} value.`,\n tier: \"platform\",\n metadata: { seedVersion: TENANT_BOOTSTRAP_TEMPLATE_SEED_VERSION },\n isDefault: index === 0,\n sortOrder: index + 1,\n status: \"active\",\n createdAt: now,\n updatedAt: now,\n }))\n );\n}\n\nexport function buildTenantBootstrapTemplateSeedRows(\n options: TenantBootstrapTemplateSeedOptions = {}\n): TenantBootstrapTemplateSeedRows {\n const ctx = seedContext(options);\n const toolRegistry = buildToolRegistry(ctx.now, ctx.actor, ctx.version);\n return {\n kernel: {\n backgroundJobSettings: [\n { jobKey: \"neo4j_sync\", enabled: false, notes: \"Disabled until graph-sync credentials are configured.\", updatedAt: ctx.now, updatedBy: ctx.actor },\n { jobKey: \"calibration_rollups\", enabled: true, notes: \"Compute calibration rollups when calibration data exists.\", updatedAt: ctx.now, updatedBy: ctx.actor },\n ],\n ontologyDefinitions: [\n { ontologyKey: \"lucern-core\", name: \"Lucern Core\", description: \"Core Lucern reasoning taxonomy.\", tier: \"platform\", status: \"active\", createdBy: ctx.actor, createdAt: ctx.now, updatedAt: ctx.now },\n ],\n ontologyVersions: [\n {\n ontologyId: \"lucern-core\",\n ontologyKey: \"lucern-core\",\n version: ctx.version,\n status: \"published\",\n entityTypes: [\"belief\", \"question\", \"evidence\", \"answer\", \"decision\", \"task\", \"worktree\", \"topic\", \"source\"].map((value) => ({ value, label: labelFor(value) })),\n edgeTypes: [\"supports\", \"informs\", \"depends_on\", \"derived_from\", \"contains\", \"tests\", \"supersedes\", \"responds_to\"].map((value) => ({ value, label: labelFor(value) })),\n releaseNotes: \"Initial platform ontology seed.\",\n publishedBy: ctx.actor,\n publishedAt: ctx.now,\n createdAt: ctx.now,\n },\n ],\n publicationRules: [\n { tenantId: ctx.templateTenantId, name: \"publish-high-confidence-beliefs\", description: \"Publish high-confidence beliefs to tenant-level consumers.\", conditionType: \"confidence_threshold\", conditions: { minConfidence: 0.85 }, enabled: true, priority: 100, createdBy: ctx.actor, createdAt: ctx.now, updatedAt: ctx.now },\n ],\n schemaEnumConfig: schemaEnumRows(ctx.now),\n },\n \"control-plane\": {\n mcpWritePolicy: buildMcpWritePolicy(ctx.now, ctx.actor),\n modelFunctionSlots: modelFunctionSlotRows(ctx.now),\n modelRegistry: modelRegistryRows(ctx.now),\n modelSlotConfigs: modelSlotConfigRows(ctx.now),\n platformAudiences: [\n [\"internal\", \"Internal\", \"internal\"],\n [\"lp\", \"Limited Partners\", \"restricted_external\"],\n [\"public\", \"Public\", \"public\"],\n ].map(([audienceKey, audienceLabel, audienceClass]) => ({ tenantId: ctx.templateTenantId, audienceKey, audienceLabel, audienceClass, status: \"active\", metadata: { seedVersion: ctx.version }, createdBy: ctx.actor, createdAt: ctx.now, updatedAt: ctx.now })),\n tenantConfig: [\n { tenantId: ctx.templateTenantId, authPolicyMode: \"open\", defaultSessionTTL: 28800, defaultTopicVisibility: \"tenant\", featureFlags: { sdkBootstrapSeeds: true, interactiveRoleAuth: true }, maxWorkspaceCount: 25, defaultModelSlotOverrides: {}, updatedAt: ctx.now, updatedBy: ctx.actor },\n ],\n tenantIntegrations: [\n { tenantId: ctx.templateTenantId, integrationKey: \"web-search\", displayName: \"Web Search\", description: \"Tenant-configurable search integration placeholder.\", category: \"search\", capabilities: [\"search\", \"deep_research\", \"summarize\"], config: { apiBaseUrl: \"https://example.invalid/lucern/search\", authType: \"none\", timeout: 30000 }, endpoints: { search: { path: \"/search\", method: \"POST\", queryParamName: \"query\", resultPath: \"results\" } }, status: \"disabled\", usageCount: 0, createdAt: ctx.now, updatedAt: ctx.now, createdBy: ctx.actor },\n ],\n tenantPolicies: buildTenantPolicies(ctx.templateTenantId, ctx.now, ctx.actor),\n toolAcls: buildToolAcls(toolRegistry, ctx.now, ctx.actor),\n toolRegistry,\n },\n };\n}\n"]}
@@ -55,7 +55,7 @@ declare const TENANT_CLIENT_INSTALLABLE_PACKAGES: readonly [{
55
55
  readonly directTenantImport: true;
56
56
  }, {
57
57
  readonly packageName: "@lucern/control-plane";
58
- readonly role: "platform_runtime";
58
+ readonly role: "component_runtime";
59
59
  readonly directTenantImport: false;
60
60
  }, {
61
61
  readonly packageName: "@lucern/developer-kit";
@@ -73,10 +73,6 @@ declare const TENANT_CLIENT_INSTALLABLE_PACKAGES: readonly [{
73
73
  readonly packageName: "@lucern/graph-sync";
74
74
  readonly role: "host_addon_runtime";
75
75
  readonly directTenantImport: true;
76
- }, {
77
- readonly packageName: "@lucern/identity";
78
- readonly role: "component_runtime";
79
- readonly directTenantImport: false;
80
76
  }, {
81
77
  readonly packageName: "@lucern/mcp";
82
78
  readonly role: "runtime_entrypoint";
@@ -105,6 +101,10 @@ declare const TENANT_CLIENT_INSTALLABLE_PACKAGES: readonly [{
105
101
  readonly packageName: "@lucern/sdk";
106
102
  readonly role: "runtime_entrypoint";
107
103
  readonly directTenantImport: true;
104
+ }, {
105
+ readonly packageName: "@lucern/secrets";
106
+ readonly role: "sdk_dependency";
107
+ readonly directTenantImport: false;
108
108
  }, {
109
109
  readonly packageName: "@lucern/server-core";
110
110
  readonly role: "platform_runtime";
@@ -127,7 +127,7 @@ type TenantClientInstallablePackageName = TenantClientInstallablePackage["packag
127
127
  *
128
128
  * These concepts intentionally differ: `@lucern/cli` is a direct install when a
129
129
  * tenant repo needs the `lucern` binary, but it is not a direct application
130
- * import. `@lucern/reasoning-kernel` and `@lucern/identity` are direct installs
130
+ * import. `@lucern/reasoning-kernel` and `@lucern/control-plane` are direct installs
131
131
  * for Convex component binding, while tenant app code should only import their
132
132
  * explicit component config subpaths.
133
133
  */
@@ -150,8 +150,8 @@ declare const TENANT_CLIENT_INSTALL_PROFILES: readonly [{
150
150
  readonly dependencyField: "dependencies";
151
151
  }, {
152
152
  readonly id: "convex_components";
153
- readonly description: "Tenant Convex host install for binding the Lucern identity and reasoning-kernel components.";
154
- readonly packageNames: readonly ["@lucern/identity", "@lucern/reasoning-kernel"];
153
+ readonly description: "Tenant Convex host install for binding the Lucern control-plane and reasoning-kernel components.";
154
+ readonly packageNames: readonly ["@lucern/control-plane", "@lucern/reasoning-kernel"];
155
155
  readonly dependencyField: "dependencies";
156
156
  }, {
157
157
  readonly id: "graph_mirroring_addon";
@@ -176,7 +176,7 @@ declare const TENANT_CLIENT_INSTALL_PROFILES: readonly [{
176
176
  }, {
177
177
  readonly id: "full_suite";
178
178
  readonly description: "Full coherent Lucern package suite for design-partner repos that want every published runtime, tool, component, test, and config package pinned together.";
179
- readonly packageNames: readonly ("@lucern/access-control" | "@lucern/agent" | "@lucern/auth" | "@lucern/cli" | "@lucern/client-core" | "@lucern/confidence" | "@lucern/config" | "@lucern/contracts" | "@lucern/control-plane" | "@lucern/developer-kit" | "@lucern/events" | "@lucern/graph-primitives" | "@lucern/graph-sync" | "@lucern/identity" | "@lucern/mcp" | "@lucern/pack-host" | "@lucern/pack-installer" | "@lucern/proof-compiler" | "@lucern/react" | "@lucern/reasoning-kernel" | "@lucern/sdk" | "@lucern/server-core" | "@lucern/testing" | "@lucern/types")[];
179
+ readonly packageNames: readonly ("@lucern/access-control" | "@lucern/agent" | "@lucern/auth" | "@lucern/cli" | "@lucern/client-core" | "@lucern/confidence" | "@lucern/config" | "@lucern/contracts" | "@lucern/control-plane" | "@lucern/developer-kit" | "@lucern/events" | "@lucern/graph-primitives" | "@lucern/graph-sync" | "@lucern/mcp" | "@lucern/pack-host" | "@lucern/pack-installer" | "@lucern/proof-compiler" | "@lucern/react" | "@lucern/reasoning-kernel" | "@lucern/sdk" | "@lucern/secrets" | "@lucern/server-core" | "@lucern/testing" | "@lucern/types")[];
180
180
  readonly dependencyField: "mixed";
181
181
  }];
182
182
  type TenantClientInstallProfileId = (typeof TENANT_CLIENT_INSTALL_PROFILES)[number]["id"];
@@ -226,10 +226,10 @@ type TenantClientPublicImport = (typeof TENANT_CLIENT_PUBLIC_IMPORTS)[number];
226
226
  type TenantClientPublicPackage = TenantClientPublicImport["packageName"];
227
227
  type TenantClientPublicSurface = TenantClientPublicImport["surface"];
228
228
  declare const TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS: readonly [{
229
- readonly packageName: "@lucern/identity";
230
- readonly importPath: "@lucern/identity/convex.config";
229
+ readonly packageName: "@lucern/control-plane";
230
+ readonly importPath: "@lucern/control-plane/convex.config";
231
231
  readonly surface: "component_config";
232
- readonly description: "Convex component binding config for tenant deployments that install Lucern identity.";
232
+ readonly description: "Convex component binding config for tenant deployments that install the Lucern control plane.";
233
233
  }, {
234
234
  readonly packageName: "@lucern/reasoning-kernel";
235
235
  readonly importPath: "@lucern/reasoning-kernel/convex.config";
@@ -73,7 +73,7 @@ var TENANT_CLIENT_INSTALLABLE_PACKAGES = [
73
73
  },
74
74
  {
75
75
  packageName: "@lucern/control-plane",
76
- role: "platform_runtime",
76
+ role: "component_runtime",
77
77
  directTenantImport: false
78
78
  },
79
79
  {
@@ -96,11 +96,6 @@ var TENANT_CLIENT_INSTALLABLE_PACKAGES = [
96
96
  role: "host_addon_runtime",
97
97
  directTenantImport: true
98
98
  },
99
- {
100
- packageName: "@lucern/identity",
101
- role: "component_runtime",
102
- directTenantImport: false
103
- },
104
99
  {
105
100
  packageName: "@lucern/mcp",
106
101
  role: "runtime_entrypoint",
@@ -136,6 +131,11 @@ var TENANT_CLIENT_INSTALLABLE_PACKAGES = [
136
131
  role: "runtime_entrypoint",
137
132
  directTenantImport: true
138
133
  },
134
+ {
135
+ packageName: "@lucern/secrets",
136
+ role: "sdk_dependency",
137
+ directTenantImport: false
138
+ },
139
139
  {
140
140
  packageName: "@lucern/server-core",
141
141
  role: "platform_runtime",
@@ -170,8 +170,8 @@ var TENANT_CLIENT_INSTALL_PROFILES = [
170
170
  },
171
171
  {
172
172
  id: "convex_components",
173
- description: "Tenant Convex host install for binding the Lucern identity and reasoning-kernel components.",
174
- packageNames: ["@lucern/identity", "@lucern/reasoning-kernel"],
173
+ description: "Tenant Convex host install for binding the Lucern control-plane and reasoning-kernel components.",
174
+ packageNames: ["@lucern/control-plane", "@lucern/reasoning-kernel"],
175
175
  dependencyField: "dependencies"
176
176
  },
177
177
  {
@@ -251,10 +251,10 @@ var TENANT_CLIENT_PUBLIC_IMPORTS = [
251
251
  ];
252
252
  var TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS = [
253
253
  {
254
- packageName: "@lucern/identity",
255
- importPath: "@lucern/identity/convex.config",
254
+ packageName: "@lucern/control-plane",
255
+ importPath: "@lucern/control-plane/convex.config",
256
256
  surface: "component_config",
257
- description: "Convex component binding config for tenant deployments that install Lucern identity."
257
+ description: "Convex component binding config for tenant deployments that install the Lucern control plane."
258
258
  },
259
259
  {
260
260
  packageName: "@lucern/reasoning-kernel",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tenant-client.contract.ts"],"names":[],"mappings":";AAcO,IAAM,8BAAA,GAAiC;AAEvC,IAAM,wBAAA,GAA2B;AAAA,EACtC,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF;AAGO,IAAM,6BAAA,GAAgC;AAAA,EAC3C,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF;AAIO,IAAM,qCAAA,GAAwC;AAAA,EACnD,UAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF;AAIO,IAAM,qCAAA,GAAwC;AAAA,EACnD,eAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF;AAIO,IAAM,+BAAA,GAAkC;AACxC,IAAM,0CAAA,GACX;AACK,IAAM,qDAAA,GAAwD;AAAA,EACnE;AACF;AACO,IAAM,kCAAA,GAAqC,CAAC,WAAW;AAMvD,IAAM,kCAAA,GAAqC;AAAA,EAChD;AAAA,IACE,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAM,oBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,eAAA;AAAA,IACb,IAAA,EAAM,kBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,cAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,aAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,qBAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,oBAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,gBAAA;AAAA,IACb,IAAA,EAAM,eAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,mBAAA;AAAA,IACb,IAAA,EAAM,qBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAM,kBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,gBAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,0BAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,oBAAA;AAAA,IACb,IAAA,EAAM,oBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,kBAAA;AAAA,IACb,IAAA,EAAM,mBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,aAAA;AAAA,IACb,IAAA,EAAM,oBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,mBAAA;AAAA,IACb,IAAA,EAAM,kBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAM,gBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,eAAA;AAAA,IACb,IAAA,EAAM,oBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,0BAAA;AAAA,IACb,IAAA,EAAM,mBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,aAAA;AAAA,IACb,IAAA,EAAM,oBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,qBAAA;AAAA,IACb,IAAA,EAAM,kBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,iBAAA;AAAA,IACb,IAAA,EAAM,cAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA;AAAA,IACE,WAAA,EAAa,eAAA;AAAA,IACb,IAAA,EAAM,qBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA;AAExB;AAwBO,IAAM,yCACX,kCAAA,CAAmC,GAAA;AAAA,EACjC,CAAC,UAAU,KAAA,CAAM;AACnB;AAEK,IAAM,8BAAA,GAAiC;AAAA,EAC5C;AAAA,IACE,EAAA,EAAI,kBAAA;AAAA,IACJ,WAAA,EACE,iGAAA;AAAA,IACF,YAAA,EAAc,CAAC,aAAA,EAAe,wBAAwB,CAAA;AAAA,IACtD,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,mBAAA;AAAA,IACJ,WAAA,EACE,+FAAA;AAAA,IACF,YAAA,EAAc,CAAC,eAAA,EAAiB,aAAA,EAAe,wBAAwB,CAAA;AAAA,IACvE,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,mBAAA;AAAA,IACJ,WAAA,EACE,6FAAA;AAAA,IACF,YAAA,EAAc,CAAC,kBAAA,EAAoB,0BAA0B,CAAA;AAAA,IAC7D,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,uBAAA;AAAA,IACJ,WAAA,EACE,yIAAA;AAAA,IACF,YAAA,EAAc,CAAC,oBAAoB,CAAA;AAAA,IACnC,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,cAAA;AAAA,IACJ,WAAA,EACE,+FAAA;AAAA,IACF,YAAA,EAAc,CAAC,aAAa,CAAA;AAAA,IAC5B,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,aAAA;AAAA,IACJ,WAAA,EACE,sFAAA;AAAA,IACF,YAAA,EAAc,CAAC,aAAa,CAAA;AAAA,IAC5B,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,qBAAA;AAAA,IACJ,WAAA,EACE,4FAAA;AAAA,IACF,YAAA,EAAc,CAAC,mBAAA,EAAqB,eAAe,CAAA;AAAA,IACnD,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,YAAA;AAAA,IACJ,WAAA,EACE,2JAAA;AAAA,IACF,YAAA,EAAc,sCAAA;AAAA,IACd,eAAA,EAAiB;AAAA;AAErB;AAUO,IAAM,4BAAA,GAA+B;AAAA,EAC1C;AAAA,IACE,WAAA,EAAa,aAAA;AAAA,IACb,OAAA,EAAS,SAAA;AAAA,IACT,QAAA,EAAU,mBAAA;AAAA,IACV,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,WAAA,EAAa,eAAA;AAAA,IACb,OAAA,EAAS,SAAA;AAAA,IACT,QAAA,EAAU,mBAAA;AAAA,IACV,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,WAAA,EAAa,aAAA;AAAA,IACb,OAAA,EAAS,SAAA;AAAA,IACT,QAAA,EAAU,mBAAA;AAAA,IACV,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS,SAAA;AAAA,IACT,QAAA,EAAU,mBAAA;AAAA,IACV,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,WAAA,EAAa,mBAAA;AAAA,IACb,OAAA,EAAS,UAAA;AAAA,IACT,QAAA,EAAU,mBAAA;AAAA,IACV,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,WAAA,EAAa,wBAAA;AAAA,IACb,OAAA,EAAS,SAAA;AAAA,IACT,QAAA,EAAU,mBAAA;AAAA,IACV,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,WAAA,EAAa,eAAA;AAAA,IACb,OAAA,EAAS,UAAA;AAAA,IACT,QAAA,EAAU,mBAAA;AAAA,IACV,WAAA,EAAa;AAAA;AAEjB;AAOO,IAAM,sCAAA,GAAyC;AAAA,EACpD;AAAA,IACE,WAAA,EAAa,kBAAA;AAAA,IACb,UAAA,EAAY,gCAAA;AAAA,IACZ,OAAA,EAAS,kBAAA;AAAA,IACT,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,WAAA,EAAa,0BAAA;AAAA,IACb,UAAA,EAAY,wCAAA;AAAA,IACZ,OAAA,EAAS,kBAAA;AAAA,IACT,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,WAAA,EAAa,0BAAA;AAAA,IACb,UAAA,EAAY,yCAAA;AAAA,IACZ,OAAA,EAAS,kBAAA;AAAA,IACT,WAAA,EACE;AAAA;AAEN;AAOO,SAAS,mCACd,WAAA,EAC4C;AAC5C,EAAA,OAAO,kCAAA,CAAmC,IAAA;AAAA,IACxC,CAAC,KAAA,KAAU,KAAA,CAAM,WAAA,KAAgB;AAAA,GACnC;AACF;AAEO,SAAS,iCAAiC,WAAA,EAA8B;AAC7E,EAAA,OAAO,OAAA,CAAQ,kCAAA,CAAmC,WAAW,CAAC,CAAA;AAChE;AAEO,IAAM,qCAAA,GAAwC;AAAA,EACnD,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,mBAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAIO,IAAM,0BAAA,GAA6B;AAAA,EACxC;AAAA,IACE,EAAA,EAAI,4BAAA;AAAA,IACJ,WAAA,EAAa,uDAAA;AAAA,IACb,QAAA,EAAU,CAAC,aAAA,EAAe,aAAa,CAAA;AAAA,IACvC,qBAAA,EAAuB;AAAA,GACzB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,2BAAA;AAAA,IACJ,WAAA,EAAa,wDAAA;AAAA,IACb,QAAA,EAAU,CAAC,aAAA,EAAe,eAAA,EAAiB,aAAa,CAAA;AAAA,IACxD,qBAAA,EAAuB;AAAA,GACzB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,sBAAA;AAAA,IACJ,WAAA,EAAa,sEAAA;AAAA,IACb,QAAA,EAAU,CAAC,aAAA,EAAe,eAAA,EAAiB,aAAa,CAAA;AAAA,IACxD,qBAAA,EAAuB;AAAA,GACzB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,uBAAA;AAAA,IACJ,WAAA,EAAa,0DAAA;AAAA,IACb,QAAA,EAAU,CAAC,aAAA,EAAe,aAAa,CAAA;AAAA,IACvC,qBAAA,EAAuB;AAAA,GACzB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,kCAAA;AAAA,IACJ,WAAA,EACE,kFAAA;AAAA,IACF,QAAA,EAAU,CAAC,aAAA,EAAe,aAAA,EAAe,aAAa,CAAA;AAAA,IACtD,qBAAA,EAAuB;AAAA,GACzB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,mCAAA;AAAA,IACJ,WAAA,EACE,4FAAA;AAAA,IACF,QAAA,EAAU,CAAC,oBAAA,EAAsB,aAAa,CAAA;AAAA,IAC9C,qBAAA,EAAuB;AAAA,GACzB;AAAA,EACA;AAAA,IACE,EAAA,EAAI,6BAAA;AAAA,IACJ,WAAA,EAAa,oDAAA;AAAA,IACb,QAAA,EAAU,CAAC,aAAA,EAAe,eAAA,EAAiB,aAAa,CAAA;AAAA,IACxD,qBAAA,EAAuB;AAAA;AAE3B;AAKO,IAAM,6BAAA,GAAgC;AAAA,EAC3C;AAAA,IACE,EAAA,EAAI,iCAAA;AAAA,IACJ,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,0BAAA;AAAA,IACJ,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,2BAAA;AAAA,IACJ,WAAA,EACE;AAAA;AAEN;AAIO,IAAM,uCAAA,GAA0C;AAAA,EACrD;AAAA,IACE,EAAA,EAAI,iBAAA;AAAA,IACJ,OAAA,EAAS,2BAAA;AAAA,IACT,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,EAAA,EAAI,kBAAA;AAAA,IACJ,OAAA,EAAS,4BAAA;AAAA,IACT,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,0BAAA;AAAA,IACJ,OAAA,EAAS,gDAAA;AAAA,IACT,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,wBAAA;AAAA,IACJ,OAAA,EAAS,4CAAA;AAAA,IACT,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,EAAA,EAAI,yBAAA;AAAA,IACJ,OAAA,EAAS,+DAAA;AAAA,IACT,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,0BAAA;AAAA,IACJ,OAAA,EAAS,qDAAA;AAAA,IACT,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,+BAAA;AAAA,IACJ,OAAA,EAAS,mEAAA;AAAA,IACT,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,sBAAA;AAAA,IACJ,OAAA,EAAS,aAAA;AAAA,IACT,WAAA,EACE;AAAA;AAEN;AAoBA,SAAS,oBACP,UAAA,EACuC;AACvC,EAAA,MAAM,kBAAkB,sCAAA,CAAuC,IAAA;AAAA,IAC7D,CAAC,KAAA,KAAU,UAAA,KAAe,KAAA,CAAM;AAAA,GAClC;AACA,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,eAAA;AAAA,EACT;AAEA,EAAA,OAAO,4BAAA,CAA6B,IAAA;AAAA,IAClC,CAAC,KAAA,KACC,UAAA,KAAe,KAAA,CAAM,WAAA,IACrB,WAAW,UAAA,CAAW,CAAA,EAAG,KAAA,CAAM,WAAW,CAAA,CAAA,CAAG;AAAA,GACjD;AACF;AAEA,SAAS,wBACP,UAAA,EACgD;AAChD,EAAA,OAAO,uCAAA,CAAwC,IAAA;AAAA,IAAK,CAAC,UACnD,IAAI,MAAA,CAAO,MAAM,OAAA,EAAS,GAAG,CAAA,CAAE,IAAA,CAAK,UAAU;AAAA,GAChD;AACF;AAEO,SAAS,2BACd,UAAA,EACkC;AAClC,EAAA,MAAM,oBAAA,GAAuB,WAAW,IAAA,EAAK;AAC7C,EAAA,MAAM,OAAA,GAAU,wBAAwB,oBAAoB,CAAA;AAE5D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,oBAAA;AAAA,MACZ,QAAA,EAAU,WAAA;AAAA,MACV,OAAA;AAAA,MACA,QAAQ,OAAA,CAAQ;AAAA,KAClB;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,GAAe,oBAAoB,oBAAoB,CAAA;AAC7D,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,oBAAA;AAAA,MACZ,QAAA,EAAU,QAAA;AAAA,MACV,YAAA;AAAA,MACA,QAAQ,YAAA,CAAa;AAAA,KACvB;AAAA,EACF;AAEA,EAAA,IAAI,oBAAA,CAAqB,UAAA,CAAW,UAAU,CAAA,EAAG;AAC/C,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,oBAAA;AAAA,MACZ,QAAA,EAAU,WAAA;AAAA,MACV,MAAA,EACE;AAAA,KACJ;AAAA,EACF;AAEA,EAAA,IACE,qBAAqB,UAAA,CAAW,IAAI,KACpC,oBAAA,CAAqB,UAAA,CAAW,KAAK,CAAA,EACrC;AACA,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,oBAAA;AAAA,MACZ,QAAA,EAAU,OAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,oBAAA;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AACF;AAEO,SAAS,2BAA2B,UAAA,EAA6B;AACtE,EAAA,OAAO,0BAAA,CAA2B,UAAU,CAAA,CAAE,QAAA,KAAa,QAAA;AAC7D;AAEO,SAAS,oCACd,UAAA,EACS;AACT,EAAA,OAAO,sCAAA,CAAuC,IAAA;AAAA,IAC5C,CAAC,KAAA,KAAU,UAAA,KAAe,KAAA,CAAM;AAAA,GAClC;AACF;AAEO,SAAS,4BAA4B,UAAA,EAA6B;AACvE,EAAA,OAAO,0BAAA,CAA2B,UAAU,CAAA,CAAE,QAAA,KAAa,QAAA;AAC7D;AAEO,SAAS,gCAAgC,UAAA,EAA0B;AACxE,EAAA,MAAM,cAAA,GAAiB,2BAA2B,UAAU,CAAA;AAC5D,EAAA,IAAI,cAAA,CAAe,aAAa,WAAA,EAAa;AAC3C,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,IAAI,KAAA,CAAM,iCAAA,CAAkC,cAAc,CAAC,CAAA;AACnE;AAEO,SAAS,kCACd,cAAA,EACQ;AACR,EAAA,MAAM,YAAY,cAAA,CAAe,OAAA,GAC7B,KAAK,cAAA,CAAe,OAAA,CAAQ,EAAE,CAAA,CAAA,CAAA,GAC9B,EAAA;AACJ,EAAA,OAAO,sCAAsC,SAAS,CAAA,EAAA,EAAK,eAAe,UAAU,CAAA,EAAA,EAAK,eAAe,MAAM,CAAA,CAAA;AAChH","file":"tenant-client.contract.js","sourcesContent":["/**\n * Tenant client contract\n *\n * Defines the generic boundary for any customer-owned product that consumes\n * Lucern through the SDK, hosted API, or MCP server. Tenant clients may run\n * their own UI, auth provider, deployment, and data plane, but reasoning\n * operations must enter through the published packages below.\n */\n\nimport type {\n SessionAuthMode,\n SessionPrincipalType,\n} from \"./auth.contract\";\n\nexport const TENANT_CLIENT_CONTRACT_VERSION = \"2026-04-27\" as const;\n\nexport const TENANT_CLIENT_AUTH_MODES = [\n \"interactive_user\",\n \"service_principal\",\n \"tenant_api_key\",\n \"session_token\",\n] as const satisfies readonly SessionAuthMode[];\nexport type TenantClientAuthMode = (typeof TENANT_CLIENT_AUTH_MODES)[number];\n\nexport const TENANT_CLIENT_PRINCIPAL_TYPES = [\n \"human\",\n \"service\",\n \"agent\",\n] as const satisfies readonly SessionPrincipalType[];\nexport type TenantClientPrincipalType =\n (typeof TENANT_CLIENT_PRINCIPAL_TYPES)[number];\n\nexport const TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS = [\n \"tenantId\",\n \"workspaceId\",\n \"principalId\",\n \"authMode\",\n \"scopes\",\n] as const;\nexport type TenantClientRequiredContextField =\n (typeof TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS)[number];\n\nexport const TENANT_CLIENT_OPTIONAL_CONTEXT_FIELDS = [\n \"principalType\",\n \"roles\",\n \"sessionId\",\n \"delegationChain\",\n] as const;\nexport type TenantClientOptionalContextField =\n (typeof TENANT_CLIENT_OPTIONAL_CONTEXT_FIELDS)[number];\n\nexport const TENANT_CLIENT_INSTALL_TOKEN_ENV = \"INSTALL_LUCERN_NPM\" as const;\nexport const TENANT_CLIENT_INSTALL_TOKEN_INFISICAL_PATH =\n \"tenants/shared\" as const;\nexport const TENANT_CLIENT_FORBIDDEN_INSTALL_TOKEN_INFISICAL_PATHS = [\n \"/platform/publish\",\n] as const;\nexport const TENANT_CLIENT_FORBIDDEN_SECRET_ENV = [\"NPM_TOKEN\"] as const;\nexport type TenantClientForbiddenInstallTokenInfisicalPath =\n (typeof TENANT_CLIENT_FORBIDDEN_INSTALL_TOKEN_INFISICAL_PATHS)[number];\nexport type TenantClientForbiddenSecretEnv =\n (typeof TENANT_CLIENT_FORBIDDEN_SECRET_ENV)[number];\n\nexport const TENANT_CLIENT_INSTALLABLE_PACKAGES = [\n {\n packageName: \"@lucern/access-control\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/agent\",\n role: \"platform_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/auth\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/cli\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/client-core\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/confidence\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/config\",\n role: \"configuration\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/contracts\",\n role: \"contract_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/control-plane\",\n role: \"platform_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/developer-kit\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/events\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/graph-primitives\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/graph-sync\",\n role: \"host_addon_runtime\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/identity\",\n role: \"component_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/mcp\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/pack-host\",\n role: \"platform_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/pack-installer\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/proof-compiler\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/react\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/reasoning-kernel\",\n role: \"component_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/sdk\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/server-core\",\n role: \"platform_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/testing\",\n role: \"test_support\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/types\",\n role: \"contract_entrypoint\",\n directTenantImport: true,\n },\n] as const;\nexport type TenantClientInstallablePackage =\n (typeof TENANT_CLIENT_INSTALLABLE_PACKAGES)[number];\nexport type TenantClientPackageRole = TenantClientInstallablePackage[\"role\"];\nexport type TenantClientInstallablePackageName =\n TenantClientInstallablePackage[\"packageName\"];\n\n/**\n * Direct package installs are package.json entries owned by the tenant repo.\n * Direct imports are source-code imports that tenant application code may use.\n *\n * These concepts intentionally differ: `@lucern/cli` is a direct install when a\n * tenant repo needs the `lucern` binary, but it is not a direct application\n * import. `@lucern/reasoning-kernel` and `@lucern/identity` are direct installs\n * for Convex component binding, while tenant app code should only import their\n * explicit component config subpaths.\n */\nexport type TenantClientInstallProfile = {\n id: string;\n description: string;\n packageNames: readonly TenantClientInstallablePackageName[];\n dependencyField: \"dependencies\" | \"devDependencies\" | \"mixed\";\n};\n\nexport const TENANT_CLIENT_FULL_SUITE_PACKAGE_NAMES =\n TENANT_CLIENT_INSTALLABLE_PACKAGES.map(\n (entry) => entry.packageName\n ) as readonly TenantClientInstallablePackageName[];\n\nexport const TENANT_CLIENT_INSTALL_PROFILES = [\n {\n id: \"core_app_runtime\",\n description:\n \"Smallest tenant app/runtime install for typed Lucern API calls plus tool-access policy helpers.\",\n packageNames: [\"@lucern/sdk\", \"@lucern/access-control\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"react_app_runtime\",\n description:\n \"React tenant app install for hooks, provider, curated graph components, and direct SDK calls.\",\n packageNames: [\"@lucern/react\", \"@lucern/sdk\", \"@lucern/access-control\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"convex_components\",\n description:\n \"Tenant Convex host install for binding the Lucern identity and reasoning-kernel components.\",\n packageNames: [\"@lucern/identity\", \"@lucern/reasoning-kernel\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"graph_mirroring_addon\",\n description:\n \"Optional tenant Convex host install for Neo4j graph projection, edge topology writes, backfill, health checks, and query proxy helpers.\",\n packageNames: [\"@lucern/graph-sync\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"operator_cli\",\n description:\n \"Developer/operator install for the `lucern` binary, including tenant bootstrap seed commands.\",\n packageNames: [\"@lucern/cli\"],\n dependencyField: \"devDependencies\",\n },\n {\n id: \"mcp_runtime\",\n description:\n \"Agent runtime install for the standalone Lucern MCP server and hosted route helpers.\",\n packageNames: [\"@lucern/mcp\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"contracts_and_types\",\n description:\n \"Compile-time contract/type install for codegen, audits, and tenant integration validation.\",\n packageNames: [\"@lucern/contracts\", \"@lucern/types\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"full_suite\",\n description:\n \"Full coherent Lucern package suite for design-partner repos that want every published runtime, tool, component, test, and config package pinned together.\",\n packageNames: TENANT_CLIENT_FULL_SUITE_PACKAGE_NAMES,\n dependencyField: \"mixed\",\n },\n] as const satisfies readonly TenantClientInstallProfile[];\nexport type TenantClientInstallProfileId =\n (typeof TENANT_CLIENT_INSTALL_PROFILES)[number][\"id\"];\n\n/**\n * Direct imports tenant-owned product code may use. This is intentionally\n * smaller than TENANT_CLIENT_INSTALLABLE_PACKAGES: several publishable packages\n * are installed as SDK dependencies, tooling, or platform runtimes but should\n * not become the application integration surface.\n */\nexport const TENANT_CLIENT_PUBLIC_IMPORTS = [\n {\n packageName: \"@lucern/sdk\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description: \"TypeScript SDK runtime and generated operation namespaces.\",\n },\n {\n packageName: \"@lucern/react\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description: \"React bindings for tenant-owned UI applications.\",\n },\n {\n packageName: \"@lucern/mcp\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description: \"MCP client/server entry points and hosted route helpers.\",\n },\n {\n packageName: \"@lucern/graph-sync\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description:\n \"Optional Neo4j graph mirroring host actions, edge API, query proxy, backfill, and health helpers.\",\n },\n {\n packageName: \"@lucern/contracts\",\n surface: \"contract\",\n subpaths: \"published_exports\",\n description: \"Published type and manifest contracts.\",\n },\n {\n packageName: \"@lucern/access-control\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description:\n \"Tenant runtime access-control helpers, including effective tool access.\",\n },\n {\n packageName: \"@lucern/types\",\n surface: \"contract\",\n subpaths: \"published_exports\",\n description: \"Published type-only helpers for tenant integration code.\",\n },\n] as const;\nexport type TenantClientPublicImport =\n (typeof TENANT_CLIENT_PUBLIC_IMPORTS)[number];\nexport type TenantClientPublicPackage =\n TenantClientPublicImport[\"packageName\"];\nexport type TenantClientPublicSurface = TenantClientPublicImport[\"surface\"];\n\nexport const TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS = [\n {\n packageName: \"@lucern/identity\",\n importPath: \"@lucern/identity/convex.config\",\n surface: \"component_config\",\n description:\n \"Convex component binding config for tenant deployments that install Lucern identity.\",\n },\n {\n packageName: \"@lucern/reasoning-kernel\",\n importPath: \"@lucern/reasoning-kernel/convex.config\",\n surface: \"component_config\",\n description:\n \"Convex component binding config for tenant deployments that install the Lucern reasoning kernel.\",\n },\n {\n packageName: \"@lucern/reasoning-kernel\",\n importPath: \"@lucern/reasoning-kernel/runtime.config\",\n surface: \"component_config\",\n description:\n \"Runtime config alias for tenant deployments that install the Lucern reasoning kernel.\",\n },\n] as const;\nexport type TenantClientComponentConfigImport =\n (typeof TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS)[number];\nexport type TenantClientAllowedImport =\n | TenantClientPublicImport\n | TenantClientComponentConfigImport;\n\nexport function findTenantClientInstallablePackage(\n packageName: string\n): TenantClientInstallablePackage | undefined {\n return TENANT_CLIENT_INSTALLABLE_PACKAGES.find(\n (entry) => entry.packageName === packageName\n );\n}\n\nexport function isTenantClientInstallablePackage(packageName: string): boolean {\n return Boolean(findTenantClientInstallablePackage(packageName));\n}\n\nexport const TENANT_CLIENT_REQUIRED_SDK_NAMESPACES = [\n \"bootstrap\",\n \"context\",\n \"beliefs\",\n \"evidence\",\n \"questions\",\n \"graph\",\n \"worktrees\",\n \"topics\",\n \"edges\",\n \"contradictions\",\n \"contracts\",\n \"graphIntel\",\n \"graphIntelligence\",\n \"graphAnalysis\",\n \"graphRecommendations\",\n \"orgGraphSearch\",\n \"embeddings\",\n \"ontologyLinks\",\n \"graphStateClassifier\",\n \"tools\",\n \"identity\",\n \"modelRuntime\",\n \"events\",\n \"jobs\",\n \"telemetry\",\n] as const;\nexport type TenantClientRequiredSdkNamespace =\n (typeof TENANT_CLIENT_REQUIRED_SDK_NAMESPACES)[number];\n\nexport const TENANT_CLIENT_CAPABILITIES = [\n {\n id: \"identity.bootstrap_session\",\n description: \"Start a scoped Lucern session for a tenant principal.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.context.compile\",\n description: \"Compile tenant and workspace scoped reasoning context.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/react\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph.read\",\n description: \"Read beliefs, evidence, questions, topics, graph edges, and lineage.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/react\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph.write\",\n description: \"Create and update graph objects through authorized APIs.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph_intelligence.run\",\n description:\n \"Discover and run Graph Intelligence query recipes for structural graph analysis.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/cli\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph_mirroring.install\",\n description:\n \"Install and run the optional Neo4j graph mirror for paid or enterprise tenant deployments.\",\n surfaces: [\"@lucern/graph-sync\", \"@lucern/cli\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"workflow.worktree_lifecycle\",\n description: \"Create, review, merge, and close scoped worktrees.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/react\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n] as const;\nexport type TenantClientCapability =\n (typeof TENANT_CLIENT_CAPABILITIES)[number];\nexport type TenantClientCapabilityId = TenantClientCapability[\"id\"];\n\nexport const TENANT_CLIENT_ISOLATION_RULES = [\n {\n id: \"tenant_workspace_scope_required\",\n description:\n \"Runtime operations must resolve both tenantId and workspaceId before reaching Lucern reasoning state.\",\n },\n {\n id: \"principal_audit_required\",\n description:\n \"Runtime operations must carry principalId, authMode, and scopes for audit attribution.\",\n },\n {\n id: \"no_private_lucern_imports\",\n description:\n \"Tenant code must not import Lucern source, Convex internals, generated adapters, or unpublished package internals.\",\n },\n] as const;\nexport type TenantClientIsolationRule =\n (typeof TENANT_CLIENT_ISOLATION_RULES)[number];\n\nexport const TENANT_CLIENT_FORBIDDEN_IMPORT_PATTERNS = [\n {\n id: \"deep_src_import\",\n pattern: \"^@lucern/[^/]+/src(?:/|$)\",\n description: \"Published packages must not be bypassed through src paths.\",\n },\n {\n id: \"deep_dist_import\",\n pattern: \"^@lucern/[^/]+/dist(?:/|$)\",\n description:\n \"Published package exports must be used instead of dist file paths.\",\n },\n {\n id: \"generated_adapter_import\",\n pattern: \"^@lucern/[^/]+/(?:adapters/)?_generated(?:/|$)\",\n description:\n \"Generated Lucern adapters are internal deployment artifacts.\",\n },\n {\n id: \"private_runtime_import\",\n pattern: \"^@lucern/[^/]+/(?:internal|private)(?:/|$)\",\n description: \"Internal and private package subpaths are not public SDK API.\",\n },\n {\n id: \"workspace_source_import\",\n pattern: \"^(?:packages|modules|services|lucern|apps)/(?:.+/)?src(?:/|$)\",\n description:\n \"Tenant clients must not import source files from the Lucern monorepo.\",\n },\n {\n id: \"root_alias_lucern_import\",\n pattern: \"^@/(?:lucern|packages|modules|services|apps)(?:/|$)\",\n description:\n \"Tenant clients must not depend on Lucern repo-local path aliases.\",\n },\n {\n id: \"relative_lucern_source_import\",\n pattern: \"^\\\\.\\\\.?/(?:.+/)?(?:packages|modules|services|lucern|apps)(?:/|$)\",\n description:\n \"Tenant clients must not reach back into Lucern source through relative paths.\",\n },\n {\n id: \"monorepo_path_import\",\n pattern: \"lucern-repo\",\n description:\n \"Absolute imports that name the Lucern repository are not portable tenant code.\",\n },\n] as const;\nexport type TenantClientForbiddenImportPattern =\n (typeof TENANT_CLIENT_FORBIDDEN_IMPORT_PATTERNS)[number];\nexport type TenantClientForbiddenImportPatternId =\n TenantClientForbiddenImportPattern[\"id\"];\n\nexport type TenantClientImportDecision =\n | \"public\"\n | \"forbidden\"\n | \"local\"\n | \"external\";\n\nexport type TenantClientImportClassification = {\n importPath: string;\n decision: TenantClientImportDecision;\n publicImport?: TenantClientAllowedImport;\n pattern?: TenantClientForbiddenImportPattern;\n reason: string;\n};\n\nfunction matchesPublicImport(\n importPath: string\n): TenantClientAllowedImport | undefined {\n const componentConfig = TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS.find(\n (entry) => importPath === entry.importPath\n );\n if (componentConfig) {\n return componentConfig;\n }\n\n return TENANT_CLIENT_PUBLIC_IMPORTS.find(\n (entry) =>\n importPath === entry.packageName ||\n importPath.startsWith(`${entry.packageName}/`)\n );\n}\n\nfunction matchesForbiddenPattern(\n importPath: string\n): TenantClientForbiddenImportPattern | undefined {\n return TENANT_CLIENT_FORBIDDEN_IMPORT_PATTERNS.find((entry) =>\n new RegExp(entry.pattern, \"u\").test(importPath)\n );\n}\n\nexport function classifyTenantClientImport(\n importPath: string\n): TenantClientImportClassification {\n const normalizedImportPath = importPath.trim();\n const pattern = matchesForbiddenPattern(normalizedImportPath);\n\n if (pattern) {\n return {\n importPath: normalizedImportPath,\n decision: \"forbidden\",\n pattern,\n reason: pattern.description,\n };\n }\n\n const publicImport = matchesPublicImport(normalizedImportPath);\n if (publicImport) {\n return {\n importPath: normalizedImportPath,\n decision: \"public\",\n publicImport,\n reason: publicImport.description,\n };\n }\n\n if (normalizedImportPath.startsWith(\"@lucern/\")) {\n return {\n importPath: normalizedImportPath,\n decision: \"forbidden\",\n reason:\n \"This @lucern package is not part of the tenant client public surface.\",\n };\n }\n\n if (\n normalizedImportPath.startsWith(\"./\") ||\n normalizedImportPath.startsWith(\"../\")\n ) {\n return {\n importPath: normalizedImportPath,\n decision: \"local\",\n reason: \"Local tenant-owned import.\",\n };\n }\n\n return {\n importPath: normalizedImportPath,\n decision: \"external\",\n reason: \"External dependency outside the Lucern package namespace.\",\n };\n}\n\nexport function isTenantClientPublicImport(importPath: string): boolean {\n return classifyTenantClientImport(importPath).decision === \"public\";\n}\n\nexport function isTenantClientComponentConfigImport(\n importPath: string\n): boolean {\n return TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS.some(\n (entry) => importPath === entry.importPath\n );\n}\n\nexport function isTenantClientAllowedImport(importPath: string): boolean {\n return classifyTenantClientImport(importPath).decision === \"public\";\n}\n\nexport function assertTenantClientImportAllowed(importPath: string): void {\n const classification = classifyTenantClientImport(importPath);\n if (classification.decision !== \"forbidden\") {\n return;\n }\n\n throw new Error(formatTenantClientImportViolation(classification));\n}\n\nexport function formatTenantClientImportViolation(\n classification: TenantClientImportClassification\n): string {\n const patternId = classification.pattern\n ? ` [${classification.pattern.id}]`\n : \"\";\n return `Tenant client import is not allowed${patternId}: ${classification.importPath}. ${classification.reason}`;\n}\n"]}
1
+ {"version":3,"sources":["../src/tenant-client.contract.ts"],"names":[],"mappings":"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","file":"tenant-client.contract.js","sourcesContent":["/**\n * Tenant client contract\n *\n * Defines the generic boundary for any customer-owned product that consumes\n * Lucern through the SDK, hosted API, or MCP server. Tenant clients may run\n * their own UI, auth provider, deployment, and data plane, but reasoning\n * operations must enter through the published packages below.\n */\n\nimport type {\n SessionAuthMode,\n SessionPrincipalType,\n} from \"./auth.contract\";\n\nexport const TENANT_CLIENT_CONTRACT_VERSION = \"2026-04-27\" as const;\n\nexport const TENANT_CLIENT_AUTH_MODES = [\n \"interactive_user\",\n \"service_principal\",\n \"tenant_api_key\",\n \"session_token\",\n] as const satisfies readonly SessionAuthMode[];\nexport type TenantClientAuthMode = (typeof TENANT_CLIENT_AUTH_MODES)[number];\n\nexport const TENANT_CLIENT_PRINCIPAL_TYPES = [\n \"human\",\n \"service\",\n \"agent\",\n] as const satisfies readonly SessionPrincipalType[];\nexport type TenantClientPrincipalType =\n (typeof TENANT_CLIENT_PRINCIPAL_TYPES)[number];\n\nexport const TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS = [\n \"tenantId\",\n \"workspaceId\",\n \"principalId\",\n \"authMode\",\n \"scopes\",\n] as const;\nexport type TenantClientRequiredContextField =\n (typeof TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS)[number];\n\nexport const TENANT_CLIENT_OPTIONAL_CONTEXT_FIELDS = [\n \"principalType\",\n \"roles\",\n \"sessionId\",\n \"delegationChain\",\n] as const;\nexport type TenantClientOptionalContextField =\n (typeof TENANT_CLIENT_OPTIONAL_CONTEXT_FIELDS)[number];\n\nexport const TENANT_CLIENT_INSTALL_TOKEN_ENV = \"INSTALL_LUCERN_NPM\" as const;\nexport const TENANT_CLIENT_INSTALL_TOKEN_INFISICAL_PATH =\n \"tenants/shared\" as const;\nexport const TENANT_CLIENT_FORBIDDEN_INSTALL_TOKEN_INFISICAL_PATHS = [\n \"/platform/publish\",\n] as const;\nexport const TENANT_CLIENT_FORBIDDEN_SECRET_ENV = [\"NPM_TOKEN\"] as const;\nexport type TenantClientForbiddenInstallTokenInfisicalPath =\n (typeof TENANT_CLIENT_FORBIDDEN_INSTALL_TOKEN_INFISICAL_PATHS)[number];\nexport type TenantClientForbiddenSecretEnv =\n (typeof TENANT_CLIENT_FORBIDDEN_SECRET_ENV)[number];\n\nexport const TENANT_CLIENT_INSTALLABLE_PACKAGES = [\n {\n packageName: \"@lucern/access-control\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/agent\",\n role: \"platform_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/auth\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/cli\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/client-core\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/confidence\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/config\",\n role: \"configuration\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/contracts\",\n role: \"contract_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/control-plane\",\n role: \"component_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/developer-kit\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/events\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/graph-primitives\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/graph-sync\",\n role: \"host_addon_runtime\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/mcp\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/pack-host\",\n role: \"platform_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/pack-installer\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/proof-compiler\",\n role: \"developer_tool\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/react\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/reasoning-kernel\",\n role: \"component_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/sdk\",\n role: \"runtime_entrypoint\",\n directTenantImport: true,\n },\n {\n packageName: \"@lucern/secrets\",\n role: \"sdk_dependency\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/server-core\",\n role: \"platform_runtime\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/testing\",\n role: \"test_support\",\n directTenantImport: false,\n },\n {\n packageName: \"@lucern/types\",\n role: \"contract_entrypoint\",\n directTenantImport: true,\n },\n] as const;\nexport type TenantClientInstallablePackage =\n (typeof TENANT_CLIENT_INSTALLABLE_PACKAGES)[number];\nexport type TenantClientPackageRole = TenantClientInstallablePackage[\"role\"];\nexport type TenantClientInstallablePackageName =\n TenantClientInstallablePackage[\"packageName\"];\n\n/**\n * Direct package installs are package.json entries owned by the tenant repo.\n * Direct imports are source-code imports that tenant application code may use.\n *\n * These concepts intentionally differ: `@lucern/cli` is a direct install when a\n * tenant repo needs the `lucern` binary, but it is not a direct application\n * import. `@lucern/reasoning-kernel` and `@lucern/control-plane` are direct installs\n * for Convex component binding, while tenant app code should only import their\n * explicit component config subpaths.\n */\nexport type TenantClientInstallProfile = {\n id: string;\n description: string;\n packageNames: readonly TenantClientInstallablePackageName[];\n dependencyField: \"dependencies\" | \"devDependencies\" | \"mixed\";\n};\n\nexport const TENANT_CLIENT_FULL_SUITE_PACKAGE_NAMES =\n TENANT_CLIENT_INSTALLABLE_PACKAGES.map(\n (entry) => entry.packageName\n ) as readonly TenantClientInstallablePackageName[];\n\nexport const TENANT_CLIENT_INSTALL_PROFILES = [\n {\n id: \"core_app_runtime\",\n description:\n \"Smallest tenant app/runtime install for typed Lucern API calls plus tool-access policy helpers.\",\n packageNames: [\"@lucern/sdk\", \"@lucern/access-control\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"react_app_runtime\",\n description:\n \"React tenant app install for hooks, provider, curated graph components, and direct SDK calls.\",\n packageNames: [\"@lucern/react\", \"@lucern/sdk\", \"@lucern/access-control\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"convex_components\",\n description:\n \"Tenant Convex host install for binding the Lucern control-plane and reasoning-kernel components.\",\n packageNames: [\"@lucern/control-plane\", \"@lucern/reasoning-kernel\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"graph_mirroring_addon\",\n description:\n \"Optional tenant Convex host install for Neo4j graph projection, edge topology writes, backfill, health checks, and query proxy helpers.\",\n packageNames: [\"@lucern/graph-sync\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"operator_cli\",\n description:\n \"Developer/operator install for the `lucern` binary, including tenant bootstrap seed commands.\",\n packageNames: [\"@lucern/cli\"],\n dependencyField: \"devDependencies\",\n },\n {\n id: \"mcp_runtime\",\n description:\n \"Agent runtime install for the standalone Lucern MCP server and hosted route helpers.\",\n packageNames: [\"@lucern/mcp\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"contracts_and_types\",\n description:\n \"Compile-time contract/type install for codegen, audits, and tenant integration validation.\",\n packageNames: [\"@lucern/contracts\", \"@lucern/types\"],\n dependencyField: \"dependencies\",\n },\n {\n id: \"full_suite\",\n description:\n \"Full coherent Lucern package suite for design-partner repos that want every published runtime, tool, component, test, and config package pinned together.\",\n packageNames: TENANT_CLIENT_FULL_SUITE_PACKAGE_NAMES,\n dependencyField: \"mixed\",\n },\n] as const satisfies readonly TenantClientInstallProfile[];\nexport type TenantClientInstallProfileId =\n (typeof TENANT_CLIENT_INSTALL_PROFILES)[number][\"id\"];\n\n/**\n * Direct imports tenant-owned product code may use. This is intentionally\n * smaller than TENANT_CLIENT_INSTALLABLE_PACKAGES: several publishable packages\n * are installed as SDK dependencies, tooling, or platform runtimes but should\n * not become the application integration surface.\n */\nexport const TENANT_CLIENT_PUBLIC_IMPORTS = [\n {\n packageName: \"@lucern/sdk\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description: \"TypeScript SDK runtime and generated operation namespaces.\",\n },\n {\n packageName: \"@lucern/react\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description: \"React bindings for tenant-owned UI applications.\",\n },\n {\n packageName: \"@lucern/mcp\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description: \"MCP client/server entry points and hosted route helpers.\",\n },\n {\n packageName: \"@lucern/graph-sync\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description:\n \"Optional Neo4j graph mirroring host actions, edge API, query proxy, backfill, and health helpers.\",\n },\n {\n packageName: \"@lucern/contracts\",\n surface: \"contract\",\n subpaths: \"published_exports\",\n description: \"Published type and manifest contracts.\",\n },\n {\n packageName: \"@lucern/access-control\",\n surface: \"runtime\",\n subpaths: \"published_exports\",\n description:\n \"Tenant runtime access-control helpers, including effective tool access.\",\n },\n {\n packageName: \"@lucern/types\",\n surface: \"contract\",\n subpaths: \"published_exports\",\n description: \"Published type-only helpers for tenant integration code.\",\n },\n] as const;\nexport type TenantClientPublicImport =\n (typeof TENANT_CLIENT_PUBLIC_IMPORTS)[number];\nexport type TenantClientPublicPackage =\n TenantClientPublicImport[\"packageName\"];\nexport type TenantClientPublicSurface = TenantClientPublicImport[\"surface\"];\n\nexport const TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS = [\n {\n packageName: \"@lucern/control-plane\",\n importPath: \"@lucern/control-plane/convex.config\",\n surface: \"component_config\",\n description:\n \"Convex component binding config for tenant deployments that install the Lucern control plane.\",\n },\n {\n packageName: \"@lucern/reasoning-kernel\",\n importPath: \"@lucern/reasoning-kernel/convex.config\",\n surface: \"component_config\",\n description:\n \"Convex component binding config for tenant deployments that install the Lucern reasoning kernel.\",\n },\n {\n packageName: \"@lucern/reasoning-kernel\",\n importPath: \"@lucern/reasoning-kernel/runtime.config\",\n surface: \"component_config\",\n description:\n \"Runtime config alias for tenant deployments that install the Lucern reasoning kernel.\",\n },\n] as const;\nexport type TenantClientComponentConfigImport =\n (typeof TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS)[number];\nexport type TenantClientAllowedImport =\n | TenantClientPublicImport\n | TenantClientComponentConfigImport;\n\nexport function findTenantClientInstallablePackage(\n packageName: string\n): TenantClientInstallablePackage | undefined {\n return TENANT_CLIENT_INSTALLABLE_PACKAGES.find(\n (entry) => entry.packageName === packageName\n );\n}\n\nexport function isTenantClientInstallablePackage(packageName: string): boolean {\n return Boolean(findTenantClientInstallablePackage(packageName));\n}\n\nexport const TENANT_CLIENT_REQUIRED_SDK_NAMESPACES = [\n \"bootstrap\",\n \"context\",\n \"beliefs\",\n \"evidence\",\n \"questions\",\n \"graph\",\n \"worktrees\",\n \"topics\",\n \"edges\",\n \"contradictions\",\n \"contracts\",\n \"graphIntel\",\n \"graphIntelligence\",\n \"graphAnalysis\",\n \"graphRecommendations\",\n \"orgGraphSearch\",\n \"embeddings\",\n \"ontologyLinks\",\n \"graphStateClassifier\",\n \"tools\",\n \"identity\",\n \"modelRuntime\",\n \"events\",\n \"jobs\",\n \"telemetry\",\n] as const;\nexport type TenantClientRequiredSdkNamespace =\n (typeof TENANT_CLIENT_REQUIRED_SDK_NAMESPACES)[number];\n\nexport const TENANT_CLIENT_CAPABILITIES = [\n {\n id: \"identity.bootstrap_session\",\n description: \"Start a scoped Lucern session for a tenant principal.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.context.compile\",\n description: \"Compile tenant and workspace scoped reasoning context.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/react\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph.read\",\n description: \"Read beliefs, evidence, questions, topics, graph edges, and lineage.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/react\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph.write\",\n description: \"Create and update graph objects through authorized APIs.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph_intelligence.run\",\n description:\n \"Discover and run Graph Intelligence query recipes for structural graph analysis.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/cli\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"reasoning.graph_mirroring.install\",\n description:\n \"Install and run the optional Neo4j graph mirror for paid or enterprise tenant deployments.\",\n surfaces: [\"@lucern/graph-sync\", \"@lucern/cli\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n {\n id: \"workflow.worktree_lifecycle\",\n description: \"Create, review, merge, and close scoped worktrees.\",\n surfaces: [\"@lucern/sdk\", \"@lucern/react\", \"@lucern/mcp\"],\n requiredContextFields: TENANT_CLIENT_REQUIRED_CONTEXT_FIELDS,\n },\n] as const;\nexport type TenantClientCapability =\n (typeof TENANT_CLIENT_CAPABILITIES)[number];\nexport type TenantClientCapabilityId = TenantClientCapability[\"id\"];\n\nexport const TENANT_CLIENT_ISOLATION_RULES = [\n {\n id: \"tenant_workspace_scope_required\",\n description:\n \"Runtime operations must resolve both tenantId and workspaceId before reaching Lucern reasoning state.\",\n },\n {\n id: \"principal_audit_required\",\n description:\n \"Runtime operations must carry principalId, authMode, and scopes for audit attribution.\",\n },\n {\n id: \"no_private_lucern_imports\",\n description:\n \"Tenant code must not import Lucern source, Convex internals, generated adapters, or unpublished package internals.\",\n },\n] as const;\nexport type TenantClientIsolationRule =\n (typeof TENANT_CLIENT_ISOLATION_RULES)[number];\n\nexport const TENANT_CLIENT_FORBIDDEN_IMPORT_PATTERNS = [\n {\n id: \"deep_src_import\",\n pattern: \"^@lucern/[^/]+/src(?:/|$)\",\n description: \"Published packages must not be bypassed through src paths.\",\n },\n {\n id: \"deep_dist_import\",\n pattern: \"^@lucern/[^/]+/dist(?:/|$)\",\n description:\n \"Published package exports must be used instead of dist file paths.\",\n },\n {\n id: \"generated_adapter_import\",\n pattern: \"^@lucern/[^/]+/(?:adapters/)?_generated(?:/|$)\",\n description:\n \"Generated Lucern adapters are internal deployment artifacts.\",\n },\n {\n id: \"private_runtime_import\",\n pattern: \"^@lucern/[^/]+/(?:internal|private)(?:/|$)\",\n description: \"Internal and private package subpaths are not public SDK API.\",\n },\n {\n id: \"workspace_source_import\",\n pattern: \"^(?:packages|modules|services|lucern|apps)/(?:.+/)?src(?:/|$)\",\n description:\n \"Tenant clients must not import source files from the Lucern monorepo.\",\n },\n {\n id: \"root_alias_lucern_import\",\n pattern: \"^@/(?:lucern|packages|modules|services|apps)(?:/|$)\",\n description:\n \"Tenant clients must not depend on Lucern repo-local path aliases.\",\n },\n {\n id: \"relative_lucern_source_import\",\n pattern: \"^\\\\.\\\\.?/(?:.+/)?(?:packages|modules|services|lucern|apps)(?:/|$)\",\n description:\n \"Tenant clients must not reach back into Lucern source through relative paths.\",\n },\n {\n id: \"monorepo_path_import\",\n pattern: \"lucern-repo\",\n description:\n \"Absolute imports that name the Lucern repository are not portable tenant code.\",\n },\n] as const;\nexport type TenantClientForbiddenImportPattern =\n (typeof TENANT_CLIENT_FORBIDDEN_IMPORT_PATTERNS)[number];\nexport type TenantClientForbiddenImportPatternId =\n TenantClientForbiddenImportPattern[\"id\"];\n\nexport type TenantClientImportDecision =\n | \"public\"\n | \"forbidden\"\n | \"local\"\n | \"external\";\n\nexport type TenantClientImportClassification = {\n importPath: string;\n decision: TenantClientImportDecision;\n publicImport?: TenantClientAllowedImport;\n pattern?: TenantClientForbiddenImportPattern;\n reason: string;\n};\n\nfunction matchesPublicImport(\n importPath: string\n): TenantClientAllowedImport | undefined {\n const componentConfig = TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS.find(\n (entry) => importPath === entry.importPath\n );\n if (componentConfig) {\n return componentConfig;\n }\n\n return TENANT_CLIENT_PUBLIC_IMPORTS.find(\n (entry) =>\n importPath === entry.packageName ||\n importPath.startsWith(`${entry.packageName}/`)\n );\n}\n\nfunction matchesForbiddenPattern(\n importPath: string\n): TenantClientForbiddenImportPattern | undefined {\n return TENANT_CLIENT_FORBIDDEN_IMPORT_PATTERNS.find((entry) =>\n new RegExp(entry.pattern, \"u\").test(importPath)\n );\n}\n\nexport function classifyTenantClientImport(\n importPath: string\n): TenantClientImportClassification {\n const normalizedImportPath = importPath.trim();\n const pattern = matchesForbiddenPattern(normalizedImportPath);\n\n if (pattern) {\n return {\n importPath: normalizedImportPath,\n decision: \"forbidden\",\n pattern,\n reason: pattern.description,\n };\n }\n\n const publicImport = matchesPublicImport(normalizedImportPath);\n if (publicImport) {\n return {\n importPath: normalizedImportPath,\n decision: \"public\",\n publicImport,\n reason: publicImport.description,\n };\n }\n\n if (normalizedImportPath.startsWith(\"@lucern/\")) {\n return {\n importPath: normalizedImportPath,\n decision: \"forbidden\",\n reason:\n \"This @lucern package is not part of the tenant client public surface.\",\n };\n }\n\n if (\n normalizedImportPath.startsWith(\"./\") ||\n normalizedImportPath.startsWith(\"../\")\n ) {\n return {\n importPath: normalizedImportPath,\n decision: \"local\",\n reason: \"Local tenant-owned import.\",\n };\n }\n\n return {\n importPath: normalizedImportPath,\n decision: \"external\",\n reason: \"External dependency outside the Lucern package namespace.\",\n };\n}\n\nexport function isTenantClientPublicImport(importPath: string): boolean {\n return classifyTenantClientImport(importPath).decision === \"public\";\n}\n\nexport function isTenantClientComponentConfigImport(\n importPath: string\n): boolean {\n return TENANT_CLIENT_COMPONENT_CONFIG_IMPORTS.some(\n (entry) => importPath === entry.importPath\n );\n}\n\nexport function isTenantClientAllowedImport(importPath: string): boolean {\n return classifyTenantClientImport(importPath).decision === \"public\";\n}\n\nexport function assertTenantClientImportAllowed(importPath: string): void {\n const classification = classifyTenantClientImport(importPath);\n if (classification.decision !== \"forbidden\") {\n return;\n }\n\n throw new Error(formatTenantClientImportViolation(classification));\n}\n\nexport function formatTenantClientImportViolation(\n classification: TenantClientImportClassification\n): string {\n const patternId = classification.pattern\n ? ` [${classification.pattern.id}]`\n : \"\";\n return `Tenant client import is not allowed${patternId}: ${classification.importPath}. ${classification.reason}`;\n}\n"]}
@@ -1,3 +1,17 @@
1
+ // src/types/reasoning-method.ts
2
+ var REASONING_METHODS = [
3
+ "deductive",
4
+ "inductive",
5
+ "abductive",
6
+ "analogical",
7
+ "causal",
8
+ "correlational",
9
+ "testimonial",
10
+ "statistical",
11
+ "implicit",
12
+ "pattern_match"
13
+ ];
14
+
1
15
  // src/lens-workflow.contract.ts
2
16
  var LENS_PERSPECTIVE_TYPES = [
3
17
  "investigation",
@@ -855,7 +869,7 @@ var CREATE_EDGE = {
855
869
  reasoningMethod: {
856
870
  type: "string",
857
871
  description: "How this was determined",
858
- enum: ["deductive", "inductive", "abductive", "analogical", "empirical"]
872
+ enum: [...REASONING_METHODS]
859
873
  },
860
874
  metadata: {
861
875
  type: "object",
@@ -2582,6 +2596,10 @@ var CREATE_TASK = {
2582
2596
  tags: {
2583
2597
  type: "array",
2584
2598
  description: "Free-form string tags"
2599
+ },
2600
+ metadata: {
2601
+ type: "object",
2602
+ description: "Structured task metadata for handoff context and routing hints"
2585
2603
  }
2586
2604
  },
2587
2605
  required: ["title"],
@@ -2655,6 +2673,10 @@ var UPDATE_TASK = {
2655
2673
  type: "string",
2656
2674
  description: "Updated status",
2657
2675
  enum: ["todo", "in_progress", "blocked", "done"]
2676
+ },
2677
+ metadata: {
2678
+ type: "object",
2679
+ description: "Structured task metadata to replace or refine"
2658
2680
  }
2659
2681
  },
2660
2682
  required: ["taskId"],
@@ -4110,6 +4132,9 @@ var BEGIN_BUILD_SESSION = {
4110
4132
  sessionMode: "string \u2014 async | interactive",
4111
4133
  targetBeliefIds: "array \u2014 scoped belief IDs",
4112
4134
  targetQuestionIds: "array \u2014 scoped question IDs",
4135
+ taskIds: "array \u2014 assigned task IDs for this worktree",
4136
+ incompleteTaskIds: "array \u2014 assigned task IDs that still require done/deferred/blocked proof",
4137
+ tasks: "array \u2014 assigned task packet with id, title, status, priority, links, and summaries",
4113
4138
  topBeliefs: "array \u2014 highest-confidence scoped beliefs",
4114
4139
  openQuestions: "array \u2014 open scoped questions",
4115
4140
  resolvedDecisions: "array \u2014 answered questions summarized for the session",