@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
@@ -134,7 +134,7 @@ var CANONICAL_WORKFLOW_DEFINITIONS = [
134
134
  actionId: "run_integrity_checks",
135
135
  kind: "integrity_check",
136
136
  title: "Run integrity checks",
137
- description: "Evaluate dependency references, blockers, execution bands, shaping coverage, and completed gates.",
137
+ description: "Evaluate dependency references, blockers, campaign/lane placement, shaping coverage, and completed gates.",
138
138
  mutationTier: "read_only",
139
139
  produces: ["structured_payload"],
140
140
  idempotent: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/workflow-runtime.contract.ts"],"names":[],"mappings":"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","file":"workflow-runtime.contract.js","sourcesContent":["/**\n * Workflow Runtime Contract v1\n *\n * Canonical TypeScript contract for Lucern's graph-local workflow runtime.\n * WF-1 defines the typed substrate for:\n * - workflow definitions and run receipts\n * - action mutation tiering and approval expectations\n * - hooks over worktree/question/evidence/inbox events\n * - output unions for domain-specific artifacts\n * - deterministic integrity checks and operational metadata\n *\n * BREAKING CHANGE RULES:\n * - Adding optional fields is NON-breaking\n * - Removing fields or renaming enum values is BREAKING\n * - Reclassifying a mutation tier is BREAKING\n * - Changing canonical workflow IDs is BREAKING\n */\n\nexport const WORKFLOW_RUNTIME_SCHEMA_VERSION = \"1.0.0\" as const;\n\nexport const WORKFLOW_MUTATION_TIERS = [\n \"read_only\",\n \"low_risk_write\",\n \"high_risk_write\",\n] as const;\nexport type WorkflowMutationTier = (typeof WORKFLOW_MUTATION_TIERS)[number];\n\nexport const WORKFLOW_APPROVAL_MODES = [\n \"none\",\n \"audit_only\",\n \"human_required\",\n \"auto_approve\",\n] as const;\nexport type WorkflowApprovalMode = (typeof WORKFLOW_APPROVAL_MODES)[number];\n\nexport const DEFAULT_TIER_APPROVAL_MODE: Readonly<\n Record<WorkflowMutationTier, WorkflowApprovalMode>\n> = {\n read_only: \"none\",\n low_risk_write: \"audit_only\",\n high_risk_write: \"human_required\",\n} as const;\n\nexport const WORKFLOW_ACTION_KINDS = [\n \"context_pack\",\n \"integrity_check\",\n \"lucern_tool\",\n \"report_compile\",\n \"brief_publish\",\n \"notification\",\n \"custom\",\n] as const;\nexport type WorkflowActionKind = (typeof WORKFLOW_ACTION_KINDS)[number];\n\nexport const WORKFLOW_HOOK_EVENTS = [\n \"schedule.tick\",\n \"worktree.activated\",\n \"worktree.completed\",\n \"question.created\",\n \"question.answered\",\n \"evidence.appended\",\n \"inbox.item_created\",\n] as const;\nexport type WorkflowHookEvent = (typeof WORKFLOW_HOOK_EVENTS)[number];\n\nexport const WORKFLOW_OUTPUT_KINDS = [\n \"engineering_brief\",\n \"research_memo\",\n \"strategy_artifact\",\n \"inbox_summary\",\n \"pipeline_brief\",\n \"structured_payload\",\n] as const;\nexport type WorkflowOutputKind = (typeof WORKFLOW_OUTPUT_KINDS)[number];\n\nexport const WORKFLOW_RUN_STATUSES = [\n \"queued\",\n \"running\",\n \"awaiting_approval\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type WorkflowRunStatus = (typeof WORKFLOW_RUN_STATUSES)[number];\n\nexport const WORKFLOW_TRIGGER_KINDS = [\n \"manual\",\n \"schedule\",\n \"hook\",\n] as const;\nexport type WorkflowTriggerKind = (typeof WORKFLOW_TRIGGER_KINDS)[number];\n\nexport const WORKFLOW_PROOF_ARTIFACT_KINDS = [\n \"report\",\n \"brief\",\n \"artifact\",\n \"dashboard\",\n \"test_evidence\",\n] as const;\nexport type WorkflowProofArtifactKind =\n (typeof WORKFLOW_PROOF_ARTIFACT_KINDS)[number];\n\nexport const WORKFLOW_STAFFING_HINTS = [\n \"solo\",\n \"backend+tests\",\n \"fullstack\",\n \"mcp+tests\",\n] as const;\nexport type WorkflowStaffingHint = (typeof WORKFLOW_STAFFING_HINTS)[number];\n\nexport const WORKFLOW_AUTO_FIX_MODES = [\n \"disabled\",\n \"dry_run\",\n \"safe\",\n \"aggressive\",\n] as const;\nexport type WorkflowAutoFixMode = (typeof WORKFLOW_AUTO_FIX_MODES)[number];\n\nexport const WORKFLOW_INTEGRITY_CHECKS = [\n \"null_dependency_refs\",\n \"superseded_blockers\",\n \"band_order_inconsistency\",\n \"sparse_shaping\",\n \"failed_completed_gate\",\n] as const;\nexport type WorkflowIntegrityCheckId =\n (typeof WORKFLOW_INTEGRITY_CHECKS)[number];\n\nexport type WorkflowProofArtifact = {\n kind: WorkflowProofArtifactKind;\n label: string;\n required?: boolean;\n sourceRef?: string;\n};\n\nexport type WorkflowAutoFixPolicy = {\n mode: WorkflowAutoFixMode;\n maxActionsPerRun?: number;\n permittedMutationTiers?: WorkflowMutationTier[];\n requireAuditTrail?: boolean;\n escalationGate?: string;\n};\n\nexport const DEFAULT_WORKFLOW_AUTO_FIX_POLICY: WorkflowAutoFixPolicy = {\n mode: \"disabled\",\n permittedMutationTiers: [\"read_only\"],\n requireAuditTrail: true,\n};\n\nexport type WorkflowApprovalPolicy = {\n mode: WorkflowApprovalMode;\n approvalGate?: string;\n autoApprovePolicyKey?: string;\n rationaleRequired?: boolean;\n};\n\nexport type WorkflowOutputBase = {\n outputId: string;\n kind: WorkflowOutputKind;\n title: string;\n summary: string;\n generatedAt?: number;\n};\n\nexport type EngineeringBriefOutput = WorkflowOutputBase & {\n kind: \"engineering_brief\";\n sections: Array<{\n heading: string;\n body: string;\n }>;\n touchedPaths?: string[];\n};\n\nexport type ResearchMemoOutput = WorkflowOutputBase & {\n kind: \"research_memo\";\n claims: string[];\n evidenceRefs?: string[];\n};\n\nexport type StrategyArtifactOutput = WorkflowOutputBase & {\n kind: \"strategy_artifact\";\n recommendations: string[];\n decisionWindow?: string;\n};\n\nexport type InboxSummaryOutput = WorkflowOutputBase & {\n kind: \"inbox_summary\";\n channel: \"developer_portal\" | \"chat\" | \"ops\";\n inboxTitle: string;\n inboxBody: string;\n};\n\nexport type PipelineBriefOutput = WorkflowOutputBase & {\n kind: \"pipeline_brief\";\n hingeWorktreeId?: string;\n groupedBlockers: Array<{\n blocker: string;\n blockedWorktreeIds: string[];\n }>;\n};\n\nexport type StructuredPayloadOutput = WorkflowOutputBase & {\n kind: \"structured_payload\";\n payload: Record<string, unknown>;\n};\n\nexport type WorkflowOutputContract =\n | EngineeringBriefOutput\n | ResearchMemoOutput\n | StrategyArtifactOutput\n | InboxSummaryOutput\n | PipelineBriefOutput\n | StructuredPayloadOutput;\n\nexport type WorkflowActionContract = {\n actionId: string;\n kind: WorkflowActionKind;\n title: string;\n description: string;\n mutationTier: WorkflowMutationTier;\n toolName?: string;\n produces?: WorkflowOutputKind[];\n idempotent?: boolean;\n approval: WorkflowApprovalPolicy;\n};\n\nexport type WorkflowHookContract = {\n hookId: string;\n event: WorkflowHookEvent;\n description: string;\n condition?: string;\n actionIds: string[];\n};\n\nexport type WorkflowTriggerContract =\n | {\n kind: \"manual\";\n description?: string;\n }\n | {\n kind: \"schedule\";\n cadence: \"hourly\" | \"daily\" | \"weekly\";\n timezone?: string;\n }\n | {\n kind: \"hook\";\n event: WorkflowHookEvent;\n };\n\nexport type WorkflowDefinitionV1 = {\n workflowId: string;\n version: typeof WORKFLOW_RUNTIME_SCHEMA_VERSION;\n title: string;\n description: string;\n trigger: WorkflowTriggerContract;\n staffingHint?: WorkflowStaffingHint;\n proofArtifacts?: WorkflowProofArtifact[];\n autoFixPolicy?: WorkflowAutoFixPolicy;\n actions: readonly WorkflowActionContract[];\n hooks?: readonly WorkflowHookContract[];\n outputs: readonly WorkflowOutputKind[];\n integrityChecks?: readonly WorkflowIntegrityCheckId[];\n};\n\nexport type WorkflowRunReceiptV1 = {\n runId: string;\n workflowId: string;\n status: WorkflowRunStatus;\n triggeredBy: WorkflowTriggerKind;\n startedAt: number;\n completedAt?: number;\n outputKinds: WorkflowOutputKind[];\n approvalsRequired?: number;\n};\n\nexport const NIGHTLY_RECONCILIATION_WORKFLOW_ID =\n \"workflow.pipeline_reconciliation.v1\" as const;\n\nexport const MORNING_BRIEF_WORKFLOW_ID =\n \"workflow.morning_brief.v1\" as const;\n\nexport const CANONICAL_WORKFLOW_DEFINITIONS: readonly WorkflowDefinitionV1[] = [\n {\n workflowId: NIGHTLY_RECONCILIATION_WORKFLOW_ID,\n version: WORKFLOW_RUNTIME_SCHEMA_VERSION,\n title: \"Nightly Pipeline Reconciliation\",\n description:\n \"Runs deterministic integrity checks, compiles pipeline state, and emits an operator-facing reconciliation brief.\",\n trigger: {\n kind: \"schedule\",\n cadence: \"daily\",\n timezone: \"America/New_York\",\n },\n staffingHint: \"backend+tests\",\n proofArtifacts: [\n {\n kind: \"report\",\n label: \"Pipeline reconciliation report\",\n required: true,\n },\n {\n kind: \"test_evidence\",\n label: \"Integrity check receipt\",\n required: true,\n },\n ],\n autoFixPolicy: {\n mode: \"safe\",\n maxActionsPerRun: 5,\n permittedMutationTiers: [\"read_only\", \"low_risk_write\"],\n requireAuditTrail: true,\n escalationGate: \"gate:workflow-runtime-contract-live\",\n },\n actions: [\n {\n actionId: \"compile_context_pack\",\n kind: \"context_pack\",\n title: \"Compile pipeline context\",\n description: \"Build the ranked context needed for deterministic checks.\",\n mutationTier: \"read_only\",\n produces: [\"structured_payload\"],\n idempotent: true,\n approval: { mode: \"none\" },\n },\n {\n actionId: \"run_integrity_checks\",\n kind: \"integrity_check\",\n title: \"Run integrity checks\",\n description:\n \"Evaluate dependency references, blockers, execution bands, shaping coverage, and completed gates.\",\n mutationTier: \"read_only\",\n produces: [\"structured_payload\"],\n idempotent: true,\n approval: { mode: \"none\" },\n },\n {\n actionId: \"record_followup_questions\",\n kind: \"lucern_tool\",\n title: \"Record follow-up questions\",\n description:\n \"Create or reopen operator-facing questions for integrity failures that require human review.\",\n mutationTier: \"low_risk_write\",\n toolName: \"create_question\",\n produces: [\"pipeline_brief\"],\n approval: { mode: \"audit_only\", rationaleRequired: true },\n },\n {\n actionId: \"publish_reconciliation_brief\",\n kind: \"brief_publish\",\n title: \"Publish reconciliation brief\",\n description:\n \"Emit an inbox-routed brief summarizing the nightly pipeline state and grouped blockers.\",\n mutationTier: \"low_risk_write\",\n produces: [\"pipeline_brief\", \"inbox_summary\"],\n approval: { mode: \"audit_only\" },\n },\n ],\n hooks: [\n {\n hookId: \"nightly-schedule\",\n event: \"schedule.tick\",\n description: \"Run once per nightly cadence.\",\n actionIds: [\n \"compile_context_pack\",\n \"run_integrity_checks\",\n \"record_followup_questions\",\n \"publish_reconciliation_brief\",\n ],\n },\n ],\n outputs: [\"pipeline_brief\", \"inbox_summary\", \"structured_payload\"],\n integrityChecks: WORKFLOW_INTEGRITY_CHECKS,\n },\n {\n workflowId: MORNING_BRIEF_WORKFLOW_ID,\n version: WORKFLOW_RUNTIME_SCHEMA_VERSION,\n title: \"Morning Brief\",\n description:\n \"Compiles a developer-facing morning brief from graph state, overnight workflow outputs, and inbox routing preferences.\",\n trigger: {\n kind: \"schedule\",\n cadence: \"daily\",\n timezone: \"America/New_York\",\n },\n staffingHint: \"solo\",\n proofArtifacts: [\n {\n kind: \"brief\",\n label: \"Morning brief\",\n required: true,\n },\n ],\n autoFixPolicy: {\n mode: \"dry_run\",\n maxActionsPerRun: 1,\n permittedMutationTiers: [\"read_only\", \"low_risk_write\"],\n requireAuditTrail: true,\n },\n actions: [\n {\n actionId: \"compile_brief_inputs\",\n kind: \"context_pack\",\n title: \"Compile brief inputs\",\n description:\n \"Read graph state, worktree state, and overnight workflow receipts.\",\n mutationTier: \"read_only\",\n produces: [\"structured_payload\"],\n idempotent: true,\n approval: { mode: \"none\" },\n },\n {\n actionId: \"publish_morning_brief\",\n kind: \"brief_publish\",\n title: \"Publish morning brief\",\n description:\n \"Publish a typed inbox summary with prioritized worktree and question context.\",\n mutationTier: \"low_risk_write\",\n produces: [\"engineering_brief\", \"inbox_summary\"],\n approval: { mode: \"audit_only\" },\n },\n ],\n hooks: [\n {\n hookId: \"morning-schedule\",\n event: \"schedule.tick\",\n description: \"Run once per morning cadence.\",\n actionIds: [\"compile_brief_inputs\", \"publish_morning_brief\"],\n },\n {\n hookId: \"worktree-complete-refresh\",\n event: \"worktree.completed\",\n description:\n \"Refresh the queued morning brief inputs when worktree outcomes land overnight.\",\n actionIds: [\"compile_brief_inputs\"],\n },\n ],\n outputs: [\"engineering_brief\", \"inbox_summary\", \"structured_payload\"],\n integrityChecks: [\"sparse_shaping\"],\n },\n] as const;\n"]}
