@usine/engine 0.3.0 → 0.4.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 (190) hide show
  1. package/README.md +109 -38
  2. package/dist/board-moves/board-moves.d.ts +20 -0
  3. package/dist/board-moves/board-moves.d.ts.map +1 -0
  4. package/dist/board-moves/board-moves.js +74 -0
  5. package/dist/board-moves/board-moves.js.map +1 -0
  6. package/dist/board-moves/model.d.ts +21 -0
  7. package/dist/board-moves/model.d.ts.map +1 -0
  8. package/dist/board-moves/model.js +22 -0
  9. package/dist/board-moves/model.js.map +1 -0
  10. package/dist/cursor/cursor.d.ts +2 -6
  11. package/dist/cursor/cursor.d.ts.map +1 -1
  12. package/dist/cursor/cursor.js +2 -6
  13. package/dist/cursor/cursor.js.map +1 -1
  14. package/dist/cycle-budget/cycle-budget.d.ts +6 -6
  15. package/dist/cycle-budget/cycle-budget.d.ts.map +1 -1
  16. package/dist/cycle-budget/cycle-budget.js +5 -5
  17. package/dist/cycle-budget/cycle-budget.js.map +1 -1
  18. package/dist/cycle-budget/model.d.ts +2 -2
  19. package/dist/cycle-budget/model.d.ts.map +1 -1
  20. package/dist/cycle-budget/model.js +2 -2
  21. package/dist/cycle-budget/model.js.map +1 -1
  22. package/dist/cycle-budget/queries.d.ts +1 -1
  23. package/dist/cycle-budget/queries.d.ts.map +1 -1
  24. package/dist/cycle-budget/queries.js +3 -3
  25. package/dist/cycle-budget/queries.js.map +1 -1
  26. package/dist/database/database.d.ts +1 -1
  27. package/dist/database/database.d.ts.map +1 -1
  28. package/dist/database/local-sqlite.d.ts +10 -8
  29. package/dist/database/local-sqlite.d.ts.map +1 -1
  30. package/dist/database/local-sqlite.js +11 -10
  31. package/dist/database/local-sqlite.js.map +1 -1
  32. package/dist/database/schema.d.ts +533 -22
  33. package/dist/database/schema.d.ts.map +1 -1
  34. package/dist/database/schema.js +100 -23
  35. package/dist/database/schema.js.map +1 -1
  36. package/dist/{workflow → engine}/admission.d.ts +2 -2
  37. package/dist/engine/admission.d.ts.map +1 -0
  38. package/dist/{workflow → engine}/admission.js +4 -4
  39. package/dist/engine/admission.js.map +1 -0
  40. package/dist/engine/checkout-recovery.d.ts +69 -0
  41. package/dist/engine/checkout-recovery.d.ts.map +1 -0
  42. package/dist/engine/checkout-recovery.js +181 -0
  43. package/dist/engine/checkout-recovery.js.map +1 -0
  44. package/dist/engine/engine.d.ts +55 -26
  45. package/dist/engine/engine.d.ts.map +1 -1
  46. package/dist/engine/engine.js +118 -128
  47. package/dist/engine/engine.js.map +1 -1
  48. package/dist/engine/error.d.ts +29 -10
  49. package/dist/engine/error.d.ts.map +1 -1
  50. package/dist/engine/error.js +28 -8
  51. package/dist/engine/error.js.map +1 -1
  52. package/dist/engine/lifecycle.d.ts +81 -28
  53. package/dist/engine/lifecycle.d.ts.map +1 -1
  54. package/dist/engine/lifecycle.js +83 -44
  55. package/dist/engine/lifecycle.js.map +1 -1
  56. package/dist/engine/retry.d.ts +16 -0
  57. package/dist/engine/retry.d.ts.map +1 -0
  58. package/dist/engine/retry.js +18 -0
  59. package/dist/engine/retry.js.map +1 -0
  60. package/dist/engine/run-again.d.ts +45 -0
  61. package/dist/engine/run-again.d.ts.map +1 -0
  62. package/dist/engine/run-again.js +56 -0
  63. package/dist/engine/run-again.js.map +1 -0
  64. package/dist/engine/run-driver.d.ts +54 -0
  65. package/dist/engine/run-driver.d.ts.map +1 -0
  66. package/dist/engine/run-driver.js +362 -0
  67. package/dist/engine/run-driver.js.map +1 -0
  68. package/dist/engine/shutdown.d.ts +3 -4
  69. package/dist/engine/shutdown.d.ts.map +1 -1
  70. package/dist/engine/shutdown.js +3 -4
  71. package/dist/engine/shutdown.js.map +1 -1
  72. package/dist/engine/submission.d.ts +31 -11
  73. package/dist/engine/submission.d.ts.map +1 -1
  74. package/dist/engine/submission.js +42 -12
  75. package/dist/engine/submission.js.map +1 -1
  76. package/dist/item-projection/item-projection.d.ts +12 -4
  77. package/dist/item-projection/item-projection.d.ts.map +1 -1
  78. package/dist/item-projection/item-projection.js +41 -6
  79. package/dist/item-projection/item-projection.js.map +1 -1
  80. package/dist/item-projection/model.d.ts +5 -1
  81. package/dist/item-projection/model.d.ts.map +1 -1
  82. package/dist/item-projection/model.js +6 -2
  83. package/dist/item-projection/model.js.map +1 -1
  84. package/dist/loop-control/loop-control.d.ts +5 -5
  85. package/dist/loop-control/loop-control.d.ts.map +1 -1
  86. package/dist/loop-control/loop-control.js +4 -4
  87. package/dist/loop-control/loop-control.js.map +1 -1
  88. package/dist/loop-control/model.d.ts +1 -1
  89. package/dist/loop-control/model.d.ts.map +1 -1
  90. package/dist/loop-control/model.js +1 -1
  91. package/dist/loop-control/model.js.map +1 -1
  92. package/dist/repository-label-projection/model.d.ts +2 -2
  93. package/dist/repository-label-projection/model.d.ts.map +1 -1
  94. package/dist/repository-label-projection/model.js +2 -2
  95. package/dist/repository-label-projection/model.js.map +1 -1
  96. package/dist/repository-label-projection/repository-label-projection.d.ts +1 -1
  97. package/dist/repository-label-projection/repository-label-projection.d.ts.map +1 -1
  98. package/dist/repository-label-projection/repository-label-projection.js +1 -1
  99. package/dist/repository-label-projection/repository-label-projection.js.map +1 -1
  100. package/dist/run-reader/model.d.ts +62 -4
  101. package/dist/run-reader/model.d.ts.map +1 -1
  102. package/dist/run-reader/model.js +66 -7
  103. package/dist/run-reader/model.js.map +1 -1
  104. package/dist/run-reader/run-reader.d.ts +19 -9
  105. package/dist/run-reader/run-reader.d.ts.map +1 -1
  106. package/dist/run-reader/run-reader.js +23 -7
  107. package/dist/run-reader/run-reader.js.map +1 -1
  108. package/dist/step-executor.d.ts +64 -10
  109. package/dist/step-executor.d.ts.map +1 -1
  110. package/dist/step-executor.js +10 -2
  111. package/dist/step-executor.js.map +1 -1
  112. package/dist/store/attempt-windows.d.ts +8 -0
  113. package/dist/store/attempt-windows.d.ts.map +1 -0
  114. package/dist/store/attempt-windows.js +53 -0
  115. package/dist/store/attempt-windows.js.map +1 -0
  116. package/dist/store/codec.d.ts +207 -42
  117. package/dist/store/codec.d.ts.map +1 -1
  118. package/dist/store/codec.js +52 -14
  119. package/dist/store/codec.js.map +1 -1
  120. package/dist/store/leftovers.d.ts +10 -0
  121. package/dist/store/leftovers.d.ts.map +1 -0
  122. package/dist/store/leftovers.js +43 -0
  123. package/dist/store/leftovers.js.map +1 -0
  124. package/dist/store/loop-items.d.ts +16 -0
  125. package/dist/store/loop-items.d.ts.map +1 -0
  126. package/dist/store/loop-items.js +185 -0
  127. package/dist/store/loop-items.js.map +1 -0
  128. package/dist/store/queries.d.ts +342 -35
  129. package/dist/store/queries.d.ts.map +1 -1
  130. package/dist/store/queries.js +302 -107
  131. package/dist/store/queries.js.map +1 -1
  132. package/dist/store/store.d.ts +91 -54
  133. package/dist/store/store.d.ts.map +1 -1
  134. package/dist/store/store.js +468 -190
  135. package/dist/store/store.js.map +1 -1
  136. package/dist/store/transcript.d.ts +3 -3
  137. package/dist/store/transcript.d.ts.map +1 -1
  138. package/dist/store/transcript.js +25 -6
  139. package/dist/store/transcript.js.map +1 -1
  140. package/dist/transcript.d.ts +19 -20
  141. package/dist/transcript.d.ts.map +1 -1
  142. package/dist/transcript.js +23 -21
  143. package/dist/transcript.js.map +1 -1
  144. package/dist/trigger-condition.d.ts +23 -0
  145. package/dist/trigger-condition.d.ts.map +1 -0
  146. package/dist/trigger-condition.js +8 -0
  147. package/dist/trigger-condition.js.map +1 -0
  148. package/drizzle/20260917071139_resolve_run_failure/migration.sql +1 -0
  149. package/drizzle/20260917071139_resolve_run_failure/snapshot.json +1471 -0
  150. package/drizzle/20260918032643_attempt_salvage/migration.sql +1 -0
  151. package/drizzle/20260918032643_attempt_salvage/snapshot.json +1481 -0
  152. package/drizzle/20261011153856_drop_workflow_tables/migration.sql +4 -0
  153. package/drizzle/20261011153856_drop_workflow_tables/snapshot.json +1433 -0
  154. package/drizzle/20261017155043_attempt_salvage_check/migration.sql +41 -0
  155. package/drizzle/20261017155043_attempt_salvage_check/snapshot.json +1421 -0
  156. package/drizzle/20261018162700_discard_attempt_leftovers/migration.sql +1 -0
  157. package/drizzle/20261018162700_discard_attempt_leftovers/snapshot.json +1431 -0
  158. package/drizzle/20261018172605_loop_items_and_reopenings/migration.sql +15 -0
  159. package/drizzle/20261018172605_loop_items_and_reopenings/snapshot.json +1574 -0
  160. package/drizzle/20261018180339_attempt_ended_at/migration.sql +1 -0
  161. package/drizzle/20261018180339_attempt_ended_at/snapshot.json +1584 -0
  162. package/drizzle/20261019104043_run_approval_source/migration.sql +15 -0
  163. package/drizzle/20261019104043_run_approval_source/snapshot.json +1610 -0
  164. package/drizzle/20261019133538_board_moves/migration.sql +14 -0
  165. package/drizzle/20261019133538_board_moves/snapshot.json +1731 -0
  166. package/drizzle/20261019170538_item_projection_gone/migration.sql +1 -0
  167. package/drizzle/20261019170538_item_projection_gone/snapshot.json +1741 -0
  168. package/drizzle/20261019180649_run_again_events/migration.sql +7 -0
  169. package/drizzle/20261019180649_run_again_events/snapshot.json +1804 -0
  170. package/drizzle/20261019185008_trigger_event_permissions/migration.sql +1 -0
  171. package/drizzle/20261019185008_trigger_event_permissions/snapshot.json +1814 -0
  172. package/drizzle/20261020103746_attempt_start/migration.sql +5 -0
  173. package/drizzle/20261020103746_attempt_start/snapshot.json +1844 -0
  174. package/drizzle/20261020125211_attempt_comments/migration.sql +1 -0
  175. package/drizzle/20261020125211_attempt_comments/snapshot.json +1854 -0
  176. package/drizzle/20261020191320_run_closed_at/migration.sql +6 -0
  177. package/drizzle/20261020191320_run_closed_at/snapshot.json +1864 -0
  178. package/drizzle/20261023091428_rename_loop_item_hold_to_suppression/migration.sql +2 -0
  179. package/drizzle/20261023091428_rename_loop_item_hold_to_suppression/snapshot.json +1867 -0
  180. package/package.json +15 -5
  181. package/dist/workflow/admission.d.ts.map +0 -1
  182. package/dist/workflow/admission.js.map +0 -1
  183. package/dist/workflow/command.d.ts +0 -13
  184. package/dist/workflow/command.d.ts.map +0 -1
  185. package/dist/workflow/command.js +0 -17
  186. package/dist/workflow/command.js.map +0 -1
  187. package/dist/workflow/workflow.d.ts +0 -18
  188. package/dist/workflow/workflow.d.ts.map +0 -1
  189. package/dist/workflow/workflow.js +0 -108
  190. package/dist/workflow/workflow.js.map +0 -1
