taskflow-mcp-core 0.3.0-beta.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/CONTROL_GUIDE.md +113 -0
  2. package/README.md +34 -25
  3. package/dist/control/admission-service.d.ts +15 -0
  4. package/dist/control/admission-service.d.ts.map +1 -0
  5. package/dist/control/admission-service.js +64 -0
  6. package/dist/control/admission-service.js.map +1 -0
  7. package/dist/control/approval-edits.d.ts +12 -0
  8. package/dist/control/approval-edits.d.ts.map +1 -0
  9. package/dist/control/approval-edits.js +66 -0
  10. package/dist/control/approval-edits.js.map +1 -0
  11. package/dist/control/approval-service.d.ts +173 -0
  12. package/dist/control/approval-service.d.ts.map +1 -0
  13. package/dist/control/approval-service.js +342 -0
  14. package/dist/control/approval-service.js.map +1 -0
  15. package/dist/control/authorization.d.ts +94 -0
  16. package/dist/control/authorization.d.ts.map +1 -0
  17. package/dist/control/authorization.js +302 -0
  18. package/dist/control/authorization.js.map +1 -0
  19. package/dist/control/control-cli.d.ts +3 -0
  20. package/dist/control/control-cli.d.ts.map +1 -0
  21. package/dist/control/control-cli.js +279 -0
  22. package/dist/control/control-cli.js.map +1 -0
  23. package/dist/control/control-console.d.ts +17 -0
  24. package/dist/control/control-console.d.ts.map +1 -0
  25. package/dist/control/control-console.js +67 -0
  26. package/dist/control/control-console.js.map +1 -0
  27. package/dist/control/control-host.d.ts +98 -0
  28. package/dist/control/control-host.d.ts.map +1 -0
  29. package/dist/control/control-host.js +459 -0
  30. package/dist/control/control-host.js.map +1 -0
  31. package/dist/control/control-mcp.d.ts +11 -0
  32. package/dist/control/control-mcp.d.ts.map +1 -0
  33. package/dist/control/control-mcp.js +78 -0
  34. package/dist/control/control-mcp.js.map +1 -0
  35. package/dist/control/errors.d.ts +44 -0
  36. package/dist/control/errors.d.ts.map +1 -0
  37. package/dist/control/errors.js +93 -0
  38. package/dist/control/errors.js.map +1 -0
  39. package/dist/control/hello.d.ts +39 -0
  40. package/dist/control/hello.d.ts.map +1 -0
  41. package/dist/control/hello.js +80 -0
  42. package/dist/control/hello.js.map +1 -0
  43. package/dist/control/host-runtime.d.ts +32 -0
  44. package/dist/control/host-runtime.d.ts.map +1 -0
  45. package/dist/control/host-runtime.js +542 -0
  46. package/dist/control/host-runtime.js.map +1 -0
  47. package/dist/control/index.d.ts +32 -0
  48. package/dist/control/index.d.ts.map +1 -0
  49. package/dist/control/index.js +32 -0
  50. package/dist/control/index.js.map +1 -0
  51. package/dist/control/legacy-conflict.d.ts +19 -0
  52. package/dist/control/legacy-conflict.d.ts.map +1 -0
  53. package/dist/control/legacy-conflict.js +176 -0
  54. package/dist/control/legacy-conflict.js.map +1 -0
  55. package/dist/control/local-bootstrap.d.ts +21 -0
  56. package/dist/control/local-bootstrap.d.ts.map +1 -0
  57. package/dist/control/local-bootstrap.js +224 -0
  58. package/dist/control/local-bootstrap.js.map +1 -0
  59. package/dist/control/modes.d.ts +60 -0
  60. package/dist/control/modes.d.ts.map +1 -0
  61. package/dist/control/modes.js +86 -0
  62. package/dist/control/modes.js.map +1 -0
  63. package/dist/control/project-admin-cli.d.ts +3 -0
  64. package/dist/control/project-admin-cli.d.ts.map +1 -0
  65. package/dist/control/project-admin-cli.js +155 -0
  66. package/dist/control/project-admin-cli.js.map +1 -0
  67. package/dist/control/project-registry.d.ts +20 -0
  68. package/dist/control/project-registry.d.ts.map +1 -0
  69. package/dist/control/project-registry.js +181 -0
  70. package/dist/control/project-registry.js.map +1 -0
  71. package/dist/control/runtime-checkpoint.d.ts +11 -0
  72. package/dist/control/runtime-checkpoint.d.ts.map +1 -0
  73. package/dist/control/runtime-checkpoint.js +39 -0
  74. package/dist/control/runtime-checkpoint.js.map +1 -0
  75. package/dist/control/runtime-provider.d.ts +100 -0
  76. package/dist/control/runtime-provider.d.ts.map +1 -0
  77. package/dist/control/runtime-provider.js +258 -0
  78. package/dist/control/runtime-provider.js.map +1 -0
  79. package/dist/control/schema/approval.d.ts +108 -0
  80. package/dist/control/schema/approval.d.ts.map +1 -0
  81. package/dist/control/schema/approval.js +65 -0
  82. package/dist/control/schema/approval.js.map +1 -0
  83. package/dist/control/schema/commands.d.ts +663 -0
  84. package/dist/control/schema/commands.d.ts.map +1 -0
  85. package/dist/control/schema/commands.js +147 -0
  86. package/dist/control/schema/commands.js.map +1 -0
  87. package/dist/control/schema/common.d.ts +24 -0
  88. package/dist/control/schema/common.d.ts.map +1 -0
  89. package/dist/control/schema/common.js +38 -0
  90. package/dist/control/schema/common.js.map +1 -0
  91. package/dist/control/schema/coordinator.d.ts +98 -0
  92. package/dist/control/schema/coordinator.d.ts.map +1 -0
  93. package/dist/control/schema/coordinator.js +87 -0
  94. package/dist/control/schema/coordinator.js.map +1 -0
  95. package/dist/control/schema/evidence.d.ts +140 -0
  96. package/dist/control/schema/evidence.d.ts.map +1 -0
  97. package/dist/control/schema/evidence.js +64 -0
  98. package/dist/control/schema/evidence.js.map +1 -0
  99. package/dist/control/schema/header.d.ts +79 -0
  100. package/dist/control/schema/header.d.ts.map +1 -0
  101. package/dist/control/schema/header.js +66 -0
  102. package/dist/control/schema/header.js.map +1 -0
  103. package/dist/control/schema/index.d.ts +31 -0
  104. package/dist/control/schema/index.d.ts.map +1 -0
  105. package/dist/control/schema/index.js +31 -0
  106. package/dist/control/schema/index.js.map +1 -0
  107. package/dist/control/schema/plan.d.ts +291 -0
  108. package/dist/control/schema/plan.d.ts.map +1 -0
  109. package/dist/control/schema/plan.js +80 -0
  110. package/dist/control/schema/plan.js.map +1 -0
  111. package/dist/control/schema/policy.d.ts +96 -0
  112. package/dist/control/schema/policy.d.ts.map +1 -0
  113. package/dist/control/schema/policy.js +73 -0
  114. package/dist/control/schema/policy.js.map +1 -0
  115. package/dist/control/schema/run.d.ts +61 -0
  116. package/dist/control/schema/run.d.ts.map +1 -0
  117. package/dist/control/schema/run.js +56 -0
  118. package/dist/control/schema/run.js.map +1 -0
  119. package/dist/control/schema/te-mirrors.d.ts +145 -0
  120. package/dist/control/schema/te-mirrors.d.ts.map +1 -0
  121. package/dist/control/schema/te-mirrors.js +145 -0
  122. package/dist/control/schema/te-mirrors.js.map +1 -0
  123. package/dist/control/schema/transport.d.ts +479 -0
  124. package/dist/control/schema/transport.d.ts.map +1 -0
  125. package/dist/control/schema/transport.js +181 -0
  126. package/dist/control/schema/transport.js.map +1 -0
  127. package/dist/control/singleton.d.ts +135 -0
  128. package/dist/control/singleton.d.ts.map +1 -0
  129. package/dist/control/singleton.js +607 -0
  130. package/dist/control/singleton.js.map +1 -0
  131. package/dist/control/store/coordinator-store.d.ts +143 -0
  132. package/dist/control/store/coordinator-store.d.ts.map +1 -0
  133. package/dist/control/store/coordinator-store.js +620 -0
  134. package/dist/control/store/coordinator-store.js.map +1 -0
  135. package/dist/control/store/evidence-adapter.d.ts +10 -0
  136. package/dist/control/store/evidence-adapter.d.ts.map +1 -0
  137. package/dist/control/store/evidence-adapter.js +114 -0
  138. package/dist/control/store/evidence-adapter.js.map +1 -0
  139. package/dist/control/store/evidence-explanation.d.ts +55 -0
  140. package/dist/control/store/evidence-explanation.d.ts.map +1 -0
  141. package/dist/control/store/evidence-explanation.js +50 -0
  142. package/dist/control/store/evidence-explanation.js.map +1 -0
  143. package/dist/control/store/evidence-store.d.ts +143 -0
  144. package/dist/control/store/evidence-store.d.ts.map +1 -0
  145. package/dist/control/store/evidence-store.js +437 -0
  146. package/dist/control/store/evidence-store.js.map +1 -0
  147. package/dist/control/store/index.d.ts +3 -0
  148. package/dist/control/store/index.d.ts.map +1 -0
  149. package/dist/control/store/index.js +2 -0
  150. package/dist/control/store/index.js.map +1 -0
  151. package/dist/control/store/journal.d.ts +270 -0
  152. package/dist/control/store/journal.d.ts.map +1 -0
  153. package/dist/control/store/journal.js +50 -0
  154. package/dist/control/store/journal.js.map +1 -0
  155. package/dist/control/store/project-lifecycle.d.ts +49 -0
  156. package/dist/control/store/project-lifecycle.d.ts.map +1 -0
  157. package/dist/control/store/project-lifecycle.js +288 -0
  158. package/dist/control/store/project-lifecycle.js.map +1 -0
  159. package/dist/control/store/store.d.ts +93 -0
  160. package/dist/control/store/store.d.ts.map +1 -0
  161. package/dist/control/store/store.js +873 -0
  162. package/dist/control/store/store.js.map +1 -0
  163. package/dist/control/te-provider.d.ts +86 -0
  164. package/dist/control/te-provider.d.ts.map +1 -0
  165. package/dist/control/te-provider.js +131 -0
  166. package/dist/control/te-provider.js.map +1 -0
  167. package/dist/control/uds.d.ts +114 -0
  168. package/dist/control/uds.d.ts.map +1 -0
  169. package/dist/control/uds.js +456 -0
  170. package/dist/control/uds.js.map +1 -0
  171. package/dist/control/web-console/view.d.ts +5 -0
  172. package/dist/control/web-console/view.d.ts.map +1 -0
  173. package/dist/control/web-console/view.js +122 -0
  174. package/dist/control/web-console/view.js.map +1 -0
  175. package/dist/control/web-console.d.ts +50 -0
  176. package/dist/control/web-console.d.ts.map +1 -0
  177. package/dist/control/web-console.js +317 -0
  178. package/dist/control/web-console.js.map +1 -0
  179. package/dist/mcp/jsonrpc.d.ts.map +1 -1
  180. package/dist/mcp/jsonrpc.js +12 -3
  181. package/dist/mcp/jsonrpc.js.map +1 -1
  182. package/dist/mcp/server.d.ts.map +1 -1
  183. package/dist/mcp/server.js +26 -17
  184. package/dist/mcp/server.js.map +1 -1
  185. package/package.json +13 -5