1
+ {"version":3,"sources":["../src/workflow-runtime.contract.ts"],"names":[],"mappings":"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","file":"workflow-runtime.contract.js","sourcesContent":["/**\n * Workflow Runtime Contract v1\n *\n * Canonical TypeScript contract for Lucern's graph-local workflow runtime.\n * WF-1 defines the typed substrate for:\n * - workflow definitions and run receipts\n * - action mutation tiering and approval expectations\n * - hooks over worktree/question/evidence/inbox events\n * - output unions for domain-specific artifacts\n * - deterministic integrity checks and operational metadata\n *\n * BREAKING CHANGE RULES:\n * - Adding optional fields is NON-breaking\n * - Removing fields or renaming enum values is BREAKING\n * - Reclassifying a mutation tier is BREAKING\n * - Changing canonical workflow IDs is BREAKING\n */\n\nexport const WORKFLOW_RUNTIME_SCHEMA_VERSION = \"1.0.0\" as const;\n\nexport const WORKFLOW_MUTATION_TIERS = [\n \"read_only\",\n \"low_risk_write\",\n \"high_risk_write\",\n] as const;\nexport type WorkflowMutationTier = (typeof WORKFLOW_MUTATION_TIERS)[number];\n\nexport const WORKFLOW_APPROVAL_MODES = [\n \"none\",\n \"audit_only\",\n \"human_required\",\n \"auto_approve\",\n] as const;\nexport type WorkflowApprovalMode = (typeof WORKFLOW_APPROVAL_MODES)[number];\n\nexport const DEFAULT_TIER_APPROVAL_MODE: Readonly<\n Record<WorkflowMutationTier, WorkflowApprovalMode>\n> = {\n read_only: \"none\",\n low_risk_write: \"audit_only\",\n high_risk_write: \"human_required\",\n} as const;\n\nexport const WORKFLOW_ACTION_KINDS = [\n \"context_pack\",\n \"integrity_check\",\n \"lucern_tool\",\n \"report_compile\",\n \"brief_publish\",\n \"notification\",\n \"custom\",\n] as const;\nexport type WorkflowActionKind = (typeof WORKFLOW_ACTION_KINDS)[number];\n\nexport const WORKFLOW_HOOK_EVENTS = [\n \"schedule.tick\",\n \"worktree.activated\",\n \"worktree.completed\",\n \"question.created\",\n \"question.answered\",\n \"evidence.appended\",\n \"inbox.item_created\",\n] as const;\nexport type WorkflowHookEvent = (typeof WORKFLOW_HOOK_EVENTS)[number];\n\nexport const WORKFLOW_OUTPUT_KINDS = [\n \"engineering_brief\",\n \"research_memo\",\n \"strategy_artifact\",\n \"inbox_summary\",\n \"pipeline_brief\",\n \"structured_payload\",\n] as const;\nexport type WorkflowOutputKind = (typeof WORKFLOW_OUTPUT_KINDS)[number];\n\nexport const WORKFLOW_RUN_STATUSES = [\n \"queued\",\n \"running\",\n \"awaiting_approval\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n] as const;\nexport type WorkflowRunStatus = (typeof WORKFLOW_RUN_STATUSES)[number];\n\nexport const WORKFLOW_TRIGGER_KINDS = [\n \"manual\",\n \"schedule\",\n \"hook\",\n] as const;\nexport type WorkflowTriggerKind = (typeof WORKFLOW_TRIGGER_KINDS)[number];\n\nexport const WORKFLOW_PROOF_ARTIFACT_KINDS = [\n \"report\",\n \"brief\",\n \"artifact\",\n \"dashboard\",\n \"test_evidence\",\n] as const;\nexport type WorkflowProofArtifactKind =\n (typeof WORKFLOW_PROOF_ARTIFACT_KINDS)[number];\n\nexport const WORKFLOW_STAFFING_HINTS = [\n \"solo\",\n \"backend+tests\",\n \"fullstack\",\n \"mcp+tests\",\n] as const;\nexport type WorkflowStaffingHint = (typeof WORKFLOW_STAFFING_HINTS)[number];\n\nexport const WORKFLOW_AUTO_FIX_MODES = [\n \"disabled\",\n \"dry_run\",\n \"safe\",\n \"aggressive\",\n] as const;\nexport type WorkflowAutoFixMode = (typeof WORKFLOW_AUTO_FIX_MODES)[number];\n\nexport const WORKFLOW_INTEGRITY_CHECKS = [\n \"null_dependency_refs\",\n \"superseded_blockers\",\n \"band_order_inconsistency\",\n \"sparse_shaping\",\n \"failed_completed_gate\",\n] as const;\nexport type WorkflowIntegrityCheckId =\n (typeof WORKFLOW_INTEGRITY_CHECKS)[number];\n\nexport type WorkflowProofArtifact = {\n kind: WorkflowProofArtifactKind;\n label: string;\n required?: boolean;\n sourceRef?: string;\n};\n\nexport type WorkflowAutoFixPolicy = {\n mode: WorkflowAutoFixMode;\n maxActionsPerRun?: number;\n permittedMutationTiers?: WorkflowMutationTier[];\n requireAuditTrail?: boolean;\n escalationGate?: string;\n};\n\nexport const DEFAULT_WORKFLOW_AUTO_FIX_POLICY: WorkflowAutoFixPolicy = {\n mode: \"disabled\",\n permittedMutationTiers: [\"read_only\"],\n requireAuditTrail: true,\n};\n\nexport type WorkflowApprovalPolicy = {\n mode: WorkflowApprovalMode;\n approvalGate?: string;\n autoApprovePolicyKey?: string;\n rationaleRequired?: boolean;\n};\n\nexport type WorkflowOutputBase = {\n outputId: string;\n kind: WorkflowOutputKind;\n title: string;\n summary: string;\n generatedAt?: number;\n};\n\nexport type EngineeringBriefOutput = WorkflowOutputBase & {\n kind: \"engineering_brief\";\n sections: Array<{\n heading: string;\n body: string;\n }>;\n touchedPaths?: string[];\n};\n\nexport type ResearchMemoOutput = WorkflowOutputBase & {\n kind: \"research_memo\";\n claims: string[];\n evidenceRefs?: string[];\n};\n\nexport type StrategyArtifactOutput = WorkflowOutputBase & {\n kind: \"strategy_artifact\";\n recommendations: string[];\n decisionWindow?: string;\n};\n\nexport type InboxSummaryOutput = WorkflowOutputBase & {\n kind: \"inbox_summary\";\n channel: \"developer_portal\" | \"chat\" | \"ops\";\n inboxTitle: string;\n inboxBody: string;\n};\n\nexport type PipelineBriefOutput = WorkflowOutputBase & {\n kind: \"pipeline_brief\";\n hingeWorktreeId?: string;\n groupedBlockers: Array<{\n blocker: string;\n blockedWorktreeIds: string[];\n }>;\n};\n\nexport type StructuredPayloadOutput = WorkflowOutputBase & {\n kind: \"structured_payload\";\n payload: Record<string, unknown>;\n};\n\nexport type WorkflowOutputContract =\n | EngineeringBriefOutput\n | ResearchMemoOutput\n | StrategyArtifactOutput\n | InboxSummaryOutput\n | PipelineBriefOutput\n | StructuredPayloadOutput;\n\nexport type WorkflowActionContract = {\n actionId: string;\n kind: WorkflowActionKind;\n title: string;\n description: string;\n mutationTier: WorkflowMutationTier;\n toolName?: string;\n produces?: WorkflowOutputKind[];\n idempotent?: boolean;\n approval: WorkflowApprovalPolicy;\n};\n\nexport type WorkflowHookContract = {\n hookId: string;\n event: WorkflowHookEvent;\n description: string;\n condition?: string;\n actionIds: string[];\n};\n\nexport type WorkflowTriggerContract =\n | {\n kind: \"manual\";\n description?: string;\n }\n | {\n kind: \"schedule\";\n cadence: \"hourly\" | \"daily\" | \"weekly\";\n timezone?: string;\n }\n | {\n kind: \"hook\";\n event: WorkflowHookEvent;\n };\n\nexport type WorkflowDefinitionV1 = {\n workflowId: string;\n version: typeof WORKFLOW_RUNTIME_SCHEMA_VERSION;\n title: string;\n description: string;\n trigger: WorkflowTriggerContract;\n staffingHint?: WorkflowStaffingHint;\n proofArtifacts?: WorkflowProofArtifact[];\n autoFixPolicy?: WorkflowAutoFixPolicy;\n actions: readonly WorkflowActionContract[];\n hooks?: readonly WorkflowHookContract[];\n outputs: readonly WorkflowOutputKind[];\n integrityChecks?: readonly WorkflowIntegrityCheckId[];\n};\n\nexport type WorkflowRunReceiptV1 = {\n runId: string;\n workflowId: string;\n status: WorkflowRunStatus;\n triggeredBy: WorkflowTriggerKind;\n startedAt: number;\n completedAt?: number;\n outputKinds: WorkflowOutputKind[];\n approvalsRequired?: number;\n};\n\nexport const NIGHTLY_RECONCILIATION_WORKFLOW_ID =\n \"workflow.pipeline_reconciliation.v1\" as const;\n\nexport const MORNING_BRIEF_WORKFLOW_ID =\n \"workflow.morning_brief.v1\" as const;\n\nexport const CANONICAL_WORKFLOW_DEFINITIONS: readonly WorkflowDefinitionV1[] = [\n {\n workflowId: NIGHTLY_RECONCILIATION_WORKFLOW_ID,\n version: WORKFLOW_RUNTIME_SCHEMA_VERSION,\n title: \"Nightly Pipeline Reconciliation\",\n description:\n \"Runs deterministic integrity checks, compiles pipeline state, and emits an operator-facing reconciliation brief.\",\n trigger: {\n kind: \"schedule\",\n cadence: \"daily\",\n timezone: \"America/New_York\",\n },\n staffingHint: \"backend+tests\",\n proofArtifacts: [\n {\n kind: \"report\",\n label: \"Pipeline reconciliation report\",\n required: true,\n },\n {\n kind: \"test_evidence\",\n label: \"Integrity check receipt\",\n required: true,\n },\n ],\n autoFixPolicy: {\n mode: \"safe\",\n maxActionsPerRun: 5,\n permittedMutationTiers: [\"read_only\", \"low_risk_write\"],\n requireAuditTrail: true,\n escalationGate: \"gate:workflow-runtime-contract-live\",\n },\n actions: [\n {\n actionId: \"compile_context_pack\",\n kind: \"context_pack\",\n title: \"Compile pipeline context\",\n description: \"Build the ranked context needed for deterministic checks.\",\n mutationTier: \"read_only\",\n produces: [\"structured_payload\"],\n idempotent: true,\n approval: { mode: \"none\" },\n },\n {\n actionId: \"run_integrity_checks\",\n kind: \"integrity_check\",\n title: \"Run integrity checks\",\n description:\n \"Evaluate dependency references, blockers, campaign/lane placement, shaping coverage, and completed gates.\",\n mutationTier: \"read_only\",\n produces: [\"structured_payload\"],\n idempotent: true,\n approval: { mode: \"none\" },\n },\n {\n actionId: \"record_followup_questions\",\n kind: \"lucern_tool\",\n title: \"Record follow-up questions\",\n description:\n \"Create or reopen operator-facing questions for integrity failures that require human review.\",\n mutationTier: \"low_risk_write\",\n toolName: \"create_question\",\n produces: [\"pipeline_brief\"],\n approval: { mode: \"audit_only\", rationaleRequired: true },\n },\n {\n actionId: \"publish_reconciliation_brief\",\n kind: \"brief_publish\",\n title: \"Publish reconciliation brief\",\n description:\n \"Emit an inbox-routed brief summarizing the nightly pipeline state and grouped blockers.\",\n mutationTier: \"low_risk_write\",\n produces: [\"pipeline_brief\", \"inbox_summary\"],\n approval: { mode: \"audit_only\" },\n },\n ],\n hooks: [\n {\n hookId: \"nightly-schedule\",\n event: \"schedule.tick\",\n description: \"Run once per nightly cadence.\",\n actionIds: [\n \"compile_context_pack\",\n \"run_integrity_checks\",\n \"record_followup_questions\",\n \"publish_reconciliation_brief\",\n ],\n },\n ],\n outputs: [\"pipeline_brief\", \"inbox_summary\", \"structured_payload\"],\n integrityChecks: WORKFLOW_INTEGRITY_CHECKS,\n },\n {\n workflowId: MORNING_BRIEF_WORKFLOW_ID,\n version: WORKFLOW_RUNTIME_SCHEMA_VERSION,\n title: \"Morning Brief\",\n description:\n \"Compiles a developer-facing morning brief from graph state, overnight workflow outputs, and inbox routing preferences.\",\n trigger: {\n kind: \"schedule\",\n cadence: \"daily\",\n timezone: \"America/New_York\",\n },\n staffingHint: \"solo\",\n proofArtifacts: [\n {\n kind: \"brief\",\n label: \"Morning brief\",\n required: true,\n },\n ],\n autoFixPolicy: {\n mode: \"dry_run\",\n maxActionsPerRun: 1,\n permittedMutationTiers: [\"read_only\", \"low_risk_write\"],\n requireAuditTrail: true,\n },\n actions: [\n {\n actionId: \"compile_brief_inputs\",\n kind: \"context_pack\",\n title: \"Compile brief inputs\",\n description:\n \"Read graph state, worktree state, and overnight workflow receipts.\",\n mutationTier: \"read_only\",\n produces: [\"structured_payload\"],\n idempotent: true,\n approval: { mode: \"none\" },\n },\n {\n actionId: \"publish_morning_brief\",\n kind: \"brief_publish\",\n title: \"Publish morning brief\",\n description:\n \"Publish a typed inbox summary with prioritized worktree and question context.\",\n mutationTier: \"low_risk_write\",\n produces: [\"engineering_brief\", \"inbox_summary\"],\n approval: { mode: \"audit_only\" },\n },\n ],\n hooks: [\n {\n hookId: \"morning-schedule\",\n event: \"schedule.tick\",\n description: \"Run once per morning cadence.\",\n actionIds: [\"compile_brief_inputs\", \"publish_morning_brief\"],\n },\n {\n hookId: \"worktree-complete-refresh\",\n event: \"worktree.completed\",\n description:\n \"Refresh the queued morning brief inputs when worktree outcomes land overnight.\",\n actionIds: [\"compile_brief_inputs\"],\n },\n ],\n outputs: [\"engineering_brief\", \"inbox_summary\", \"structured_payload\"],\n integrityChecks: [\"sparse_shaping\"],\n },\n] as const;\n"]}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@lucern/contracts",
3
- "version": "0.3.0-alpha.0",
3
+ "version": "0.3.0-alpha.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "files": [
8
8
  "dist",
