@usine/orchestrator 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 (148) hide show
  1. package/LICENSE +661 -21
  2. package/README.md +32 -9
  3. package/dist/board/items.d.ts +14 -3
  4. package/dist/board/items.d.ts.map +1 -1
  5. package/dist/board/items.js +29 -1
  6. package/dist/board/items.js.map +1 -1
  7. package/dist/board/projection.d.ts +2 -1
  8. package/dist/board/projection.d.ts.map +1 -1
  9. package/dist/board/projection.js +20 -10
  10. package/dist/board/projection.js.map +1 -1
  11. package/dist/board/tasks.d.ts +1 -1
  12. package/dist/board/tasks.d.ts.map +1 -1
  13. package/dist/board/tasks.js +7 -3
  14. package/dist/board/tasks.js.map +1 -1
  15. package/dist/cloudflare.d.ts +32 -0
  16. package/dist/cloudflare.d.ts.map +1 -0
  17. package/dist/cloudflare.js +68 -0
  18. package/dist/cloudflare.js.map +1 -0
  19. package/dist/current-instance/changes.d.ts +3 -3
  20. package/dist/current-instance/changes.d.ts.map +1 -1
  21. package/dist/current-instance/changes.js +6 -3
  22. package/dist/current-instance/changes.js.map +1 -1
  23. package/dist/current-instance/current-instance.d.ts +3 -3
  24. package/dist/exe-dev.d.ts +1 -1
  25. package/dist/exe-dev.d.ts.map +1 -1
  26. package/dist/exe-dev.js +3 -1
  27. package/dist/exe-dev.js.map +1 -1
  28. package/dist/http-client.d.ts +8 -0
  29. package/dist/http-client.d.ts.map +1 -0
  30. package/dist/http-client.js +8 -0
  31. package/dist/http-client.js.map +1 -0
  32. package/dist/lease-order.d.ts +60 -0
  33. package/dist/lease-order.d.ts.map +1 -0
  34. package/dist/lease-order.js +76 -0
  35. package/dist/lease-order.js.map +1 -0
  36. package/dist/local.d.ts +1 -1
  37. package/dist/local.d.ts.map +1 -1
  38. package/dist/local.js +3 -1
  39. package/dist/local.js.map +1 -1
  40. package/dist/operator/attempt.d.ts +22 -3
  41. package/dist/operator/attempt.d.ts.map +1 -1
  42. package/dist/operator/attempt.js +22 -3
  43. package/dist/operator/attempt.js.map +1 -1
  44. package/dist/operator/board.d.ts +8 -3
  45. package/dist/operator/board.d.ts.map +1 -1
  46. package/dist/operator/board.js +8 -4
  47. package/dist/operator/board.js.map +1 -1
  48. package/dist/operator/configuration.d.ts +65 -9
  49. package/dist/operator/configuration.d.ts.map +1 -1
  50. package/dist/operator/configuration.js +90 -10
  51. package/dist/operator/configuration.js.map +1 -1
  52. package/dist/operator/desk.d.ts +33 -8
  53. package/dist/operator/desk.d.ts.map +1 -1
  54. package/dist/operator/desk.js +73 -11
  55. package/dist/operator/desk.js.map +1 -1
  56. package/dist/operator/http.d.ts +14 -79
  57. package/dist/operator/http.d.ts.map +1 -1
  58. package/dist/operator/http.js +20 -14
  59. package/dist/operator/http.js.map +1 -1
  60. package/dist/operator/machines.d.ts +71 -0
  61. package/dist/operator/machines.d.ts.map +1 -0
  62. package/dist/operator/machines.js +103 -0
  63. package/dist/operator/machines.js.map +1 -0
  64. package/dist/operator/need.d.ts +15 -1
  65. package/dist/operator/need.d.ts.map +1 -1
  66. package/dist/operator/need.js +15 -0
  67. package/dist/operator/need.js.map +1 -1
  68. package/dist/operator/operator.d.ts +36 -10
  69. package/dist/operator/operator.d.ts.map +1 -1
  70. package/dist/operator/operator.js +136 -31
  71. package/dist/operator/operator.js.map +1 -1
  72. package/dist/operator/overview.d.ts +2 -2
  73. package/dist/operator/projection.d.ts +2 -0
  74. package/dist/operator/projection.d.ts.map +1 -1
  75. package/dist/operator/projection.js +12 -4
  76. package/dist/operator/projection.js.map +1 -1
  77. package/dist/operator/run.d.ts +30 -0
  78. package/dist/operator/run.d.ts.map +1 -1
  79. package/dist/operator/run.js +31 -1
  80. package/dist/operator/run.js.map +1 -1
  81. package/dist/operator/statistics/cache.d.ts +7 -0
  82. package/dist/operator/statistics/cache.d.ts.map +1 -0
  83. package/dist/operator/statistics/cache.js +40 -0
  84. package/dist/operator/statistics/cache.js.map +1 -0
  85. package/dist/operator/statistics/runs.d.ts +36 -0
  86. package/dist/operator/statistics/runs.d.ts.map +1 -0
  87. package/dist/operator/statistics/runs.js +284 -0
  88. package/dist/operator/statistics/runs.js.map +1 -0
  89. package/dist/operator/statistics/statistics.d.ts +20 -0
  90. package/dist/operator/statistics/statistics.d.ts.map +1 -0
  91. package/dist/operator/statistics/statistics.js +138 -0
  92. package/dist/operator/statistics/statistics.js.map +1 -0
  93. package/dist/operator/statistics/tasks.d.ts +30 -0
  94. package/dist/operator/statistics/tasks.d.ts.map +1 -0
  95. package/dist/operator/statistics/tasks.js +244 -0
  96. package/dist/operator/statistics/tasks.js.map +1 -0
  97. package/dist/operator/statistics/view.d.ts +302 -0
  98. package/dist/operator/statistics/view.d.ts.map +1 -0
  99. package/dist/operator/statistics/view.js +243 -0
  100. package/dist/operator/statistics/view.js.map +1 -0
  101. package/dist/operator/statistics/window.d.ts +24 -0
  102. package/dist/operator/statistics/window.d.ts.map +1 -0
  103. package/dist/operator/statistics/window.js +47 -0
  104. package/dist/operator/statistics/window.js.map +1 -0
  105. package/dist/operator/task.d.ts +2 -1
  106. package/dist/operator/task.d.ts.map +1 -1
  107. package/dist/operator/task.js +3 -3
  108. package/dist/operator/task.js.map +1 -1
  109. package/dist/operator/usage.d.ts +10 -18
  110. package/dist/operator/usage.d.ts.map +1 -1
  111. package/dist/operator/usage.js +57 -42
  112. package/dist/operator/usage.js.map +1 -1
  113. package/dist/polling/closed-item-asks.d.ts +8 -0
  114. package/dist/polling/closed-item-asks.d.ts.map +1 -0
  115. package/dist/polling/closed-item-asks.js +28 -0
  116. package/dist/polling/closed-item-asks.js.map +1 -0
  117. package/dist/polling/open-pull-requests.d.ts +28 -0
  118. package/dist/polling/open-pull-requests.d.ts.map +1 -0
  119. package/dist/polling/open-pull-requests.js +131 -0
  120. package/dist/polling/open-pull-requests.js.map +1 -0
  121. package/dist/polling/polling.d.ts.map +1 -1
  122. package/dist/polling/polling.js +31 -18
  123. package/dist/polling/polling.js.map +1 -1
  124. package/dist/polling/repository-sync.d.ts +1 -0
  125. package/dist/polling/repository-sync.d.ts.map +1 -1
  126. package/dist/polling/repository-sync.js +1 -1
  127. package/dist/polling/repository-sync.js.map +1 -1
  128. package/dist/runtime.d.ts +2 -2
  129. package/dist/runtime.d.ts.map +1 -1
  130. package/dist/runtime.js +10 -10
  131. package/dist/runtime.js.map +1 -1
  132. package/dist/scheduler.d.ts +13 -4
  133. package/dist/scheduler.d.ts.map +1 -1
  134. package/dist/scheduler.js +312 -55
  135. package/dist/scheduler.js.map +1 -1
  136. package/dist/ssh.d.ts +71 -7
  137. package/dist/ssh.d.ts.map +1 -1
  138. package/dist/ssh.js +84 -15
  139. package/dist/ssh.js.map +1 -1
  140. package/dist/worker-engine.d.ts +7 -4
  141. package/dist/worker-engine.d.ts.map +1 -1
  142. package/dist/worker-engine.js +36 -5
  143. package/dist/worker-engine.js.map +1 -1
  144. package/dist/worker-status.d.ts +80 -10
  145. package/dist/worker-status.d.ts.map +1 -1
  146. package/dist/worker-status.js +31 -10
  147. package/dist/worker-status.js.map +1 -1
  148. package/package.json +29 -25
