@lucern/sdk 0.2.0-alpha.7 → 0.2.0-alpha.8

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 (257) hide show
  1. package/dist/adminClient.d.ts +409 -0
  2. package/dist/adminClient.js +755 -0
  3. package/dist/adminClient.js.map +1 -0
  4. package/dist/answersClient.d.ts +23 -0
  5. package/dist/answersClient.js +333 -0
  6. package/dist/answersClient.js.map +1 -0
  7. package/dist/audiencesClient.d.ts +99 -0
  8. package/dist/audiencesClient.js +472 -0
  9. package/dist/audiencesClient.js.map +1 -0
  10. package/dist/auditClient.d.ts +29 -0
  11. package/dist/auditClient.js +386 -0
  12. package/dist/auditClient.js.map +1 -0
  13. package/dist/beliefsClient.d.ts +162 -0
  14. package/dist/beliefsClient.js +477 -0
  15. package/dist/beliefsClient.js.map +1 -0
  16. package/dist/client.d.ts +2378 -0
  17. package/dist/client.js +6134 -0
  18. package/dist/client.js.map +1 -0
  19. package/dist/contextClient.d.ts +27 -0
  20. package/dist/contextClient.js +396 -0
  21. package/dist/contextClient.js.map +1 -0
  22. package/dist/contextFacade.d.ts +2 -0
  23. package/dist/contextFacade.js +73 -0
  24. package/dist/contextFacade.js.map +1 -0
  25. package/dist/contextPackCompiler.d.ts +102 -0
  26. package/dist/contextPackCompiler.js +1091 -0
  27. package/dist/contextPackCompiler.js.map +1 -0
  28. package/dist/contextPackPolicy.d.ts +84 -0
  29. package/dist/contextPackPolicy.js +347 -0
  30. package/dist/contextPackPolicy.js.map +1 -0
  31. package/dist/contextPackSchema.d.ts +7 -0
  32. package/{src/contextPackSchema.ts → dist/contextPackSchema.js} +22 -70
  33. package/dist/contextPackSchema.js.map +1 -0
  34. package/dist/contextTypes.d.ts +135 -0
  35. package/dist/contextTypes.js +3 -0
  36. package/dist/contextTypes.js.map +1 -0
  37. package/dist/contracts/api-enums.contract.d.ts +81 -0
  38. package/dist/contracts/api-enums.contract.js +92 -0
  39. package/dist/contracts/api-enums.contract.js.map +1 -0
  40. package/dist/contracts/auth-session.contract.d.ts +55 -0
  41. package/dist/contracts/auth-session.contract.js +48 -0
  42. package/dist/contracts/auth-session.contract.js.map +1 -0
  43. package/dist/contracts/context-pack.contract.d.ts +492 -0
  44. package/dist/contracts/context-pack.contract.js +98 -0
  45. package/dist/contracts/context-pack.contract.js.map +1 -0
  46. package/dist/contracts/contextPack.d.ts +1 -0
  47. package/dist/contracts/contextPack.js +98 -0
  48. package/dist/contracts/contextPack.js.map +1 -0
  49. package/dist/contracts/index.d.ts +9 -0
  50. package/dist/contracts/index.js +4892 -0
  51. package/dist/contracts/index.js.map +1 -0
  52. package/dist/contracts/lens-filter.contract.d.ts +72 -0
  53. package/dist/contracts/lens-filter.contract.js +71 -0
  54. package/dist/contracts/lens-filter.contract.js.map +1 -0
  55. package/dist/contracts/lens-workflow.contract.d.ts +87 -0
  56. package/dist/contracts/lens-workflow.contract.js +123 -0
  57. package/dist/contracts/lens-workflow.contract.js.map +1 -0
  58. package/dist/contracts/lensFilter.d.ts +1 -0
  59. package/dist/contracts/lensFilter.js +71 -0
  60. package/dist/contracts/lensFilter.js.map +1 -0
  61. package/dist/contracts/lensWorkflow.d.ts +2 -0
  62. package/dist/contracts/lensWorkflow.js +123 -0
  63. package/dist/contracts/lensWorkflow.js.map +1 -0
  64. package/dist/contracts/mcp-tools.contract.d.ts +1 -0
  65. package/dist/contracts/mcp-tools.contract.js +2986 -0
  66. package/dist/contracts/mcp-tools.contract.js.map +1 -0
  67. package/dist/contracts/mcpTools.d.ts +1 -0
  68. package/dist/contracts/mcpTools.js +2986 -0
  69. package/dist/contracts/mcpTools.js.map +1 -0
  70. package/dist/contracts/prompt.contract.d.ts +26 -0
  71. package/dist/contracts/prompt.contract.js +12 -0
  72. package/dist/contracts/prompt.contract.js.map +1 -0
  73. package/dist/contracts/prompt.d.ts +1 -0
  74. package/dist/contracts/prompt.js +12 -0
  75. package/dist/contracts/prompt.js.map +1 -0
  76. package/dist/contracts/sdk-tools.contract.d.ts +2 -0
  77. package/dist/contracts/sdk-tools.contract.js +4134 -0
  78. package/dist/contracts/sdk-tools.contract.js.map +1 -0
  79. package/dist/contracts/sdkTools.d.ts +2 -0
  80. package/dist/contracts/sdkTools.js +4134 -0
  81. package/dist/contracts/sdkTools.js.map +1 -0
  82. package/dist/contracts/workflow-runtime.contract.d.ts +163 -0
  83. package/dist/contracts/workflow-runtime.contract.js +245 -0
  84. package/dist/contracts/workflow-runtime.contract.js.map +1 -0
  85. package/dist/contracts/workflowRuntime.d.ts +1 -0
  86. package/dist/contracts/workflowRuntime.js +245 -0
  87. package/dist/contracts/workflowRuntime.js.map +1 -0
  88. package/dist/controlObjectOwnership.d.ts +310 -0
  89. package/{src/controlObjectOwnership.ts → dist/controlObjectOwnership.js} +53 -124
  90. package/dist/controlObjectOwnership.js.map +1 -0
  91. package/dist/coreClient.d.ts +144 -0
  92. package/dist/coreClient.js +339 -0
  93. package/dist/coreClient.js.map +1 -0
  94. package/dist/customTools.d.ts +88 -0
  95. package/dist/customTools.js +248 -0
  96. package/dist/customTools.js.map +1 -0
  97. package/dist/decisionsClient.d.ts +111 -0
  98. package/dist/decisionsClient.js +522 -0
  99. package/dist/decisionsClient.js.map +1 -0
  100. package/dist/domainContext.d.ts +1 -0
  101. package/dist/domainContext.js +3 -0
  102. package/dist/domainContext.js.map +1 -0
  103. package/dist/events.d.ts +178 -0
  104. package/dist/events.js +249 -0
  105. package/dist/events.js.map +1 -0
  106. package/dist/eventsCore.d.ts +49 -0
  107. package/dist/eventsCore.js +429 -0
  108. package/dist/eventsCore.js.map +1 -0
  109. package/dist/facade/context.d.ts +18 -0
  110. package/dist/facade/context.js +73 -0
  111. package/dist/facade/context.js.map +1 -0
  112. package/dist/gatewayFacades.d.ts +591 -0
  113. package/dist/gatewayFacades.js +1953 -0
  114. package/dist/gatewayFacades.js.map +1 -0
  115. package/dist/graphClient.d.ts +271 -0
  116. package/dist/graphClient.js +698 -0
  117. package/dist/graphClient.js.map +1 -0
  118. package/dist/harnessClient.d.ts +314 -0
  119. package/dist/harnessClient.js +607 -0
  120. package/dist/harnessClient.js.map +1 -0
  121. package/dist/identityClient.d.ts +140 -0
  122. package/dist/identityClient.js +497 -0
  123. package/dist/identityClient.js.map +1 -0
  124. package/dist/index.d.ts +42 -0
  125. package/dist/index.js +11381 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/learningClient.d.ts +46 -0
  128. package/dist/learningClient.js +409 -0
  129. package/dist/learningClient.js.map +1 -0
  130. package/dist/mcpParityClient.d.ts +74 -0
  131. package/dist/mcpParityClient.js +516 -0
  132. package/dist/mcpParityClient.js.map +1 -0
  133. package/dist/mcpParitySurface.d.ts +12 -0
  134. package/{src/mcpParitySurface.ts → dist/mcpParitySurface.js} +9 -14
  135. package/dist/mcpParitySurface.js.map +1 -0
  136. package/dist/mcpTools-DPZxowDX.d.ts +254 -0
  137. package/dist/ontologyClient.d.ts +137 -0
  138. package/dist/ontologyClient.js +513 -0
  139. package/dist/ontologyClient.js.map +1 -0
  140. package/dist/packRuntime.d.ts +2 -0
  141. package/dist/packRuntime.js +3 -0
  142. package/dist/packRuntime.js.map +1 -0
  143. package/dist/packsClient.d.ts +131 -0
  144. package/dist/packsClient.js +525 -0
  145. package/dist/packsClient.js.map +1 -0
  146. package/dist/policyClient.d.ts +299 -0
  147. package/dist/policyClient.js +625 -0
  148. package/dist/policyClient.js.map +1 -0
  149. package/dist/realtime/index.d.ts +29 -0
  150. package/dist/realtime/index.js +23 -0
  151. package/dist/realtime/index.js.map +1 -0
  152. package/{src/realtime/refs.ts → dist/realtime/refs.d.ts} +5 -5
  153. package/dist/realtime/refs.js +9 -0
  154. package/dist/realtime/refs.js.map +1 -0
  155. package/dist/reportsClient.d.ts +41 -0
  156. package/dist/reportsClient.js +418 -0
  157. package/dist/reportsClient.js.map +1 -0
  158. package/dist/schemaClient.d.ts +64 -0
  159. package/dist/schemaClient.js +434 -0
  160. package/dist/schemaClient.js.map +1 -0
  161. package/dist/sdkSurface.d.ts +61 -0
  162. package/dist/sdkSurface.js +112 -0
  163. package/dist/sdkSurface.js.map +1 -0
  164. package/dist/sdkTools-CwXJDACb.d.ts +150 -0
  165. package/dist/topicsClient.d.ts +84 -0
  166. package/dist/topicsClient.js +492 -0
  167. package/dist/topicsClient.js.map +1 -0
  168. package/dist/types.d.ts +696 -0
  169. package/dist/types.js +3 -0
  170. package/dist/types.js.map +1 -0
  171. package/dist/version.d.ts +4 -0
  172. package/dist/version.js +6 -0
  173. package/dist/version.js.map +1 -0
  174. package/dist/workflowClient.d.ts +316 -0
  175. package/dist/workflowClient.js +830 -0
  176. package/dist/workflowClient.js.map +1 -0
  177. package/package.json +31 -7
  178. package/.turbo/turbo-build.log +0 -7
  179. package/.turbo/turbo-typecheck.log +0 -4
  180. package/examples/README.md +0 -69
  181. package/examples/contradiction.ts +0 -94
  182. package/examples/investigation-context.ts +0 -118
  183. package/examples/questions-and-tasks.ts +0 -55
  184. package/examples/quickstart.ts +0 -97
  185. package/examples/shared.ts +0 -318
  186. package/examples/strict-public-types.ts +0 -143
  187. package/examples/worktree-lifecycle.ts +0 -79
  188. package/src/README.md +0 -6
  189. package/src/adminClient.ts +0 -789
  190. package/src/answersClient.ts +0 -29
  191. package/src/audiencesClient.ts +0 -209
  192. package/src/auditClient.ts +0 -50
  193. package/src/beliefsClient.ts +0 -319
  194. package/src/client.ts +0 -2647
  195. package/src/contextClient.ts +0 -130
  196. package/src/contextFacade.ts +0 -15
  197. package/src/contextPackCompiler.ts +0 -828
  198. package/src/contextTypes.ts +0 -153
  199. package/src/contracts/api-enums.contract.ts +0 -202
  200. package/src/contracts/auth-session.contract.ts +0 -109
  201. package/src/contracts/context-pack.contract.ts +0 -700
  202. package/src/contracts/contextPack.ts +0 -1
  203. package/src/contracts/index.ts +0 -10
  204. package/src/contracts/lens-filter.contract.ts +0 -183
  205. package/src/contracts/lens-workflow.contract.ts +0 -162
  206. package/src/contracts/lensFilter.ts +0 -1
  207. package/src/contracts/lensWorkflow.ts +0 -1
  208. package/src/contracts/mcp-tools.contract.ts +0 -3636
  209. package/src/contracts/mcpTools.ts +0 -1
  210. package/src/contracts/prompt.contract.ts +0 -50
  211. package/src/contracts/prompt.ts +0 -1
  212. package/src/contracts/sdk-tools.contract.ts +0 -1457
  213. package/src/contracts/sdkTools.ts +0 -1
  214. package/src/contracts/workflow-runtime.contract.ts +0 -440
  215. package/src/contracts/workflowRuntime.ts +0 -1
  216. package/src/coreClient.ts +0 -570
  217. package/src/customTools.ts +0 -398
  218. package/src/decisionsClient.ts +0 -286
  219. package/src/domainContext.ts +0 -15
  220. package/src/events.ts +0 -531
  221. package/src/eventsCore.ts +0 -168
  222. package/src/facade/beliefs.ts +0 -83
  223. package/src/facade/context.ts +0 -110
  224. package/src/facade/contradictions.ts +0 -29
  225. package/src/facade/edges.ts +0 -30
  226. package/src/facade/events.ts +0 -23
  227. package/src/facade/evidence.ts +0 -41
  228. package/src/facade/graph.ts +0 -38
  229. package/src/facade/identity.ts +0 -16
  230. package/src/facade/ontologies.ts +0 -34
  231. package/src/facade/questions.ts +0 -59
  232. package/src/facade/search.ts +0 -16
  233. package/src/facade/tasks.ts +0 -37
  234. package/src/facade/topics.ts +0 -42
  235. package/src/facade/webhooks.ts +0 -58
  236. package/src/facade/worktrees.ts +0 -51
  237. package/src/gatewayFacades.ts +0 -1666
  238. package/src/graphClient.ts +0 -529
  239. package/src/harnessClient.ts +0 -585
  240. package/src/identityClient.ts +0 -278
  241. package/src/index.ts +0 -49
  242. package/src/learningClient.ts +0 -95
  243. package/src/mcpParityClient.ts +0 -240
  244. package/src/ontologyClient.ts +0 -275
  245. package/src/packRuntime.ts +0 -3
  246. package/src/packsClient.ts +0 -260
  247. package/src/policyClient.ts +0 -572
  248. package/src/promptCatalog.ts +0 -1
  249. package/src/realtime/index.ts +0 -51
  250. package/src/reportsClient.ts +0 -99
  251. package/src/schemaClient.ts +0 -129
  252. package/src/sdkSurface.ts +0 -190
  253. package/src/topicsClient.ts +0 -243
  254. package/src/types.ts +0 -807
  255. package/src/version.ts +0 -2
  256. package/src/workflowClient.ts +0 -826
  257. package/tsconfig.json +0 -9
