@lucern/contracts 0.3.0-alpha.0 → 0.3.0-alpha.1

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 (117) hide show
  1. package/dist/dsl.js +3 -0
  2. package/dist/dsl.js.map +1 -1
  3. package/dist/function-registry/beliefs.d.ts +11 -51
  4. package/dist/function-registry/beliefs.js +445 -94
  5. package/dist/function-registry/beliefs.js.map +1 -1
  6. package/dist/function-registry/coding.d.ts +7 -31
  7. package/dist/function-registry/coding.js +264 -81
  8. package/dist/function-registry/coding.js.map +1 -1
  9. package/dist/function-registry/context.d.ts +4 -16
  10. package/dist/function-registry/context.js +223 -62
  11. package/dist/function-registry/context.js.map +1 -1
  12. package/dist/function-registry/contracts.d.ts +4 -16
  13. package/dist/function-registry/contracts.js +195 -54
  14. package/dist/function-registry/contracts.js.map +1 -1
  15. package/dist/function-registry/coordination.d.ts +10 -46
  16. package/dist/function-registry/coordination.js +208 -57
  17. package/dist/function-registry/coordination.js.map +1 -1
  18. package/dist/function-registry/edges.d.ts +10 -18
  19. package/dist/function-registry/edges.js +343 -68
  20. package/dist/function-registry/edges.js.map +1 -1
  21. package/dist/function-registry/evidence.d.ts +17 -49
  22. package/dist/function-registry/evidence.js +395 -99
  23. package/dist/function-registry/evidence.js.map +1 -1
  24. package/dist/function-registry/graph.d.ts +14 -66
  25. package/dist/function-registry/graph.js +225 -65
  26. package/dist/function-registry/graph.js.map +1 -1
  27. package/dist/function-registry/helpers.d.ts +6 -8
  28. package/dist/function-registry/helpers.js +204 -55
  29. package/dist/function-registry/helpers.js.map +1 -1
  30. package/dist/function-registry/identity.d.ts +4 -16
  31. package/dist/function-registry/identity.js +195 -54
  32. package/dist/function-registry/identity.js.map +1 -1
  33. package/dist/function-registry/index.d.ts +2 -2
  34. package/dist/function-registry/index.js +204 -55
  35. package/dist/function-registry/index.js.map +1 -1
  36. package/dist/function-registry/judgments.d.ts +5 -13
  37. package/dist/function-registry/judgments.js +214 -63
  38. package/dist/function-registry/judgments.js.map +1 -1
  39. package/dist/function-registry/legacy.d.ts +2 -6
  40. package/dist/function-registry/legacy.js +195 -54
  41. package/dist/function-registry/legacy.js.map +1 -1
  42. package/dist/function-registry/lenses.d.ts +5 -21
  43. package/dist/function-registry/lenses.js +241 -58
  44. package/dist/function-registry/lenses.js.map +1 -1
  45. package/dist/function-registry/manifest.d.ts +3 -3
  46. package/dist/function-registry/manifest.js +1 -0
  47. package/dist/function-registry/manifest.js.map +1 -1
  48. package/dist/function-registry/ontologies.d.ts +12 -56
  49. package/dist/function-registry/ontologies.js +227 -77
  50. package/dist/function-registry/ontologies.js.map +1 -1
  51. package/dist/function-registry/pipeline.d.ts +4 -16
  52. package/dist/function-registry/pipeline.js +207 -55
  53. package/dist/function-registry/pipeline.js.map +1 -1
  54. package/dist/function-registry/questions.d.ts +13 -61
  55. package/dist/function-registry/questions.js +281 -82
  56. package/dist/function-registry/questions.js.map +1 -1
  57. package/dist/function-registry/tasks.d.ts +5 -21
  58. package/dist/function-registry/tasks.js +265 -58
  59. package/dist/function-registry/tasks.js.map +1 -1
  60. package/dist/function-registry/topics.d.ts +6 -26
  61. package/dist/function-registry/topics.js +214 -57
  62. package/dist/function-registry/topics.js.map +1 -1
  63. package/dist/function-registry/types.d.ts +2 -2
  64. package/dist/function-registry/worktrees.d.ts +49 -46
  65. package/dist/function-registry/worktrees.js +326 -81
  66. package/dist/function-registry/worktrees.js.map +1 -1
  67. package/dist/generated/convexSchemas.js +4 -3
  68. package/dist/generated/convexSchemas.js.map +1 -1
  69. package/dist/generated/schema-manifest.json +55 -3
  70. package/dist/generated/tableOwnership.d.ts +2 -1
  71. package/dist/generated/tableOwnership.js +2 -0
  72. package/dist/generated/tableOwnership.js.map +1 -1
  73. package/dist/generated/tier-expectations.json +6 -3
  74. package/dist/index-CV-0_VWJ.d.ts +25 -0
  75. package/dist/index.d.ts +414 -4
  76. package/dist/index.js +665 -62
  77. package/dist/index.js.map +1 -1
  78. package/dist/schema-helpers/validators.d.ts +1 -1
  79. package/dist/schema-helpers/validators.js +1 -1
  80. package/dist/schema-helpers/validators.js.map +1 -1
  81. package/dist/schemas/component-table-manifest.d.ts +74 -0
  82. package/dist/schemas/component-table-manifest.js +26 -0
  83. package/dist/schemas/component-table-manifest.js.map +1 -0
  84. package/dist/schemas/index.d.ts +2 -0
  85. package/dist/schemas/index.js +68 -10
  86. package/dist/schemas/index.js.map +1 -1
  87. package/dist/schemas/manifest.d.ts +110 -45
  88. package/dist/schemas/manifest.js +36 -9
  89. package/dist/schemas/manifest.js.map +1 -1
  90. package/dist/schemas/sl-opinion.d.ts +31 -0
  91. package/dist/schemas/sl-opinion.js +19 -0
  92. package/dist/schemas/sl-opinion.js.map +1 -0
  93. package/dist/schemas/tables/kernel/epistemic.d.ts +6 -4
  94. package/dist/schemas/tables/kernel/epistemic.js +6 -4
  95. package/dist/schemas/tables/kernel/epistemic.js.map +1 -1
  96. package/dist/schemas/tables/kernel/infra.d.ts +13 -1
  97. package/dist/schemas/tables/kernel/infra.js +23 -1
  98. package/dist/schemas/tables/kernel/infra.js.map +1 -1
  99. package/dist/schemas/tables/kernel/worktree.d.ts +4 -4
  100. package/dist/schemas/tables/kernel/worktree.js +6 -4
  101. package/dist/schemas/tables/kernel/worktree.js.map +1 -1
  102. package/dist/schemas/tables/mc/runtime.d.ts +1 -1
  103. package/dist/schemas/tables/mc/runtime.js +1 -1
  104. package/dist/schemas/tables/mc/runtime.js.map +1 -1
  105. package/dist/sdk-methods.contract.d.ts +5 -2
  106. package/dist/{sdk-tools.contract-C2kQN_Xk.d.ts → sdk-tools.contract-S4ia0TTo.d.ts} +1 -1
  107. package/dist/sdk-tools.contract.d.ts +2 -2
  108. package/dist/sdk-tools.contract.js +154 -51
  109. package/dist/sdk-tools.contract.js.map +1 -1
  110. package/dist/{tool-contracts-WCnuE9DW.d.ts → tool-contracts-C92-9ueT.d.ts} +5 -3
  111. package/dist/tool-contracts.d.ts +1 -1
  112. package/dist/tool-contracts.js +155 -52
  113. package/dist/tool-contracts.js.map +1 -1
  114. package/dist/workflow-runtime.contract.js +1 -1
  115. package/dist/workflow-runtime.contract.js.map +1 -1
  116. package/package.json +19 -1
  117. package/dist/index-DoDXl8KS.d.ts +0 -19