@@ -29,7 +29,8 @@ declare const TaskLaneView_base: Schema.Class<TaskLaneView, Schema.Struct<{
29
29
  readonly name: Schema.brand<Schema.String, "LaneName">;
30
30
  }>, {}>;
31
31
  /**
32
- * The Task's Board lane: its current Item's lane, or the lane its running Run was triggered from.
32
+ * The Task's Board lane: its current Item's lane or, while a Run runs and the Item has no lane
33
+ * label, the lane that Run was triggered from.
33
34
  */
34
35
  export declare class TaskLaneView extends TaskLaneView_base {
35
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/operator/task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAW,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAA2B,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAmB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAEL,OAAO,EAEP,MAAM,EACN,KAAK,EAGL,MAAM,EACP,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAEL,sBAAsB,EAEtB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;;;;;;;;;IAUjC,qFAAqF;;;AALvF,6FAA6F;AAC7F,qBAAa,YAAa,SAAQ,iBAMhC;CAAG;;;;;AAEL;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAGhC;CAAG;;;;;;;;AAEL;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAQnC;CAAG;;;;;IAUH;;;OAGG;;;IAGH;;;OAGG;;IAEH,2FAA2F;;IAE3F,yDAAyD;;IAEzD,yGAAyG;;;AAvB3G;;;GAGG;AACH,qBAAa,QAAS,SAAQ,aAqB5B;CAAG;AAEL,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;;IAuL3F;;;OAGG;mBACY,CACb,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,UAAU,KACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;;AAf/C;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAaK;IACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,kIAA4C;CAClE"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/operator/task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAW,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAA2B,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAmB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAEL,OAAO,EAEP,MAAM,EACN,KAAK,EAGL,MAAM,EACP,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAEL,sBAAsB,EAEtB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;;;;;;;;;IASjC,qFAAqF;;;AAJvF,6FAA6F;AAC7F,qBAAa,YAAa,SAAQ,iBAKhC;CAAG;;;;;AAEL;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAGhC;CAAG;;;;;;;;AAEL;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAQnC;CAAG;;;;;IAUH;;;OAGG;;;IAGH;;;OAGG;;IAEH,2FAA2F;;IAE3F,yDAAyD;;IAEzD,yGAAyG;;;AAvB3G;;;GAGG;AACH,qBAAa,QAAS,SAAQ,aAqB5B;CAAG;AAEL,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;;IAuL3F;;;OAGG;mBACY,CACb,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,UAAU,KACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;;AAf/C;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAaK;IACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,kIAA4C;CAClE"}
@@ -1,4 +1,4 @@
1
- import { LaneItemState, LaneName } from "@usine/config/board";
1
+ import { LaneName } from "@usine/config/board";
2
2
  import { GitHubLabelName } from "@usine/config/label";