9
+ "dist/proof-attestation.json",
9
10
  "README.md",
10
11
  "CHANGELOG.md"
11
12
  ],
@@ -33,6 +34,22 @@
33
34
  "types": "./dist/schemas/index.d.ts",
34
35
  "import": "./dist/schemas/index.js"
35
36
  },
37
+ "./manifests/*": {
38
+ "types": "./dist/manifests/*.d.ts",
39
+ "import": "./dist/manifests/*.js"
40
+ },
41
+ "./projections": {
42
+ "types": "./dist/projections/index.d.ts",
43
+ "import": "./dist/projections/index.js"
44
+ },
45
+ "./projections/*": {
46
+ "types": "./dist/projections/*.d.ts",
47
+ "import": "./dist/projections/*.js"
48
+ },
49
+ "./types/*": {
50
+ "types": "./dist/types/*.d.ts",
51
+ "import": "./dist/types/*.js"
52
+ },
36
53
  "./schema-helpers/*": {
37
54
  "types": "./dist/schema-helpers/*.d.ts",
38
55
  "import": "./dist/schema-helpers/*.js"
@@ -149,6 +166,7 @@
149
166
  "typecheck": "tsc --noEmit"
150
167
  },
151
168
  "dependencies": {
169
+ "typescript": "^5.7.0",
152
170
  "zod": "^3.23.0"
153
171
  },