@@ -8,7 +8,7 @@ var KERNEL_SCHEMA_TABLES = {
8
8
  "autofixJobs": defineTable(v.object({ "allowlistEligible": v.boolean(), "allowlistReason": v.string(), "attemptCount": v.number(), "branchName": v.optional(v.string()), "claimedAt": v.optional(v.number()), "claimedBy": v.optional(v.string()), "commitSha": v.optional(v.string()), "completedAt": v.optional(v.number()), "createdAt": v.number(), "dedupeKey": v.string(), "environment": v.string(), "error": v.optional(v.string()), "errorMessage": v.string(), "errorType": v.string(), "filePaths": v.array(v.string()), "fingerprint": v.string(), "harnessReceipt": v.optional(v.object({ "commitShas": v.array(v.string()), "completedAt": v.number(), "errorSummary": v.optional(v.string()), "filesChanged": v.array(v.string()), "fixDescription": v.optional(v.string()), "prCreated": v.boolean(), "runnerSessionId": v.string(), "startedAt": v.number(), "verificationResults": v.array(v.object({ "command": v.string(), "status": v.union(v.literal("pass"), v.literal("fail"), v.literal("skipped")), "summary": v.optional(v.string()) })) })), "iterationCount": v.optional(v.number()), "iterationPolicy": v.optional(v.object({ "confidenceFloor": v.number(), "flakeThreshold": v.number(), "maxIterations": v.number(), "pollIntervalMs": v.number() })), "iterationReceipts": v.optional(v.array(v.object({ "actionTaken": v.string(), "agentConfidence": v.optional(v.number()), "checkConclusion": v.string(), "commitSha": v.optional(v.string()), "completedAt": v.number(), "errorSignature": v.optional(v.string()), "failureSummary": v.optional(v.string()), "filesChanged": v.optional(v.array(v.string())), "iteration": v.number(), "startedAt": v.number() }))), "lastCheckConclusion": v.optional(v.string()), "maxAttempts": v.number(), "maxIterations": v.optional(v.number()), "prNumber": v.optional(v.number()), "prUrl": v.optional(v.string()), "sentryEventId": v.string(), "sentryIssueId": v.string(), "sentryIssueUrl": v.optional(v.string()), "sentryOrgSlug": v.string(), "sentryPayload": v.record(v.string(), v.any()), "sentryProjectSlug": v.string(), "stackTrace": v.optional(v.string()), "startedAt": v.optional(v.number()), "status": v.union(v.literal("pending"), v.literal("claimed"), v.literal("running"), v.literal("iterating"), v.literal("succeeded"), v.literal("failed"), v.literal("cancelled")), "stopReason": v.optional(v.string()), "triggeredRule": v.string(), "updatedAt": v.number() })).index("by_status", ["status"]).index("by_dedupeKey", ["dedupeKey"]).index("by_sentryIssueId", ["sentryIssueId"]).index("by_status_createdAt", ["status", "createdAt"]).index("by_environment", ["environment"]).index("by_claimedBy", ["claimedBy"]).index("by_createdAt", ["createdAt"]),
9
9
  "backgroundJobRuns": defineTable(v.object({ "completedAt": v.optional(v.number()), "durationMs": v.optional(v.number()), "error": v.optional(v.string()), "jobKey": v.string(), "resultSummary": v.optional(v.string()), "scheduler": v.string(), "startedAt": v.number(), "status": v.union(v.literal("running"), v.literal("completed"), v.literal("failed"), v.literal("skipped")), "triggeredBy": v.string() })).index("by_jobKey", ["jobKey"]).index("by_startedAt", ["startedAt"]).index("by_jobKey_startedAt", ["jobKey", "startedAt"]).index("by_status", ["status"]),
10
10
  "backgroundJobSettings": defineTable(v.object({ "enabled": v.boolean(), "jobKey": v.string(), "notes": v.optional(v.string()), "updatedAt": v.number(), "updatedBy": v.string() })).index("by_jobKey", ["jobKey"]).index("by_enabled", ["enabled"]).index("by_updatedAt", ["updatedAt"]),
11
- "beliefConfidence": defineTable(v.object({ "assessedAt": v.number(), "assessedBy": v.string(), "baseRate": v.number(), "belief": v.optional(v.number()), "beliefId": v.string(), "certainty": v.optional(v.number()), "confidence": v.number(), "confidenceLevel": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "disbelief": v.optional(v.number()), "isAgentAssessment": v.optional(v.boolean()), "rationale": v.optional(v.string()), "slOperator": v.optional(v.string()), "trigger": v.union(v.literal("initial"), v.literal("evidence_added"), v.literal("evidence_removed"), v.literal("contradiction_detected"), v.literal("contradiction_resolved"), v.literal("manual"), v.literal("decay"), v.literal("propagation"), v.literal("agent_assessment"), v.literal("worktree_outcome"), v.literal("worktree_completed"), v.literal("fusion"), v.literal("discount"), v.literal("deduction"), v.literal("backfill_synthetic")), "triggeringAgentId": v.optional(v.string()), "triggeringContradictionId": v.optional(v.id("contradictions")), "triggeringEvidenceId": v.optional(v.string()), "triggeringEvidenceIds": v.optional(v.array(v.string())), "triggeringWorktreeId": v.optional(v.string()), "uncertainty": v.optional(v.number()), "valence": v.optional(v.number()) })).index("by_beliefId", ["beliefId"]).index("by_beliefId_time", ["beliefId", "assessedAt"]).index("by_trigger", ["trigger"]),
11
+ "beliefConfidence": defineTable(v.object({ "assessedAt": v.number(), "assessedBy": v.string(), "baseRate": v.number(), "belief": v.number(), "beliefId": v.string(), "certainty": v.optional(v.number()), "confidence": v.number(), "confidenceLevel": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "disbelief": v.number(), "isAgentAssessment": v.optional(v.boolean()), "rationale": v.optional(v.string()), "slOperator": v.optional(v.string()), "trigger": v.union(v.literal("initial"), v.literal("evidence_added"), v.literal("evidence_removed"), v.literal("contradiction_detected"), v.literal("contradiction_resolved"), v.literal("propagation"), v.literal("agent_assessment"), v.literal("worktree_outcome"), v.literal("worktree_completed"), v.literal("fusion"), v.literal("discount"), v.literal("deduction"), v.literal("backfill_synthetic")), "triggeringAgentId": v.optional(v.string()), "triggeringAnswerId": v.optional(v.string()), "triggeringContradictionId": v.optional(v.id("contradictions")), "triggeringEvidenceId": v.optional(v.string()), "triggeringEvidenceIds": v.optional(v.array(v.string())), "triggeringQuestionId": v.optional(v.string()), "triggeringWorktreeId": v.optional(v.string()), "uncertainty": v.number(), "valence": v.optional(v.number()) })).index("by_beliefId", ["beliefId"]).index("by_beliefId_time", ["beliefId", "assessedAt"]).index("by_trigger", ["trigger"]),
12
12
  "beliefEvidenceLinks": defineTable(v.object({ "beliefId": v.string(), "confidence": v.optional(v.number()), "createdAt": v.number(), "createdBy": v.string(), "insightId": v.string(), "rationale": v.optional(v.string()), "relation": v.union(v.literal("supports"), v.literal("contradicts")), "status": v.optional(v.union(v.literal("suggested"), v.literal("approved"), v.literal("dismissed"))) })).index("by_beliefId", ["beliefId"]).index("by_insightId", ["insightId"]).index("by_relation", ["beliefId", "relation"]).index("by_status", ["status"]),
13
13
  "beliefHistory": defineTable(v.object({ "beliefId": v.string(), "justification": v.optional(v.string()), "newStatus": v.string(), "previousStatus": v.optional(v.string()), "timestamp": v.number(), "triggeredByEvidenceIds": v.optional(v.array(v.string())), "triggeredByUserId": v.optional(v.string()) })).index("by_beliefId", ["beliefId"]),
14
14
  "beliefScenarios": defineTable(v.object({ "assumedState": v.union(v.literal("false"), v.literal("true"), v.literal("weakened"), v.literal("strengthened")), "cascadeEffects": v.array(v.object({ "beliefId": v.string(), "beliefText": v.string(), "currentConfidence": v.string(), "projectedConfidence": v.string(), "reason": v.string() })), "createdAt": v.number(), "createdBy": v.string(), "description": v.string(), "keyInsights": v.array(v.string()), "pillarImpacts": v.optional(v.array(v.object({ "impactLevel": v.string(), "pillar": v.string(), "reason": v.string() }))), "recommendedActions": v.optional(v.array(v.object({ "action": v.string(), "priority": v.string(), "rationale": v.string() }))), "scenarioType": v.union(v.literal("falsification"), v.literal("strengthening"), v.literal("alternative"), v.literal("collapse"), v.literal("critical_path")), "sourceChatId": v.optional(v.id("chats")), "sourceMessageId": v.optional(v.id("messages")), "sourceWorktreeId": v.optional(v.string()), "testedBeliefId": v.string(), "thesisImpact": v.union(v.literal("thesis_fails"), v.literal("thesis_weakens"), v.literal("pillar_fails"), v.literal("localized"), v.literal("minimal")), "title": v.string(), "topicId": v.optional(v.string()) })).index("by_topicId", ["topicId"]).index("by_topic_scenarioType", ["topicId", "scenarioType"]).index("by_topic_thesisImpact", ["topicId", "thesisImpact"]).index("by_testedBelief", ["testedBeliefId"]).index("by_sourceWorktreeId", ["sourceWorktreeId"]),
@@ -37,6 +37,7 @@ var KERNEL_SCHEMA_TABLES = {
37
37
  "idempotencyTokens": defineTable(v.object({ "expiresAt": v.number(), "fnName": v.string(), "key": v.string(), "recordedAt": v.number(), "resultJson": v.string(), "tenantId": v.string() })).index("by_tenant_fn_key", ["tenantId", "fnName", "key"]).index("by_expiry", ["expiresAt"]),
38
38
  "lenses": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "description": v.optional(v.string()), "filterCriteria": v.optional(v.object({ "entityTypeFilters": v.array(v.object({ "entityTypeValue": v.string(), "subtypeValues": v.optional(v.array(v.string())) })), "kind": v.literal("taxonomy"), "ontologyScope": v.optional(v.object({ "ontologyKey": v.optional(v.string()) })), "version": v.literal(1) })), "globalId": v.string(), "metadata": v.optional(v.any()), "name": v.string(), "perspectiveType": v.string(), "promptTemplates": v.array(v.object({ "key": v.string(), "metadata": v.optional(v.any()), "phase": v.optional(v.string()), "promptRef": v.string(), "required": v.optional(v.boolean()), "role": v.optional(v.string()), "version": v.optional(v.string()) })), "questionTemplates": v.optional(v.array(v.object({ "key": v.string(), "linkedBeliefKey": v.optional(v.string()), "metadata": v.optional(v.any()), "priority": v.optional(v.union(v.literal("critical"), v.literal("high"), v.literal("medium"), v.literal("low"))), "text": v.string() }))), "status": v.union(v.literal("draft"), v.literal("active"), v.literal("archived")), "taskTemplates": v.array(v.object({ "description": v.optional(v.string()), "key": v.string(), "metadata": v.optional(v.any()), "phase": v.optional(v.string()), "priority": v.optional(v.union(v.literal("critical"), v.literal("high"), v.literal("medium"), v.literal("low"))), "title": v.string() })), "topicId": v.optional(v.string()), "updatedAt": v.number(), "workflowTemplates": v.array(v.object({ "description": v.optional(v.string()), "key": v.string(), "metadata": v.optional(v.any()), "name": v.string(), "steps": v.array(v.object({ "description": v.optional(v.string()), "key": v.string(), "metadata": v.optional(v.any()), "promptTemplateKey": v.optional(v.string()), "taskTemplateKeys": v.optional(v.array(v.string())), "title": v.string() })) })), "workspaceId": v.string() })).index("by_workspace", ["workspaceId"]).index("by_workspace_status", ["workspaceId", "status"]).index("by_workspace_perspective", ["workspaceId", "perspectiveType"]).index("by_topic", ["topicId"]),