@@ -1,16 +1,316 @@
1
1
  import type { Agent } from "@usine/core/agent";
2
2
  import { Attempt, AttemptContext } from "@usine/core/attempt";
3
- import { Event } from "@usine/core/event";
3
+ import { Event, EventId } from "@usine/core/event";
4
+ import type { RunAgain } from "@usine/core/run/again";
5
+ import type { ApprovalSource } from "@usine/core/run/approval";
4
6
  import * as RunState from "@usine/core/run/state";
5
- import { StepResult } from "@usine/core/step/result";
7
+ import { type Comment, StepResult } from "@usine/core/step/result";
8
+ import { type SQL, type SQLWrapper } from "drizzle-orm";
6
9
  import { DateTime, Effect, Option, Schema } from "effect";
7
10
  import type { RunDatabaseClient } from "../database/database.ts";
8
11
  import { RunNotFoundError } from "../engine/error.ts";
9
12
  import { RunSnapshot, RunSummary } from "../run-reader/model.ts";
10
13
  import { Submission } from "../engine/submission.ts";
14
+ /** The newest queued submission and the Events read with it. */
15
+ export interface QueuedEvents {
16
+ readonly submission: Submission;
17
+ readonly eventIds: ReadonlyArray<EventId>;
18
+ }
19
+ export declare const attemptSelection: {
20
+ readonly attemptId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
21
+ name: string;
22
+ tableName: "usine_attempts";
23
+ dataType: "string";
24
+ data: string & import("effect/Brand").Brand<"AttemptId">;
25
+ driverParam: string;
26
+ notNull: true;
27
+ hasDefault: false;
28
+ isPrimaryKey: true;
29
+ isAutoincrement: false;
30
+ hasRuntimeDefault: false;
31
+ enumValues: [string, ...string[]];
32
+ baseColumn: never;
33
+ identity: undefined;
34
+ generated: undefined;
35
+ }, {}>;
36
+ readonly runId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
37
+ name: string;
38
+ tableName: "usine_attempts";
39
+ dataType: "string";
40
+ data: string & import("effect/Brand").Brand<"RunId">;
41
+ driverParam: string;
42
+ notNull: true;
43
+ hasDefault: false;
44
+ isPrimaryKey: false;
45
+ isAutoincrement: false;
46
+ hasRuntimeDefault: false;
47
+ enumValues: [string, ...string[]];
48
+ baseColumn: never;
49
+ identity: undefined;
50
+ generated: undefined;
51
+ }, {}>;
52
+ readonly stepName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
53
+ name: string;
54
+ tableName: "usine_attempts";
55
+ dataType: "string";
56
+ data: string & import("effect/Brand").Brand<"StepName">;
57
+ driverParam: string;
58
+ notNull: true;
59
+ hasDefault: false;
60
+ isPrimaryKey: false;
61
+ isAutoincrement: false;
62
+ hasRuntimeDefault: false;
63
+ enumValues: [string, ...string[]];
64
+ baseColumn: never;
65
+ identity: undefined;
66
+ generated: undefined;
67
+ }, {}>;
68
+ readonly worker: import("drizzle-orm/sqlite-core").SQLiteColumn<{
69
+ name: string;
70
+ tableName: "usine_attempts";
71
+ dataType: "string";
72
+ data: string & import("effect/Brand").Brand<"WorkerName">;
73
+ driverParam: string;
74
+ notNull: true;
75
+ hasDefault: false;
76
+ isPrimaryKey: false;
77
+ isAutoincrement: false;
78
+ hasRuntimeDefault: false;
79
+ enumValues: [string, ...string[]];
80
+ baseColumn: never;
81
+ identity: undefined;
82
+ generated: undefined;
83
+ }, {}>;
84
+ readonly number: import("drizzle-orm/sqlite-core").SQLiteColumn<{
85
+ name: string;
86
+ tableName: "usine_attempts";
87
+ dataType: "number int53";
88
+ data: number & import("effect/Brand").Brand<"AttemptNumber">;
89
+ driverParam: number;
90
+ notNull: true;
91
+ hasDefault: false;
92
+ isPrimaryKey: false;
93
+ isAutoincrement: false;
94
+ hasRuntimeDefault: false;
95
+ enumValues: undefined;
96
+ baseColumn: never;
97
+ identity: undefined;
98
+ generated: undefined;
99
+ }, {}>;
100
+ readonly brain: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: string;
102
+ tableName: "usine_attempts";
103
+ dataType: "object json";
104
+ data: unknown;
105
+ driverParam: string;
106
+ notNull: true;
107
+ hasDefault: false;
108
+ isPrimaryKey: false;
109
+ isAutoincrement: false;
110
+ hasRuntimeDefault: false;
111
+ enumValues: undefined;
112
+ baseColumn: never;
113
+ identity: undefined;
114
+ generated: undefined;
115
+ }, {}>;
116
+ readonly task: import("drizzle-orm/sqlite-core").SQLiteColumn<{
117
+ name: string;
118
+ tableName: "usine_attempts";
119
+ dataType: "string";
120
+ data: string & import("effect/Brand").Brand<"AttemptTask">;
121
+ driverParam: string;
122
+ notNull: true;
123
+ hasDefault: false;
124
+ isPrimaryKey: false;
125
+ isAutoincrement: false;
126
+ hasRuntimeDefault: false;
127
+ enumValues: [string, ...string[]];
128
+ baseColumn: never;
129
+ identity: undefined;
130
+ generated: undefined;
131
+ }, {}>;
132
+ readonly agent: import("drizzle-orm/sqlite-core").SQLiteColumn<{
133
+ name: string;
134
+ tableName: "usine_attempts";
135
+ dataType: "string";
136
+ data: string & import("effect/Brand").Brand<"AgentName">;
137
+ driverParam: string;
138
+ notNull: true;
139
+ hasDefault: false;
140
+ isPrimaryKey: false;
141
+ isAutoincrement: false;
142
+ hasRuntimeDefault: false;
143
+ enumValues: [string, ...string[]];
144
+ baseColumn: never;
145
+ identity: undefined;
146
+ generated: undefined;
147
+ }, {}>;
148
+ readonly operatorIntervened: import("drizzle-orm/sqlite-core").SQLiteColumn<{
149
+ name: string;
150
+ tableName: "usine_attempts";
151
+ dataType: "boolean";
152
+ data: boolean;
153
+ driverParam: number;
154
+ notNull: true;
155
+ hasDefault: true;
156
+ isPrimaryKey: false;
157
+ isAutoincrement: false;
158
+ hasRuntimeDefault: false;
159
+ enumValues: undefined;
160
+ baseColumn: never;
161
+ identity: undefined;
162
+ generated: undefined;
163
+ }, {}>;
164
+ readonly parentModel: import("drizzle-orm/sqlite-core").SQLiteColumn<{
165
+ name: string;
166
+ tableName: "usine_attempts";
167
+ dataType: "string";
168
+ data: string & import("effect/Brand").Brand<"ModelId">;
169
+ driverParam: string;
170
+ notNull: false;
171
+ hasDefault: false;
172
+ isPrimaryKey: false;
173
+ isAutoincrement: false;
174
+ hasRuntimeDefault: false;
175
+ enumValues: [string, ...string[]];
176
+ baseColumn: never;
177
+ identity: undefined;
178
+ generated: undefined;
179
+ }, {}>;
180
+ readonly startedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
181
+ name: string;
182
+ tableName: "usine_attempts";
183
+ dataType: "string";
184
+ data: string;
185
+ driverParam: string;
186
+ notNull: true;
187
+ hasDefault: false;
188
+ isPrimaryKey: false;
189
+ isAutoincrement: false;
190
+ hasRuntimeDefault: false;
191
+ enumValues: [string, ...string[]];
192
+ baseColumn: never;
193
+ identity: undefined;
194
+ generated: undefined;
195
+ }, {}>;
196
+ readonly outcome: import("drizzle-orm/sqlite-core").SQLiteColumn<{
197
+ name: string;
198
+ tableName: "usine_attempts";
199
+ dataType: "object json";
200
+ data: unknown;
201
+ driverParam: string;
202
+ notNull: false;
203
+ hasDefault: false;
204
+ isPrimaryKey: false;
205
+ isAutoincrement: false;
206
+ hasRuntimeDefault: false;
207
+ enumValues: undefined;
208
+ baseColumn: never;
209
+ identity: undefined;
210
+ generated: undefined;
211
+ }, {}>;
212
+ readonly endedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
213
+ name: string;
214
+ tableName: "usine_attempts";
215
+ dataType: "string";
216
+ data: string;
217
+ driverParam: string;
218
+ notNull: false;
219
+ hasDefault: false;
220
+ isPrimaryKey: false;
221
+ isAutoincrement: false;
222
+ hasRuntimeDefault: false;
223
+ enumValues: [string, ...string[]];
224
+ baseColumn: never;
225
+ identity: undefined;
226
+ generated: undefined;
227
+ }, {}>;
228
+ readonly salvage: import("drizzle-orm/sqlite-core").SQLiteColumn<{
229
+ name: string;
230
+ tableName: "usine_attempts";
231
+ dataType: "object json";
232
+ data: unknown;
233
+ driverParam: string;
234
+ notNull: false;
235
+ hasDefault: false;
236
+ isPrimaryKey: false;
237
+ isAutoincrement: false;
238
+ hasRuntimeDefault: false;
239
+ enumValues: undefined;
240
+ baseColumn: never;
241
+ identity: undefined;
242
+ generated: undefined;
243
+ }, {}>;
244
+ readonly start: import("drizzle-orm/sqlite-core").SQLiteColumn<{
245
+ name: string;
246
+ tableName: "usine_attempts";
247
+ dataType: "object json";
248
+ data: unknown;
249
+ driverParam: string;
250
+ notNull: false;
251
+ hasDefault: false;
252
+ isPrimaryKey: false;
253
+ isAutoincrement: false;
254
+ hasRuntimeDefault: false;
255
+ enumValues: undefined;
256
+ baseColumn: never;
257
+ identity: undefined;
258
+ generated: undefined;
259
+ }, {}>;
260
+ readonly reattachedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
261
+ name: string;
262
+ tableName: "usine_attempts";
263
+ dataType: "string";
264
+ data: string;
265
+ driverParam: string;
266
+ notNull: false;
267
+ hasDefault: false;
268
+ isPrimaryKey: false;
269
+ isAutoincrement: false;
270
+ hasRuntimeDefault: false;
271
+ enumValues: [string, ...string[]];
272
+ baseColumn: never;
273
+ identity: undefined;
274
+ generated: undefined;
275
+ }, {}>;
276
+ readonly comments: import("drizzle-orm/sqlite-core").SQLiteColumn<{
277
+ name: string;
278
+ tableName: "usine_attempts";
279
+ dataType: "object json";
280
+ data: unknown;
281
+ driverParam: string;
282
+ notNull: false;
283
+ hasDefault: false;
284
+ isPrimaryKey: false;
285
+ isAutoincrement: false;
286
+ hasRuntimeDefault: false;
287
+ enumValues: undefined;
288
+ baseColumn: never;
289
+ identity: undefined;
290
+ generated: undefined;
291
+ }, {}>;
292
+ };
11
293
  export declare const queriesFor: (database: RunDatabaseClient) => {
12
- readonly appendTranscript: (direction: "inbound" | "outbound", envelope: import("@usine/core/attempt/channel").InboundEnvelope | import("@usine/core/attempt/channel").OutboundEnvelope, receivedAt: DateTime.Utc) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
13
- readonly transcript: (query: import("../transcript.ts").TranscriptAllQuery | import("../transcript.ts").TranscriptPageQuery | import("../transcript.ts").TranscriptSessionsQuery | import("../transcript.ts").TranscriptTailQuery) => Effect.Effect<import("../transcript.ts").TranscriptEntry[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
294
+ readonly appendTranscript: (direction: "inbound" | "outbound", envelope: import("@usine/core/attempt/channel").InboundEnvelope | import("@usine/core/attempt/channel").OutboundEnvelope, receivedAt: DateTime.Utc) => Effect.Effect<boolean, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
295
+ readonly transcript: (query: import("../transcript.ts").TranscriptAllQuery | import("../transcript.ts").TranscriptPageQuery | import("../transcript.ts").TranscriptSessionsQuery | import("../transcript.ts").TranscriptTailQuery | import("../transcript.ts").TranscriptUsageQuery) => Effect.Effect<import("../transcript.ts").TranscriptEntry[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
296
+ readonly salvageCandidates: () => Effect.Effect<{
297
+ attemptId: string & import("effect/Brand").Brand<"AttemptId">;
298
+ worker: string & import("effect/Brand").Brand<"WorkerName">;
299
+ repository: string & import("effect/Brand").Brand<"RepositoryName">;
300
+ permissions: "read" | "write";
301
+ ref: string & import("effect/Brand").Brand<"SalvageRef">;
302
+ succeeded: boolean;
303
+ open: boolean;
304
+ }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
305
+ readonly salvageCandidate: (attemptId: string & import("effect/Brand").Brand<"AttemptId">) => Effect.Effect<Option.Option<{
306
+ attemptId: string & import("effect/Brand").Brand<"AttemptId">;
307
+ worker: string & import("effect/Brand").Brand<"WorkerName">;
308
+ repository: string & import("effect/Brand").Brand<"RepositoryName">;
309
+ permissions: "read" | "write";
310
+ ref: string & import("effect/Brand").Brand<"SalvageRef">;
311
+ succeeded: boolean;
312
+ open: boolean;
313
+ }>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
14
314
  readonly cycles: {
15
315
  admit: (submission: Submission) => Effect.Effect<Option.Option<import("@usine/core/cycle-budget").CycleBudgetAsk>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
16
316
  reserve: (submission: Submission, runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<undefined, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
@@ -30,17 +330,31 @@ export declare const queriesFor: (database: RunDatabaseClient) => {
30
330
  readonly resetPending: boolean;
31
331
  }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
32
332
  isCurrentEvent: (submission: Submission) => Effect.Effect<boolean, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
33
- currentEvent: import("drizzle-orm").SQL<unknown>;
333
+ currentEvent: SQL<unknown>;
334
+ };
335
+ readonly loopItems: {
336
+ readonly sighted: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">, eventId: string & import("effect/Brand").Brand<"EventId">) => Effect.Effect<import("../engine/lifecycle.ts").PreviousSighting, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
337
+ readonly unmatched: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
338
+ readonly suppression: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">) => Effect.Effect<Option.Option<import("../engine/lifecycle.ts").Suppression>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
339
+ readonly startSuppression: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">, runId: string & import("effect/Brand").Brand<"RunId">, opened: string & import("effect/Brand").Brand<"EventId">, queued: Option.Option<string & import("effect/Brand").Brand<"EventId">>) => Effect.Effect<boolean, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
340
+ readonly suppressFrom: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">, eventId: string & import("effect/Brand").Brand<"EventId">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
341
+ readonly lift: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
342
+ readonly liftRun: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<boolean, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
343
+ readonly sightings: (itemKeys: readonly (string & import("effect/Brand").Brand<"ItemKey">)[]) => Effect.Effect<import("../run-reader/model.ts").LoopSighting[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
34
344
  };
35
345
  readonly addAttempt: (attempt: Attempt) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
346
+ readonly recordReattach: (attemptId: string & import("effect/Brand").Brand<"AttemptId">, reattachedAt: DateTime.Utc) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
347
+ readonly nextStart: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<Option.Option<NonNullable<import("@usine/core/attempt/start").StartedByEditAndRetry | import("@usine/core/attempt/start").StartedByRetry | null | undefined>>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
348
+ readonly setNextStart: (runId: string & import("effect/Brand").Brand<"RunId">, start: Option.Option<import("@usine/core/attempt/start").StartedByEditAndRetry | import("@usine/core/attempt/start").StartedByRetry>) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
349
+ readonly recordSalvage: (attemptId: string & import("effect/Brand").Brand<"AttemptId">, salvage: import("@usine/core/attempt/salvage").SalvagePushed | import("@usine/core/attempt/salvage").SalvageRetained) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
350
+ readonly recordComments: (attemptId: string & import("effect/Brand").Brand<"AttemptId">, comments: readonly Comment[]) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
36
351
  readonly amend: (runId: string & import("effect/Brand").Brand<"RunId">, context: AttemptContext) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
37
352
  readonly markIntervened: (attemptId: string & import("effect/Brand").Brand<"AttemptId">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
38
353
  readonly approvalExists: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<boolean, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
39
354
  readonly blockingRun: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">) => Effect.Effect<readonly {
40
355
  readonly runId: string & import("effect/Brand").Brand<"RunId">;
41
356
  }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
42
- readonly closeAttempt: (attemptId: string & import("effect/Brand").Brand<"AttemptId">, outcome: import("@usine/core/attempt/outcome").AttemptCanceled | import("@usine/core/attempt/outcome").AttemptFailed | import("@usine/core/attempt/outcome").AttemptSucceeded) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
43
- readonly completeWorkflowCommand: (runId: string & import("effect/Brand").Brand<"RunId">, command: "Approve" | "Continue" | "Interrupt" | "Resume") => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
357
+ readonly closeAttempt: (attemptId: string & import("effect/Brand").Brand<"AttemptId">, outcome: import("@usine/core/attempt/outcome").AttemptCanceled | import("@usine/core/attempt/outcome").AttemptFailed | import("@usine/core/attempt/outcome").AttemptSucceeded, endedAt: DateTime.Utc) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
44
358
  readonly createRun: (submission: Submission, eventId: string & import("effect/Brand").Brand<"EventId">, runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
45
359
  readonly eventRouteByRun: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<readonly {
46
360
  readonly eventId: string & import("effect/Brand").Brand<"EventId">;
@@ -51,6 +365,7 @@ export declare const queriesFor: (database: RunDatabaseClient) => {
51
365
  readonly loop: string & import("effect/Brand").Brand<"LoopName">;
52
366
  readonly step: string & import("effect/Brand").Brand<"StepName">;
53
367
  readonly approval: "none" | "required";
368
+ readonly permissions: "read" | "write";
54
369
  readonly cycleLimit: (number & import("effect/Brand").Brand<"CycleLimit">) | null;
55
370
  readonly cycleGeneration: number & import("effect/Brand").Brand<"CycleGeneration">;
56
371
  readonly repository: string & import("effect/Brand").Brand<"RepositoryName">;
@@ -59,50 +374,42 @@ export declare const queriesFor: (database: RunDatabaseClient) => {
59
374
  readonly agent: Agent;
60
375
  readonly parentModel: (string & import("effect/Brand").Brand<"ModelId">) | null;
61
376
  }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
62
- readonly workflowCommandsFor: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<("Approve" | "Continue" | "Interrupt" | "Resume")[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
63
377
  readonly ignoredEvent: (eventId: string & import("effect/Brand").Brand<"EventId">) => Effect.Effect<readonly {
64
378
  readonly reason: "revoked" | "superseded";
65
379
  }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
66
- readonly nextQueued: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<Option.Option<Submission>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
67
- readonly pendingWorkflowCommands: () => Effect.Effect<{
68
- readonly runId: string & import("effect/Brand").Brand<"RunId">;
69
- readonly command: "Approve" | "Continue" | "Interrupt" | "Resume";
70
- }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
71
- readonly recordTriggerEvent: (submission: Submission) => Effect.Effect<Submission, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
72
- readonly recoverable: () => Effect.Effect<readonly {
380
+ readonly newestReopening: (eventId: string & import("effect/Brand").Brand<"EventId">) => Effect.Effect<Option.Option<{
381
+ submission: Submission;
382
+ reopening: number;
383
+ }>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
384
+ readonly nextQueued: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<Option.Option<QueuedEvents>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
385
+ readonly reopenedEvent: (eventId: string & import("effect/Brand").Brand<"EventId">) => Effect.Effect<Option.Option<{
73
386
  readonly eventId: string & import("effect/Brand").Brand<"EventId">;
74
387
  readonly dedupKey: string & import("effect/Brand").Brand<"DedupKey">;
75
- readonly payload: Schema.Json;
76
- readonly receivedAt: DateTime.Utc;
77
- readonly itemKey: string & import("effect/Brand").Brand<"ItemKey">;
78
- readonly loop: string & import("effect/Brand").Brand<"LoopName">;
79
- readonly step: string & import("effect/Brand").Brand<"StepName">;
80
- readonly approval: "none" | "required";
81
- readonly cycleLimit: (number & import("effect/Brand").Brand<"CycleLimit">) | null;
82
- readonly cycleGeneration: number & import("effect/Brand").Brand<"CycleGeneration">;
83
- readonly repository: string & import("effect/Brand").Brand<"RepositoryName">;
84
- readonly revision: string & import("effect/Brand").Brand<"RepositoryRevision">;
85
- readonly task: string & import("effect/Brand").Brand<"AttemptTask">;
86
- readonly agent: Agent;
87
- readonly parentModel: (string & import("effect/Brand").Brand<"ModelId">) | null;
88
- readonly runId: string & import("effect/Brand").Brand<"RunId">;
89
- readonly state: RunState.Canceled | RunState.Failed | RunState.Pending | RunState.Queued | RunState.Running | RunState.Succeeded | RunState.Waiting;
90
- }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
91
- readonly recordApproval: (runId: string & import("effect/Brand").Brand<"RunId">, approval: Event) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
92
- readonly requestInterrupt: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
93
- readonly requestWorkflowCommand: (runId: string & import("effect/Brand").Brand<"RunId">, command: "Approve" | "Continue" | "Interrupt" | "Resume") => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
388
+ }>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
389
+ readonly recordRunAgain: (eventId: string & import("effect/Brand").Brand<"EventId">, again: RunAgain) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
390
+ readonly pendingContinuations: () => Effect.Effect<(string & import("effect/Brand").Brand<"RunId">)[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
391
+ readonly recordTriggerEvent: (submission: Submission, reopens?: Option.Option<{
392
+ readonly eventId: EventId;
393
+ readonly reopening: number;
394
+ }> | undefined) => Effect.Effect<Submission, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
395
+ readonly runIdsToDrive: () => Effect.Effect<(string & import("effect/Brand").Brand<"RunId">)[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
396
+ readonly recordApproval: (runId: string & import("effect/Brand").Brand<"RunId">, approval: Event, source: ApprovalSource) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
94
397
  readonly revision: () => Effect.Effect<Option.Option<number & import("effect/Brand").Brand<"ProjectionRevision">>, import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
398
+ readonly revokeQueued: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">, eventIds: readonly (string & import("effect/Brand").Brand<"EventId">)[] | SQLWrapper<unknown>) => Effect.Effect<number, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
95
399
  readonly revokeUnstarted: (loop: string & import("effect/Brand").Brand<"LoopName">, itemKey: string & import("effect/Brand").Brand<"ItemKey">) => Effect.Effect<readonly {
96
400
  readonly runId: string & import("effect/Brand").Brand<"RunId">;
97
401
  }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
98
402
  readonly runSummaries: (closedLimit: number) => Effect.Effect<RunSummary[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
403
+ readonly closedRunSummaries: (limit: number) => Effect.Effect<RunSummary[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
99
404
  readonly itemRunSummaries: (itemKeys: readonly (string & import("effect/Brand").Brand<"ItemKey">)[]) => Effect.Effect<RunSummary[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
405
+ readonly runEvents: (runIds: readonly (string & import("effect/Brand").Brand<"RunId">)[]) => Effect.Effect<import("../run-reader/model.ts").RunEvent[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
100
406
  readonly runForEvent: (eventId: string & import("effect/Brand").Brand<"EventId">) => Effect.Effect<readonly {
101
407
  readonly runId: string & import("effect/Brand").Brand<"RunId">;
102
408
  }[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | Schema.SchemaError, never>;
103
409
  readonly snapshot: (runId: string & import("effect/Brand").Brand<"RunId">) => Effect.Effect<RunSnapshot, import("drizzle-orm/effect-core").EffectDrizzleQueryError | RunNotFoundError | Schema.SchemaError, never>;
104
410
  readonly updateStepResult: (runId: string & import("effect/Brand").Brand<"RunId">, stepName: string & import("effect/Brand").Brand<"StepName">, result: StepResult) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
105
411
  readonly updateAttemptParentModel: (attemptId: string & import("effect/Brand").Brand<"AttemptId">, parentModel: string & import("effect/Brand").Brand<"ModelId">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
106
- readonly updateState: (runId: string & import("effect/Brand").Brand<"RunId">, state: RunState.Canceled | RunState.Failed | RunState.Pending | RunState.Queued | RunState.Running | RunState.Succeeded | RunState.Waiting) => Effect.Effect<undefined, import("drizzle-orm/effect-core").EffectDrizzleQueryError | RunNotFoundError, never>;
412
+ readonly updateState: (runId: string & import("effect/Brand").Brand<"RunId">, state: RunState.Canceled | RunState.Failed | RunState.Pending | RunState.Queued | RunState.Running | RunState.Succeeded | RunState.Waiting, at?: DateTime.Utc | undefined) => Effect.Effect<undefined, import("drizzle-orm/effect-core").EffectDrizzleQueryError | RunNotFoundError, never>;
413
+ readonly resolveFailure: (runId: string & import("effect/Brand").Brand<"RunId">, attemptId: string & import("effect/Brand").Brand<"AttemptId">) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
107
414
  };
108
415
  //# sourceMappingURL=queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/store/queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAa,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,KAAK,EAAqB,MAAM,mBAAmB,CAAC;AAK7D,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAwB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAYjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA6FrD,eAAO,MAAM,UAAU,aAAc,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+jBrD,CAAC"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/store/queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAa,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAKxF,OAAO,EAAE,KAAK,EAAY,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAUL,KAAK,GAAG,EACR,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAwB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAcjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAsCrD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC3C;AAkDD,eAAO,MAAM,gBAAgB;aAC3B,SAAS;;;;;;;;;;;;;;;;aACT,KAAK;;;;;;;;;;;;;;;;aACL,QAAQ;;;;;;;;;;;;;;;;aACR,MAAM;;;;;;;;;;;;;;;;aACN,MAAM;;;;;;;;;;;;;;;;aACN,KAAK;;;;;;;;;;;;;;;;aACL,IAAI;;;;;;;;;;;;;;;;aACJ,KAAK;;;;;;;;;;;;;;;;aACL,kBAAkB;;;;;;;;;;;;;;;;aAClB,WAAW;;;;;;;;;;;;;;;;aACX,SAAS;;;;;;;;;;;;;;;;aACT,OAAO;;;;;;;;;;;;;;;;aACP,OAAO;;;;;;;;;;;;;;;;aACP,OAAO;;;;;;;;;;;;;;;;aACP,KAAK;;;;;;;;;;;;;;;;aACL,YAAY;;;;;;;;;;;;;;;;aACZ,QAAQ;;;;;;;;;;;;;;;;CACA,CAAC;AAUX,eAAO,MAAM,UAAU,aAAc,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAskB9B,OAAO;4BACL,MAAM;;;;;;;;;;;;;;;;;;;;;CA6O/B,CAAC"}