@@ -0,0 +1,245 @@
1
+ // src/contracts/workflow-runtime.contract.ts
2
+ var WORKFLOW_RUNTIME_SCHEMA_VERSION = "1.0.0";
3
+ var WORKFLOW_MUTATION_TIERS = [
4
+ "read_only",
5
+ "low_risk_write",
6
+ "high_risk_write"
7
+ ];
8
+ var WORKFLOW_APPROVAL_MODES = [
9
+ "none",
10
+ "audit_only",
11
+ "human_required",
12
+ "auto_approve"
13
+ ];
14
+ var DEFAULT_TIER_APPROVAL_MODE = {
15
+ read_only: "none",
16
+ low_risk_write: "audit_only",
17
+ high_risk_write: "human_required"
18
+ };
19
+ var WORKFLOW_ACTION_KINDS = [
20
+ "context_pack",
21
+ "integrity_check",
22
+ "lucern_tool",
23
+ "report_compile",
24
+ "brief_publish",
25
+ "notification",
26
+ "custom"
27
+ ];
28
+ var WORKFLOW_HOOK_EVENTS = [
29
+ "schedule.tick",
30
+ "worktree.activated",
31
+ "worktree.completed",
32
+ "question.created",
33
+ "question.answered",
34
+ "evidence.appended",
35
+ "inbox.item_created"
36
+ ];
37
+ var WORKFLOW_OUTPUT_KINDS = [
38
+ "engineering_brief",
39
+ "research_memo",
40
+ "strategy_artifact",
41
+ "inbox_summary",
42
+ "pipeline_brief",
43
+ "structured_payload"
44
+ ];
45
+ var WORKFLOW_RUN_STATUSES = [
46
+ "queued",
47
+ "running",
48
+ "awaiting_approval",
49
+ "completed",
50
+ "failed",
51
+ "cancelled"
52
+ ];
53
+ var WORKFLOW_TRIGGER_KINDS = [
54
+ "manual",
55
+ "schedule",
56
+ "hook"
57
+ ];
58
+ var WORKFLOW_PROOF_ARTIFACT_KINDS = [
59
+ "report",
60
+ "brief",
61
+ "artifact",
62
+ "dashboard",
63
+ "test_evidence"
64
+ ];
65
+ var WORKFLOW_STAFFING_HINTS = [
66
+ "solo",
67
+ "backend+tests",
68
+ "fullstack",
69
+ "mcp+tests"
70
+ ];
71
+ var WORKFLOW_AUTO_FIX_MODES = [
72
+ "disabled",
73
+ "dry_run",
74
+ "safe",
75
+ "aggressive"
76
+ ];
77
+ var WORKFLOW_INTEGRITY_CHECKS = [
78
+ "null_dependency_refs",
79
+ "superseded_blockers",
80
+ "band_order_inconsistency",
81
+ "sparse_shaping",
82
+ "failed_completed_gate"
83
+ ];
84
+ var DEFAULT_WORKFLOW_AUTO_FIX_POLICY = {
85
+ mode: "disabled",
86
+ permittedMutationTiers: ["read_only"],
87
+ requireAuditTrail: true
88
+ };
89
+ var NIGHTLY_RECONCILIATION_WORKFLOW_ID = "workflow.pipeline_reconciliation.v1";
90
+ var MORNING_BRIEF_WORKFLOW_ID = "workflow.morning_brief.v1";
91
+ var CANONICAL_WORKFLOW_DEFINITIONS = [
92
+ {
93
+ workflowId: NIGHTLY_RECONCILIATION_WORKFLOW_ID,
94
+ version: WORKFLOW_RUNTIME_SCHEMA_VERSION,
95
+ title: "Nightly Pipeline Reconciliation",
96
+ description: "Runs deterministic integrity checks, compiles pipeline state, and emits an operator-facing reconciliation brief.",
97
+ trigger: {
98
+ kind: "schedule",
99
+ cadence: "daily",
100
+ timezone: "America/New_York"
101
+ },
102
+ staffingHint: "backend+tests",
103
+ proofArtifacts: [
104
+ {
105
+ kind: "report",
106
+ label: "Pipeline reconciliation report",
107
+ required: true
108
+ },
109
+ {
110
+ kind: "test_evidence",
111
+ label: "Integrity check receipt",
112
+ required: true
113
+ }
114
+ ],
115
+ autoFixPolicy: {
116
+ mode: "safe",
117
+ maxActionsPerRun: 5,
118
+ permittedMutationTiers: ["read_only", "low_risk_write"],
119
+ requireAuditTrail: true,
120
+ escalationGate: "gate:workflow-runtime-contract-live"
121
+ },
122
+ actions: [
123
+ {
124
+ actionId: "compile_context_pack",
125
+ kind: "context_pack",
126
+ title: "Compile pipeline context",
127
+ description: "Build the ranked context needed for deterministic checks.",
128
+ mutationTier: "read_only",
129
+ produces: ["structured_payload"],
130
+ idempotent: true,
131
+ approval: { mode: "none" }
132
+ },
133
+ {
134
+ actionId: "run_integrity_checks",
135
+ kind: "integrity_check",
136
+ title: "Run integrity checks",
137
+ description: "Evaluate dependency references, blockers, execution bands, shaping coverage, and completed gates.",
138
+ mutationTier: "read_only",
139
+ produces: ["structured_payload"],
140
+ idempotent: true,
141
+ approval: { mode: "none" }
142
+ },
143
+ {
144
+ actionId: "record_followup_questions",
145
+ kind: "lucern_tool",
146
+ title: "Record follow-up questions",
147
+ description: "Create or reopen operator-facing questions for integrity failures that require human review.",
148
+ mutationTier: "low_risk_write",
149
+ toolName: "create_question",
150
+ produces: ["pipeline_brief"],
151
+ approval: { mode: "audit_only", rationaleRequired: true }
152
+ },
153
+ {
154
+ actionId: "publish_reconciliation_brief",
155
+ kind: "brief_publish",
156
+ title: "Publish reconciliation brief",
157
+ description: "Emit an inbox-routed brief summarizing the nightly pipeline state and grouped blockers.",
158
+ mutationTier: "low_risk_write",
159
+ produces: ["pipeline_brief", "inbox_summary"],
160
+ approval: { mode: "audit_only" }
161
+ }
162
+ ],
163
+ hooks: [
164
+ {
165
+ hookId: "nightly-schedule",
166
+ event: "schedule.tick",
167
+ description: "Run once per nightly cadence.",
168
+ actionIds: [
169
+ "compile_context_pack",
170
+ "run_integrity_checks",
171
+ "record_followup_questions",
172
+ "publish_reconciliation_brief"
173
+ ]
174
+ }
175
+ ],
176
+ outputs: ["pipeline_brief", "inbox_summary", "structured_payload"],
177
+ integrityChecks: WORKFLOW_INTEGRITY_CHECKS
178
+ },
179
+ {
180
+ workflowId: MORNING_BRIEF_WORKFLOW_ID,
181
+ version: WORKFLOW_RUNTIME_SCHEMA_VERSION,
182
+ title: "Morning Brief",
183
+ description: "Compiles a developer-facing morning brief from graph state, overnight workflow outputs, and inbox routing preferences.",
184
+ trigger: {
185
+ kind: "schedule",
186
+ cadence: "daily",
187
+ timezone: "America/New_York"
188
+ },
189
+ staffingHint: "solo",
190
+ proofArtifacts: [
191
+ {
192
+ kind: "brief",
193
+ label: "Morning brief",
194
+ required: true
195
+ }
196
+ ],
197
+ autoFixPolicy: {
198
+ mode: "dry_run",
199
+ maxActionsPerRun: 1,
200
+ permittedMutationTiers: ["read_only", "low_risk_write"],
201
+ requireAuditTrail: true
202
+ },
203
+ actions: [
204
+ {
205
+ actionId: "compile_brief_inputs",
206
+ kind: "context_pack",
207
+ title: "Compile brief inputs",
208
+ description: "Read graph state, worktree state, and overnight workflow receipts.",
209
+ mutationTier: "read_only",
210
+ produces: ["structured_payload"],
211
+ idempotent: true,
212
+ approval: { mode: "none" }
213
+ },
214
+ {
215
+ actionId: "publish_morning_brief",
216
+ kind: "brief_publish",
217
+ title: "Publish morning brief",
218
+ description: "Publish a typed inbox summary with prioritized worktree and question context.",
219
+ mutationTier: "low_risk_write",
220
+ produces: ["engineering_brief", "inbox_summary"],
221
+ approval: { mode: "audit_only" }
222
+ }
223
+ ],
224
+ hooks: [
225
+ {
226
+ hookId: "morning-schedule",
227
+ event: "schedule.tick",
228
+ description: "Run once per morning cadence.",
229
+ actionIds: ["compile_brief_inputs", "publish_morning_brief"]
230
+ },
231
+ {
232
+ hookId: "worktree-complete-refresh",
233
+ event: "worktree.completed",
234
+ description: "Refresh the queued morning brief inputs when worktree outcomes land overnight.",
235
+ actionIds: ["compile_brief_inputs"]
236
+ }
237
+ ],
238
+ outputs: ["engineering_brief", "inbox_summary", "structured_payload"],
239
+ integrityChecks: ["sparse_shaping"]
240
+ }
241
+ ];
242
+
243
+ export { CANONICAL_WORKFLOW_DEFINITIONS, DEFAULT_TIER_APPROVAL_MODE, DEFAULT_WORKFLOW_AUTO_FIX_POLICY, MORNING_BRIEF_WORKFLOW_ID, NIGHTLY_RECONCILIATION_WORKFLOW_ID, WORKFLOW_ACTION_KINDS, WORKFLOW_APPROVAL_MODES, WORKFLOW_AUTO_FIX_MODES, WORKFLOW_HOOK_EVENTS, WORKFLOW_INTEGRITY_CHECKS, WORKFLOW_MUTATION_TIERS, WORKFLOW_OUTPUT_KINDS, WORKFLOW_PROOF_ARTIFACT_KINDS, WORKFLOW_RUNTIME_SCHEMA_VERSION, WORKFLOW_RUN_STATUSES, WORKFLOW_STAFFING_HINTS, WORKFLOW_TRIGGER_KINDS };
244
+ //# sourceMappingURL=workflowRuntime.js.map
245
+ //# sourceMappingURL=workflowRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/contracts/workflow-runtime.contract.ts"],"names":[],"mappings":"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","file":"workflowRuntime.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"]}
@@ -0,0 +1,310 @@
1
+ /** All recognized control object kinds in the ownership model. */
2
+ declare const CONTROL_OBJECT_KINDS: readonly ["tenant", "workspace", "principal", "tool", "pack", "ontology", "belief", "policy_rule"];
3
+ /** A kind of control object (tenant, workspace, principal, tool, etc.). */
4
+ type ControlObjectKind = (typeof CONTROL_OBJECT_KINDS)[number];
5
+ /** Canonical ownership scopes: platform, tenant, workspace, or resource. */
6
+ declare const CONTROL_OBJECT_OWNER_SCOPES: readonly ["platform", "tenant", "workspace", "resource"];
7
+ /** The scope level that canonically owns a control object. */
8
+ type ControlObjectOwnerScope = (typeof CONTROL_OBJECT_OWNER_SCOPES)[number];
9
+ /** UI surfaces authorized to edit control objects. */
10
+ declare const CONTROL_OBJECT_EDIT_SURFACES: readonly ["platform_admin", "tenant_admin", "workspace_admin", "graph_worktree"];
11
+ /** A UI surface authorized to mutate a control object (platform admin, tenant admin, etc.). */
12
+ type ControlObjectEditSurface = (typeof CONTROL_OBJECT_EDIT_SURFACES)[number];
13
+ /** Rules governing how control object configuration flows through the scope hierarchy. */
14
+ declare const CONTROL_OBJECT_INHERITANCE_RULES: readonly ["none", "platform_seed_to_tenant", "tenant_default_to_workspace", "workspace_narrowing_only", "pack_overlay_to_tenant", "topic_lineage_to_resource"];
15
+ /** How a control object's configuration propagates through scope hierarchy. */
16
+ type ControlObjectInheritanceRule = (typeof CONTROL_OBJECT_INHERITANCE_RULES)[number];
17
+ /** Scope of impact when a control object is modified. */
18
+ declare const CONTROL_OBJECT_BLAST_RADII: readonly ["platform", "tenant", "workspace", "resource"];
19
+ /** The furthest scope impacted by a mutation to a control object. */
20
+ type ControlObjectBlastRadius = (typeof CONTROL_OBJECT_BLAST_RADII)[number];
21
+ /** A single row in the ownership matrix describing who owns, edits, and inherits a control object. */
22
+ type ControlObjectOwnershipCase = {
23
+ caseKey: string;
24
+ caseLabel: string;
25
+ kind: ControlObjectKind;
26
+ canonicalOwnerScope: ControlObjectOwnerScope;
27
+ editSurface: ControlObjectEditSurface;
28
+ inheritanceRule: ControlObjectInheritanceRule;
29
+ blastRadius: ControlObjectBlastRadius;
30
+ };
31
+ /** Full ownership matrix keyed by control object kind. */
32
+ type ControlObjectOwnershipMatrix = Record<ControlObjectKind, readonly ControlObjectOwnershipCase[]>;
33
+ /** Versioned ownership contract bundling all enums, the matrix, and flattened rows. */
34
+ type ControlObjectOwnershipContract = {
35
+ version: "1.0.0";
36
+ kinds: readonly ControlObjectKind[];
37
+ ownerScopes: readonly ControlObjectOwnerScope[];
38
+ editSurfaces: readonly ControlObjectEditSurface[];
39
+ inheritanceRules: readonly ControlObjectInheritanceRule[];
40
+ blastRadii: readonly ControlObjectBlastRadius[];
41
+ matrix: ControlObjectOwnershipMatrix;
42
+ rows: readonly ControlObjectOwnershipCase[];
43
+ };
44
+ /** Static ownership matrix mapping each control object kind to its ownership cases. */
45
+ declare const CONTROL_OBJECT_OWNERSHIP_MATRIX: {
46
+ readonly tenant: readonly [{
47
+ readonly caseKey: "platform-record";
48
+ readonly caseLabel: "Platform Record";
49
+ readonly kind: "tenant";
50
+ readonly canonicalOwnerScope: "platform";
51
+ readonly editSurface: "platform_admin";
52
+ readonly inheritanceRule: "none";
53
+ readonly blastRadius: "tenant";
54
+ }];
55
+ readonly workspace: readonly [{
56
+ readonly caseKey: "tenant-workspace";
57
+ readonly caseLabel: "Tenant Workspace";
58
+ readonly kind: "workspace";
59
+ readonly canonicalOwnerScope: "tenant";
60
+ readonly editSurface: "tenant_admin";
61
+ readonly inheritanceRule: "tenant_default_to_workspace";
62
+ readonly blastRadius: "workspace";
63
+ }];
64
+ readonly principal: readonly [{
65
+ readonly caseKey: "tenant-principal";
66
+ readonly caseLabel: "Tenant Principal";
67
+ readonly kind: "principal";
68
+ readonly canonicalOwnerScope: "tenant";
69
+ readonly editSurface: "tenant_admin";
70
+ readonly inheritanceRule: "workspace_narrowing_only";
71
+ readonly blastRadius: "resource";
72
+ }];
73
+ readonly tool: readonly [{
74
+ readonly caseKey: "platform-core";
75
+ readonly caseLabel: "Platform Core";
76
+ readonly kind: "tool";
77
+ readonly canonicalOwnerScope: "platform";
78
+ readonly editSurface: "platform_admin";
79
+ readonly inheritanceRule: "platform_seed_to_tenant";
80
+ readonly blastRadius: "platform";
81
+ }, {
82
+ readonly caseKey: "tenant-custom";
83
+ readonly caseLabel: "Tenant Custom";
84
+ readonly kind: "tool";
85
+ readonly canonicalOwnerScope: "tenant";
86
+ readonly editSurface: "tenant_admin";
87
+ readonly inheritanceRule: "tenant_default_to_workspace";
88
+ readonly blastRadius: "tenant";
89
+ }];
90
+ readonly pack: readonly [{
91
+ readonly caseKey: "platform-definition";
92
+ readonly caseLabel: "Platform Definition";
93
+ readonly kind: "pack";
94
+ readonly canonicalOwnerScope: "platform";
95
+ readonly editSurface: "platform_admin";
96
+ readonly inheritanceRule: "platform_seed_to_tenant";
97
+ readonly blastRadius: "platform";
98
+ }, {
99
+ readonly caseKey: "tenant-installation";
100
+ readonly caseLabel: "Tenant Installation";
101
+ readonly kind: "pack";
102
+ readonly canonicalOwnerScope: "tenant";
103
+ readonly editSurface: "tenant_admin";
104
+ readonly inheritanceRule: "platform_seed_to_tenant";
105
+ readonly blastRadius: "tenant";
106
+ }];
107
+ readonly ontology: readonly [{
108
+ readonly caseKey: "platform-base";
109
+ readonly caseLabel: "Platform Base";
110
+ readonly kind: "ontology";
111
+ readonly canonicalOwnerScope: "platform";
112
+ readonly editSurface: "platform_admin";
113
+ readonly inheritanceRule: "platform_seed_to_tenant";
114
+ readonly blastRadius: "platform";
115
+ }, {
116
+ readonly caseKey: "pack-overlay";
117
+ readonly caseLabel: "Pack Overlay";
118
+ readonly kind: "ontology";
119
+ readonly canonicalOwnerScope: "platform";
120
+ readonly editSurface: "platform_admin";
121
+ readonly inheritanceRule: "pack_overlay_to_tenant";
122
+ readonly blastRadius: "platform";
123
+ }, {
124
+ readonly caseKey: "tenant-extension";
125
+ readonly caseLabel: "Tenant Extension";
126
+ readonly kind: "ontology";
127
+ readonly canonicalOwnerScope: "tenant";
128
+ readonly editSurface: "tenant_admin";
129
+ readonly inheritanceRule: "topic_lineage_to_resource";
130
+ readonly blastRadius: "tenant";
131
+ }];
132
+ readonly belief: readonly [{
133
+ readonly caseKey: "topic-resource";
134
+ readonly caseLabel: "Topic Resource";
135
+ readonly kind: "belief";
136
+ readonly canonicalOwnerScope: "resource";
137
+ readonly editSurface: "graph_worktree";
138
+ readonly inheritanceRule: "topic_lineage_to_resource";
139
+ readonly blastRadius: "resource";
140
+ }];
141
+ readonly policy_rule: readonly [{
142
+ readonly caseKey: "platform-baseline";
143
+ readonly caseLabel: "Platform Baseline";
144
+ readonly kind: "policy_rule";
145
+ readonly canonicalOwnerScope: "platform";
146
+ readonly editSurface: "platform_admin";
147
+ readonly inheritanceRule: "platform_seed_to_tenant";
148
+ readonly blastRadius: "platform";
149
+ }, {
150
+ readonly caseKey: "tenant-bundle";
151
+ readonly caseLabel: "Tenant Bundle";
152
+ readonly kind: "policy_rule";
153
+ readonly canonicalOwnerScope: "tenant";
154
+ readonly editSurface: "tenant_admin";
155
+ readonly inheritanceRule: "tenant_default_to_workspace";
156
+ readonly blastRadius: "tenant";
157
+ }, {
158
+ readonly caseKey: "workspace-override";
159
+ readonly caseLabel: "Workspace Override";
160
+ readonly kind: "policy_rule";
161
+ readonly canonicalOwnerScope: "workspace";
162
+ readonly editSurface: "workspace_admin";
163
+ readonly inheritanceRule: "none";
164
+ readonly blastRadius: "workspace";
165
+ }];
166
+ };
167
+ /** Flattened array of all ownership cases across all control object kinds. */
168
+ declare const CONTROL_OBJECT_OWNERSHIP_ROWS: readonly ControlObjectOwnershipCase[];
169
+ /** The canonical ownership contract exposed by the SDK. */
170
+ declare const CONTROL_OBJECT_OWNERSHIP_CONTRACT: {
171
+ readonly version: "1.0.0";
172
+ readonly kinds: readonly ["tenant", "workspace", "principal", "tool", "pack", "ontology", "belief", "policy_rule"];
173
+ readonly ownerScopes: readonly ["platform", "tenant", "workspace", "resource"];
174
+ readonly editSurfaces: readonly ["platform_admin", "tenant_admin", "workspace_admin", "graph_worktree"];
175
+ readonly inheritanceRules: readonly ["none", "platform_seed_to_tenant", "tenant_default_to_workspace", "workspace_narrowing_only", "pack_overlay_to_tenant", "topic_lineage_to_resource"];
176
+ readonly blastRadii: readonly ["platform", "tenant", "workspace", "resource"];
177
+ readonly matrix: {
178
+ readonly tenant: readonly [{
179
+ readonly caseKey: "platform-record";
180
+ readonly caseLabel: "Platform Record";
181
+ readonly kind: "tenant";
182
+ readonly canonicalOwnerScope: "platform";
183
+ readonly editSurface: "platform_admin";
184
+ readonly inheritanceRule: "none";
185
+ readonly blastRadius: "tenant";
186
+ }];
187
+ readonly workspace: readonly [{
188
+ readonly caseKey: "tenant-workspace";
189
+ readonly caseLabel: "Tenant Workspace";
190
+ readonly kind: "workspace";
191
+ readonly canonicalOwnerScope: "tenant";
192
+ readonly editSurface: "tenant_admin";
193
+ readonly inheritanceRule: "tenant_default_to_workspace";
194
+ readonly blastRadius: "workspace";
195
+ }];
196
+ readonly principal: readonly [{
197
+ readonly caseKey: "tenant-principal";
198
+ readonly caseLabel: "Tenant Principal";
199
+ readonly kind: "principal";
200
+ readonly canonicalOwnerScope: "tenant";
201
+ readonly editSurface: "tenant_admin";
202
+ readonly inheritanceRule: "workspace_narrowing_only";
203
+ readonly blastRadius: "resource";
204
+ }];
205
+ readonly tool: readonly [{
206
+ readonly caseKey: "platform-core";
207
+ readonly caseLabel: "Platform Core";
208
+ readonly kind: "tool";
209
+ readonly canonicalOwnerScope: "platform";
210
+ readonly editSurface: "platform_admin";
211
+ readonly inheritanceRule: "platform_seed_to_tenant";
212
+ readonly blastRadius: "platform";
213
+ }, {
214
+ readonly caseKey: "tenant-custom";
215
+ readonly caseLabel: "Tenant Custom";
216
+ readonly kind: "tool";
217
+ readonly canonicalOwnerScope: "tenant";
218
+ readonly editSurface: "tenant_admin";
219
+ readonly inheritanceRule: "tenant_default_to_workspace";
220
+ readonly blastRadius: "tenant";
221
+ }];
222
+ readonly pack: readonly [{
223
+ readonly caseKey: "platform-definition";
224
+ readonly caseLabel: "Platform Definition";
225
+ readonly kind: "pack";
226
+ readonly canonicalOwnerScope: "platform";
227
+ readonly editSurface: "platform_admin";
228
+ readonly inheritanceRule: "platform_seed_to_tenant";
229
+ readonly blastRadius: "platform";
230
+ }, {
231
+ readonly caseKey: "tenant-installation";
232
+ readonly caseLabel: "Tenant Installation";
233
+ readonly kind: "pack";
234
+ readonly canonicalOwnerScope: "tenant";
235
+ readonly editSurface: "tenant_admin";
236
+ readonly inheritanceRule: "platform_seed_to_tenant";
237
+ readonly blastRadius: "tenant";
238
+ }];
239
+ readonly ontology: readonly [{
240
+ readonly caseKey: "platform-base";
241
+ readonly caseLabel: "Platform Base";
242
+ readonly kind: "ontology";
243
+ readonly canonicalOwnerScope: "platform";
244
+ readonly editSurface: "platform_admin";
245
+ readonly inheritanceRule: "platform_seed_to_tenant";
246
+ readonly blastRadius: "platform";
247
+ }, {
248
+ readonly caseKey: "pack-overlay";
249
+ readonly caseLabel: "Pack Overlay";
250
+ readonly kind: "ontology";
251
+ readonly canonicalOwnerScope: "platform";
252
+ readonly editSurface: "platform_admin";
253
+ readonly inheritanceRule: "pack_overlay_to_tenant";
254
+ readonly blastRadius: "platform";
255
+ }, {
256
+ readonly caseKey: "tenant-extension";
257
+ readonly caseLabel: "Tenant Extension";
258
+ readonly kind: "ontology";
259
+ readonly canonicalOwnerScope: "tenant";
260
+ readonly editSurface: "tenant_admin";
261
+ readonly inheritanceRule: "topic_lineage_to_resource";
262
+ readonly blastRadius: "tenant";
263
+ }];
264
+ readonly belief: readonly [{
265
+ readonly caseKey: "topic-resource";
266
+ readonly caseLabel: "Topic Resource";
267
+ readonly kind: "belief";
268
+ readonly canonicalOwnerScope: "resource";
269
+ readonly editSurface: "graph_worktree";
270
+ readonly inheritanceRule: "topic_lineage_to_resource";
271
+ readonly blastRadius: "resource";
272
+ }];
273
+ readonly policy_rule: readonly [{
274
+ readonly caseKey: "platform-baseline";
275
+ readonly caseLabel: "Platform Baseline";
276
+ readonly kind: "policy_rule";
277
+ readonly canonicalOwnerScope: "platform";
278
+ readonly editSurface: "platform_admin";
279
+ readonly inheritanceRule: "platform_seed_to_tenant";
280
+ readonly blastRadius: "platform";
281
+ }, {
282
+ readonly caseKey: "tenant-bundle";
283
+ readonly caseLabel: "Tenant Bundle";
284
+ readonly kind: "policy_rule";
285
+ readonly canonicalOwnerScope: "tenant";
286
+ readonly editSurface: "tenant_admin";
287
+ readonly inheritanceRule: "tenant_default_to_workspace";
288
+ readonly blastRadius: "tenant";
289
+ }, {
290
+ readonly caseKey: "workspace-override";
291
+ readonly caseLabel: "Workspace Override";
292
+ readonly kind: "policy_rule";
293
+ readonly canonicalOwnerScope: "workspace";
294
+ readonly editSurface: "workspace_admin";
295
+ readonly inheritanceRule: "none";
296
+ readonly blastRadius: "workspace";
297
+ }];
298
+ };
299
+ readonly rows: readonly ControlObjectOwnershipCase[];
300
+ };
301
+ /**
302
+ * List ownership cases for one control-object kind or the full matrix.
303
+ */
304
+ declare function listControlObjectOwnershipCases(kind?: ControlObjectKind): readonly ControlObjectOwnershipCase[];
305
+ /**
306
+ * Get a specific ownership case by kind and case key.
307
+ */
308
+ declare function getControlObjectOwnershipCase(kind: ControlObjectKind, caseKey: string): ControlObjectOwnershipCase | undefined;
309
+
310
+ export { CONTROL_OBJECT_BLAST_RADII, CONTROL_OBJECT_EDIT_SURFACES, CONTROL_OBJECT_INHERITANCE_RULES, CONTROL_OBJECT_KINDS, CONTROL_OBJECT_OWNERSHIP_CONTRACT, CONTROL_OBJECT_OWNERSHIP_MATRIX, CONTROL_OBJECT_OWNERSHIP_ROWS, CONTROL_OBJECT_OWNER_SCOPES, type ControlObjectBlastRadius, type ControlObjectEditSurface, type ControlObjectInheritanceRule, type ControlObjectKind, type ControlObjectOwnerScope, type ControlObjectOwnershipCase, type ControlObjectOwnershipContract, type ControlObjectOwnershipMatrix, getControlObjectOwnershipCase, listControlObjectOwnershipCases };