39
39
  "lensTopicBindings": defineTable(v.object({ "appliedAt": v.number(), "appliedBy": v.string(), "lensId": v.id("lenses"), "metadata": v.optional(v.any()), "removedAt": v.optional(v.number()), "removedBy": v.optional(v.string()), "status": v.union(v.literal("active"), v.literal("removed")), "topicId": v.string(), "updatedAt": v.number(), "workspaceId": v.string() })).index("by_lens", ["lensId"]).index("by_lens_status", ["lensId", "status"]).index("by_topic", ["topicId"]).index("by_topic_status", ["topicId", "status"]).index("by_topic_lens", ["topicId", "lensId"]),
40
+ "neo4jSyncQueue": defineTable(v.object({ "attempts": v.number(), "createdAt": v.number(), "entityId": v.string(), "entityType": v.union(v.literal("node"), v.literal("edge")), "lastAttemptAt": v.optional(v.number()), "lastError": v.optional(v.string()), "maxAttempts": v.number(), "operation": v.union(v.literal("upsert"), v.literal("delete")), "status": v.union(v.literal("pending"), v.literal("in_progress"), v.literal("failed"), v.literal("succeeded")), "updatedAt": v.number() })).index("by_status", ["status"]).index("by_entity", ["entityType", "entityId"]).index("by_status_attempts", ["status", "attempts"]),
40
41
  "ontologyDefinitions": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "description": v.optional(v.string()), "name": v.string(), "ontologyKey": v.string(), "parentOntologyId": v.optional(v.id("ontologyDefinitions")), "status": v.union(v.literal("draft"), v.literal("active"), v.literal("deprecated"), v.literal("archived")), "tenantId": v.optional(v.string()), "tier": v.union(v.literal("platform"), v.literal("pack"), v.literal("tenant")), "updatedAt": v.number() })).index("by_ontologyKey", ["ontologyKey"]).index("by_tenant_ontologyKey", ["tenantId", "ontologyKey"]).index("by_tier", ["tier"]).index("by_status", ["status"]).index("by_tenant_status", ["tenantId", "status"]).index("by_parentOntologyId", ["parentOntologyId"]),