3
3
  import { ItemKey, ItemNumber } from "@usine/core/item";
4
4
  import { canonicalRepositoryName, RepositoryName } from "@usine/core/repository";
@@ -20,14 +20,14 @@ const TASK_BOARD_ITEMS = 500;
20
20
  /** One issue or pull request of a Task, with its GitHub state as the Board card shows it. */
21
21
  export class TaskItemView extends Schema.Class("@usine/orchestrator/TaskItemView")({
22
22
  ...BoardItemLink.fields,
23
- state: LaneItemState,
24
23
  labels: Schema.Array(GitHubLabelName),
25
24
  /** Whether the Item is an open pull request whose branch conflicts with its base. */
26
25
  conflicting: Schema.Boolean,
27
26
  }) {
28
27
  }
29
28
  /**
30
- * The Task's Board lane: its current Item's lane, or the lane its running Run was triggered from.
29
+ * The Task's Board lane: its current Item's lane or, while a Run runs and the Item has no lane
30
+ * label, the lane that Run was triggered from.
31
31
  */
32
32
  export class TaskLaneView extends Schema.Class("@usine/orchestrator/TaskLaneView")({
33
33
  id: BoardLaneId,
@@ -1 +1 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/operator/task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/operator/task.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@ declare const UsageCostView_base: Schema.Class<UsageCostView, Schema.Struct<{
8
8
  readonly estimate: Schema.Boolean;
9
9
  }>, {}>;
10
10
  /**
11
- * A dollar cost reported by a harness. `estimate` is true for Claude plan figures, which the Agent
12
- * SDK computes from bundled prices (ADR 0013).
11
+ * A dollar cost from a harness or from usine's OpenAI price table. `estimate` is true in the Claude
12
+ * and ChatGPT plans, which don't bill per token (ADR 0013).
13
13
  */
14
14
  export declare class UsageCostView extends UsageCostView_base {
15
15
  }
@@ -18,7 +18,7 @@ declare const SessionUsageView_base: Schema.Class<SessionUsageView, Schema.Struc
18
18
  readonly session: Schema.Union<readonly [typeof import("@usine/core/agent/session").ParentSession, typeof import("@usine/core/agent/session").ChildSession]>;
19
19
  readonly pool: Schema.Literals<readonly ["apiKeys", "claudePlan", "chatgptPlan"]>;
20
20
  readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
21
- /** Null in the ChatGPT plan, which has no dollar rate, or if the harness priced nothing. */
21
+ /** Null if neither the harness nor the OpenAI price table priced the session. */
22
22
  readonly cost: Schema.NullOr<typeof UsageCostView>;
23
23
  }>, {}>;
24
24
  /** One Attempt session's usage from its highest token report, and its billing pool. */
@@ -27,7 +27,7 @@ export declare class SessionUsageView extends SessionUsageView_base {
27
27
  declare const PoolUsageView_base: Schema.Class<PoolUsageView, Schema.Struct<{
28
28
  readonly pool: Schema.Literals<readonly ["apiKeys", "claudePlan", "chatgptPlan"]>;
29
29
  readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
30
- /** Null in the ChatGPT plan, or if any session in the pool has no price. */
30
+ /** Null if any session in the pool has no price. */
31
31
  readonly cost: Schema.NullOr<typeof UsageCostView>;
32
32
  }>, {}>;
33
33
  /** A Run's usage in one billing pool. */
@@ -40,24 +40,15 @@ declare const RunUsageView_base: Schema.Class<RunUsageView, Schema.Struct<{
40
40
  /** In order of Attempt start, then first report. */
41
41
  readonly sessions: Schema.$Array<typeof SessionUsageView>;
42
42
  }>, {}>;
43
- /**
44
- * The tokens a Run's Attempts used, per pool and session, with prices where a pool has a dollar
45
- * rate.
46
- */
43
+ /** The tokens a Run's Attempts used, per pool and session, with their prices. */
47
44
  export declare class RunUsageView extends RunUsageView_base {
48
45
  }
49
46
  declare const TaskPoolUsageView_base: Schema.Class<TaskPoolUsageView, Schema.Struct<{
50
47
  readonly pool: Schema.Literals<readonly ["apiKeys", "claudePlan", "chatgptPlan"]>;
51
48
  readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
52
- /**
53
- * The cost of the priced sessions, or null in the ChatGPT plan or if no session in the pool has a
54
- * price yet.
55
- */
49
+ /** The cost of the priced sessions, or null if no session in the pool has a price yet. */
56
50
  readonly cost: Schema.NullOr<typeof UsageCostView>;
57
- /**
58
- * Whether a session in a priced pool has no price yet, so `cost` is a lower bound. Always false
59
- * in the ChatGPT plan.
60
- */
51
+ /** Whether a session in the pool has no price yet, so `cost` is a lower bound. */
61
52
  readonly unpriced: Schema.Boolean;
62
53
  }>, {}>;
63
54
  /** A Task's usage in one billing pool, summed over every session of every Run. */
@@ -78,7 +69,7 @@ declare const TaskUsageView_base: Schema.Class<TaskUsageView, Schema.Struct<{
78
69
  readonly pools: Schema.$Array<typeof TaskPoolUsageView>;
79
70
  /**
80
71
  * The summed cost of the priced pools, or null if no pool has a price. It's an estimate if it
81
- * includes the Claude plan, and a lower bound if a pool is `unpriced`.
72
+ * includes the Claude or ChatGPT plan, and a lower bound if a pool is `unpriced`.
82
73
  */
83
74
  readonly cost: Schema.NullOr<typeof UsageCostView>;
84
75
  }>, {}>;
@@ -102,7 +93,8 @@ declare const RunUsageReader_base: Context.ServiceClass<RunUsageReader, "@usine/
102
93
  }>;
103
94
  /**
104
95
  * Reads a Run's usage from each session's highest token report. Caches the reports of Attempts with
105
- * an outcome and rereads running Attempts on every call.
96
+ * an outcome and rereads running Attempts on every call. Logs one warning per Codex model that the
97
+ * OpenAI price table lacks.
106
98
  */
107
99
  export declare class RunUsageReader extends RunUsageReader_base {
108
100
  static readonly layer: Layer.Layer<RunUsageReader, never, RunReader>;
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/operator/usage.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;;;;;AAEhD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAElC;CAAG;;;;;;IAUF,4FAA4F;;;AAR9F,uFAAuF;AACvF,qBAAa,gBAAiB,SAAQ,qBASpC;CAAG;;;;IAOD,4EAA4E;;;AALhF,yCAAyC;AACzC,qBAAa,aAAc,SAAQ,kBAOlC;CAAG;;;IAQF,iFAAiF;;IAEjF,oDAAoD;;;AARtD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAMhC;CAAG;;;;IAQH;;;OAGG;;IAEH;;;OAGG;;;AAdL,kFAAkF;AAClF,qBAAa,iBAAkB,SAAQ,sBAerC;CAAG;;IAQD,+EAA+E;;IAE/E,wFAAwF;;IAExF,yFAAyF;;;IAGzF;;;OAGG;;IAEH;;;OAGG;;;AArBP;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAoBlC;CAAG;AA8DJ;;;GAGG;AACH,eAAO,MAAM,SAAS,SACd,aAAa,CAAC;IAClB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1F,CAAC,SACK,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,KACtC,aA6CF,CAAC;AA+BF,KAAK,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;;mBAQzC,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC;;AANtF;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAGK;IACvC,MAAM,CAAC,QAAQ,CAAC,KAAK,gDAAoD;CAC1E"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/operator/usage.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;;;;;AAEhD;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAElC;CAAG;;;;;;IAUF,iFAAiF;;;AARnF,uFAAuF;AACvF,qBAAa,gBAAiB,SAAQ,qBASpC;CAAG;;;;IAOD,oDAAoD;;;AALxD,yCAAyC;AACzC,qBAAa,aAAc,SAAQ,kBAOlC;CAAG;;;IAKF,iFAAiF;;IAEjF,oDAAoD;;;AALtD,iFAAiF;AACjF,qBAAa,YAAa,SAAQ,iBAMhC;CAAG;;;;IAQH,0FAA0F;;IAE1F,kFAAkF;;;AARpF,kFAAkF;AAClF,qBAAa,iBAAkB,SAAQ,sBASrC;CAAG;;IAQD,+EAA+E;;IAE/E,wFAAwF;;IAExF,yFAAyF;;;IAGzF;;;OAGG;;IAEH;;;OAGG;;;AArBP;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAoBlC;CAAG;AA2FJ;;;GAGG;AACH,eAAO,MAAM,SAAS,SACd,aAAa,CAAC;IAClB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;CAC1F,CAAC,SACK,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,KACtC,aA6CF,CAAC;AAwCF,KAAK,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;;mBASzC,CAAC,GAAG,EAAE,cAAc,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC;;AAPtF;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAGK;IACvC,MAAM,CAAC,QAAQ,CAAC,KAAK,gDAAoD;CAC1E"}
@@ -1,11 +1,12 @@
1
+ import { openAiPrice } from "@usine/agents/openai-prices";
1
2
  import { AgentSession, BillingPool, sessionPool, TokenCount, UsdAmount, } from "@usine/core/agent/session";
2
3
  import { AttemptId } from "@usine/core/attempt";
3
4
  import { RunReader } from "@usine/engine/run-reader";
4
5
  import { TranscriptUsageQuery } from "@usine/engine/transcript";
5
6
  import { Context, Effect, Layer, Option, Schema } from "effect";
6
7
  /**
7
- * A dollar cost reported by a harness. `estimate` is true for Claude plan figures, which the Agent
8
- * SDK computes from bundled prices (ADR 0013).
8
+ * A dollar cost from a harness or from usine's OpenAI price table. `estimate` is true in the Claude
9
+ * and ChatGPT plans, which don't bill per token (ADR 0013).
9
10
  */
10
11
  export class UsageCostView extends Schema.Class("@usine/orchestrator/UsageCostView")({ usd: UsdAmount, estimate: Schema.Boolean }) {
11
12
  }
@@ -15,7 +16,7 @@ export class SessionUsageView extends Schema.Class("@usine/orchestrator/SessionU
15
16
  session: AgentSession,
16
17
  pool: BillingPool,
17
18
  tokens: TokenCount,
18
- /** Null in the ChatGPT plan, which has no dollar rate, or if the harness priced nothing. */
19
+ /** Null if neither the harness nor the OpenAI price table priced the session. */
19
20
  cost: Schema.NullOr(UsageCostView),
20
21
  }) {
21
22
  }