@@ -0,0 +1,663 @@
1
+ /**
2
+ * Command + event wire types (🟥 NEW) — the authoritative narrative.
3
+ *
4
+ * Decisions: P12 (immutable CommandRecord committed atomically with its
5
+ * ControlEvents; `(controlDomainId, commandId)` unique), P11 (commitSeq never
6
+ * renumbered; CompactionCheckpointEvent as the only authoritative cursor
7
+ * floor; cursor leases).
8
+ */
9
+ import { Type, type Static } from "typebox";
10
+ import { CONTROL_WIRE_SCHEMA_VERSION } from "./common.ts";
11
+ import { type ArtifactRef } from "./evidence.ts";
12
+ export declare const CommandKindSchema: import("typebox").TUnsafe<string>;
13
+ export type CommandKind = "run.submit" | "run.cancel" | "approval.decide" | "coordinator.setMaxActiveRuns" | "coordinator.forceRelease";
14
+ export declare const CommandStatusSchema: import("typebox").TUnsafe<string>;
15
+ export type CommandStatus = "accepted" | "completed" | "failed";
16
+ export declare const CommandRecordSchema: Type.TObject<{
17
+ commandId: Type.TString;
18
+ kind: import("typebox").TUnsafe<string>;
19
+ requestHash: Type.TString;
20
+ callerPrincipal: Type.TString;
21
+ authorizationContextHash: Type.TString;
22
+ projectId: Type.TString;
23
+ controlDomainId: Type.TString;
24
+ status: import("typebox").TUnsafe<string>;
25
+ firstCommitSeq: Type.TInteger;
26
+ lastCommitSeq: Type.TInteger;
27
+ responseArtifactRef: Type.TOptional<Type.TObject<{
28
+ digest: Type.TString;
29
+ size: Type.TInteger;
30
+ mediaType: Type.TString;
31
+ storageClass: Type.TString;
32
+ redactionClass: Type.TString;
33
+ }>>;
34
+ recordedAt: Type.TInteger;
35
+ }>;
36
+ export type CommandRecord = {
37
+ commandId: string;
38
+ kind: CommandKind;
39
+ requestHash: string;
40
+ callerPrincipal: string;
41
+ authorizationContextHash: string;
42
+ projectId: string;
43
+ controlDomainId: string;
44
+ status: CommandStatus;
45
+ firstCommitSeq: number;
46
+ lastCommitSeq: number;
47
+ responseArtifactRef?: ArtifactRef;
48
+ recordedAt: number;
49
+ };
50
+ export declare const LegacyControlEventPayloadSchema: Type.TUnion<[Type.TObject<{
51
+ kind: Type.TLiteral<"command.recorded">;
52
+ commandId: Type.TString;
53
+ }>, Type.TObject<{
54
+ kind: Type.TLiteral<"reconcile.started">;
55
+ attempt: Type.TInteger;
56
+ }>, Type.TObject<{
57
+ kind: Type.TLiteral<"reconcile.settled">;
58
+ outcome: import("typebox").TUnsafe<string>;
59
+ terminalStatus: Type.TOptional<import("typebox").TUnsafe<string>>;
60
+ }>, Type.TObject<{
61
+ kind: Type.TLiteral<"dispatch.acknowledged">;
62
+ providerJobHandle: Type.TOptional<Type.TString>;
63
+ }>, Type.TObject<{
64
+ kind: Type.TLiteral<"dispatch.rejected">;
65
+ reason: Type.TString;
66
+ }>, Type.TObject<{
67
+ kind: Type.TLiteral<"dispatch.ambiguous">;
68
+ }>, Type.TObject<{
69
+ kind: Type.TLiteral<"run.terminal">;
70
+ status: import("typebox").TUnsafe<string>;
71
+ }>, Type.TObject<{
72
+ kind: Type.TLiteral<"approval.pending">;
73
+ approvalRequestId: Type.TString;
74
+ }>, Type.TObject<{
75
+ kind: Type.TLiteral<"approval.settled">;
76
+ decision: import("typebox").TUnsafe<string>;
77
+ }>, Type.TObject<{
78
+ kind: Type.TLiteral<"compaction.checkpoint">;
79
+ throughCommitSeq: Type.TInteger;
80
+ }>]>;
81
+ /** V2 carries complete approval and lifecycle facts. V1 remains read-only. */
82
+ declare const LifecycleEventPayloadSchema: Type.TUnion<[Type.TObject<{
83
+ kind: Type.TLiteral<"approval.pending">;
84
+ approvalRequestId: Type.TString;
85
+ request: Type.TObject<{
86
+ approvalRequestId: Type.TString;
87
+ runId: Type.TString;
88
+ nodeInstanceId: Type.TString;
89
+ boundPlanHash: Type.TOptional<Type.TString>;
90
+ boundFragmentHash: Type.TOptional<Type.TString>;
91
+ expectedRunVersion: Type.TInteger;
92
+ allowedDecisions: Type.TArray<import("typebox").TUnsafe<string>>;
93
+ owner: Type.TString;
94
+ audience: Type.TOptional<Type.TArray<Type.TString>>;
95
+ requiredPrincipals: Type.TOptional<Type.TArray<Type.TString>>;
96
+ deadline: Type.TInteger;
97
+ timeoutPolicy: import("typebox").TUnsafe<string>;
98
+ status: import("typebox").TUnsafe<string>;
99
+ createdAt: Type.TInteger;
100
+ decidedAt: Type.TOptional<Type.TInteger>;
101
+ decisionCommandId: Type.TOptional<Type.TString>;
102
+ decisionEventId: Type.TOptional<Type.TString>;
103
+ decisionCommitSeq: Type.TOptional<Type.TInteger>;
104
+ editArtifactRef: Type.TOptional<Type.TObject<{
105
+ digest: Type.TString;
106
+ size: Type.TInteger;
107
+ mediaType: Type.TString;
108
+ storageClass: Type.TString;
109
+ redactionClass: Type.TString;
110
+ }>>;
111
+ editKind: Type.TOptional<import("typebox").TUnsafe<string>>;
112
+ }>;
113
+ }>, Type.TObject<{
114
+ kind: Type.TLiteral<"approval.settled">;
115
+ approvalRequestId: Type.TString;
116
+ decision: import("typebox").TUnsafe<string>;
117
+ }>, Type.TObject<{
118
+ kind: Type.TLiteral<"run.snapshot">;
119
+ run: Type.TObject<{
120
+ runId: Type.TString;
121
+ projectId: Type.TString;
122
+ controlDomainId: Type.TString;
123
+ status: import("typebox").TUnsafe<string>;
124
+ stage: import("typebox").TUnsafe<string>;
125
+ slot: import("typebox").TUnsafe<string>;
126
+ needsOperator: Type.TBoolean;
127
+ runVersion: Type.TInteger;
128
+ boundPlanHash: Type.TOptional<Type.TString>;
129
+ boundFragmentHash: Type.TOptional<Type.TString>;
130
+ reservationId: Type.TOptional<Type.TString>;
131
+ owner: Type.TOptional<Type.TObject<{
132
+ runId: Type.TString;
133
+ phaseId: Type.TString;
134
+ attemptId: Type.TString;
135
+ unitId: Type.TString;
136
+ ancestry: Type.TArray<Type.TString>;
137
+ }>>;
138
+ policyHash: Type.TOptional<Type.TString>;
139
+ authorityEpoch: Type.TOptional<Type.TInteger>;
140
+ requiresReadmission: Type.TOptional<Type.TBoolean>;
141
+ projectAdmitCommitSeq: Type.TOptional<Type.TInteger>;
142
+ }>;
143
+ }>, Type.TObject<{
144
+ kind: Type.TLiteral<"approval.release.queued">;
145
+ approvalRequestId: Type.TString;
146
+ intentId: Type.TString;
147
+ reservationId: Type.TString;
148
+ }>, Type.TObject<{
149
+ kind: Type.TLiteral<"approval.release.completed">;
150
+ approvalRequestId: Type.TString;
151
+ intentId: Type.TString;
152
+ reservationId: Type.TString;
153
+ }>, Type.TObject<{
154
+ kind: Type.TLiteral<"approval.readmission.queued">;
155
+ approvalRequestId: Type.TString;
156
+ intentId: Type.TString;
157
+ reservationId: Type.TString;
158
+ }>, Type.TObject<{
159
+ kind: Type.TLiteral<"approval.readmission.completed">;
160
+ approvalRequestId: Type.TString;
161
+ intentId: Type.TString;
162
+ reservationId: Type.TString;
163
+ }>, Type.TObject<{
164
+ kind: Type.TLiteral<"receipt.issued">;
165
+ receipt: Type.TObject<{
166
+ schemaVersion: Type.TLiteral<2>;
167
+ controlDomainId: Type.TString;
168
+ runId: Type.TString;
169
+ boundPlanHash: Type.TOptional<Type.TString>;
170
+ boundFragmentHash: Type.TOptional<Type.TString>;
171
+ eventManifest: Type.TArray<Type.TString>;
172
+ manifestRoot: Type.TString;
173
+ startCommitSeq: Type.TInteger;
174
+ endCommitSeq: Type.TInteger;
175
+ artifactRefs: Type.TArray<Type.TObject<{
176
+ digest: Type.TString;
177
+ size: Type.TInteger;
178
+ mediaType: Type.TString;
179
+ storageClass: Type.TString;
180
+ redactionClass: Type.TString;
181
+ }>>;
182
+ assurance: Type.TObject<{
183
+ journalContinuity: Type.TBoolean;
184
+ providerOutcome: import("typebox").TUnsafe<string>;
185
+ artifactIntegrity: import("typebox").TUnsafe<string>;
186
+ provenance: Type.TObject<{
187
+ confidentiality: import("typebox").TUnsafe<string>;
188
+ integrity: import("typebox").TUnsafe<string>;
189
+ }>;
190
+ enforcement: Type.TObject<{
191
+ capabilities: Type.TObject<{
192
+ resolution: import("typebox").TUnsafe<string>;
193
+ mutationMediation: import("typebox").TUnsafe<string>;
194
+ processIsolation: import("typebox").TUnsafe<string>;
195
+ revocation: Type.TUnion<[Type.TLiteral<"admission-only">, Type.TLiteral<"per-mutation">, Type.TObject<{
196
+ mode: Type.TLiteral<"bounded-latency">;
197
+ maxLatencyMs: Type.TInteger;
198
+ }>]>;
199
+ baselinePolicyId: Type.TString;
200
+ hostProbeSha256: Type.TString;
201
+ }>;
202
+ observedRevocationLatencyMs: Type.TOptional<Type.TInteger>;
203
+ }>;
204
+ }>;
205
+ buildInfo: Type.TObject<{
206
+ packageVersion: Type.TString;
207
+ gitCommit: Type.TString;
208
+ schemaVersion: Type.TInteger;
209
+ buildTime: Type.TOptional<Type.TInteger>;
210
+ }>;
211
+ }>;
212
+ }>, Type.TObject<{
213
+ kind: Type.TLiteral<"artifact.recorded">;
214
+ runId: Type.TString;
215
+ commandKind: import("typebox").TUnsafe<string>;
216
+ artifact: Type.TObject<{
217
+ digest: Type.TString;
218
+ size: Type.TInteger;
219
+ mediaType: Type.TString;
220
+ storageClass: Type.TString;
221
+ redactionClass: Type.TString;
222
+ }>;
223
+ }>]>;
224
+ export declare const ControlEventPayloadSchema: Type.TUnion<[...(Type.TObject<{
225
+ kind: Type.TLiteral<"command.recorded">;
226
+ commandId: Type.TString;
227
+ }> | Type.TObject<{
228
+ kind: Type.TLiteral<"reconcile.started">;
229
+ attempt: Type.TInteger;
230
+ }> | Type.TObject<{
231
+ kind: Type.TLiteral<"reconcile.settled">;
232
+ outcome: import("typebox").TUnsafe<string>;
233
+ terminalStatus: Type.TOptional<import("typebox").TUnsafe<string>>;
234
+ }> | Type.TObject<{
235
+ kind: Type.TLiteral<"dispatch.acknowledged">;
236
+ providerJobHandle: Type.TOptional<Type.TString>;
237
+ }> | Type.TObject<{
238
+ kind: Type.TLiteral<"dispatch.rejected">;
239
+ reason: Type.TString;
240
+ }> | Type.TObject<{
241
+ kind: Type.TLiteral<"dispatch.ambiguous">;
242
+ }> | Type.TObject<{
243
+ kind: Type.TLiteral<"run.terminal">;
244
+ status: import("typebox").TUnsafe<string>;
245
+ }> | Type.TObject<{
246
+ kind: Type.TLiteral<"approval.pending">;
247
+ approvalRequestId: Type.TString;
248
+ }> | Type.TObject<{
249
+ kind: Type.TLiteral<"approval.settled">;
250
+ decision: import("typebox").TUnsafe<string>;
251
+ }> | Type.TObject<{
252
+ kind: Type.TLiteral<"compaction.checkpoint">;
253
+ throughCommitSeq: Type.TInteger;
254
+ }>)[], Type.TObject<{
255
+ kind: Type.TLiteral<"approval.pending">;
256
+ approvalRequestId: Type.TString;
257
+ request: Type.TObject<{
258
+ approvalRequestId: Type.TString;
259
+ runId: Type.TString;
260
+ nodeInstanceId: Type.TString;
261
+ boundPlanHash: Type.TOptional<Type.TString>;
262
+ boundFragmentHash: Type.TOptional<Type.TString>;
263
+ expectedRunVersion: Type.TInteger;
264
+ allowedDecisions: Type.TArray<import("typebox").TUnsafe<string>>;
265
+ owner: Type.TString;
266
+ audience: Type.TOptional<Type.TArray<Type.TString>>;
267
+ requiredPrincipals: Type.TOptional<Type.TArray<Type.TString>>;
268
+ deadline: Type.TInteger;
269
+ timeoutPolicy: import("typebox").TUnsafe<string>;
270
+ status: import("typebox").TUnsafe<string>;
271
+ createdAt: Type.TInteger;
272
+ decidedAt: Type.TOptional<Type.TInteger>;
273
+ decisionCommandId: Type.TOptional<Type.TString>;
274
+ decisionEventId: Type.TOptional<Type.TString>;
275
+ decisionCommitSeq: Type.TOptional<Type.TInteger>;
276
+ editArtifactRef: Type.TOptional<Type.TObject<{
277
+ digest: Type.TString;
278
+ size: Type.TInteger;
279
+ mediaType: Type.TString;
280
+ storageClass: Type.TString;
281
+ redactionClass: Type.TString;
282
+ }>>;
283
+ editKind: Type.TOptional<import("typebox").TUnsafe<string>>;
284
+ }>;
285
+ }>, Type.TObject<{
286
+ kind: Type.TLiteral<"approval.settled">;
287
+ approvalRequestId: Type.TString;
288
+ decision: import("typebox").TUnsafe<string>;
289
+ }>, Type.TObject<{
290
+ kind: Type.TLiteral<"run.snapshot">;
291
+ run: Type.TObject<{
292
+ runId: Type.TString;
293
+ projectId: Type.TString;
294
+ controlDomainId: Type.TString;
295
+ status: import("typebox").TUnsafe<string>;
296
+ stage: import("typebox").TUnsafe<string>;
297
+ slot: import("typebox").TUnsafe<string>;
298
+ needsOperator: Type.TBoolean;
299
+ runVersion: Type.TInteger;
300
+ boundPlanHash: Type.TOptional<Type.TString>;
301
+ boundFragmentHash: Type.TOptional<Type.TString>;
302
+ reservationId: Type.TOptional<Type.TString>;
303
+ owner: Type.TOptional<Type.TObject<{
304
+ runId: Type.TString;
305
+ phaseId: Type.TString;
306
+ attemptId: Type.TString;
307
+ unitId: Type.TString;
308
+ ancestry: Type.TArray<Type.TString>;
309
+ }>>;
310
+ policyHash: Type.TOptional<Type.TString>;
311
+ authorityEpoch: Type.TOptional<Type.TInteger>;
312
+ requiresReadmission: Type.TOptional<Type.TBoolean>;
313
+ projectAdmitCommitSeq: Type.TOptional<Type.TInteger>;
314
+ }>;
315
+ }>, Type.TObject<{
316
+ kind: Type.TLiteral<"approval.release.queued">;
317
+ approvalRequestId: Type.TString;
318
+ intentId: Type.TString;
319
+ reservationId: Type.TString;
320
+ }>, Type.TObject<{
321
+ kind: Type.TLiteral<"approval.release.completed">;
322
+ approvalRequestId: Type.TString;
323
+ intentId: Type.TString;
324
+ reservationId: Type.TString;
325
+ }>, Type.TObject<{
326
+ kind: Type.TLiteral<"approval.readmission.queued">;
327
+ approvalRequestId: Type.TString;
328
+ intentId: Type.TString;
329
+ reservationId: Type.TString;
330
+ }>, Type.TObject<{
331
+ kind: Type.TLiteral<"approval.readmission.completed">;
332
+ approvalRequestId: Type.TString;
333
+ intentId: Type.TString;
334
+ reservationId: Type.TString;
335
+ }>, Type.TObject<{
336
+ kind: Type.TLiteral<"receipt.issued">;
337
+ receipt: Type.TObject<{
338
+ schemaVersion: Type.TLiteral<2>;
339
+ controlDomainId: Type.TString;
340
+ runId: Type.TString;
341
+ boundPlanHash: Type.TOptional<Type.TString>;
342
+ boundFragmentHash: Type.TOptional<Type.TString>;
343
+ eventManifest: Type.TArray<Type.TString>;
344
+ manifestRoot: Type.TString;
345
+ startCommitSeq: Type.TInteger;
346
+ endCommitSeq: Type.TInteger;
347
+ artifactRefs: Type.TArray<Type.TObject<{
348
+ digest: Type.TString;
349
+ size: Type.TInteger;
350
+ mediaType: Type.TString;
351
+ storageClass: Type.TString;
352
+ redactionClass: Type.TString;
353
+ }>>;
354
+ assurance: Type.TObject<{
355
+ journalContinuity: Type.TBoolean;
356
+ providerOutcome: import("typebox").TUnsafe<string>;
357
+ artifactIntegrity: import("typebox").TUnsafe<string>;
358
+ provenance: Type.TObject<{
359
+ confidentiality: import("typebox").TUnsafe<string>;
360
+ integrity: import("typebox").TUnsafe<string>;
361
+ }>;
362
+ enforcement: Type.TObject<{
363
+ capabilities: Type.TObject<{
364
+ resolution: import("typebox").TUnsafe<string>;
365
+ mutationMediation: import("typebox").TUnsafe<string>;
366
+ processIsolation: import("typebox").TUnsafe<string>;
367
+ revocation: Type.TUnion<[Type.TLiteral<"admission-only">, Type.TLiteral<"per-mutation">, Type.TObject<{
368
+ mode: Type.TLiteral<"bounded-latency">;
369
+ maxLatencyMs: Type.TInteger;
370
+ }>]>;
371
+ baselinePolicyId: Type.TString;
372
+ hostProbeSha256: Type.TString;
373
+ }>;
374
+ observedRevocationLatencyMs: Type.TOptional<Type.TInteger>;
375
+ }>;
376
+ }>;
377
+ buildInfo: Type.TObject<{
378
+ packageVersion: Type.TString;
379
+ gitCommit: Type.TString;
380
+ schemaVersion: Type.TInteger;
381
+ buildTime: Type.TOptional<Type.TInteger>;
382
+ }>;
383
+ }>;
384
+ }>, Type.TObject<{
385
+ kind: Type.TLiteral<"artifact.recorded">;
386
+ runId: Type.TString;
387
+ commandKind: import("typebox").TUnsafe<string>;
388
+ artifact: Type.TObject<{
389
+ digest: Type.TString;
390
+ size: Type.TInteger;
391
+ mediaType: Type.TString;
392
+ storageClass: Type.TString;
393
+ redactionClass: Type.TString;
394
+ }>;
395
+ }>]>;
396
+ export type ControlEventPayload = Static<typeof LifecycleEventPayloadSchema> | Static<typeof LegacyControlEventPayloadSchema>;
397
+ export declare const ControlEventSchema: Type.TUnion<[Type.TObject<{
398
+ eventId: Type.TString;
399
+ schemaVersion: Type.TLiteral<2>;
400
+ controlDomainId: Type.TString;
401
+ streamId: Type.TString;
402
+ streamSeq: Type.TInteger;
403
+ commitSeq: Type.TInteger;
404
+ commandId: Type.TOptional<Type.TString>;
405
+ commandEventIndex: Type.TOptional<Type.TInteger>;
406
+ causationId: Type.TString;
407
+ correlationId: Type.TString;
408
+ projectId: Type.TString;
409
+ recordedAt: Type.TInteger;
410
+ payload: Type.TUnion<[...(Type.TObject<{
411
+ kind: Type.TLiteral<"command.recorded">;
412
+ commandId: Type.TString;
413
+ }> | Type.TObject<{
414
+ kind: Type.TLiteral<"reconcile.started">;
415
+ attempt: Type.TInteger;
416
+ }> | Type.TObject<{
417
+ kind: Type.TLiteral<"reconcile.settled">;
418
+ outcome: import("typebox").TUnsafe<string>;
419
+ terminalStatus: Type.TOptional<import("typebox").TUnsafe<string>>;
420
+ }> | Type.TObject<{
421
+ kind: Type.TLiteral<"dispatch.acknowledged">;
422
+ providerJobHandle: Type.TOptional<Type.TString>;
423
+ }> | Type.TObject<{
424
+ kind: Type.TLiteral<"dispatch.rejected">;
425
+ reason: Type.TString;
426
+ }> | Type.TObject<{
427
+ kind: Type.TLiteral<"dispatch.ambiguous">;
428
+ }> | Type.TObject<{
429
+ kind: Type.TLiteral<"run.terminal">;
430
+ status: import("typebox").TUnsafe<string>;
431
+ }> | Type.TObject<{
432
+ kind: Type.TLiteral<"approval.pending">;
433
+ approvalRequestId: Type.TString;
434
+ }> | Type.TObject<{
435
+ kind: Type.TLiteral<"approval.settled">;
436
+ decision: import("typebox").TUnsafe<string>;
437
+ }> | Type.TObject<{
438
+ kind: Type.TLiteral<"compaction.checkpoint">;
439
+ throughCommitSeq: Type.TInteger;
440
+ }>)[], Type.TObject<{
441
+ kind: Type.TLiteral<"approval.pending">;
442
+ approvalRequestId: Type.TString;
443
+ request: Type.TObject<{
444
+ approvalRequestId: Type.TString;
445
+ runId: Type.TString;
446
+ nodeInstanceId: Type.TString;
447
+ boundPlanHash: Type.TOptional<Type.TString>;
448
+ boundFragmentHash: Type.TOptional<Type.TString>;
449
+ expectedRunVersion: Type.TInteger;
450
+ allowedDecisions: Type.TArray<import("typebox").TUnsafe<string>>;
451
+ owner: Type.TString;
452
+ audience: Type.TOptional<Type.TArray<Type.TString>>;
453
+ requiredPrincipals: Type.TOptional<Type.TArray<Type.TString>>;
454
+ deadline: Type.TInteger;
455
+ timeoutPolicy: import("typebox").TUnsafe<string>;
456
+ status: import("typebox").TUnsafe<string>;
457
+ createdAt: Type.TInteger;
458
+ decidedAt: Type.TOptional<Type.TInteger>;
459
+ decisionCommandId: Type.TOptional<Type.TString>;
460
+ decisionEventId: Type.TOptional<Type.TString>;
461
+ decisionCommitSeq: Type.TOptional<Type.TInteger>;
462
+ editArtifactRef: Type.TOptional<Type.TObject<{
463
+ digest: Type.TString;
464
+ size: Type.TInteger;
465
+ mediaType: Type.TString;
466
+ storageClass: Type.TString;
467
+ redactionClass: Type.TString;
468
+ }>>;
469
+ editKind: Type.TOptional<import("typebox").TUnsafe<string>>;
470
+ }>;
471
+ }>, Type.TObject<{
472
+ kind: Type.TLiteral<"approval.settled">;
473
+ approvalRequestId: Type.TString;
474
+ decision: import("typebox").TUnsafe<string>;
475
+ }>, Type.TObject<{
476
+ kind: Type.TLiteral<"run.snapshot">;
477
+ run: Type.TObject<{
478
+ runId: Type.TString;
479
+ projectId: Type.TString;
480
+ controlDomainId: Type.TString;
481
+ status: import("typebox").TUnsafe<string>;
482
+ stage: import("typebox").TUnsafe<string>;
483
+ slot: import("typebox").TUnsafe<string>;
484
+ needsOperator: Type.TBoolean;
485
+ runVersion: Type.TInteger;
486
+ boundPlanHash: Type.TOptional<Type.TString>;
487
+ boundFragmentHash: Type.TOptional<Type.TString>;
488
+ reservationId: Type.TOptional<Type.TString>;
489
+ owner: Type.TOptional<Type.TObject<{
490
+ runId: Type.TString;
491
+ phaseId: Type.TString;
492
+ attemptId: Type.TString;
493
+ unitId: Type.TString;
494
+ ancestry: Type.TArray<Type.TString>;
495
+ }>>;
496
+ policyHash: Type.TOptional<Type.TString>;
497
+ authorityEpoch: Type.TOptional<Type.TInteger>;
498
+ requiresReadmission: Type.TOptional<Type.TBoolean>;
499
+ projectAdmitCommitSeq: Type.TOptional<Type.TInteger>;
500
+ }>;
501
+ }>, Type.TObject<{
502
+ kind: Type.TLiteral<"approval.release.queued">;
503
+ approvalRequestId: Type.TString;
504
+ intentId: Type.TString;
505
+ reservationId: Type.TString;
506
+ }>, Type.TObject<{
507
+ kind: Type.TLiteral<"approval.release.completed">;
508
+ approvalRequestId: Type.TString;
509
+ intentId: Type.TString;
510
+ reservationId: Type.TString;
511
+ }>, Type.TObject<{
512
+ kind: Type.TLiteral<"approval.readmission.queued">;
513
+ approvalRequestId: Type.TString;
514
+ intentId: Type.TString;
515
+ reservationId: Type.TString;
516
+ }>, Type.TObject<{
517
+ kind: Type.TLiteral<"approval.readmission.completed">;
518
+ approvalRequestId: Type.TString;
519
+ intentId: Type.TString;
520
+ reservationId: Type.TString;
521
+ }>, Type.TObject<{
522
+ kind: Type.TLiteral<"receipt.issued">;
523
+ receipt: Type.TObject<{
524
+ schemaVersion: Type.TLiteral<2>;
525
+ controlDomainId: Type.TString;
526
+ runId: Type.TString;
527
+ boundPlanHash: Type.TOptional<Type.TString>;
528
+ boundFragmentHash: Type.TOptional<Type.TString>;
529
+ eventManifest: Type.TArray<Type.TString>;
530
+ manifestRoot: Type.TString;
531
+ startCommitSeq: Type.TInteger;
532
+ endCommitSeq: Type.TInteger;
533
+ artifactRefs: Type.TArray<Type.TObject<{
534
+ digest: Type.TString;
535
+ size: Type.TInteger;
536
+ mediaType: Type.TString;
537
+ storageClass: Type.TString;
538
+ redactionClass: Type.TString;
539
+ }>>;
540
+ assurance: Type.TObject<{
541
+ journalContinuity: Type.TBoolean;
542
+ providerOutcome: import("typebox").TUnsafe<string>;
543
+ artifactIntegrity: import("typebox").TUnsafe<string>;
544
+ provenance: Type.TObject<{
545
+ confidentiality: import("typebox").TUnsafe<string>;
546
+ integrity: import("typebox").TUnsafe<string>;
547
+ }>;
548
+ enforcement: Type.TObject<{
549
+ capabilities: Type.TObject<{
550
+ resolution: import("typebox").TUnsafe<string>;
551
+ mutationMediation: import("typebox").TUnsafe<string>;
552
+ processIsolation: import("typebox").TUnsafe<string>;
553
+ revocation: Type.TUnion<[Type.TLiteral<"admission-only">, Type.TLiteral<"per-mutation">, Type.TObject<{
554
+ mode: Type.TLiteral<"bounded-latency">;
555
+ maxLatencyMs: Type.TInteger;
556
+ }>]>;
557
+ baselinePolicyId: Type.TString;
558
+ hostProbeSha256: Type.TString;
559
+ }>;
560
+ observedRevocationLatencyMs: Type.TOptional<Type.TInteger>;
561
+ }>;
562
+ }>;
563
+ buildInfo: Type.TObject<{
564
+ packageVersion: Type.TString;
565
+ gitCommit: Type.TString;
566
+ schemaVersion: Type.TInteger;
567
+ buildTime: Type.TOptional<Type.TInteger>;
568
+ }>;
569
+ }>;
570
+ }>, Type.TObject<{
571
+ kind: Type.TLiteral<"artifact.recorded">;
572
+ runId: Type.TString;
573
+ commandKind: import("typebox").TUnsafe<string>;
574
+ artifact: Type.TObject<{
575
+ digest: Type.TString;
576
+ size: Type.TInteger;
577
+ mediaType: Type.TString;
578
+ storageClass: Type.TString;
579
+ redactionClass: Type.TString;
580
+ }>;
581
+ }>]>;
582
+ }>, Type.TObject<{
583
+ eventId: Type.TString;
584
+ controlDomainId: Type.TString;
585
+ streamId: Type.TString;
586
+ streamSeq: Type.TInteger;
587
+ commitSeq: Type.TInteger;
588
+ commandId: Type.TOptional<Type.TString>;
589
+ commandEventIndex: Type.TOptional<Type.TInteger>;
590
+ causationId: Type.TString;
591
+ correlationId: Type.TString;
592
+ projectId: Type.TString;
593
+ recordedAt: Type.TInteger;
594
+ schemaVersion: Type.TLiteral<1>;
595
+ payload: Type.TUnion<[Type.TObject<{
596
+ kind: Type.TLiteral<"command.recorded">;
597
+ commandId: Type.TString;
598
+ }>, Type.TObject<{
599
+ kind: Type.TLiteral<"reconcile.started">;
600
+ attempt: Type.TInteger;
601
+ }>, Type.TObject<{
602
+ kind: Type.TLiteral<"reconcile.settled">;
603
+ outcome: import("typebox").TUnsafe<string>;
604
+ terminalStatus: Type.TOptional<import("typebox").TUnsafe<string>>;
605
+ }>, Type.TObject<{
606
+ kind: Type.TLiteral<"dispatch.acknowledged">;
607
+ providerJobHandle: Type.TOptional<Type.TString>;
608
+ }>, Type.TObject<{
609
+ kind: Type.TLiteral<"dispatch.rejected">;
610
+ reason: Type.TString;
611
+ }>, Type.TObject<{
612
+ kind: Type.TLiteral<"dispatch.ambiguous">;
613
+ }>, Type.TObject<{
614
+ kind: Type.TLiteral<"run.terminal">;
615
+ status: import("typebox").TUnsafe<string>;
616
+ }>, Type.TObject<{
617
+ kind: Type.TLiteral<"approval.pending">;
618
+ approvalRequestId: Type.TString;
619
+ }>, Type.TObject<{
620
+ kind: Type.TLiteral<"approval.settled">;
621
+ decision: import("typebox").TUnsafe<string>;
622
+ }>, Type.TObject<{
623
+ kind: Type.TLiteral<"compaction.checkpoint">;
624
+ throughCommitSeq: Type.TInteger;
625
+ }>]>;
626
+ }>]>;
627
+ export type ControlEvent = {
628
+ eventId: string;
629
+ schemaVersion: 1 | typeof CONTROL_WIRE_SCHEMA_VERSION;
630
+ controlDomainId: string;
631
+ streamId: string;
632
+ streamSeq: number;
633
+ commitSeq: number;
634
+ commandId?: string;
635
+ commandEventIndex?: number;
636
+ causationId: string;
637
+ correlationId: string;
638
+ projectId: string;
639
+ recordedAt: number;
640
+ payload: ControlEventPayload;
641
+ };
642
+ export declare const CompactionCheckpointEventSchema: Type.TObject<{
643
+ kind: Type.TLiteral<"compaction.checkpoint">;
644
+ throughCommitSeq: Type.TInteger;
645
+ }>;
646
+ export type CompactionCheckpointEvent = {
647
+ kind: "compaction.checkpoint";
648
+ throughCommitSeq: number;
649
+ };
650
+ export declare const CursorStateSchema: Type.TObject<{
651
+ minAvailableCommitSeq: Type.TInteger;
652
+ cursorId: Type.TString;
653
+ leaseExpiresAt: Type.TInteger;
654
+ }>;
655
+ export type CursorState = {
656
+ minAvailableCommitSeq: number;
657
+ cursorId: string;
658
+ leaseExpiresAt: number;
659
+ };
660
+ /** Canonical request hash over the command body (P12 §9.4). */
661
+ export declare function commandRequestHash(body: unknown): string;
662
+ export {};
663
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../taskflow-control/src/schema/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EACN,2BAA2B,EAG3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAQnF,eAAO,MAAM,iBAAiB,mCAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,iBAAiB,GAAG,8BAA8B,GAAG,0BAA0B,CAAC;AAExI,eAAO,MAAM,mBAAmB,mCAAkD,CAAC;AACnF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAMhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;EAgB/B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,WAAW,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAQF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+D1C,CAAC;AACH,8EAA8E;AAC9E,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAU/B,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,2BAA2B,CAAC,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAwB9H,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,CAAC,GAAG,OAAO,2BAA2B,CAAC;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAMF,eAAO,MAAM,+BAA+B;;;EAM3C,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AAMpG,eAAO,MAAM,iBAAiB;;;;EAO7B,CAAC;AACF,MAAM,MAAM,WAAW,GAAG;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACvB,CAAC;AAOF,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAExD"}