41
42
  "ontologyVersions": defineTable(v.object({ "createdAt": v.number(), "edgeTypes": v.array(v.object({ "constraintSeverity": v.optional(v.union(v.literal("warn"), v.literal("info"))), "description": v.optional(v.string()), "label": v.string(), "sourceTypes": v.optional(v.array(v.string())), "targetTypes": v.optional(v.array(v.string())), "value": v.string() })), "entityTypes": v.array(v.object({ "description": v.optional(v.string()), "label": v.string(), "schema": v.optional(v.any()), "subtypes": v.optional(v.array(v.object({ "description": v.optional(v.string()), "label": v.string(), "value": v.string() }))), "value": v.string() })), "ontologyId": v.id("ontologyDefinitions"), "ontologyKey": v.string(), "publishedAt": v.optional(v.number()), "publishedBy": v.optional(v.string()), "releaseNotes": v.optional(v.string()), "status": v.union(v.literal("draft"), v.literal("published"), v.literal("deprecated")), "version": v.string() })).index("by_ontologyId", ["ontologyId"]).index("by_ontologyKey", ["ontologyKey"]).index("by_ontologyKey_version", ["ontologyKey", "version"]).index("by_status", ["status"]).index("by_publishedAt", ["publishedAt"]),
42
43
  "platformAgentRunPolicyDecisions": defineTable(v.object({ "action": v.string(), "createdAt": v.number(), "decisionId": v.string(), "evaluatedAt": v.number(), "reasonCode": v.string(), "result": v.union(v.literal("allow"), v.literal("deny"), v.literal("shadow_allow")), "runId": v.string(), "scopesChecked": v.array(v.string()), "scopesGranted": v.array(v.string()) })).index("by_decisionId", ["decisionId"]).index("by_run_createdAt", ["runId", "createdAt"]),
@@ -56,7 +57,7 @@ var KERNEL_SCHEMA_TABLES = {
56
57
  "workflowPullRequests": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "metadata": v.optional(v.record(v.string(), v.any())), "resolvedAt": v.optional(v.number()), "resolvedBy": v.optional(v.string()), "reviewers": v.optional(v.array(v.string())), "status": v.union(v.literal("pending_review"), v.literal("changes_requested"), v.literal("approved"), v.literal("blocked")), "summary": v.string(), "topicId": v.optional(v.string()), "updatedAt": v.number(), "worktreeId": v.id("worktrees") })).index("by_worktreeId", ["worktreeId"]).index("by_status", ["status"]).index("by_topicId", ["topicId"]).index("by_topic_status", ["topicId", "status"]),
57
58
  "workflowStages": defineTable(v.object({ "createdAt": v.number(), "description": v.optional(v.string()), "displayName": v.string(), "entryConditions": v.optional(v.record(v.string(), v.any())), "exitConditions": v.optional(v.record(v.string(), v.any())), "gateRules": v.optional(v.record(v.string(), v.any())), "isOptional": v.optional(v.boolean()), "metadata": v.optional(v.record(v.string(), v.any())), "name": v.string(), "order": v.number(), "updatedAt": v.number(), "workflowDefinitionId": v.id("workflowDefinitions") })).index("by_workflow", ["workflowDefinitionId"]).index("by_workflow_order", ["workflowDefinitionId", "order"]),
58
59
  "worktreeBeliefCluster": defineTable(v.object({ "addedAt": v.number(), "beliefId": v.string(), "cascadeText": v.optional(v.string()), "confidenceDelta": v.optional(v.number()), "counterfactualText": v.optional(v.string()), "dependencyText": v.optional(v.string()), "finalConfidence": v.optional(v.number()), "finalEvidenceCount": v.optional(v.number()), "initialConfidence": v.optional(v.number()), "initialEvidenceCount": v.optional(v.number()), "llmAssessedAt": v.optional(v.number()), "llmCertainty": v.optional(v.number()), "llmEvidenceScores": v.optional(v.string()), "llmReasoning": v.optional(v.string()), "llmValence": v.optional(v.number()), "relationDescription": v.optional(v.string()), "relationType": v.union(v.literal("primary"), v.literal("counterfactual"), v.literal("dependency"), v.literal("cascade"), v.literal("conditional"), v.literal("supporting"), v.literal("contradicting"), v.literal("alternative"), v.literal("prerequisite")), "updatedAt": v.number(), "worktreeId": v.id("worktrees") })).index("by_worktree", ["worktreeId"]).index("by_belief", ["beliefId"]).index("by_worktree_relation", ["worktreeId", "relationType"]),
