@usine/engine 0.3.0 → 0.5.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 (201) hide show
  1. package/LICENSE +661 -21
  2. package/README.md +112 -38
  3. package/dist/board-moves/board-moves.d.ts +20 -0
  4. package/dist/board-moves/board-moves.d.ts.map +1 -0
  5. package/dist/board-moves/board-moves.js +74 -0
  6. package/dist/board-moves/board-moves.js.map +1 -0
  7. package/dist/board-moves/model.d.ts +21 -0
  8. package/dist/board-moves/model.d.ts.map +1 -0
  9. package/dist/board-moves/model.js +22 -0
  10. package/dist/board-moves/model.js.map +1 -0
  11. package/dist/cursor/cursor.d.ts +2 -6
  12. package/dist/cursor/cursor.d.ts.map +1 -1
  13. package/dist/cursor/cursor.js +2 -6
  14. package/dist/cursor/cursor.js.map +1 -1
  15. package/dist/cycle-budget/cycle-budget.d.ts +14 -8
  16. package/dist/cycle-budget/cycle-budget.d.ts.map +1 -1
  17. package/dist/cycle-budget/cycle-budget.js +51 -10
  18. package/dist/cycle-budget/cycle-budget.js.map +1 -1
  19. package/dist/cycle-budget/model.d.ts +6 -2
  20. package/dist/cycle-budget/model.d.ts.map +1 -1
  21. package/dist/cycle-budget/model.js +5 -2
  22. package/dist/cycle-budget/model.js.map +1 -1
  23. package/dist/cycle-budget/queries.d.ts +1 -1
  24. package/dist/cycle-budget/queries.d.ts.map +1 -1
  25. package/dist/cycle-budget/queries.js +3 -3
  26. package/dist/cycle-budget/queries.js.map +1 -1
  27. package/dist/database/database.d.ts +1 -1
  28. package/dist/database/database.d.ts.map +1 -1
  29. package/dist/database/local-sqlite.d.ts +13 -10
  30. package/dist/database/local-sqlite.d.ts.map +1 -1
  31. package/dist/database/local-sqlite.js +22 -17
  32. package/dist/database/local-sqlite.js.map +1 -1
  33. package/dist/database/schema.d.ts +668 -36
  34. package/dist/database/schema.d.ts.map +1 -1
  35. package/dist/database/schema.js +123 -23
  36. package/dist/database/schema.js.map +1 -1
  37. package/dist/{workflow → engine}/admission.d.ts +2 -2
  38. package/dist/engine/admission.d.ts.map +1 -0
  39. package/dist/{workflow → engine}/admission.js +4 -4
  40. package/dist/engine/admission.js.map +1 -0
  41. package/dist/engine/checkout-recovery.d.ts +79 -0
  42. package/dist/engine/checkout-recovery.d.ts.map +1 -0
  43. package/dist/engine/checkout-recovery.js +238 -0
  44. package/dist/engine/checkout-recovery.js.map +1 -0
  45. package/dist/engine/engine.d.ts +67 -26
  46. package/dist/engine/engine.d.ts.map +1 -1
  47. package/dist/engine/engine.js +136 -129
  48. package/dist/engine/engine.js.map +1 -1
  49. package/dist/engine/error.d.ts +29 -10
  50. package/dist/engine/error.d.ts.map +1 -1
  51. package/dist/engine/error.js +28 -8
  52. package/dist/engine/error.js.map +1 -1
  53. package/dist/engine/lifecycle.d.ts +83 -28
  54. package/dist/engine/lifecycle.d.ts.map +1 -1
  55. package/dist/engine/lifecycle.js +94 -45
  56. package/dist/engine/lifecycle.js.map +1 -1
  57. package/dist/engine/retry.d.ts +16 -0
  58. package/dist/engine/retry.d.ts.map +1 -0
  59. package/dist/engine/retry.js +18 -0
  60. package/dist/engine/retry.js.map +1 -0
  61. package/dist/engine/run-again.d.ts +45 -0
  62. package/dist/engine/run-again.d.ts.map +1 -0
  63. package/dist/engine/run-again.js +56 -0
  64. package/dist/engine/run-again.js.map +1 -0
  65. package/dist/engine/run-driver.d.ts +68 -0
  66. package/dist/engine/run-driver.d.ts.map +1 -0
  67. package/dist/engine/run-driver.js +448 -0
  68. package/dist/engine/run-driver.js.map +1 -0
  69. package/dist/engine/shutdown.d.ts +3 -4
  70. package/dist/engine/shutdown.d.ts.map +1 -1
  71. package/dist/engine/shutdown.js +3 -4
  72. package/dist/engine/shutdown.js.map +1 -1
  73. package/dist/engine/submission.d.ts +31 -11
  74. package/dist/engine/submission.d.ts.map +1 -1
  75. package/dist/engine/submission.js +43 -12
  76. package/dist/engine/submission.js.map +1 -1
  77. package/dist/engine/unconfirmed-stops.d.ts +27 -0
  78. package/dist/engine/unconfirmed-stops.d.ts.map +1 -0
  79. package/dist/engine/unconfirmed-stops.js +26 -0
  80. package/dist/engine/unconfirmed-stops.js.map +1 -0
  81. package/dist/item-projection/item-projection.d.ts +14 -4
  82. package/dist/item-projection/item-projection.d.ts.map +1 -1
  83. package/dist/item-projection/item-projection.js +60 -14
  84. package/dist/item-projection/item-projection.js.map +1 -1
  85. package/dist/item-projection/model.d.ts +5 -1
  86. package/dist/item-projection/model.d.ts.map +1 -1
  87. package/dist/item-projection/model.js +6 -2
  88. package/dist/item-projection/model.js.map +1 -1
  89. package/dist/loop-control/loop-control.d.ts +5 -5
  90. package/dist/loop-control/loop-control.d.ts.map +1 -1
  91. package/dist/loop-control/loop-control.js +4 -4
  92. package/dist/loop-control/loop-control.js.map +1 -1
  93. package/dist/loop-control/model.d.ts +1 -1
  94. package/dist/loop-control/model.d.ts.map +1 -1
  95. package/dist/loop-control/model.js +1 -1
  96. package/dist/loop-control/model.js.map +1 -1
  97. package/dist/repository-label-projection/model.d.ts +2 -2
  98. package/dist/repository-label-projection/model.d.ts.map +1 -1
  99. package/dist/repository-label-projection/model.js +2 -2
  100. package/dist/repository-label-projection/model.js.map +1 -1
  101. package/dist/repository-label-projection/repository-label-projection.d.ts +1 -1
  102. package/dist/repository-label-projection/repository-label-projection.d.ts.map +1 -1
  103. package/dist/repository-label-projection/repository-label-projection.js +1 -1
  104. package/dist/repository-label-projection/repository-label-projection.js.map +1 -1
  105. package/dist/run-reader/model.d.ts +62 -4
  106. package/dist/run-reader/model.d.ts.map +1 -1
  107. package/dist/run-reader/model.js +66 -7
  108. package/dist/run-reader/model.js.map +1 -1
  109. package/dist/run-reader/run-reader.d.ts +25 -10
  110. package/dist/run-reader/run-reader.d.ts.map +1 -1
  111. package/dist/run-reader/run-reader.js +25 -7
  112. package/dist/run-reader/run-reader.js.map +1 -1
  113. package/dist/step-executor.d.ts +86 -13
  114. package/dist/step-executor.d.ts.map +1 -1
  115. package/dist/step-executor.js +10 -2
  116. package/dist/step-executor.js.map +1 -1
  117. package/dist/store/attempt-windows.d.ts +8 -0
  118. package/dist/store/attempt-windows.d.ts.map +1 -0
  119. package/dist/store/attempt-windows.js +53 -0
  120. package/dist/store/attempt-windows.js.map +1 -0
  121. package/dist/store/codec.d.ts +242 -43
  122. package/dist/store/codec.d.ts.map +1 -1
  123. package/dist/store/codec.js +61 -16
  124. package/dist/store/codec.js.map +1 -1
  125. package/dist/store/leftovers.d.ts +10 -0
  126. package/dist/store/leftovers.d.ts.map +1 -0
  127. package/dist/store/leftovers.js +43 -0
  128. package/dist/store/leftovers.js.map +1 -0
  129. package/dist/store/loop-items.d.ts +16 -0
  130. package/dist/store/loop-items.d.ts.map +1 -0
  131. package/dist/store/loop-items.js +185 -0
  132. package/dist/store/loop-items.js.map +1 -0
  133. package/dist/store/queries.d.ts +385 -36
  134. package/dist/store/queries.d.ts.map +1 -1
  135. package/dist/store/queries.js +355 -107
  136. package/dist/store/queries.js.map +1 -1
  137. package/dist/store/store.d.ts +106 -54
  138. package/dist/store/store.d.ts.map +1 -1
  139. package/dist/store/store.js +497 -190
  140. package/dist/store/store.js.map +1 -1
  141. package/dist/store/transcript.d.ts +3 -3
  142. package/dist/store/transcript.d.ts.map +1 -1
  143. package/dist/store/transcript.js +25 -6
  144. package/dist/store/transcript.js.map +1 -1
  145. package/dist/transcript.d.ts +19 -20
  146. package/dist/transcript.d.ts.map +1 -1
  147. package/dist/transcript.js +23 -21
  148. package/dist/transcript.js.map +1 -1
  149. package/dist/trigger-condition.d.ts +23 -0
  150. package/dist/trigger-condition.d.ts.map +1 -0
  151. package/dist/trigger-condition.js +8 -0
  152. package/dist/trigger-condition.js.map +1 -0
  153. package/drizzle/20260917071139_resolve_run_failure/migration.sql +1 -0
  154. package/drizzle/20260917071139_resolve_run_failure/snapshot.json +1471 -0
  155. package/drizzle/20260918032643_attempt_salvage/migration.sql +1 -0
  156. package/drizzle/20260918032643_attempt_salvage/snapshot.json +1481 -0
  157. package/drizzle/20261011153856_drop_workflow_tables/migration.sql +4 -0
  158. package/drizzle/20261011153856_drop_workflow_tables/snapshot.json +1433 -0
  159. package/drizzle/20261017155043_attempt_salvage_check/migration.sql +41 -0
  160. package/drizzle/20261017155043_attempt_salvage_check/snapshot.json +1421 -0
  161. package/drizzle/20261018162700_discard_attempt_leftovers/migration.sql +1 -0
  162. package/drizzle/20261018162700_discard_attempt_leftovers/snapshot.json +1431 -0
  163. package/drizzle/20261018172605_loop_items_and_reopenings/migration.sql +15 -0
  164. package/drizzle/20261018172605_loop_items_and_reopenings/snapshot.json +1574 -0
  165. package/drizzle/20261018180339_attempt_ended_at/migration.sql +1 -0
  166. package/drizzle/20261018180339_attempt_ended_at/snapshot.json +1584 -0
  167. package/drizzle/20261019104043_run_approval_source/migration.sql +15 -0
  168. package/drizzle/20261019104043_run_approval_source/snapshot.json +1610 -0
  169. package/drizzle/20261019133538_board_moves/migration.sql +14 -0
  170. package/drizzle/20261019133538_board_moves/snapshot.json +1731 -0
  171. package/drizzle/20261019170538_item_projection_gone/migration.sql +1 -0
  172. package/drizzle/20261019170538_item_projection_gone/snapshot.json +1741 -0
  173. package/drizzle/20261019180649_run_again_events/migration.sql +7 -0
  174. package/drizzle/20261019180649_run_again_events/snapshot.json +1804 -0
  175. package/drizzle/20261019185008_trigger_event_permissions/migration.sql +1 -0
  176. package/drizzle/20261019185008_trigger_event_permissions/snapshot.json +1814 -0
  177. package/drizzle/20261020103746_attempt_start/migration.sql +5 -0
  178. package/drizzle/20261020103746_attempt_start/snapshot.json +1844 -0
  179. package/drizzle/20261020125211_attempt_comments/migration.sql +1 -0
  180. package/drizzle/20261020125211_attempt_comments/snapshot.json +1854 -0
  181. package/drizzle/20261020191320_run_closed_at/migration.sql +6 -0
  182. package/drizzle/20261020191320_run_closed_at/snapshot.json +1864 -0
  183. package/drizzle/20261023091428_rename_loop_item_hold_to_suppression/migration.sql +2 -0
  184. package/drizzle/20261023091428_rename_loop_item_hold_to_suppression/snapshot.json +1867 -0
  185. package/drizzle/20261024162954_cycle_ask_closures/migration.sql +10 -0
  186. package/drizzle/20261024162954_cycle_ask_closures/snapshot.json +1948 -0
  187. package/drizzle/20261027104206_attempt_out_of_memory/migration.sql +1 -0
  188. package/drizzle/20261027104206_attempt_out_of_memory/snapshot.json +1958 -0
  189. package/drizzle/20261027191944_failure_resolution/migration.sql +1 -0
  190. package/drizzle/20261027191944_failure_resolution/snapshot.json +1968 -0
  191. package/package.json +22 -12
  192. package/dist/workflow/admission.d.ts.map +0 -1
  193. package/dist/workflow/admission.js.map +0 -1
  194. package/dist/workflow/command.d.ts +0 -13
  195. package/dist/workflow/command.d.ts.map +0 -1
  196. package/dist/workflow/command.js +0 -17
  197. package/dist/workflow/command.js.map +0 -1
  198. package/dist/workflow/workflow.d.ts +0 -18
  199. package/dist/workflow/workflow.d.ts.map +0 -1
  200. package/dist/workflow/workflow.js +0 -108
  201. package/dist/workflow/workflow.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"loop-control.js","sourceRoot":"","sources":["../../src/loop-control/loop-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-control.js","sourceRoot":"","sources":["../../src/loop-control/loop-control.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ declare const LoopRuntimeState_base: Schema.Class<LoopRuntimeState, Schema.Struc
3
3
  readonly loop: Schema.brand<Schema.NonEmptyString, "LoopName">;
4
4
  readonly paused: Schema.Boolean;
5
5
  }>, {}>;
6
- /** Runtime state for one Loop. Authored loop files never carry this toggle. */
6
+ /** The runtime state of a Loop, not stored in Loop files. */
7
7
  export declare class LoopRuntimeState extends LoopRuntimeState_base {
8
8
  }
9
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/loop-control/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;AAEhC,+EAA+E;AAC/E,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/loop-control/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;AAEhC,6DAA6D;AAC7D,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG"}
@@ -1,6 +1,6 @@
1
1
  import { LoopName } from "@usine/core/loop";
2
2
  import { Schema } from "effect";
3
- /** Runtime state for one Loop. Authored loop files never carry this toggle. */
3
+ /** The runtime state of a Loop, not stored in Loop files. */
4
4
  export class LoopRuntimeState extends Schema.Class("@usine/engine/LoopRuntimeState")({
5
5
  loop: LoopName,
6
6
  paused: Schema.Boolean,
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/loop-control/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,+EAA+E;AAC/E,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,KAAK,CAChD,gCAAgC,CACjC,CAAC;IACA,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,MAAM,CAAC,OAAO;CACvB,CAAC;CAAG"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/loop-control/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,6DAA6D;AAC7D,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,KAAK,CAChD,gCAAgC,CACjC,CAAC;IACA,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,MAAM,CAAC,OAAO;CACvB,CAAC;CAAG"}
@@ -1,5 +1,5 @@
1
1
  import { Schema } from "effect";
2
- /** Six hex digits, as GitHub stores label colors. Absent for catalogs stored before colors were kept. */
2
+ /** A label color as six hex digits, absent in older catalogs. */
3
3
  export declare const RepositoryLabelColor: Schema.String;
4
4
  declare const RepositoryLabel_base: Schema.Class<RepositoryLabel, Schema.Struct<{
5
5
  readonly name: Schema.String;
@@ -12,7 +12,7 @@ declare const RepositoryLabelProjection_base: Schema.Class<RepositoryLabelProjec
12
12
  readonly repository: Schema.brand<Schema.String, "RepositoryName">;
13
13
  readonly labels: Schema.$Array<typeof RepositoryLabel>;
14
14
  }>, {}>;
15
- /** The latest complete label catalog polling observed for one repository. */
15
+ /** The latest complete label catalog that polling observed for a repository. */
16
16
  export declare class RepositoryLabelProjection extends RepositoryLabelProjection_base {
17
17
  }
18
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/repository-label-projection/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,yGAAyG;AACzG,eAAO,MAAM,oBAAoB,eAEhC,CAAC;;;;;;AAEF,qBAAa,eAAgB,SAAQ,oBAMpC;CAAG;;;;;AAQJ,6EAA6E;AAC7E,qBAAa,yBAA0B,SAAQ,8BAK7C;CAAG"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/repository-label-projection/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,eAEhC,CAAC;;;;;;AAEF,qBAAa,eAAgB,SAAQ,oBAMpC;CAAG;;;;;AAQJ,gFAAgF;AAChF,qBAAa,yBAA0B,SAAQ,8BAK7C;CAAG"}
@@ -1,7 +1,7 @@
1
1
  import { RepositoryName } from "@usine/core/repository";
2
2
  import { Schema } from "effect";
3
3
  const RepositoryLabelName = Schema.String.check(Schema.isPattern(/\S/u, { message: "Expected a non-blank repository label" }));
4
- /** Six hex digits, as GitHub stores label colors. Absent for catalogs stored before colors were kept. */
4
+ /** A label color as six hex digits, absent in older catalogs. */
5
5
  export const RepositoryLabelColor = Schema.String.check(Schema.isPattern(/^[0-9a-fA-F]{6}$/u, { message: "Expected a six-digit hex label color" }));
6
6
  export class RepositoryLabel extends Schema.Class("@usine/engine/RepositoryLabel")({
7
7
  name: RepositoryLabelName,
@@ -11,7 +11,7 @@ export class RepositoryLabel extends Schema.Class("@usine/engine/RepositoryLabel
11
11
  }
12
12
  const uniqueLabelNames = Schema.makeFilter((labels) => new Set(labels.map(({ name }) => name)).size === labels.length, { message: "Expected unique label names" });
13
13
  const RepositoryLabels = Schema.Array(RepositoryLabel).check(uniqueLabelNames);
14
- /** The latest complete label catalog polling observed for one repository. */
14
+ /** The latest complete label catalog that polling observed for a repository. */
15
15
  export class RepositoryLabelProjection extends Schema.Class("@usine/engine/RepositoryLabelProjection")({
16
16
  repository: RepositoryName,
17
17
  labels: RepositoryLabels,
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/repository-label-projection/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAC7C,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC,CAC9E,CAAC;AAEF,yGAAyG;AACzG,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACrD,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAC3F,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,+BAA+B,CAAC,CACjG;IACE,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;CACpD,CACF;CAAG;AAEJ,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CACxC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAC1E,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAC3C,CAAC;AACF,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAE/E,6EAA6E;AAC7E,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,KAAK,CACzD,yCAAyC,CAC1C,CAAC;IACA,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,gBAAgB;CACzB,CAAC;CAAG"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/repository-label-projection/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAC7C,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC,CAC9E,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACrD,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAC3F,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,+BAA+B,CAAC,CACjG;IACE,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;CACpD,CACF;CAAG;AAEJ,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CACxC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAC1E,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAC3C,CAAC;AACF,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAE/E,gFAAgF;AAChF,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,KAAK,CACzD,yCAAyC,CAC1C,CAAC;IACA,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,gBAAgB;CACzB,CAAC;CAAG"}
@@ -10,7 +10,7 @@ export declare class RepositoryLabelProjectionReader extends RepositoryLabelProj
10
10
  static readonly layer: Layer.Layer<RepositoryLabelProjectionReader, never, RunDatabase>;
11
11
  }
12
12
  declare const RepositoryLabelProjectionWriter_base: Context.ServiceClass<RepositoryLabelProjectionWriter, "@usine/engine/RepositoryLabelProjectionWriter", {
13
- /** `true` means the durable projection changed. */
13
+ /** Replaces the stored catalog and returns whether it changed. */
14
14
  readonly replace: (projection: RepositoryLabelProjection) => Effect.Effect<boolean, EnginePersistenceError>;
15
15
  }>;
16
16
  export declare class RepositoryLabelProjectionWriter extends RepositoryLabelProjectionWriter_base {
@@ -1 +1 @@
1
- {"version":3,"file":"repository-label-projection.d.ts","sourceRoot":"","sources":["../../src/repository-label-projection/repository-label-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAmB,yBAAyB,EAAE,MAAM,YAAY,CAAC;;kBA0FtD,CACZ,UAAU,EAAE,cAAc,KACvB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;;AALxF,qBAAa,+BAAgC,SAAQ,oCAOD;IAClD,MAAM,CAAC,QAAQ,CAAC,KAAK,mEAA6D;CACnF;;IAKG,mDAAmD;sBACjC,CAChB,UAAU,EAAE,yBAAyB,KAClC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB,CAAC;;AANvD,qBAAa,+BAAgC,SAAQ,oCAQD;IAClD,MAAM,CAAC,QAAQ,CAAC,KAAK,mEAA6D;CACnF;AAED,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"repository-label-projection.d.ts","sourceRoot":"","sources":["../../src/repository-label-projection/repository-label-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAmB,yBAAyB,EAAE,MAAM,YAAY,CAAC;;kBA0FtD,CACZ,UAAU,EAAE,cAAc,KACvB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,sBAAsB,CAAC;;AALxF,qBAAa,+BAAgC,SAAQ,oCAOD;IAClD,MAAM,CAAC,QAAQ,CAAC,KAAK,mEAA6D;CACnF;;IAKG,kEAAkE;sBAChD,CAChB,UAAU,EAAE,yBAAyB,KAClC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB,CAAC;;AANvD,qBAAa,+BAAgC,SAAQ,oCAQD;IAClD,MAAM,CAAC,QAAQ,CAAC,KAAK,mEAA6D;CACnF;AAED,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC"}
@@ -5,7 +5,7 @@ import { RunDatabase } from "../database/database.js";
5
5
  import { repositoryLabelProjections } from "../database/schema.js";
6
6
  import { EnginePersistenceError } from "../engine/error.js";
7
7
  import { RepositoryLabel, RepositoryLabelProjection } from "./model.js";
8
- /** Rows written before colors were kept are bare names and read as colorless labels. */
8
+ /** Older rows store bare names, read as labels without a color. */
9
9
  const LegacyLabelNames = Schema.Array(Schema.String);
10
10
  const isLegacyLabelNames = Schema.is(LegacyLabelNames);
11
11
  const RepositoryLabelProjectionRow = Schema.Struct({
@@ -1 +1 @@
1
- {"version":3,"file":"repository-label-projection.js","sourceRoot":"","sources":["../../src/repository-label-projection/repository-label-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository-label-projection.js","sourceRoot":"","sources":["../../src/repository-label-projection/repository-label-projection.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { Agent } from "@usine/core/agent";
2
2
  import { Attempt } from "@usine/core/attempt";
3
3
  import { Event } from "@usine/core/event";
4
4
  import { Run } from "@usine/core/run";
5
+ import { RunAgain } from "@usine/core/run/again";
6
+ import { RunApproval } from "@usine/core/run/approval";
5
7
  import { Step } from "@usine/core/step";
6
8
  import { Schema } from "effect";
7
9
  import { TranscriptEntry } from "../transcript.ts";
@@ -11,20 +13,40 @@ declare const RunSnapshot_base: Schema.Class<RunSnapshot, Schema.Struct<{
11
13
  readonly run: typeof Run;
12
14
  readonly step: typeof Step;
13
15
  readonly attempts: Schema.$Array<typeof Attempt>;
16
+ /** The failed Attempt that the operator marked as resolved; its outcome is unchanged. */
17
+ readonly resolvedFailureAttemptId: Schema.Option<Schema.brand<Schema.NonEmptyString, "AttemptId">>;
18
+ /**
19
+ * The time the Run last closed, or `None` while open. For older Runs, the last Attempt's end or
20
+ * start, or the Run's open time.
21
+ */
22
+ readonly closedAt: Schema.Option<Schema.DateTimeUtc>;
23
+ /** The approval the Run consumed, or `None` before approval and for Loops with `approval: none`. */
24
+ readonly approval: Schema.Option<typeof RunApproval>;
25
+ /** The run-again origin, or `None` for a Run opened by its trigger. */
26
+ readonly runAgain: Schema.Option<typeof RunAgain>;
14
27
  readonly repository: Schema.brand<Schema.String, "RepositoryName">;
15
28
  readonly revision: Schema.brand<Schema.String, "RepositoryRevision">;
16
29
  readonly task: Schema.brand<Schema.String, "AttemptTask">;
17
30
  readonly agent: typeof Agent;
18
31
  readonly parentModel: Schema.Option<Schema.brand<Schema.String, "ModelId">>;
32
+ /** The repository access of the Run's Attempts, from the Loop at match time. */
33
+ readonly permissions: Schema.Literals<readonly ["write", "read"]>;
19
34
  }>, {}>;
20
- /** The full durable view of one Run. */
35
+ /** The full durable view of a Run. */
21
36
  export declare class RunSnapshot extends RunSnapshot_base {
22
37
  }
38
+ declare const RunEvent_base: Schema.Class<RunEvent, Schema.Struct<{
39
+ readonly runId: Schema.brand<Schema.NonEmptyString, "RunId">;
40
+ readonly event: typeof Event;
41
+ }>, {}>;
42
+ /** A Run and the Event it was opened for; the payload is the Item as the trigger saw it. */
43
+ export declare class RunEvent extends RunEvent_base {
44
+ }
23
45
  declare const RunEvidence_base: Schema.Class<RunEvidence, Schema.Struct<{
24
46
  readonly snapshot: typeof RunSnapshot;
25
47
  readonly transcript: Schema.$Array<typeof TranscriptEntry>;
26
48
  }>, {}>;
27
- /** A Run snapshot and all its saved transcript entries from the same database transaction. */
49
+ /** A Run snapshot and all its transcript entries, read in one transaction. */
28
50
  export declare class RunEvidence extends RunEvidence_base {
29
51
  }
30
52
  declare const RunSummary_base: Schema.Class<RunSummary, Schema.Struct<{
@@ -32,14 +54,50 @@ declare const RunSummary_base: Schema.Class<RunSummary, Schema.Struct<{
32
54
  readonly run: typeof Run;
33
55
  readonly step: typeof Step;
34
56
  readonly attempts: Schema.$Array<typeof Attempt>;
57
+ /** The failed Attempt that the operator marked as resolved; its outcome is unchanged. */
58
+ readonly resolvedFailureAttemptId: Schema.Option<Schema.brand<Schema.NonEmptyString, "AttemptId">>;
59
+ /**
60
+ * The time the Run last closed, or `None` while open. For older Runs, the last Attempt's end or
61
+ * start, or the Run's open time.
62
+ */
63
+ readonly closedAt: Schema.Option<Schema.DateTimeUtc>;
64
+ /** The approval the Run consumed, or `None` before approval and for Loops with `approval: none`. */
65
+ readonly approval: Schema.Option<typeof RunApproval>;
66
+ /** The run-again origin, or `None` for a Run opened by its trigger. */
67
+ readonly runAgain: Schema.Option<typeof RunAgain>;
35
68
  readonly repository: Schema.brand<Schema.String, "RepositoryName">;
36
69
  readonly task: Schema.brand<Schema.String, "AttemptTask">;
37
70
  readonly agent: typeof Agent;
38
71
  }>, {}>;
39
- /** The lighter view used when listing Runs for operators. */
72
+ /** The Run view used in operator Run lists. */
40
73
  export declare class RunSummary extends RunSummary_base {
41
74
  }
42
- /** Monotonic version of the operator projection. */
75
+ declare const WorkerAttempts_base: Schema.Class<WorkerAttempts, Schema.Struct<{
76
+ readonly worker: Schema.brand<Schema.String, "WorkerName">;
77
+ readonly attempts: Schema.Int;
78
+ /** The number of `attempts` without a recorded outcome. */
79
+ readonly running: Schema.Int;
80
+ }>, {}>;
81
+ /** The number of Attempts on a Worker that startup reconciliation still visits, excluding discarded leftovers. */
82
+ export declare class WorkerAttempts extends WorkerAttempts_base {
83
+ }
84
+ declare const LoopSighting_base: Schema.Class<LoopSighting, Schema.Struct<{
85
+ readonly loop: Schema.brand<Schema.NonEmptyString, "LoopName">;
86
+ readonly itemKey: Schema.brand<Schema.NonEmptyString, "ItemKey">;
87
+ /**
88
+ * The last matching Event, or the newest reopening or run-again Event for it; `None` after a
89
+ * non-matching sighting.
90
+ */
91
+ readonly event: Schema.Option<Schema.brand<Schema.NonEmptyString, "EventId">>;
92
+ /** The Run of `event`, or `None` while it waits or after it was ignored. */
93
+ readonly run: Schema.Option<Schema.brand<Schema.NonEmptyString, "RunId">>;
94
+ /** The Run that suppresses the Item after a question or blocker, or `None`. */
95
+ readonly suppressedBy: Schema.Option<Schema.brand<Schema.NonEmptyString, "RunId">>;
96
+ }>, {}>;
97
+ /** A Loop's last sighting of an Item and its result (ADR 0007, ADR 0017). */
98
+ export declare class LoopSighting extends LoopSighting_base {
99
+ }
100
+ /** The monotonic version of the operator projection. */
43
101
  export declare const ProjectionRevision: Schema.brand<Schema.Int, "ProjectionRevision">;
44
102
  export type ProjectionRevision = typeof ProjectionRevision.Type;
45
103
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/run-reader/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;;;;;;;;;;;;;AAEnD,wCAAwC;AACxC,qBAAa,WAAY,SAAQ,gBAW/B;CAAG;;;;;AAEL,8FAA8F;AAC9F,qBAAa,WAAY,SAAQ,gBAG/B;CAAG;;;;;;;;;;AAEL,6DAA6D;AAC7D,qBAAa,UAAW,SAAQ,eAQ9B;CAAG;AAEL,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,gDAE9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/run-reader/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,OAAO,EAA0B,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAW,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,GAAG,EAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;;;;;;;IASjD,yFAAyF;;IAEzF;;;OAGG;;IAEH,oGAAoG;;IAEpG,uEAAuE;;;;;;;IAOvE,gFAAgF;;;AAvBlF,sCAAsC;AACtC,qBAAa,WAAY,SAAQ,gBAwB/B;CAAG;;;;;AAEL,4FAA4F;AAC5F,qBAAa,QAAS,SAAQ,aAG5B;CAAG;;;;;AAEL,8EAA8E;AAC9E,qBAAa,WAAY,SAAQ,gBAG/B;CAAG;;;;;;IAQH,yFAAyF;;IAEzF;;;OAGG;;IAEH,oGAAoG;;IAEpG,uEAAuE;;;;;;AAfzE,+CAA+C;AAC/C,qBAAa,UAAW,SAAQ,eAmB9B;CAAG;;;;IAOD,2DAA2D;;;AAL/D,kHAAkH;AAClH,qBAAa,cAAe,SAAQ,mBAWnC;CAAG;;;;IAMF;;;OAGG;;IAEH,4EAA4E;;IAE5E,+EAA+E;;;AAXjF,6EAA6E;AAC7E,qBAAa,YAAa,SAAQ,iBAYhC;CAAG;AAEL,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,gDAE9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC"}
@@ -1,44 +1,103 @@
1
1
  import { Agent } from "@usine/core/agent";
2
2
  import { ModelId } from "@usine/core/agent/brain";
3
- import { Attempt, AttemptTask } from "@usine/core/attempt";
4
- import { Event } from "@usine/core/event";
3
+ import { Attempt, AttemptId, AttemptTask } from "@usine/core/attempt";
4
+ import { Event, EventId } from "@usine/core/event";
5
5
  import { ItemKey } from "@usine/core/item";
6
+ import { LoopName, LoopPermissions } from "@usine/core/loop";
6
7
  import { RepositoryName, RepositoryRevision } from "@usine/core/repository";
7
- import { Run } from "@usine/core/run";
8
+ import { Run, RunId } from "@usine/core/run";
9
+ import { RunAgain } from "@usine/core/run/again";
10
+ import { RunApproval } from "@usine/core/run/approval";
8
11
  import { Step } from "@usine/core/step";
12
+ import { WorkerName } from "@usine/core/worker";
9
13
  import { Schema } from "effect";
10
14
  import { TranscriptEntry } from "../transcript.js";
11
- /** The full durable view of one Run. */
15
+ /** The full durable view of a Run. */
12
16
  export class RunSnapshot extends Schema.Class("@usine/engine/RunSnapshot")({
13
17
  event: Event,
14
18
  itemKey: ItemKey,
15
19
  run: Run,
16
20
  step: Step,
17
21
  attempts: Schema.Array(Attempt),
22
+ /** The failed Attempt that the operator marked as resolved; its outcome is unchanged. */
23
+ resolvedFailureAttemptId: Schema.Option(AttemptId),
24
+ /**
25
+ * The time the Run last closed, or `None` while open. For older Runs, the last Attempt's end or
26
+ * start, or the Run's open time.
27
+ */
28
+ closedAt: Schema.Option(Schema.DateTimeUtc),
29
+ /** The approval the Run consumed, or `None` before approval and for Loops with `approval: none`. */
30
+ approval: Schema.Option(RunApproval),
31
+ /** The run-again origin, or `None` for a Run opened by its trigger. */
32
+ runAgain: Schema.Option(RunAgain),
18
33
  repository: RepositoryName,
19
34
  revision: RepositoryRevision,
20
35
  task: AttemptTask,
21
36
  agent: Agent,
22
37
  parentModel: Schema.Option(ModelId),
38
+ /** The repository access of the Run's Attempts, from the Loop at match time. */
39
+ permissions: LoopPermissions,
23
40
  }) {
24
41
  }
25
- /** A Run snapshot and all its saved transcript entries from the same database transaction. */
42
+ /** A Run and the Event it was opened for; the payload is the Item as the trigger saw it. */
43
+ export class RunEvent extends Schema.Class("@usine/engine/RunEvent")({
44
+ runId: RunId,
45
+ event: Event,
46
+ }) {
47
+ }
48
+ /** A Run snapshot and all its transcript entries, read in one transaction. */
26
49
  export class RunEvidence extends Schema.Class("@usine/engine/RunEvidence")({
27
50
  snapshot: RunSnapshot,
28
51
  transcript: Schema.Array(TranscriptEntry),
29
52
  }) {
30
53
  }
31
- /** The lighter view used when listing Runs for operators. */
54
+ /** The Run view used in operator Run lists. */
32
55
  export class RunSummary extends Schema.Class("@usine/engine/RunSummary")({
33
56
  itemKey: ItemKey,
34
57
  run: Run,
35
58
  step: Step,
36
59
  attempts: Schema.Array(Attempt),
60
+ /** The failed Attempt that the operator marked as resolved; its outcome is unchanged. */
61
+ resolvedFailureAttemptId: Schema.Option(AttemptId),
62
+ /**
63
+ * The time the Run last closed, or `None` while open. For older Runs, the last Attempt's end or
64
+ * start, or the Run's open time.
65
+ */
66
+ closedAt: Schema.Option(Schema.DateTimeUtc),
67
+ /** The approval the Run consumed, or `None` before approval and for Loops with `approval: none`. */
68
+ approval: Schema.Option(RunApproval),
69
+ /** The run-again origin, or `None` for a Run opened by its trigger. */
70
+ runAgain: Schema.Option(RunAgain),
37
71
  repository: RepositoryName,
38
72
  task: AttemptTask,
39
73
  agent: Agent,
40
74
  }) {
41
75
  }
42
- /** Monotonic version of the operator projection. */
76
+ /** The number of Attempts on a Worker that startup reconciliation still visits, excluding discarded leftovers. */
77
+ export class WorkerAttempts extends Schema.Class("@usine/engine/WorkerAttempts")(Schema.Struct({
78
+ worker: WorkerName,
79
+ attempts: Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)),
80
+ /** The number of `attempts` without a recorded outcome. */
81
+ running: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
82
+ }).check(Schema.makeFilter(({ attempts, running }) => running <= attempts, {
83
+ message: "Expected no more open attempts than attempts",
84
+ }))) {
85
+ }
86
+ /** A Loop's last sighting of an Item and its result (ADR 0007, ADR 0017). */
87
+ export class LoopSighting extends Schema.Class("@usine/engine/LoopSighting")({
88
+ loop: LoopName,
89
+ itemKey: ItemKey,
90
+ /**
91
+ * The last matching Event, or the newest reopening or run-again Event for it; `None` after a
92
+ * non-matching sighting.
93
+ */
94
+ event: Schema.Option(EventId),
95
+ /** The Run of `event`, or `None` while it waits or after it was ignored. */
96
+ run: Schema.Option(RunId),
97
+ /** The Run that suppresses the Item after a question or blocker, or `None`. */
98
+ suppressedBy: Schema.Option(RunId),
99
+ }) {
100
+ }
101
+ /** The monotonic version of the operator projection. */
43
102
  export const ProjectionRevision = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)).pipe(Schema.brand("ProjectionRevision"));
44
103
  //# sourceMappingURL=model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/run-reader/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wCAAwC;AACxC,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAc,2BAA2B,CAAC,CAAC;IACtF,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;IAChB,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAC/B,UAAU,EAAE,cAAc;IAC1B,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;CACpC,CAAC;CAAG;AAEL,8FAA8F;AAC9F,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAc,2BAA2B,CAAC,CAAC;IACtF,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;CAC1C,CAAC;CAAG;AAEL,6DAA6D;AAC7D,MAAM,OAAO,UAAW,SAAQ,MAAM,CAAC,KAAK,CAAa,0BAA0B,CAAC,CAAC;IACnF,OAAO,EAAE,OAAO;IAChB,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAC/B,UAAU,EAAE,cAAc;IAC1B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,KAAK;CACb,CAAC;CAAG;AAEL,oDAAoD;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACvF,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CACnC,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/run-reader/model.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,44 @@
1
- import { Context, Effect, Layer, Option } from "effect";
1
+ import { Context, type DateTime, Effect, Layer, Option } from "effect";
2
2
  import { RunId } from "@usine/core/run";
3
3
  import { ItemKey } from "@usine/core/item";
4
4
  import { RunDatabase } from "../database/database.ts";
5
- import { ProjectionRevision, RunEvidence, RunSnapshot, RunSummary } from "./model.ts";
5
+ import { type LoopSighting, ProjectionRevision, type RunEvent, RunEvidence, RunSnapshot, RunSummary, type WorkerAttempts } from "./model.ts";
6
6
  import { TranscriptEntry, TranscriptQuery } from "../transcript.ts";
7
7
  import type { RunStoreError } from "../engine/error.ts";
8
8
  declare const RunReader_base: Context.ServiceClass<RunReader, "@usine/engine/RunReader", {
9
- /** Reads a Run's current state, effective task and Agent, Step result, and Attempt history. */
9
+ /** Returns the Run's state, effective task and Agent, Step result, and Attempt history. */
10
10
  readonly inspect: (runId: RunId) => Effect.Effect<RunSnapshot, RunStoreError>;
11
- /** Reads one consistent Run snapshot and every saved transcript entry, in append order without a page limit. */
11
+ /** Returns a Run snapshot and all its transcript entries, in append order, from one transaction. */
12
12
  readonly evidence: (runId: RunId) => Effect.Effect<RunEvidence, RunStoreError>;
13
- /** Every open Run plus the newest `closedLimit` settled ones, newest first. */
13
+ /** Returns every open Run plus the newest `closedLimit` closed ones, newest first. */
14
14
  readonly list: (options: {
15
15
  readonly closedLimit: number;
16
16
  }) => Effect.Effect<ReadonlyArray<RunSummary>, RunStoreError>;
17
- /** Every saved Run for the supplied Items, newest first, including all their Attempts. */
17
+ /** Returns the `limit` most recently closed Runs, by close time, newest first. */
18
+ readonly closed: (options: {
19
+ readonly limit: number;
20
+ }) => Effect.Effect<ReadonlyArray<RunSummary>, RunStoreError>;
21
+ /**
22
+ * Returns every Run that closed at or after `since`, or every closed Run for `None`, by close
23
+ * time, newest first.
24
+ */
25
+ readonly closedSince: (since: Option.Option<DateTime.Utc>) => Effect.Effect<ReadonlyArray<RunSummary>, RunStoreError>;
26
+ /** Returns every Run for `itemKeys`, newest first, with all their Attempts. */
18
27
  readonly forItems: (itemKeys: ReadonlyArray<ItemKey>) => Effect.Effect<ReadonlyArray<RunSummary>, RunStoreError>;
19
- /** `None` means the invalidation row is absent: treat every cached projection as stale. */
28
+ /** Returns the Event each existing Run in `runIds` was opened for, once per Run, in no particular order. */
29
+ readonly events: (runIds: ReadonlyArray<RunId>) => Effect.Effect<ReadonlyArray<RunEvent>, RunStoreError>;
30
+ /** Returns the projection revision. If the row is absent, returns `None`, and every cached projection is stale. */
20
31
  readonly revision: () => Effect.Effect<Option.Option<ProjectionRevision>, RunStoreError>;
21
- /** Reads the requested portion of one Attempt's saved transcript in append order. */
32
+ /** Returns the requested part of an Attempt's transcript, in append order. */
22
33
  readonly transcript: (query: TranscriptQuery) => Effect.Effect<ReadonlyArray<TranscriptEntry>, RunStoreError>;
34
+ /** Returns the Attempts that startup reconciliation visits, counted per Worker, by Worker name. */
35
+ readonly attemptsByWorker: () => Effect.Effect<ReadonlyArray<WorkerAttempts>, RunStoreError>;
36
+ /** Returns each Loop's last sighting of the Items in `itemKeys`, one entry per Loop and Item. */
37
+ readonly sightings: (itemKeys: ReadonlyArray<ItemKey>) => Effect.Effect<ReadonlyArray<LoopSighting>, RunStoreError>;
23
38
  }>;
24
- /** Reads saved Run state and transcripts without starting or recovering execution. */
39
+ /** The service that reads saved Run state and transcripts without starting or recovering execution. */
25
40
  export declare class RunReader extends RunReader_base {
26
41
  static readonly layer: Layer.Layer<RunReader, never, RunDatabase>;
27
42
  }
28
- export { RunEvidence, RunSnapshot, RunSummary, ProjectionRevision } from "./model.ts";
43
+ export { LoopSighting, RunEvent, RunEvidence, RunSnapshot, RunSummary, ProjectionRevision, WorkerAttempts, } from "./model.ts";
29
44
  //# sourceMappingURL=run-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-reader.d.ts","sourceRoot":"","sources":["../../src/run-reader/run-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAsB,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;;IAuDpD,+FAA+F;sBAC7E,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;IAC7E,gHAAgH;uBAC7F,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;IAC9E,+EAA+E;mBAChE,CAAC,OAAO,EAAE;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC7D,0FAA0F;uBACvE,CACjB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC5D,2FAA2F;uBACxE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC;IACxF,qFAAqF;yBAChE,CACnB,KAAK,EAAE,eAAe,KACnB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC;;AArBrE,sFAAsF;AACtF,qBAAa,SAAU,SAAQ,cAsBD;IAC5B,MAAM,CAAC,QAAQ,CAAC,KAAK,6CAA0C;CAChE;AAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"run-reader.d.ts","sourceRoot":"","sources":["../../src/run-reader/run-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,KAAK,YAAY,EACjB,kBAAkB,EAClB,KAAK,QAAQ,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAsB,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;;IAmFpD,2FAA2F;sBACzE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;IAC7E,oGAAoG;uBACjF,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;IAC9E,sFAAsF;mBACvE,CAAC,OAAO,EAAE;QACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC7D,kFAAkF;qBACjE,CAAC,OAAO,EAAE;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC7D;;;OAGG;0BACmB,CACpB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAC/B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC5D,+EAA+E;uBAC5D,CACjB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC5D,4GAA4G;qBAC3F,CACf,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,KACzB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAC1D,mHAAmH;uBAChG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC;IACxF,8EAA8E;yBACzD,CACnB,KAAK,EAAE,eAAe,KACnB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC;IACjE,mGAAmG;+BACxE,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;IAC5F,iGAAiG;wBAC7E,CAClB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;;AA1ClE,uGAAuG;AACvG,qBAAa,SAAU,SAAQ,cA2CD;IAC5B,MAAM,CAAC,QAAQ,CAAC,KAAK,6CAA0C;CAChE;AAED,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC"}
@@ -2,9 +2,10 @@ import { Context, Effect, Layer, Option } from "effect";
2
2
  import { RunId } from "@usine/core/run";
3
3
  import { ItemKey } from "@usine/core/item";
4
4
  import { RunDatabase } from "../database/database.js";
5
- import { ProjectionRevision, RunEvidence, RunSnapshot, RunSummary } from "./model.js";
5
+ import { ProjectionRevision, RunEvidence, RunSnapshot, RunSummary, } from "./model.js";
6
6
  import { TranscriptAllQuery, TranscriptEntry, TranscriptQuery } from "../transcript.js";
7
7
  import { persistence } from "../store/codec.js";
8
+ import { leftoverQueries } from "../store/leftovers.js";
8
9
  import { queriesFor } from "../store/queries.js";
9
10
  const makeRunReader = Effect.gen(function* () {
10
11
  const database = yield* RunDatabase;
@@ -22,7 +23,7 @@ const makeRunReader = Effect.gen(function* () {
22
23
  transcript: transcripts.flat().sort((left, right) => left.sequence - right.sequence),
23
24
  });
24
25
  }))
25
- .pipe(persistence("read Run evidence"));
26
+ .pipe(persistence("read run evidence"));
26
27
  yield* Effect.logDebug("Run evidence read", {
27
28
  runId,
28
29
  attempts: evidence.snapshot.attempts.length,
@@ -31,14 +32,31 @@ const makeRunReader = Effect.gen(function* () {
31
32
  return evidence;
32
33
  });
33
34
  const list = Effect.fn("RunReader.list")((options) => queries.runSummaries(options.closedLimit).pipe(persistence("list runs")));
35
+ const closed = Effect.fn("RunReader.closed")((options) => queries.closedRunSummaries(options.limit).pipe(persistence("list closed runs")));
36
+ const closedSince = Effect.fn("RunReader.closedSince")((since) => queries.closedRunSummariesSince(since).pipe(persistence("list runs closed since a time")));
34
37
  const revision = Effect.fn("RunReader.revision")(() => queries.revision().pipe(persistence("read projection revision")));
35
- const forItems = Effect.fn("RunReader.forItems")((itemKeys) => queries.itemRunSummaries(itemKeys).pipe(persistence("read Item Run histories")));
36
- const transcript = Effect.fn("RunReader.transcript")((query) => queries.transcript(query).pipe(persistence("read Attempt transcript")));
37
- return { inspect, evidence, list, forItems, revision, transcript };
38
+ const forItems = Effect.fn("RunReader.forItems")((itemKeys) => queries.itemRunSummaries(itemKeys).pipe(persistence("read item run histories")));
39
+ const events = Effect.fn("RunReader.events")((runIds) => queries.runEvents(runIds).pipe(persistence("read the events of runs")));
40
+ const transcript = Effect.fn("RunReader.transcript")((query) => queries.transcript(query).pipe(persistence("read attempt transcript")));
41
+ const attemptsByWorker = Effect.fn("RunReader.attemptsByWorker")(() => leftoverQueries(database).attemptCountsByWorker().pipe(persistence("count attempts by worker")));
42
+ const sightings = Effect.fn("RunReader.sightings")((itemKeys) => queries.loopItems.sightings(itemKeys).pipe(persistence("read loop sightings")));
43
+ return {
44
+ inspect,
45
+ evidence,
46
+ list,
47
+ closed,
48
+ closedSince,
49
+ forItems,
50
+ events,
51
+ revision,
52
+ transcript,
53
+ attemptsByWorker,
54
+ sightings,
55
+ };
38
56
  });
39
- /** Reads saved Run state and transcripts without starting or recovering execution. */
57
+ /** The service that reads saved Run state and transcripts without starting or recovering execution. */
40
58
  export class RunReader extends Context.Service()("@usine/engine/RunReader") {
41
59
  static layer = Layer.effect(RunReader, makeRunReader);
42
60
  }
43
- export { RunEvidence, RunSnapshot, RunSummary, ProjectionRevision } from "./model.js";
61
+ export { LoopSighting, RunEvent, RunEvidence, RunSnapshot, RunSummary, ProjectionRevision, WorkerAttempts, } from "./model.js";
44
62
  //# sourceMappingURL=run-reader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-reader.js","sourceRoot":"","sources":["../../src/run-reader/run-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-reader.js","sourceRoot":"","sources":["../../src/run-reader/run-reader.ts"],"names":[],"mappings":"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"}