154
172
  "peerDependencies": {
@@ -1,19 +0,0 @@
1
- import { EDGE_TYPE, NODE_TYPE, TOPIC_STATUS, TOPIC_VISIBILITY } from './schemas/enums.js';
2
- import { ALL_TABLE_CONTRACTS, IDENTITY_TABLE_CONTRACTS, KERNEL_TABLE_CONTRACTS, MC_TABLE_CONTRACTS, TABLE_CONTRACTS_BY_COMPONENT, getTableContract, listTableContractsByName } from './schemas/manifest.js';
3
-
4
- declare const index_ALL_TABLE_CONTRACTS: typeof ALL_TABLE_CONTRACTS;
5
- declare const index_EDGE_TYPE: typeof EDGE_TYPE;
6
- declare const index_IDENTITY_TABLE_CONTRACTS: typeof IDENTITY_TABLE_CONTRACTS;
7
- declare const index_KERNEL_TABLE_CONTRACTS: typeof KERNEL_TABLE_CONTRACTS;
8
- declare const index_MC_TABLE_CONTRACTS: typeof MC_TABLE_CONTRACTS;
9
- declare const index_NODE_TYPE: typeof NODE_TYPE;
10
- declare const index_TABLE_CONTRACTS_BY_COMPONENT: typeof TABLE_CONTRACTS_BY_COMPONENT;
11
- declare const index_TOPIC_STATUS: typeof TOPIC_STATUS;
12
- declare const index_TOPIC_VISIBILITY: typeof TOPIC_VISIBILITY;
13
- declare const index_getTableContract: typeof getTableContract;
14
- declare const index_listTableContractsByName: typeof listTableContractsByName;
15
- declare namespace index {
16
- export { index_ALL_TABLE_CONTRACTS as ALL_TABLE_CONTRACTS, index_EDGE_TYPE as EDGE_TYPE, index_IDENTITY_TABLE_CONTRACTS as IDENTITY_TABLE_CONTRACTS, index_KERNEL_TABLE_CONTRACTS as KERNEL_TABLE_CONTRACTS, index_MC_TABLE_CONTRACTS as MC_TABLE_CONTRACTS, index_NODE_TYPE as NODE_TYPE, index_TABLE_CONTRACTS_BY_COMPONENT as TABLE_CONTRACTS_BY_COMPONENT, index_TOPIC_STATUS as TOPIC_STATUS, index_TOPIC_VISIBILITY as TOPIC_VISIBILITY, index_getTableContract as getTableContract, index_listTableContractsByName as listTableContractsByName };
17
- }
18
-
19
- export { index as i };