59
- "worktrees": defineTable(v.object({ "beliefFocus": v.optional(v.string()), "beliefRefinement": v.optional(v.object({ "checklist": v.optional(v.object({ "hasMeasurableCriteria": v.boolean(), "hasSpecificClaim": v.boolean(), "hasTestability": v.boolean(), "hasTimeframe": v.boolean() })), "isRefined": v.boolean(), "measurableCriteria": v.optional(v.string()), "originalText": v.optional(v.string()), "refinedAt": v.optional(v.number()), "refinedBy": v.optional(v.string()), "refinedText": v.optional(v.string()), "testingCriteria": v.optional(v.string()), "timeframe": v.optional(v.string()) })), "beliefRefinements": v.optional(v.array(v.any())), "blocks": v.optional(v.array(v.id("worktrees"))), "branchThesis": v.optional(v.object({ "approvedAt": v.optional(v.number()), "approvedBy": v.optional(v.string()), "content": v.string(), "generatedAt": v.optional(v.number()), "generationMetadata": v.optional(v.object({ "langfuseTraceId": v.optional(v.string()), "modelUsed": v.string(), "promptName": v.string() })), "memoContent": v.optional(v.string()), "status": v.union(v.literal("ai_draft"), v.literal("user_draft"), v.literal("final")) })), "chatId": v.optional(v.string()), "clusterStatus": v.optional(v.object({ "conditionalsByType": v.optional(v.object({ "cascades": v.number(), "counterfactuals": v.number(), "dependencies": v.number(), "other": v.number() })), "hasCascades": v.boolean(), "hasCounterfactuals": v.boolean(), "hasDependencies": v.boolean(), "mappingCompletedAt": v.optional(v.number()), "mappingCompletedBy": v.optional(v.string()), "totalConditionals": v.number() })), "confidenceImpact": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "createdAt": v.optional(v.number()), "createdBy": v.string(), "decisionGate": v.optional(v.object({ "decidedAt": v.optional(v.number()), "decidedBy": v.optional(v.string()), "goCriteria": v.array(v.string()), "noGoSignals": v.array(v.string()), "verdict": v.optional(v.union(v.literal("go"), v.literal("no_go"), v.literal("pivot"), v.literal("pending"))), "verdictRationale": v.optional(v.string()) })), "decisionsReached": v.optional(v.array(v.string())), "dependsOn": v.optional(v.array(v.id("worktrees"))), "dismissedReason": v.optional(v.string()), "durationWeeks": v.number(), "endDate": v.number(), "endingConfidence": v.optional(v.object({ "beliefConfidences": v.array(v.object({ "beliefId": v.string(), "confidence": v.number() })), "overall": v.number() })), "epistemicChain": v.optional(v.object({ "capturedAt": v.number(), "capturedBy": v.string(), "clusterEdges": v.array(v.object({ "createdAt": v.optional(v.number()), "edgeId": v.optional(v.string()), "edgeType": v.string(), "sourceId": v.string(), "targetId": v.string(), "weight": v.optional(v.number()) })), "confidenceHistory": v.optional(v.array(v.object({ "beliefId": v.string(), "recentChanges": v.array(v.object({ "confidence": v.optional(v.string()), "timestamp": v.optional(v.number()), "trigger": v.optional(v.string()) })) }))), "evidence": v.array(v.object({ "createdAt": v.optional(v.number()), "id": v.string(), "sourceType": v.optional(v.string()), "text": v.string(), "verificationStatus": v.optional(v.string()), "verified": v.boolean() })), "outcome": v.object({ "confidenceChange": v.number(), "endingConfidence": v.number(), "startingConfidence": v.number(), "summary": v.string(), "verdict": v.string() }), "primaryBelief": v.optional(v.object({ "confidenceScore": v.optional(v.number()), "criticality": v.optional(v.string()), "endingConfidence": v.number(), "endingConfidenceLabel": v.optional(v.string()), "id": v.string(), "startingConfidence": v.number(), "startingConfidenceLabel": v.optional(v.string()), "status": v.optional(v.string()), "text": v.string() })), "questions": v.array(v.object({ "answer": v.optional(v.string()), "answeredAt": v.optional(v.number()), "answeredBy": v.optional(v.string()), "answerStatus": v.optional(v.string()), "evidenceCount": v.number(), "id": v.string(), "priority": v.optional(v.string()), "status": v.string(), "text": v.string() })), "relatedBeliefs": v.optional(v.array(v.object({ "confidence": v.optional(v.string()), "confidenceScore": v.optional(v.number()), "id": v.string(), "text": v.optional(v.string()) }))), "tasksCompleted": v.optional(v.number()), "topicId": v.optional(v.string()), "totalTasks": v.optional(v.number()), "worktreeId": v.id("worktrees") })), "epistemicOrigin": v.optional(v.string()), "evidenceReviewState": v.optional(v.object({ "evidenceGaps": v.array(v.string()), "evidenceQuestionMapping": v.optional(v.array(v.object({ "coverageNote": v.optional(v.string()), "evidenceId": v.string(), "questionIds": v.array(v.string()) }))), "existingEvidenceReviewed": v.boolean(), "reviewCompletedAt": v.optional(v.number()), "reviewCompletedBy": v.optional(v.string()), "strengthAreas": v.array(v.string()) })), "evidenceSignals": v.optional(v.array(v.object({ "collected": v.boolean(), "notes": v.optional(v.string()), "progress": v.optional(v.string()), "signal": v.string() }))), "executionBand": v.optional(v.number()), "executionOrder": v.optional(v.number()), "gate": v.optional(v.string()), "generatedAt": v.optional(v.number()), "generatedBy": v.optional(v.string()), "hypothesis": v.optional(v.string()), "index": v.number(), "keyFindings": v.optional(v.array(v.string())), "keyQuestions": v.optional(v.array(v.object({ "answer": v.optional(v.string()), "answerConfidence": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "linkedQuestionId": v.optional(v.string()), "question": v.string(), "status": v.union(v.literal("open"), v.literal("answered"), v.literal("forked")) }))), "linkedCallIds": v.optional(v.array(v.string())), "linkedDeepResearchIds": v.optional(v.array(v.string())), "linkedDocumentIds": v.optional(v.array(v.string())), "linkedEvidenceIds": v.optional(v.array(v.string())), "linkedNewsIds": v.optional(v.array(v.string())), "linkedPrimerIds": v.optional(v.array(v.string())), "metadata": v.optional(v.any()), "name": v.string(), "nextSteps": v.optional(v.array(v.string())), "notes": v.optional(v.array(v.object({ "content": v.string(), "createdAt": v.number(), "createdBy": v.string(), "id": v.string(), "linkedBeliefId": v.optional(v.string()), "linkedQuestionId": v.optional(v.string()), "linkedTaskId": v.optional(v.string()) }))), "objective": v.string(), "outcome": v.optional(v.object({ "confidenceChange": v.number(), "summary": v.string(), "verdict": v.union(v.literal("validated"), v.literal("invalidated"), v.literal("forked"), v.literal("inconclusive")), "whatChanged": v.string() })), "phase": v.optional(v.string()), "phaseHistory": v.optional(v.array(v.object({ "completedAt": v.optional(v.number()), "completedBy": v.optional(v.string()), "enteredAt": v.number(), "pausedAt": v.optional(v.number()), "phase": v.string(), "resumedAt": v.optional(v.number()) }))), "priority": v.optional(v.number()), "questionsCoverage": v.optional(v.object({ "clusterNodesCovered": v.number(), "coveragePercent": v.number(), "gapsIdentified": v.optional(v.array(v.string())), "totalQuestions": v.number() })), "rationale": v.optional(v.string()), "researchEfficiency": v.optional(v.object({ "clusterCoverage": v.number(), "efficiencyScore": v.number(), "questionsPerTask": v.number(), "totalTasks": v.number() })), "retrospective": v.optional(v.object({ "confidenceChange": v.number(), "lessonsLearned": v.array(v.string()), "whatDidnt": v.array(v.string()), "whatWorked": v.array(v.string()) })), "sourceProposalId": v.optional(v.string()), "startDate": v.number(), "startingConfidence": v.optional(v.object({ "beliefConfidences": v.array(v.object({ "beliefId": v.string(), "confidence": v.number() })), "overall": v.number() })), "status": v.union(v.literal("suggested"), v.literal("planning"), v.literal("active"), v.literal("paused"), v.literal("completed"), v.literal("dismissed"), v.literal("abandoned")), "synthesisState": v.optional(v.object({ "originalBeliefIds": v.array(v.string()), "synthesisComplete": v.boolean(), "synthesisCompletedAt": v.optional(v.number()), "synthesisCompletedBy": v.optional(v.string()), "synthesisRationale": v.optional(v.string()), "synthesizedBeliefIds": v.array(v.string()) })), "targetBeliefIds": v.array(v.string()), "targetBranch": v.optional(v.string()), "targetQuestionIds": v.array(v.string()), "tasks": v.optional(v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any()))), "thesisReportId": v.optional(v.string()), "topicId": v.optional(v.string()), "track": v.optional(v.string()), "trackPosition": v.optional(v.number()), "triggerReason": v.optional(v.string()), "updatedAt": v.optional(v.number()), "userId": v.optional(v.string()), "worktreeScope": v.optional(v.union(v.literal("belief"), v.literal("branch"))), "worktreeType": v.optional(v.string()) })).index("by_topicId", ["topicId"]).index("by_topicId_status", ["topicId", "status"]).index("by_topicId_index", ["topicId", "index"]).index("by_worktreeType", ["topicId", "worktreeType"]).index("by_topicId_priority", ["topicId", "priority"]).index("by_topicId_branch", ["topicId", "targetBranch"]).index("by_topicId_scope", ["topicId", "worktreeScope"])
60
+ "worktrees": defineTable(v.object({ "beliefFocus": v.optional(v.string()), "beliefRefinement": v.optional(v.object({ "checklist": v.optional(v.object({ "hasMeasurableCriteria": v.boolean(), "hasSpecificClaim": v.boolean(), "hasTestability": v.boolean(), "hasTimeframe": v.boolean() })), "isRefined": v.boolean(), "measurableCriteria": v.optional(v.string()), "originalText": v.optional(v.string()), "refinedAt": v.optional(v.number()), "refinedBy": v.optional(v.string()), "refinedText": v.optional(v.string()), "testingCriteria": v.optional(v.string()), "timeframe": v.optional(v.string()) })), "beliefRefinements": v.optional(v.array(v.any())), "blocks": v.optional(v.array(v.id("worktrees"))), "branchThesis": v.optional(v.object({ "approvedAt": v.optional(v.number()), "approvedBy": v.optional(v.string()), "content": v.string(), "generatedAt": v.optional(v.number()), "generationMetadata": v.optional(v.object({ "langfuseTraceId": v.optional(v.string()), "modelUsed": v.string(), "promptName": v.string() })), "memoContent": v.optional(v.string()), "status": v.union(v.literal("ai_draft"), v.literal("user_draft"), v.literal("final")) })), "campaign": v.optional(v.number()), "chatId": v.optional(v.string()), "clusterStatus": v.optional(v.object({ "conditionalsByType": v.optional(v.object({ "cascades": v.number(), "counterfactuals": v.number(), "dependencies": v.number(), "other": v.number() })), "hasCascades": v.boolean(), "hasCounterfactuals": v.boolean(), "hasDependencies": v.boolean(), "mappingCompletedAt": v.optional(v.number()), "mappingCompletedBy": v.optional(v.string()), "totalConditionals": v.number() })), "confidenceImpact": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "createdAt": v.optional(v.number()), "createdBy": v.string(), "decisionGate": v.optional(v.object({ "decidedAt": v.optional(v.number()), "decidedBy": v.optional(v.string()), "goCriteria": v.array(v.string()), "noGoSignals": v.array(v.string()), "verdict": v.optional(v.union(v.literal("go"), v.literal("no_go"), v.literal("pivot"), v.literal("pending"))), "verdictRationale": v.optional(v.string()) })), "decisionsReached": v.optional(v.array(v.string())), "dependsOn": v.optional(v.array(v.id("worktrees"))), "dismissedReason": v.optional(v.string()), "durationWeeks": v.number(), "endDate": v.number(), "endingConfidence": v.optional(v.object({ "beliefConfidences": v.array(v.object({ "beliefId": v.string(), "confidence": v.number() })), "overall": v.number() })), "epistemicChain": v.optional(v.object({ "capturedAt": v.number(), "capturedBy": v.string(), "clusterEdges": v.array(v.object({ "createdAt": v.optional(v.number()), "edgeId": v.optional(v.string()), "edgeType": v.string(), "sourceId": v.string(), "targetId": v.string(), "weight": v.optional(v.number()) })), "confidenceHistory": v.optional(v.array(v.object({ "beliefId": v.string(), "recentChanges": v.array(v.object({ "confidence": v.optional(v.string()), "timestamp": v.optional(v.number()), "trigger": v.optional(v.string()) })) }))), "evidence": v.array(v.object({ "createdAt": v.optional(v.number()), "id": v.string(), "sourceType": v.optional(v.string()), "text": v.string(), "verificationStatus": v.optional(v.string()), "verified": v.boolean() })), "outcome": v.object({ "confidenceChange": v.number(), "endingConfidence": v.number(), "startingConfidence": v.number(), "summary": v.string(), "verdict": v.string() }), "primaryBelief": v.optional(v.object({ "confidenceScore": v.optional(v.number()), "criticality": v.optional(v.string()), "endingConfidence": v.number(), "endingConfidenceLabel": v.optional(v.string()), "id": v.string(), "startingConfidence": v.number(), "startingConfidenceLabel": v.optional(v.string()), "status": v.optional(v.string()), "text": v.string() })), "questions": v.array(v.object({ "answer": v.optional(v.string()), "answeredAt": v.optional(v.number()), "answeredBy": v.optional(v.string()), "answerStatus": v.optional(v.string()), "evidenceCount": v.number(), "id": v.string(), "priority": v.optional(v.string()), "status": v.string(), "text": v.string() })), "relatedBeliefs": v.optional(v.array(v.object({ "confidence": v.optional(v.string()), "confidenceScore": v.optional(v.number()), "id": v.string(), "text": v.optional(v.string()) }))), "tasksCompleted": v.optional(v.number()), "topicId": v.optional(v.string()), "totalTasks": v.optional(v.number()), "worktreeId": v.id("worktrees") })), "epistemicOrigin": v.optional(v.string()), "evidenceReviewState": v.optional(v.object({ "evidenceGaps": v.array(v.string()), "evidenceQuestionMapping": v.optional(v.array(v.object({ "coverageNote": v.optional(v.string()), "evidenceId": v.string(), "questionIds": v.array(v.string()) }))), "existingEvidenceReviewed": v.boolean(), "reviewCompletedAt": v.optional(v.number()), "reviewCompletedBy": v.optional(v.string()), "strengthAreas": v.array(v.string()) })), "evidenceSignals": v.optional(v.array(v.object({ "collected": v.boolean(), "notes": v.optional(v.string()), "progress": v.optional(v.string()), "signal": v.string() }))), "gate": v.optional(v.string()), "generatedAt": v.optional(v.number()), "generatedBy": v.optional(v.string()), "hypothesis": v.optional(v.string()), "index": v.number(), "keyFindings": v.optional(v.array(v.string())), "keyQuestions": v.optional(v.array(v.object({ "answer": v.optional(v.string()), "answerConfidence": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "linkedQuestionId": v.optional(v.string()), "question": v.string(), "status": v.union(v.literal("open"), v.literal("answered"), v.literal("forked")) }))), "lane": v.optional(v.string()), "laneOrderInCampaign": v.optional(v.number()), "linkedCallIds": v.optional(v.array(v.string())), "linkedDeepResearchIds": v.optional(v.array(v.string())), "linkedDocumentIds": v.optional(v.array(v.string())), "linkedEvidenceIds": v.optional(v.array(v.string())), "linkedNewsIds": v.optional(v.array(v.string())), "linkedPrimerIds": v.optional(v.array(v.string())), "metadata": v.optional(v.any()), "name": v.string(), "nextSteps": v.optional(v.array(v.string())), "notes": v.optional(v.array(v.object({ "content": v.string(), "createdAt": v.number(), "createdBy": v.string(), "id": v.string(), "linkedBeliefId": v.optional(v.string()), "linkedQuestionId": v.optional(v.string()), "linkedTaskId": v.optional(v.string()) }))), "objective": v.string(), "orderInLane": v.optional(v.number()), "outcome": v.optional(v.object({ "confidenceChange": v.number(), "summary": v.string(), "verdict": v.union(v.literal("validated"), v.literal("invalidated"), v.literal("forked"), v.literal("inconclusive")), "whatChanged": v.string() })), "phase": v.optional(v.string()), "phaseHistory": v.optional(v.array(v.object({ "completedAt": v.optional(v.number()), "completedBy": v.optional(v.string()), "enteredAt": v.number(), "pausedAt": v.optional(v.number()), "phase": v.string(), "resumedAt": v.optional(v.number()) }))), "priority": v.optional(v.number()), "questionsCoverage": v.optional(v.object({ "clusterNodesCovered": v.number(), "coveragePercent": v.number(), "gapsIdentified": v.optional(v.array(v.string())), "totalQuestions": v.number() })), "rationale": v.optional(v.string()), "researchEfficiency": v.optional(v.object({ "clusterCoverage": v.number(), "efficiencyScore": v.number(), "questionsPerTask": v.number(), "totalTasks": v.number() })), "retrospective": v.optional(v.object({ "confidenceChange": v.number(), "lessonsLearned": v.array(v.string()), "whatDidnt": v.array(v.string()), "whatWorked": v.array(v.string()) })), "sourceProposalId": v.optional(v.string()), "startDate": v.number(), "startingConfidence": v.optional(v.object({ "beliefConfidences": v.array(v.object({ "beliefId": v.string(), "confidence": v.number() })), "overall": v.number() })), "status": v.union(v.literal("suggested"), v.literal("planning"), v.literal("active"), v.literal("paused"), v.literal("completed"), v.literal("dismissed"), v.literal("abandoned")), "synthesisState": v.optional(v.object({ "originalBeliefIds": v.array(v.string()), "synthesisComplete": v.boolean(), "synthesisCompletedAt": v.optional(v.number()), "synthesisCompletedBy": v.optional(v.string()), "synthesisRationale": v.optional(v.string()), "synthesizedBeliefIds": v.array(v.string()) })), "targetBeliefIds": v.array(v.string()), "targetBranch": v.optional(v.string()), "targetQuestionIds": v.array(v.string()), "tasks": v.optional(v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any()))), "thesisReportId": v.optional(v.string()), "topicId": v.optional(v.string()), "triggerReason": v.optional(v.string()), "updatedAt": v.optional(v.number()), "userId": v.optional(v.string()), "worktreeScope": v.optional(v.union(v.literal("belief"), v.literal("branch"))), "worktreeType": v.optional(v.string()) })).index("by_topicId", ["topicId"]).index("by_topicId_status", ["topicId", "status"]).index("by_topicId_index", ["topicId", "index"]).index("by_worktreeType", ["topicId", "worktreeType"]).index("by_topicId_priority", ["topicId", "priority"]).index("by_topicId_campaign_lane_order", ["topicId", "campaign", "laneOrderInCampaign", "orderInLane"]).index("by_topicId_lane_order", ["topicId", "lane", "orderInLane"]).index("by_topicId_branch", ["topicId", "targetBranch"]).index("by_topicId_scope", ["topicId", "worktreeScope"])
60
61
  };