@@ -23,14 +24,11 @@ export class SessionUsageView extends Schema.Class("@usine/orchestrator/SessionU
23
24
  export class PoolUsageView extends Schema.Class("@usine/orchestrator/PoolUsageView")({
24
25
  pool: BillingPool,
25
26
  tokens: TokenCount,
26
- /** Null in the ChatGPT plan, or if any session in the pool has no price. */
27
+ /** Null if any session in the pool has no price. */
27
28
  cost: Schema.NullOr(UsageCostView),
28
29
  }) {
29
30
  }
30
- /**
31
- * The tokens a Run's Attempts used, per pool and session, with prices where a pool has a dollar
32
- * rate.
33
- */
31
+ /** The tokens a Run's Attempts used, per pool and session, with their prices. */
34
32
  export class RunUsageView extends Schema.Class("@usine/orchestrator/RunUsageView")({
35
33
  tokens: TokenCount,
36
34
  /** In the order API keys, Claude plan, ChatGPT plan; unused pools are absent. */
@@ -43,15 +41,9 @@ export class RunUsageView extends Schema.Class("@usine/orchestrator/RunUsageView
43
41
  export class TaskPoolUsageView extends Schema.Class("@usine/orchestrator/TaskPoolUsageView")({
44
42
  pool: BillingPool,
45
43
  tokens: TokenCount,
46
- /**
47
- * The cost of the priced sessions, or null in the ChatGPT plan or if no session in the pool has a
48
- * price yet.
49
- */
44
+ /** The cost of the priced sessions, or null if no session in the pool has a price yet. */
50
45
  cost: Schema.NullOr(UsageCostView),
51
- /**
52
- * Whether a session in a priced pool has no price yet, so `cost` is a lower bound. Always false
53
- * in the ChatGPT plan.
54
- */
46
+ /** Whether a session in the pool has no price yet, so `cost` is a lower bound. */
55
47
  unpriced: Schema.Boolean,
56
48
  }) {
57
49
  }
@@ -74,18 +66,20 @@ export class TaskUsageView extends Schema.Class("@usine/orchestrator/TaskUsageVi
74
66
  pools: Schema.Array(TaskPoolUsageView),
75
67
  /**
76
68
  * The summed cost of the priced pools, or null if no pool has a price. It's an estimate if it
77
- * includes the Claude plan, and a lower bound if a pool is `unpriced`.
69
+ * includes the Claude or ChatGPT plan, and a lower bound if a pool is `unpriced`.
78
70
  */
79
71
  cost: Schema.NullOr(UsageCostView),
80
72
  }) {
81
73
  }
82
74
  const POOLS = ["apiKeys", "claudePlan", "chatgptPlan"];
83
- const priced = (pool, usd) => pool === "chatgptPlan"
84
- ? null
85
- : Option.match(usd, {
86
- onNone: () => null,
87
- onSome: (value) => new UsageCostView({ usd: value, estimate: pool === "claudePlan" }),
88
- });
75
+ const priced = (pool, usd) => Option.match(usd, {
76
+ onNone: () => null,
77
+ onSome: (value) => new UsageCostView({ usd: value, estimate: pool !== "apiKeys" }),
78
+ });
79
+ /** Returns the harness's price, or for a Codex session, the OpenAI table's price of its breakdown. */
80
+ const sessionPrice = ({ session, costUsd, breakdown, }) => Option.isSome(costUsd) || session.brain.harness !== "codex"
81
+ ? costUsd
82
+ : Option.flatMap(breakdown, (tokens) => openAiPrice(session.brain.model, tokens));
89
83
  /**
90
84
  * Sums a Run's token reports per pool and for the Run, using each session's highest report because
91
85
  * reports are cumulative.
@@ -96,21 +90,31 @@ const runUsage = (reports) => {
96
90
  const payload = envelope.payload;
97
91
  if (payload._tag !== "SessionEvent" || payload.event._tag !== "SessionTokensUpdated")
98
92
  continue;
99
- const { session, totalTokens, costUsd } = payload.event;
100
- const key = `${attemptId} ${session.id}`;
93
+ const key = `${attemptId} ${payload.event.session.id}`;
101
94
  const previous = highest.get(key);
102
- if (previous !== undefined && previous.tokens >= totalTokens)
95
+ if (previous !== undefined && previous.report.totalTokens >= payload.event.totalTokens)
103
96
  continue;
104
- const pool = sessionPool(session);
105
- highest.set(key, new SessionUsageView({
97
+ highest.set(key, { attemptId, report: payload.event });
98
+ }
99
+ const latest = [...highest.values()].map((entry) => ({
100
+ ...entry,
101
+ price: sessionPrice(entry.report),
102
+ }));
103
+ const sessions = latest.map(({ attemptId, report, price }) => {
104
+ const pool = sessionPool(report.session);
105
+ return new SessionUsageView({
106
106
  attemptId,
107
- session,
107
+ session: report.session,
108
108
  pool,
109
- tokens: totalTokens,
110
- cost: priced(pool, costUsd),
111
- }));
112
- }
113
- const sessions = [...highest.values()];
109
+ tokens: report.totalTokens,
110
+ cost: priced(pool, price),
111
+ });
112
+ });
113
+ const unknownModels = new Set(latest.flatMap(({ report, price }) => Option.isNone(price) &&
114
+ report.session.brain.harness === "codex" &&
115
+ Option.isSome(report.breakdown)
116
+ ? [report.session.brain.model]
117
+ : []));
114
118
  const pools = POOLS.flatMap((pool) => {
115
119
  const members = sessions.filter((session) => session.pool === pool);
116
120
  if (members.length === 0)
@@ -126,11 +130,14 @@ const runUsage = (reports) => {
126
130
  }),
127
131
  ];
128
132
  });
129
- return new RunUsageView({
130
- tokens: TokenCount.make(sessions.reduce((sum, { tokens }) => sum + tokens, 0)),
131
- pools,
132
- sessions,
133
- });
133
+ return {
134
+ view: new RunUsageView({
135
+ tokens: TokenCount.make(sessions.reduce((sum, { tokens }) => sum + tokens, 0)),
136
+ pools,
137
+ sessions,
138
+ }),
139
+ unknownModels,
140
+ };
134
141
  };
135
142
  /**
136
143
  * Sums the Attempt time, tokens, and cost of a Task's `runs`. Pools sum sessions rather than Run
@@ -163,7 +170,7 @@ export const taskUsage = (runs, usage) => {
163
170
  cost: priced(pool, costs.length === 0
164
171
  ? Option.none()
165
172
  : Option.some(UsdAmount.make(costs.reduce((sum, usd) => sum + usd, 0)))),
166
- unpriced: pool !== "chatgptPlan" && costs.length < members.length,
173
+ unpriced: costs.length < members.length,
167
174
  }),
168
175
  ];
169
176
  });
@@ -185,6 +192,7 @@ export const taskUsage = (runs, usage) => {
185
192
  const makeRunUsageReader = Effect.gen(function* () {
186
193
  const runs = yield* RunReader;
187
194
  const ended = yield* Effect.sync(() => new Map());
195
+ const loggedModels = yield* Effect.sync(() => new Set());
188
196
  const attemptReports = Effect.fn("RunUsageReader.attemptReports")(function* (attempt) {
189
197
  const cached = ended.get(attempt.id);
190
198
  if (cached !== undefined)
@@ -197,7 +205,13 @@ const makeRunUsageReader = Effect.gen(function* () {
197
205
  const read = Effect.fn("RunUsageReader.read")(function* (snapshot) {
198
206
  yield* Effect.annotateCurrentSpan({ runId: snapshot.run.id });
199
207
  const attempts = yield* Effect.forEach(snapshot.attempts, attemptReports, { concurrency: 4 });
200
- const usage = runUsage(attempts.flatMap(({ reports }) => reports));
208
+ const { view: usage, unknownModels } = runUsage(attempts.flatMap(({ reports }) => reports));
209
+ for (const model of unknownModels) {
210
+ if (loggedModels.has(model))
211
+ continue;
212
+ loggedModels.add(model);
213
+ yield* Effect.logWarning("The OpenAI price table has no rates for a Codex model, so its sessions have no cost", { model, runId: snapshot.run.id });
214
+ }
201
215
  yield* Effect.logDebug("Read Run usage", {
202
216
  runId: snapshot.run.id,
203
217
  sessions: usage.sessions.length,
@@ -211,7 +225,8 @@ const makeRunUsageReader = Effect.gen(function* () {
211
225
  });
212
226
  /**
213
227
  * Reads a Run's usage from each session's highest token report. Caches the reports of Attempts with
214
- * an outcome and rereads running Attempts on every call.
228
+ * an outcome and rereads running Attempts on every call. Logs one warning per Codex model that the
229
+ * OpenAI price table lacks.
215
230
  */
216
231
  export class RunUsageReader extends Context.Service()("@usine/orchestrator/RunUsageReader") {
217
232
  static layer = Layer.effect(RunUsageReader, makeRunUsageReader);
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/operator/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/operator/usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CycleBudgets } from "@usine/engine/cycle-budget";
2
+ import { Effect } from "effect";
3
+ /**
4
+ * Closes each open cycle-budget Ask of `repository` whose stored Item is closed, merged, or gone
5
+ * from GitHub, with the reason `ItemClosed`. The Items keep their cycle budgets.
6
+ */
7
+ export declare const closeAsksOfClosedItems: (repository: string & import("effect/Brand").Brand<"RepositoryName">) => Effect.Effect<void, import("@usine/engine/engine").EnginePersistenceError, CycleBudgets | import("@usine/engine/item-projection").ItemProjectionReader>;
8
+ //# sourceMappingURL=closed-item-asks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"closed-item-asks.d.ts","sourceRoot":"","sources":["../../src/polling/closed-item-asks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAGxC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,kOAyBlC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { canonicalRepositoryName } from "@usine/core/repository";
2
+ import { CycleBudgets } from "@usine/engine/cycle-budget";
3
+ import { Effect, Option } from "effect";
4
+ import { settledItemState } from "../board/items.js";
5
+ /**
6
+ * Closes each open cycle-budget Ask of `repository` whose stored Item is closed, merged, or gone
7
+ * from GitHub, with the reason `ItemClosed`. The Items keep their cycle budgets.
8
+ */
9
+ export const closeAsksOfClosedItems = Effect.fn("PollingTriggers.closeAsksOfClosedItems")(function* (repository) {
10
+ yield* Effect.annotateCurrentSpan({ repository });
11
+ const budgets = yield* CycleBudgets;
12
+ const asks = (yield* budgets.asks()).filter((ask) => canonicalRepositoryName(ask.repository) === canonicalRepositoryName(repository));
13
+ for (const ask of asks) {
14
+ const fields = { askId: ask.id, itemKey: ask.itemKey, repository: ask.repository };
15
+ const state = yield* settledItemState(ask.itemKey);
16
+ if (Option.isNone(state)) {
17
+ yield* Effect.logDebug("Cycle-budget Ask stays open; its Item is open or not stored", fields);
18
+ continue;
19
+ }
20
+ const closed = yield* budgets.close(ask.id, "ItemClosed");
21
+ if (closed)
22
+ yield* Effect.logInfo("Item is closed; its cycle-budget Ask leaves Needs attention", {
23
+ ...fields,
24
+ itemState: state.value,
25
+ });
26
+ }
27
+ });
28
+ //# sourceMappingURL=closed-item-asks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"closed-item-asks.js","sourceRoot":"","sources":["../../src/polling/closed-item-asks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAuB,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,wCAAwC,CAAC,CACvF,QAAQ,CAAC,EAAE,UAA0B;IACnC,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;IACpC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,uBAAuB,CAAC,UAAU,CAAC,CACzF,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QACnF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CACpB,6DAA6D,EAC7D,MAAM,CACP,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,MAAM;YACR,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,6DAA6D,EAAE;gBACnF,GAAG,MAAM;gBACT,SAAS,EAAE,KAAK,CAAC,KAAK;aACvB,CAAC,CAAC;IACP,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type BaseRefHead, type ChangedItem, GitHubPolling, type PayloadSnapshot } from "@usine/github/polling";
2
+ import { Effect, Option, Schema } from "effect";
3
+ declare const OpenPullRequest_base: Schema.Class<OpenPullRequest, Schema.Struct<{
4
+ readonly number: Schema.Int;
5
+ readonly updatedAt: Schema.DateTimeUtcFromString;
6
+ /** `None` in a cursor written before polling recorded base branches. */
7
+ readonly baseRefName: Schema.OptionFromOptionalKey<Schema.brand<Schema.NonEmptyString, "GitHubBaseRefName">>;
8
+ readonly mergeable: Schema.withDecodingDefaultKey<Schema.String, never>;
9
+ /** Older cursors refresh once to learn whether checks have settled. */
10
+ readonly checksUnsettled: Schema.withDecodingDefaultKey<Schema.Boolean, never>;
11
+ }>, {}>;
12
+ /** An open pull request's last observed base branch, mergeability, and check refresh state. */
13
+ export declare class OpenPullRequest extends OpenPullRequest_base {
14
+ }
15
+ /** Returns the cursor entry for a fetched Item, or `None` unless the Item is an open pull request. */
16
+ export declare const openPullRequest: (item: ChangedItem, snapshot: PayloadSnapshot) => Option.Option<OpenPullRequest>;
17
+ /**
18
+ * Reads the head of each base branch that `openPullRequests` target, with one conditional request
19
+ * per branch, and returns the pull requests to fetch again: those whose base branch isn't recorded,
20
+ * moved, or couldn't be read, and those whose mergeability or checks are unsettled. Leaves out the
21
+ * numbers in `fetched`, which the poll fetches anyway. Fails only if GitHub rate-limits a read.
22
+ */
23
+ export declare const openPullRequestRefresh: (repository: string & import("effect/Brand").Brand<"RepositoryName">, openPullRequests: readonly OpenPullRequest[], recordedHeads: readonly BaseRefHead[], fetched: ReadonlySet<number>) => Effect.Effect<{
24
+ refreshed: OpenPullRequest[];
25
+ baseRefHeads: BaseRefHead[];
26
+ }, import("@usine/github/github-app").GitHubRateLimitError, GitHubPolling>;
27
+ export {};
28
+ //# sourceMappingURL=open-pull-requests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-pull-requests.d.ts","sourceRoot":"","sources":["../../src/polling/open-pull-requests.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,WAAW,EAEhB,aAAa,EACb,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAgB,MAAM,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;IAWpE,wEAAwE;;;IAGxE,uEAAuE;;;AATzE,+FAA+F;AAC/F,qBAAa,eAAgB,SAAQ,oBAUnC;CAAG;AAEL,sGAAsG;AACtG,eAAO,MAAM,eAAe,SACpB,WAAW,YACP,eAAe,KACxB,MAAM,CAAC,MAAM,CAAC,eAAe,CAeb,CAAC;AAmFpB;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;0EAmElC,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { BaseRefName, ChangedPullRequest, GitHubPolling, } from "@usine/github/polling";
2
+ import { Array as Arr, Effect, Option, Result, Schema } from "effect";
3
+ import { repositoryFailureLogFields } from "./cycle.js";
4
+ const BASE_REF_CONCURRENCY = 4;
5
+ /** An open pull request's last observed base branch, mergeability, and check refresh state. */
6
+ export class OpenPullRequest extends Schema.Class("@usine/orchestrator/OpenPullRequest")({
7
+ number: ChangedPullRequest.fields.number,
8
+ updatedAt: Schema.DateTimeUtcFromString,
9
+ /** `None` in a cursor written before polling recorded base branches. */
10
+ baseRefName: Schema.OptionFromOptionalKey(BaseRefName),
11
+ mergeable: Schema.String.pipe(Schema.withDecodingDefaultKey(Effect.succeed("UNKNOWN"))),
12
+ /** Older cursors refresh once to learn whether checks have settled. */
13
+ checksUnsettled: Schema.Boolean.pipe(Schema.withDecodingDefaultKey(Effect.succeed(true))),
14
+ }) {
15
+ }
16
+ /** Returns the cursor entry for a fetched Item, or `None` unless the Item is an open pull request. */
17
+ export const openPullRequest = (item, snapshot) => snapshot._tag === "PullRequestSnapshot" && snapshot.payload.state === "OPEN"
18
+ ? Option.some(new OpenPullRequest({
19
+ number: item.number,
20
+ updatedAt: item.updatedAt,
21
+ baseRefName: Option.some(snapshot.payload.baseRefName),
22
+ mergeable: snapshot.payload.mergeable,
23
+ checksUnsettled: snapshot.payload.statusCheckRollup?.state === "PENDING" ||
24
+ snapshot.payload.statusCheckRollup?.state === "EXPECTED" ||
25
+ (snapshot.payload.statusCheckRollup === null &&
26
+ snapshot.payload.mergeStateStatus === "BLOCKED"),
27
+ }))
28
+ : Option.none();
29
+ const readBaseRef = Effect.fn("PollingTriggers.readBaseRef")(function* (repository, baseRefName, recorded, pullRequests) {
30
+ yield* Effect.annotateCurrentSpan({ repository, baseRefName });
31
+ const github = yield* GitHubPolling;
32
+ const result = yield* Effect.result(github.baseRefHead(repository, baseRefName, recorded));
33
+ if (Result.isFailure(result)) {
34
+ const error = result.failure;
35
+ // A rate limit interrupts the repository cycle, as for every other request, so the poll backs off.
36
+ if (error._tag === "GitHubRateLimitError")
37
+ return yield* error;
38
+ yield* Effect.logWarning("Could not read the base branch head; refreshing its open pull requests in this poll", {
39
+ repository,
40
+ baseRefName,
41
+ pullRequests: pullRequests.join(", "),
42
+ ...repositoryFailureLogFields(error),
43
+ });
44
+ return { _tag: "Unreadable", recorded };
45
+ }
46
+ const head = result.success;
47
+ if (Option.isNone(recorded)) {
48
+ yield* Effect.logInfo("Base branch head recorded; refreshing its open pull requests once", {
49
+ repository,
50
+ baseRefName,
51
+ head: head.sha,
52
+ pullRequests: pullRequests.join(", "),
53
+ });
54
+ return { _tag: "Moved", head };
55
+ }
56
+ if (recorded.value.sha !== head.sha) {
57
+ yield* Effect.logInfo("Base branch head moved; refreshing its open pull requests", {
58
+ repository,
59
+ baseRefName,
60
+ previousHead: recorded.value.sha,
61
+ head: head.sha,
62
+ pullRequests: pullRequests.join(", "),
63
+ });
64
+ return { _tag: "Moved", head };
65
+ }
66
+ return { _tag: "Unchanged", head };
67
+ });
68
+ const refreshReason = (pullRequest, reads) => {
69
+ if (Option.isNone(pullRequest.baseRefName))
70
+ return Option.some("baseUnrecorded");
71
+ const read = reads.get(pullRequest.baseRefName.value);
72
+ if (read?._tag === "Moved")
73
+ return Option.some("baseMoved");
74
+ if (read?._tag === "Unreadable")
75
+ return Option.some("baseUnreadable");
76
+ if (pullRequest.mergeable === "UNKNOWN")
77
+ return Option.some("mergeableUnknown");
78
+ if (pullRequest.checksUnsettled)
79
+ return Option.some("checksUnsettled");
80
+ return Option.none();
81
+ };
82
+ /**
83
+ * Reads the head of each base branch that `openPullRequests` target, with one conditional request
84
+ * per branch, and returns the pull requests to fetch again: those whose base branch isn't recorded,
85
+ * moved, or couldn't be read, and those whose mergeability or checks are unsettled. Leaves out the
86
+ * numbers in `fetched`, which the poll fetches anyway. Fails only if GitHub rate-limits a read.
87
+ */
88
+ export const openPullRequestRefresh = Effect.fn("PollingTriggers.openPullRequestRefresh")(function* (repository, openPullRequests, recordedHeads, fetched) {
89
+ yield* Effect.annotateCurrentSpan({ repository });
90
+ if (openPullRequests.length === 0) {
91
+ return { refreshed: [], baseRefHeads: [] };
92
+ }
93
+ const byBaseRef = new Map();
94
+ for (const { number, baseRefName } of openPullRequests) {
95
+ if (Option.isNone(baseRefName))
96
+ continue;
97
+ const numbers = byBaseRef.get(baseRefName.value) ?? [];
98
+ numbers.push(number);
99
+ byBaseRef.set(baseRefName.value, numbers);
100
+ }
101
+ const reads = new Map(yield* Effect.forEach(byBaseRef, ([baseRefName, pullRequests]) => readBaseRef(repository, baseRefName, Option.fromNullishOr(recordedHeads.find((head) => head.baseRefName === baseRefName)), pullRequests).pipe(Effect.map((read) => [baseRefName, read])), { concurrency: BASE_REF_CONCURRENCY }));
102
+ const notFetched = openPullRequests.filter(({ number }) => !fetched.has(number));
103
+ const refreshed = notFetched.flatMap((pullRequest) => Option.toArray(Option.map(refreshReason(pullRequest, reads), (reason) => ({ pullRequest, reason }))));
104
+ if (refreshed.length === 0) {
105
+ yield* Effect.logDebug("No open pull request needs a refresh", {
106
+ repository,
107
+ openPullRequests: openPullRequests.length,
108
+ baseRefReads: reads.size,
109
+ });
110
+ }
111
+ else {
112
+ const reasons = Arr.groupBy(refreshed, ({ reason }) => reason);
113
+ yield* Effect.logInfo("Refreshing open pull requests", {
114
+ repository,
115
+ baseRefReads: reads.size,
116
+ refreshed: refreshed.length,
117
+ skipped: notFetched.length - refreshed.length,
118
+ ...Object.fromEntries(Object.entries(reasons).map(([reason, entries]) => [
119
+ reason,
120
+ entries.map(({ pullRequest }) => pullRequest.number).join(", "),
121
+ ])),
122
+ });
123
+ }
124
+ return {
125
+ refreshed: refreshed.map(({ pullRequest }) => pullRequest),
126
+ baseRefHeads: [...reads.values()]
127
+ .flatMap((read) => read._tag === "Unreadable" ? Option.toArray(read.recorded) : [read.head])
128
+ .sort((left, right) => left.baseRefName.localeCompare(right.baseRefName)),
129
+ };
130
+ });
131
+ //# sourceMappingURL=open-pull-requests.js.map