61
62
  var IDENTITY_SCHEMA_TABLES = {
62
63
  "agents": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "displayName": v.optional(v.string()), "groupIds": v.optional(v.array(v.string())), "permittedPackKeys": v.optional(v.array(v.string())), "permittedToolNames": v.optional(v.array(v.string())), "principalId": v.string(), "principalType": v.literal("service"), "roles": v.array(v.string()), "slug": v.string(), "status": v.union(v.literal("active"), v.literal("suspended"), v.literal("disabled")), "tenantId": v.string(), "updatedAt": v.number(), "workspaceId": v.string() })).index("by_slug", ["slug"]).index("by_principalId", ["principalId"]).index("by_tenantId", ["tenantId"]).index("by_status", ["status"]),
@@ -110,7 +111,7 @@ var MC_SCHEMA_TABLES = {
110
111
  "principals": defineTable(v.object({ "clerkId": v.optional(v.string()), "createdAt": v.number(), "displayName": v.optional(v.string()), "email": v.optional(v.string()), "groupIds": v.optional(v.array(v.id("groups"))), "metadata": v.optional(v.record(v.string(), v.any())), "principalId": v.string(), "principalType": v.union(v.literal("user"), v.literal("group"), v.literal("service"), v.literal("external_viewer")), "status": v.union(v.literal("active"), v.literal("invited"), v.literal("suspended"), v.literal("disabled")), "tenantId": v.optional(v.id("tenants")), "updatedAt": v.number(), "workspaceId": v.optional(v.id("workspaces")) })).index("by_principalId", ["principalId"]).index("by_clerkId", ["clerkId"]).index("by_tenantId", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_status", ["status"]),
111
112
  "rateLimitWindows": defineTable(v.object({ "createdAt": v.number(), "keyId": v.optional(v.string()), "limit": v.number(), "principalId": v.string(), "requestCount": v.number(), "tenantId": v.optional(v.id("tenants")), "tier": v.union(v.literal("free"), v.literal("developer"), v.literal("partner")), "updatedAt": v.number(), "windowEndMs": v.number(), "windowStartMs": v.number(), "windowType": v.union(v.literal("minute"), v.literal("hour")) })).index("by_principal_window", ["principalId", "windowType", "windowStartMs"]).index("by_window_type_start", ["windowType", "windowStartMs"]).index("by_window_end", ["windowEndMs"]).index("by_tier_window_end", ["tier", "windowEndMs"]),
112
113
  "servicePrincipalKeys": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "environment": v.union(v.literal("sandbox"), v.literal("production")), "expiresAt": v.number(), "keyId": v.string(), "lastUsedAt": v.optional(v.number()), "metadata": v.optional(v.record(v.string(), v.any())), "principalId": v.string(), "rateLimitTier": v.optional(v.union(v.literal("free"), v.literal("developer"), v.literal("partner"))), "revokedAt": v.optional(v.number()), "revokedBy": v.optional(v.string()), "rotatedToKeyId": v.optional(v.string()), "rotationGracePeriod": v.optional(v.number()), "scopes": v.array(v.string()), "status": v.union(v.literal("active"), v.literal("rotating"), v.literal("rotated"), v.literal("expired"), v.literal("revoked")), "tenantId": v.id("tenants"), "tokenHash": v.string(), "updatedAt": v.number(), "workspaceId": v.optional(v.id("workspaces")) })).index("by_keyId", ["keyId"]).index("by_tokenHash", ["tokenHash"]).index("by_principalId", ["principalId"]).index("by_tenantId", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_status", ["status"]).index("by_principal_status", ["principalId", "status"]),
113
- "tenantDeploymentCredentials": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "credentialRef": v.string(), "encryptedDeployKey": v.string(), "encryptionVersion": v.string(), "environment": v.union(v.literal("dev"), v.literal("prod")), "keyFingerprint": v.string(), "keyHint": v.string(), "lastUsedAt": v.optional(v.number()), "metadata": v.optional(v.record(v.string(), v.any())), "revokedAt": v.optional(v.number()), "revokedBy": v.optional(v.string()), "rotatedFromCredentialRef": v.optional(v.string()), "status": v.union(v.literal("active"), v.literal("revoked")), "target": v.union(v.literal("kernelDeployment"), v.literal("appDeployment")), "tenantId": v.id("tenants"), "updatedAt": v.number() })).index("by_credentialRef", ["credentialRef"]).index("by_tenantId", ["tenantId"]).index("by_tenant_target", ["tenantId", "target"]).index("by_tenant_target_environment", ["tenantId", "target", "environment"]).index("by_tenant_target_environment_status", ["tenantId", "target", "environment", "status"]).index("by_status", ["status"]),
114
+ "tenantDeploymentCredentials": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "credentialRef": v.string(), "encryptedDeployKey": v.string(), "encryptionVersion": v.string(), "environment": v.union(v.literal("dev"), v.literal("staging"), v.literal("prod")), "keyFingerprint": v.string(), "keyHint": v.string(), "lastUsedAt": v.optional(v.number()), "metadata": v.optional(v.record(v.string(), v.any())), "revokedAt": v.optional(v.number()), "revokedBy": v.optional(v.string()), "rotatedFromCredentialRef": v.optional(v.string()), "status": v.union(v.literal("active"), v.literal("revoked")), "target": v.union(v.literal("kernelDeployment"), v.literal("appDeployment")), "tenantId": v.id("tenants"), "updatedAt": v.number() })).index("by_credentialRef", ["credentialRef"]).index("by_tenantId", ["tenantId"]).index("by_tenant_target", ["tenantId", "target"]).index("by_tenant_target_environment", ["tenantId", "target", "environment"]).index("by_tenant_target_environment_status", ["tenantId", "target", "environment", "status"]).index("by_status", ["status"]),
114
115
  "tenantMethodologyAssignments": defineTable(v.object({ "assignedAt": v.number(), "assignedBy": v.string(), "isDefault": v.boolean(), "methodologyPackId": v.id("methodologyPacks"), "tenantId": v.id("tenants") })).index("by_tenantId", ["tenantId"]).index("by_methodologyPackId", ["methodologyPackId"]),
115
116
  "tenants": defineTable(v.object({ "appDeployment": v.optional(v.object({ "devId": v.string(), "devUrl": v.string(), "prodId": v.optional(v.string()), "prodUrl": v.optional(v.string()), "stagingId": v.optional(v.string()), "stagingUrl": v.optional(v.string()) })), "createdAt": v.number(), "kernelDeployment": v.optional(v.object({ "devId": v.string(), "devUrl": v.string(), "prodId": v.optional(v.string()), "prodUrl": v.optional(v.string()), "stagingId": v.optional(v.string()), "stagingUrl": v.optional(v.string()) })), "lucernDeployment": v.optional(v.object({ "devId": v.string(), "devUrl": v.string(), "prodId": v.optional(v.string()), "prodUrl": v.optional(v.string()), "stagingId": v.optional(v.string()), "stagingUrl": v.optional(v.string()) })), "metadata": v.optional(v.any()), "name": v.string(), "ownerClerkId": v.string(), "ownerEmail": v.optional(v.string()), "slug": v.string(), "status": v.union(v.literal("provisioning"), v.literal("active"), v.literal("suspended"), v.literal("archived")), "tier": v.union(v.literal("free"), v.literal("developer"), v.literal("team"), v.literal("enterprise")), "updatedAt": v.number() })).index("by_slug", ["slug"]).index("by_status", ["status"]).index("by_ownerClerkId", ["ownerClerkId"]),
116
117
  "toolCatalog": defineTable(v.object({ "category": v.union(v.literal("read"), v.literal("write"), v.literal("admin"), v.literal("system")), "createdAt": v.number(), "description": v.string(), "distribution": v.union(v.literal("base"), v.literal("pack_only")), "executionAdapter": v.optional(v.union(v.literal("convex_mutation"), v.literal("convex_action"), v.literal("http_callback"), v.literal("mcp_tool"), v.literal("sdk_invocation"), v.literal("external_observed"))), "handlerRef": v.optional(v.string()), "metadata": v.optional(v.record(v.string(), v.any())), "parameterSchema": v.optional(v.record(v.string(), v.any())), "requiredAction": v.union(v.literal("read"), v.literal("mutate"), v.literal("admin"), v.literal("summarize"), v.literal("export"), v.literal("create"), v.literal("delete"), v.literal("grant"), v.literal("revoke")), "requiredRole": v.union(v.literal("platform_admin"), v.literal("tenant_admin"), v.literal("workspace_admin"), v.literal("editor"), v.literal("viewer"), v.literal("auditor"), v.literal("service_agent")), "returnSchema": v.optional(v.record(v.string(), v.any())), "safetyMetadata": v.optional(v.object({ "idempotent": v.boolean(), "readOnly": v.boolean(), "sideEffectLevel": v.union(v.literal("none"), v.literal("low"), v.literal("high")) })), "status": v.union(v.literal("active"), v.literal("deprecated"), v.literal("draft")), "surfaces": v.array(v.union(v.literal("mcp"), v.literal("chat"), v.literal("voice"), v.literal("sprint"), v.literal("api"), v.literal("sdk"), v.literal("cli"))), "toolName": v.string(), "updatedAt": v.number(), "version": v.string() })).index("by_toolName", ["toolName"]).index("by_status", ["status"]).index("by_distribution", ["distribution"]).index("by_distribution_status", ["distribution", "status"]).index("by_category", ["category"]).index("by_requiredRole", ["requiredRole"]),