@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
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/operator/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/operator/projection.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ import { BrainSpec } from "@usine/core/agent/brain";
1
2
  import { RunAgain } from "@usine/core/run/again";
2
3
  import { ApprovalSource } from "@usine/core/run/approval";
3
4
  import { Schema } from "effect";
4
5
  import { AttemptView } from "./attempt.ts";
6
+ import { MachineView } from "./machines.ts";
5
7
  import { TranscriptEventView, TranscriptPageCursor } from "./transcript.ts";
6
8
  import { RunUsageView } from "./usage.ts";
7
9
  /** The stored Run lifecycle state as shown in operator views. */
@@ -53,6 +55,8 @@ declare const RunView_base: Schema.Class<RunView, Schema.Struct<{
53
55
  readonly loop: Schema.brand<Schema.NonEmptyString, "LoopName">;
54
56
  readonly repository: Schema.brand<Schema.String, "RepositoryName">;
55
57
  readonly agent: Schema.brand<Schema.String, "AgentName">;
58
+ /** The saved agent definition's brain, including any edit-and-retry amendment. */
59
+ readonly agentBrain: typeof BrainSpec;
56
60
  readonly state: Schema.Literals<readonly ["Pending", "Waiting", "Queued", "Running", "Succeeded", "Failed", "Canceled"]>;
57
61
  readonly loopPaused: Schema.Boolean;
58
62
  readonly openedAt: Schema.String;
@@ -104,8 +108,22 @@ declare const RunDurationView_base: Schema.Class<RunDurationView, Schema.Struct<
104
108
  /** The time a Run's Attempts worked, summed per Attempt. */
105
109
  export declare class RunDurationView extends RunDurationView_base {
106
110
  }
111
+ declare const UnconfirmedStopView_base: Schema.Class<UnconfirmedStopView, Schema.Struct<{
112
+ /** The Run of the Attempt: this Run, or an earlier Run of the Loop on the Item. */
113
+ readonly runId: Schema.brand<Schema.NonEmptyString, "RunId">;
114
+ readonly attemptNumber: Schema.brand<Schema.Int, "AttemptNumber">;
115
+ readonly worker: Schema.brand<Schema.String, "WorkerName">;
116
+ }>, {}>;
117
+ /**
118
+ * An Attempt on the Run's Loop and Item whose parent task isn't confirmed stopped. The open Run
119
+ * starts no Attempt until a reconcile confirms the stop (#523).
120
+ */
121
+ export declare class UnconfirmedStopView extends UnconfirmedStopView_base {
122
+ }
107
123
  declare const RunDetailView_base: Schema.Class<RunDetailView, Schema.Struct<{
108
124
  readonly run: typeof RunView;
125
+ /** Whether the loaded agent differs from the saved definition; false if no longer loaded. */
126
+ readonly agentDefinitionChanged: Schema.Boolean;
109
127
  readonly eventDedupKey: Schema.String;
110
128
  readonly eventPayload: Schema.Codec<Schema.Json, Schema.Json, never, never>;
111
129
  readonly transcript: Schema.$Array<typeof TranscriptEventView>;
@@ -117,8 +135,20 @@ declare const RunDetailView_base: Schema.Class<RunDetailView, Schema.Struct<{
117
135
  readonly earlierTranscript: Schema.$Array<typeof TranscriptPageCursor>;
118
136
  /** The Worker of the newest Attempt, or null before the first Attempt. */
119
137
  readonly worker: Schema.withConstructorDefault<Schema.NullOr<Schema.brand<Schema.String, "WorkerName">>>;
138
+ /**
139
+ * The state of the Run's Item from the newest poll if the Item is closed, merged, or gone, else
140
+ * null. Needs attention leaves out a failed Run on such an Item.
141
+ */
142
+ readonly settledItemState: Schema.withConstructorDefault<Schema.NullOr<Schema.Literals<readonly ["issue-closed", "pr-closed", "pr-merged"]>>>;
120
143
  readonly duration: Schema.withConstructorDefault<typeof RunDurationView>;
121
144
  readonly usage: Schema.withConstructorDefault<typeof RunUsageView>;
145
+ /** The unconfirmed stop that keeps the open Run from starting an Attempt, or null. */
146
+ readonly unconfirmedStop: Schema.withConstructorDefault<Schema.NullOr<typeof UnconfirmedStopView>>;
147
+ /**
148
+ * The machine a provisioned Worker creates or holds for the Run's next or running Attempt, or
149
+ * null.
150
+ */
151
+ readonly machine: Schema.withConstructorDefault<Schema.NullOr<typeof MachineView>>;
122
152
  }>, {}>;
123
153
  /** A Run with its triggering Event payload, a page of its transcript, and its usage. */
124
154
  export declare class RunDetailView extends RunDetailView_base {
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/operator/run.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,iEAAiE;AACjE,eAAO,MAAM,WAAW,0GAAuC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;;;;;AAIlD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAGhC;CAAG;;;;;;AAEL,wGAAwG;AACxG,qBAAa,mBAAoB,SAAQ,wBAMvC;CAAG;;;;;AAEL,sDAAsD;AACtD,qBAAa,wBAAyB,SAAQ,6BAE6B;CAAG;;;;;AAE9E,uFAAuF;AACvF,qBAAa,iBAAkB,SAAQ,sBAE2B;CAAG;;;IAKnE,iEAAiE;;;AAHnE,mGAAmG;AACnG,qBAAa,YAAa,SAAQ,iBAIhC;CAAG;;;;;;;;;;IAYH;;;OAGG;;;;IAIH;;;OAGG;;IAEH;;;OAGG;;;;;;IAMH;;OAEG;;;IAGH;;;OAGG;;;AAvCL,6EAA6E;AAC7E,qBAAa,OAAQ,SAAQ,YAwC3B;CAAG;;IASH,iEAAiE;;IAEjE,8DAA8D;;IAE9D;;OAEG;;;AAVL,4DAA4D;AAC5D,qBAAa,eAAgB,SAAQ,oBAWnC;CAAG;;;;;;IASD;;;OAGG;;;IAGH,0EAA0E;;;;;AAb9E,wFAAwF;AACxF,qBAAa,aAAc,SAAQ,kBAyBlC;CAAG"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/operator/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAQpD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,iEAAiE;AACjE,eAAO,MAAM,WAAW,0GAAuC,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;;;;;AAIlD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAGhC;CAAG;;;;;;AAEL,wGAAwG;AACxG,qBAAa,mBAAoB,SAAQ,wBAMvC;CAAG;;;;;AAEL,sDAAsD;AACtD,qBAAa,wBAAyB,SAAQ,6BAE6B;CAAG;;;;;AAE9E,uFAAuF;AACvF,qBAAa,iBAAkB,SAAQ,sBAE2B;CAAG;;;IAKnE,iEAAiE;;;AAHnE,mGAAmG;AACnG,qBAAa,YAAa,SAAQ,iBAIhC;CAAG;;;;;;;IASH,kFAAkF;;;;;IAKlF;;;OAGG;;;;IAIH;;;OAGG;;IAEH;;;OAGG;;;;;;IAMH;;OAEG;;;IAGH;;;OAGG;;;AAzCL,6EAA6E;AAC7E,qBAAa,OAAQ,SAAQ,YA0C3B;CAAG;;IASH,iEAAiE;;IAEjE,8DAA8D;;IAE9D;;OAEG;;;AAVL,4DAA4D;AAC5D,qBAAa,eAAgB,SAAQ,oBAWnC;CAAG;;IASH,mFAAmF;;;;;AAPrF;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,wBAOvC;CAAG;;;IAMD,6FAA6F;;;;;IAK7F;;;OAGG;;;IAGH,0EAA0E;;IAE1E;;;OAGG;;;;IAcH,sFAAsF;;IAItF;;;OAGG;;;AAzCP,wFAAwF;AACxF,qBAAa,aAAc,SAAQ,kBA2ClC;CAAG"}
@@ -1,6 +1,8 @@
1
+ import { SettledItemState } from "@usine/config/board";
1
2
  import { AgentName } from "@usine/core/agent";
3
+ import { BrainSpec } from "@usine/core/agent/brain";
2
4
  import { TokenCount } from "@usine/core/agent/session";
3
- import { AttemptId, AttemptTask } from "@usine/core/attempt";
5
+ import { AttemptId, AttemptNumber, AttemptTask } from "@usine/core/attempt";
4
6
  import { OperatorAction, SessionTarget } from "@usine/core/attempt/channel";
5
7
  import { ItemKey } from "@usine/core/item";
6
8
  import { LoopName } from "@usine/core/loop";
@@ -12,6 +14,7 @@ import * as RunState from "@usine/core/run/state";
12
14
  import { WorkerName } from "@usine/core/worker";
13
15
  import { Effect, Schema } from "effect";
14
16
  import { AttemptView } from "./attempt.js";
17
+ import { MachineView } from "./machines.js";
15
18
  import { TranscriptEventView, TranscriptPageCursor } from "./transcript.js";
16
19
  import { RunUsageView } from "./usage.js";
17
20
  /** The stored Run lifecycle state as shown in operator views. */
@@ -53,6 +56,8 @@ export class RunView extends Schema.Class("@usine/orchestrator/RunView")({
53
56
  loop: LoopName,
54
57
  repository: RepositoryName,
55
58
  agent: AgentName,
59
+ /** The saved agent definition's brain, including any edit-and-retry amendment. */
60
+ agentBrain: BrainSpec,
56
61
  state: RunStateTag,
57
62
  loopPaused: Schema.Boolean,
58
63
  openedAt: Schema.String,
@@ -103,9 +108,22 @@ export class RunDurationView extends Schema.Class("@usine/orchestrator/RunDurati
103
108
  unmeasured: Count,
104
109
  }) {
105
110
  }
111
+ /**
112
+ * An Attempt on the Run's Loop and Item whose parent task isn't confirmed stopped. The open Run
113
+ * starts no Attempt until a reconcile confirms the stop (#523).
114
+ */
115
+ export class UnconfirmedStopView extends Schema.Class("@usine/orchestrator/UnconfirmedStopView")({
116
+ /** The Run of the Attempt: this Run, or an earlier Run of the Loop on the Item. */
117
+ runId: RunId,
118
+ attemptNumber: AttemptNumber,
119
+ worker: WorkerName,
120
+ }) {
121
+ }
106
122
  /** A Run with its triggering Event payload, a page of its transcript, and its usage. */
107
123
  export class RunDetailView extends Schema.Class("@usine/orchestrator/RunDetailView")({
108
124
  run: RunView,
125
+ /** Whether the loaded agent differs from the saved definition; false if no longer loaded. */
126
+ agentDefinitionChanged: Schema.Boolean,
109
127
  eventDedupKey: Schema.String,
110
128
  eventPayload: Schema.Json,
111
129
  transcript: Schema.Array(TranscriptEventView),
@@ -117,8 +135,20 @@ export class RunDetailView extends Schema.Class("@usine/orchestrator/RunDetailVi
117
135
  earlierTranscript: Schema.Array(TranscriptPageCursor),
118
136
  /** The Worker of the newest Attempt, or null before the first Attempt. */
119
137
  worker: Schema.NullOr(WorkerName).pipe(Schema.withConstructorDefault(Effect.succeed(null))),
138
+ /**
139
+ * The state of the Run's Item from the newest poll if the Item is closed, merged, or gone, else
140
+ * null. Needs attention leaves out a failed Run on such an Item.
141
+ */
142
+ settledItemState: Schema.NullOr(SettledItemState).pipe(Schema.withConstructorDefault(Effect.succeed(null))),
120
143
  duration: RunDurationView.pipe(Schema.withConstructorDefault(Effect.succeed(new RunDurationView({ endedMillis: 0, runningSince: null, unmeasured: 0 })))),
121
144
  usage: RunUsageView.pipe(Schema.withConstructorDefault(Effect.succeed(new RunUsageView({ tokens: TokenCount.make(0), pools: [], sessions: [] })))),
145
+ /** The unconfirmed stop that keeps the open Run from starting an Attempt, or null. */
146
+ unconfirmedStop: Schema.NullOr(UnconfirmedStopView).pipe(Schema.withConstructorDefault(Effect.succeed(null))),
147
+ /**
148
+ * The machine a provisioned Worker creates or holds for the Run's next or running Attempt, or
149
+ * null.
150
+ */
151
+ machine: Schema.NullOr(MachineView).pipe(Schema.withConstructorDefault(Effect.succeed(null))),
122
152
  }) {
123
153
  }
124
154
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/operator/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/operator/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { LoadedInstance } from "@usine/config/instance";
2
+ import type { RunStoreError } from "@usine/engine/engine";
3
+ import type { RunReader } from "@usine/engine/run-reader";
4
+ import { Effect } from "effect";
5
+ import type { StatisticsWindow } from "./view.ts";
6
+ export declare const cacheStatistics: <View>(revision: RunReader["Service"]["revision"], compute: (instance: LoadedInstance, window: StatisticsWindow) => Effect.Effect<View, RunStoreError>) => (instance: LoadedInstance, window: "30d" | "7d" | "all") => Effect.Effect<View, import("@usine/engine/engine").EnginePersistenceError | import("@usine/engine/engine").RunNotFoundError | import("@usine/engine/engine").RunOperationRejectedError | import("@usine/engine/engine").RunRetryBlockedError, never>;
7
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/operator/statistics/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAS,MAAM,EAA2B,MAAM,QAAQ,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAWlD,eAAO,MAAM,eAAe,GAAI,IAAI,YACxB,SAAS,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,WACjC,CACP,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,gBAAgB,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,qTAmDxC,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { Clock, Effect, Option, SynchronizedRef } from "effect";
2
+ const MAX_AGE_MILLIS = 5 * 60 * 1_000;
3
+ export const cacheStatistics = (revision, compute) => {
4
+ const windows = new Map();
5
+ return Effect.fn("Operator.statistics.cached")(function* (instance, window) {
6
+ yield* Effect.annotateCurrentSpan({ window });
7
+ let cache = windows.get(window);
8
+ if (cache === undefined) {
9
+ cache = SynchronizedRef.makeUnsafe(Option.none());
10
+ windows.set(window, cache);
11
+ }
12
+ return yield* SynchronizedRef.modifyEffect(cache, (cached) => Effect.gen(function* () {
13
+ const current = yield* revision();
14
+ const now = yield* Clock.currentTimeMillis;
15
+ if (Option.isSome(current) &&
16
+ Option.isSome(cached) &&
17
+ cached.value.revision === current.value &&
18
+ cached.value.instance === instance &&
19
+ now < cached.value.expiresAt) {
20
+ yield* Effect.logDebug("Statistics cache hit", { window, revision: current.value });
21
+ return [cached.value.view, cached];
22
+ }
23
+ yield* Effect.logDebug("Statistics cache miss", { window, revision: current });
24
+ if (Option.isNone(current)) {
25
+ yield* Effect.logWarning("Projection revision singleton is missing; the statistics cache is bypassed", { window });
26
+ }
27
+ const view = yield* compute(instance, window);
28
+ return [
29
+ view,
30
+ Option.map(current, (revision) => ({
31
+ instance,
32
+ revision,
33
+ expiresAt: now + MAX_AGE_MILLIS,
34
+ view,
35
+ })),
36
+ ];
37
+ }));
38
+ });
39
+ };
40
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/operator/statistics/cache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGhE,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AAStC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAA0C,EAC1C,OAGuC,EACvC,EAAE;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAGpB,CAAC;IAEJ,OAAO,MAAM,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EACtD,QAAwB,EACxB,MAAwB;QAExB,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAoB,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC3C,IACE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK;gBACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ;gBAClC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAC5B,CAAC;gBACD,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAU,CAAC;YAC9C,CAAC;YACD,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/E,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CACtB,4EAA4E,EAC5E,EAAE,MAAM,EAAE,CACX,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,OAAO;gBACL,IAAI;gBACJ,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBACjC,QAAQ;oBACR,QAAQ;oBACR,SAAS,EAAE,GAAG,GAAG,cAAc;oBAC/B,IAAI;iBACL,CAAC,CAAC;aACK,CAAC;QACb,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { Attempt } from "@usine/core/attempt";
2
+ import type { RunId } from "@usine/core/run";
3
+ import type { WorkerName } from "@usine/core/worker";
4
+ import type { RunSummary } from "@usine/engine/run-reader";
5
+ import { DateTime, Option } from "effect";
6
+ import type { RunUsageView } from "../usage.ts";
7
+ import { DurationSummaryView, RunStatisticsView, type StatisticsWindow } from "./view.ts";
8
+ /** A Worker that `usine.yaml` declares, with its `max_concurrent_attempts`. */
9
+ interface DeclaredWorker {
10
+ readonly name: WorkerName;
11
+ readonly slots: number;
12
+ }
13
+ /** The stored facts that `runStatisticsView` reduces. */
14
+ export interface RunStatisticsFacts {
15
+ readonly window: StatisticsWindow;
16
+ readonly now: DateTime.Utc;
17
+ /** The Runs that closed in the window and the open Runs. */
18
+ readonly runs: ReadonlyArray<RunSummary>;
19
+ /** The usage of each closed Run in `runs`. */
20
+ readonly usage: ReadonlyMap<RunId, RunUsageView>;
21
+ readonly workers: ReadonlyArray<DeclaredWorker>;
22
+ }
23
+ /** Returns the median of `durations`, or null if there are none. */
24
+ export declare const durationSummary: (durations: ReadonlyArray<number>) => DurationSummaryView | null;
25
+ /** Returns the Attempt's wall time, or `None` while it runs or if its end wasn't recorded. */
26
+ export declare const attemptMillis: (attempt: Attempt) => Option.Option<number>;
27
+ /** Whether the operator started the Attempt by retrying the failed Run, with or without an edit. */
28
+ export declare const operatorRetry: (attempt: Attempt | undefined) => attempt is Attempt;
29
+ /**
30
+ * Reduces the stored facts to the Run statistics of `window`. Run measures cover the Runs that
31
+ * closed in the window; queue wait, Worker utilization, and Needs attention also cover the open
32
+ * Runs.
33
+ */
34
+ export declare const runStatisticsView: ({ window, now, runs: stored, usage, workers, }: RunStatisticsFacts) => RunStatisticsView;
35
+ export {};
36
+ //# sourceMappingURL=runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../../src/operator/statistics/runs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAwB,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AAClE,OAAO,EAKL,mBAAmB,EAOnB,iBAAiB,EACjB,KAAK,gBAAgB,EAKtB,MAAM,WAAW,CAAC;AAgBnB,+EAA+E;AAC/E,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACjD;AAiBD,oEAAoE;AACpE,eAAO,MAAM,eAAe,cAAe,aAAa,CAAC,MAAM,CAAC,KAAG,mBAAmB,GAAG,IAKrF,CAAC;AA+BL,8FAA8F;AAC9F,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAK9D,CAAC;AAsIR,oGAAoG;AACpG,eAAO,MAAM,aAAa,YAAa,OAAO,GAAG,SAAS,KAAG,OAAO,IAAI,OAEyB,CAAC;AAmElG;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,mDAM3B,kBAAkB,KAAG,iBA+HvB,CAAC"}
@@ -0,0 +1,284 @@
1
+ import { TokenCount, UsdAmount } from "@usine/core/agent/session";
2
+ import * as RunState from "@usine/core/run/state";
3
+ import { Array as EffectArray, DateTime, Option } from "effect";
4
+ import { AgentStatisticsView, AttemptCountView, BrainStatisticsView, CostSummaryView, DurationSummaryView, LoopStatisticsView, NeedsAttentionPeriodView, NeedsAttentionView, OutcomeCountsView, PoolTokensView, RunStatisticsView, ThroughputPeriodView, UsageSummaryView, WorkerQueueWaitView, WorkerUtilizationView, } from "./view.js";
5
+ import { epoch, median, periodStart, periodStarts, replacedBeforeStart, spanBucket, startOfUtcDay, sum, utcDay, windowStart, } from "./window.js";
6
+ const POOLS = ["apiKeys", "claudePlan", "chatgptPlan"];
7
+ /** Returns when a closed Run closed; the fallback only covers the nullable stored field. */
8
+ const closedAt = (summary) => Option.match(summary.closedAt, {
9
+ onSome: epoch,
10
+ onNone: () => {
11
+ const last = summary.attempts.at(-1);
12
+ return last === undefined
13
+ ? epoch(summary.run.openedAt)
14
+ : Option.match(last.endedAt, {
15
+ onSome: epoch,
16
+ onNone: () => epoch(last.startedAt),
17
+ });
18
+ },
19
+ });
20
+ /** Returns the median of `durations`, or null if there are none. */
21
+ export const durationSummary = (durations) => Option.match(median(durations), {
22
+ onNone: () => null,
23
+ onSome: (middle) => new DurationSummaryView({ count: durations.length, medianMillis: Math.round(middle) }),
24
+ });
25
+ const runOutcome = (summary) => {
26
+ switch (summary.run.state._tag) {
27
+ case "Succeeded":
28
+ return "succeeded";
29
+ case "Failed":
30
+ return "failed";
31
+ case "Canceled":
32
+ return "canceled";
33
+ default:
34
+ return null;
35
+ }
36
+ };
37
+ const attemptOutcome = (attempt) => Option.match(attempt.outcome, {
38
+ onNone: () => null,
39
+ onSome: ({ _tag }) => _tag === "Succeeded" ? "succeeded" : _tag === "Failed" ? "failed" : "canceled",
40
+ });
41
+ const outcomeCounts = (outcomes) => new OutcomeCountsView({
42
+ succeeded: outcomes.filter((outcome) => outcome === "succeeded").length,
43
+ failed: outcomes.filter((outcome) => outcome === "failed").length,
44
+ canceled: outcomes.filter((outcome) => outcome === "canceled").length,
45
+ });
46
+ /** Returns the Attempt's wall time, or `None` while it runs or if its end wasn't recorded. */
47
+ export const attemptMillis = (attempt) => Option.isNone(attempt.outcome)
48
+ ? Option.none()
49
+ : Option.map(attempt.endedAt, (endedAt) => Math.max(0, epoch(endedAt) - epoch(attempt.startedAt)));
50
+ const runMillis = (summary) => Math.max(0, closedAt(summary) - epoch(summary.run.openedAt));
51
+ /**
52
+ * Sums the tokens and prices of `units`, each the sessions of one Run or Attempt. A unit is priced
53
+ * if it has a session and each of its sessions has a price.
54
+ */
55
+ const usageSummary = (units) => {
56
+ const sessions = units.flat();
57
+ const tokens = sum(sessions.map((session) => session.tokens));
58
+ const priced = units.filter((unit) => unit.length > 0 && unit.every(({ cost }) => cost !== null));
59
+ const usd = sum(priced.flatMap((unit) => unit.flatMap(({ cost }) => (cost === null ? [] : [cost.usd]))));
60
+ return new UsageSummaryView({
61
+ measured: units.length,
62
+ tokens: TokenCount.make(tokens),
63
+ meanTokens: units.length === 0 ? null : TokenCount.make(Math.round(tokens / units.length)),
64
+ pools: POOLS.flatMap((pool) => {
65
+ const members = sessions.filter((session) => session.pool === pool);
66
+ return members.length === 0
67
+ ? []
68
+ : [
69
+ new PoolTokensView({
70
+ pool,
71
+ tokens: TokenCount.make(sum(members.map((session) => session.tokens))),
72
+ }),
73
+ ];
74
+ }),
75
+ cost: priced.length === 0
76
+ ? null
77
+ : new CostSummaryView({
78
+ usd: UsdAmount.make(usd),
79
+ meanUsd: UsdAmount.make(usd / priced.length),
80
+ estimate: priced.some((unit) => unit.some(({ cost }) => cost?.estimate === true)),
81
+ priced: priced.length,
82
+ }),
83
+ });
84
+ };
85
+ const runSessions = (summary, usage) => usage.get(summary.run.id)?.sessions ?? [];
86
+ /** Returns the closed Runs grouped by `key`, the largest group first, then by key. */
87
+ const groupRuns = (runs, key) => Object.values(EffectArray.groupBy(runs, (summary) => key(summary)))
88
+ .map((members) => [key(members[0]), members])
89
+ .sort(([leftName, left], [rightName, right]) => right.length - left.length || leftName.localeCompare(rightName));
90
+ const runGroup = (runs, usage) => ({
91
+ outcomes: outcomeCounts(runs.map(runOutcome)),
92
+ time: durationSummary(runs.map(runMillis)),
93
+ usage: usageSummary(runs
94
+ .filter(({ attempts }) => attempts.length > 0)
95
+ .map((summary) => runSessions(summary, usage))),
96
+ });
97
+ const brainGroups = (runs, usage) => {
98
+ const ended = runs.flatMap((summary) => summary.attempts
99
+ .filter((attempt) => Option.isSome(attempt.outcome))
100
+ .map((attempt) => ({
101
+ attempt,
102
+ sessions: runSessions(summary, usage).filter(({ attemptId }) => attemptId === attempt.id),
103
+ })));
104
+ const groups = EffectArray.groupBy(ended, ({ attempt: { brain } }) => JSON.stringify([brain.harness, brain.model, brain.effort]));
105
+ return Object.values(groups)
106
+ .map((members) => new BrainStatisticsView({
107
+ brain: members[0].attempt.brain,
108
+ outcomes: outcomeCounts(members.map(({ attempt }) => attemptOutcome(attempt))),
109
+ time: durationSummary(members.flatMap(({ attempt }) => Option.toArray(attemptMillis(attempt)))),
110
+ usage: usageSummary(members.map(({ sessions }) => sessions)),
111
+ }))
112
+ .sort((left, right) => right.outcomes.succeeded +
113
+ right.outcomes.failed +
114
+ right.outcomes.canceled -
115
+ (left.outcomes.succeeded + left.outcomes.failed + left.outcomes.canceled) ||
116
+ left.brain.harness.localeCompare(right.brain.harness) ||
117
+ left.brain.model.localeCompare(right.brain.model) ||
118
+ left.brain.effort.localeCompare(right.brain.effort));
119
+ };
120
+ /** Counts `instants` per period of `starts`; instants outside every period are left out. */
121
+ const perPeriod = (bucket, starts, instants) => {
122
+ const counts = new Map(starts.map((start) => [start, 0]));
123
+ for (const instant of instants) {
124
+ const start = periodStart(bucket, instant);
125
+ const count = counts.get(start);
126
+ if (count !== undefined)
127
+ counts.set(start, count + 1);
128
+ }
129
+ return counts;
130
+ };
131
+ const firstAttempt = (summary) => summary.attempts.reduce((first, attempt) => (first === undefined || attempt.number < first.number ? attempt : first), undefined);
132
+ const automaticRestart = (attempt) => attempt !== undefined &&
133
+ Option.exists(attempt.start, ({ _tag }) => _tag === "InfraRetry" || _tag === "AfterRestart");
134
+ /** Whether the operator started the Attempt by retrying the failed Run, with or without an edit. */
135
+ export const operatorRetry = (attempt) => attempt !== undefined &&
136
+ Option.exists(attempt.start, ({ _tag }) => _tag === "OperatorRetry" || _tag === "EditAndRetry");
137
+ /**
138
+ * Returns the approvals asked for and the failures raised in the window, from the Runs' openings,
139
+ * approvals, and Attempts.
140
+ */
141
+ const needsAttention = (runs, from, bucket, starts) => {
142
+ const approvals = [];
143
+ const approvalWaits = [];
144
+ const failures = [];
145
+ const retryWaits = [];
146
+ const resolutionWaits = [];
147
+ for (const summary of runs) {
148
+ const opened = epoch(summary.run.openedAt);
149
+ if (opened >= from) {
150
+ Option.match(summary.approval, {
151
+ onNone: () => {
152
+ if (summary.run.state._tag === "Waiting")
153
+ approvals.push(opened);
154
+ },
155
+ onSome: ({ approvedAt }) => {
156
+ approvals.push(opened);
157
+ approvalWaits.push(Math.max(0, epoch(approvedAt) - opened));
158
+ },
159
+ });
160
+ }
161
+ const ordered = [...summary.attempts].sort((left, right) => left.number - right.number);
162
+ ordered.forEach((attempt, index) => {
163
+ const failed = Option.exists(attempt.outcome, ({ _tag }) => _tag === "Failed");
164
+ if (!failed || Option.isNone(attempt.endedAt))
165
+ return;
166
+ const ended = epoch(attempt.endedAt.value);
167
+ const next = ordered[index + 1];
168
+ if (ended < from || automaticRestart(next))
169
+ return;
170
+ failures.push(ended);
171
+ if (Option.isSome(attempt.failureResolution)) {
172
+ resolutionWaits.push(Math.max(0, epoch(attempt.failureResolution.value.resolvedAt) - ended));
173
+ }
174
+ else if (operatorRetry(next)) {
175
+ retryWaits.push(Math.max(0, epoch(next.startedAt) - ended));
176
+ }
177
+ });
178
+ }
179
+ const approvalCounts = perPeriod(bucket, starts, approvals);
180
+ const failureCounts = perPeriod(bucket, starts, failures);
181
+ return new NeedsAttentionView({
182
+ approvals: approvals.length,
183
+ failures: failures.length,
184
+ periods: starts.map((start) => new NeedsAttentionPeriodView({
185
+ start: utcDay(start),
186
+ approvals: approvalCounts.get(start) ?? 0,
187
+ failures: failureCounts.get(start) ?? 0,
188
+ })),
189
+ approvalWait: durationSummary(approvalWaits),
190
+ retryWait: durationSummary(retryWaits),
191
+ resolutionWait: durationSummary(resolutionWaits),
192
+ failureWait: durationSummary([...retryWaits, ...resolutionWaits]),
193
+ });
194
+ };
195
+ /**
196
+ * Reduces the stored facts to the Run statistics of `window`. Run measures cover the Runs that
197
+ * closed in the window; queue wait, Worker utilization, and Needs attention also cover the open
198
+ * Runs.
199
+ */
200
+ export const runStatisticsView = ({ window, now, runs: stored, usage, workers, }) => {
201
+ const to = epoch(now);
202
+ const runs = stored.filter((summary) => !replacedBeforeStart(summary));
203
+ const from = Option.match(windowStart(window, now), {
204
+ onSome: epoch,
205
+ onNone: () => startOfUtcDay(runs.reduce((earliest, { run, attempts }) => attempts.reduce((first, { startedAt }) => Math.min(first, epoch(startedAt)), Math.min(earliest, epoch(run.openedAt))), to)),
206
+ });
207
+ const closed = runs.filter(({ run }) => !RunState.isOpen(run.state));
208
+ const bucket = spanBucket(from, to);
209
+ const starts = periodStarts(bucket, from, to);
210
+ const throughputCounts = new Map(starts.map((start) => [start, { succeeded: 0, failed: 0, canceled: 0 }]));
211
+ for (const summary of closed) {
212
+ const outcome = runOutcome(summary);
213
+ const period = throughputCounts.get(periodStart(bucket, closedAt(summary)));
214
+ if (outcome !== null && period !== undefined)
215
+ period[outcome] += 1;
216
+ }
217
+ const ended = closed.flatMap(({ attempts }) => attempts.filter(({ outcome }) => Option.isSome(outcome)));
218
+ const waits = new Map();
219
+ for (const summary of runs) {
220
+ const first = firstAttempt(summary);
221
+ if (first === undefined || epoch(first.startedAt) < from)
222
+ continue;
223
+ const ready = Math.max(epoch(summary.run.openedAt), Option.match(summary.approval, {
224
+ onNone: () => 0,
225
+ onSome: ({ approvedAt }) => epoch(approvedAt),
226
+ }));
227
+ const worker = waits.get(first.worker) ?? [];
228
+ worker.push(Math.max(0, epoch(first.startedAt) - ready));
229
+ waits.set(first.worker, worker);
230
+ }
231
+ const attemptCounts = closed.flatMap(({ attempts }) => attempts.length === 0 ? [] : [attempts.length]);
232
+ const mostAttempts = attemptCounts.reduce((most, count) => Math.max(most, count), 0);
233
+ const windowMillis = Math.max(0, to - from);
234
+ const occupied = (worker) => sum(runs.flatMap(({ attempts }) => attempts
235
+ .filter((attempt) => attempt.worker === worker)
236
+ .flatMap((attempt) => {
237
+ const end = Option.isNone(attempt.outcome)
238
+ ? Option.some(to)
239
+ : Option.map(attempt.endedAt, epoch);
240
+ return Option.toArray(Option.map(end, (until) => Math.max(0, Math.min(until, to) - Math.max(epoch(attempt.startedAt), from))));
241
+ })));
242
+ return new RunStatisticsView({
243
+ window,
244
+ from: new Date(from).toISOString(),
245
+ to: DateTime.formatIso(now),
246
+ bucket,
247
+ runs: outcomeCounts(closed.map(runOutcome)),
248
+ runTime: durationSummary(closed.map(runMillis)),
249
+ attemptTime: durationSummary(ended.flatMap((attempt) => Option.toArray(attemptMillis(attempt)))),
250
+ unmeasuredAttempts: ended.filter(({ endedAt }) => Option.isNone(endedAt)).length,
251
+ throughput: starts.map((start) => new ThroughputPeriodView({
252
+ start: utcDay(start),
253
+ ...(throughputCounts.get(start) ?? { succeeded: 0, failed: 0, canceled: 0 }),
254
+ })),
255
+ loops: groupRuns(closed, ({ run }) => run.loop).map(([loop, members]) => new LoopStatisticsView({ loop, ...runGroup(members, usage) })),
256
+ agents: groupRuns(closed, ({ agent }) => agent.name).map(([agent, members]) => new AgentStatisticsView({ agent, ...runGroup(members, usage) })),
257
+ brains: brainGroups(closed, usage),
258
+ queueWait: [...waits.entries()]
259
+ .sort(([left], [right]) => left.localeCompare(right))
260
+ .flatMap(([worker, durations]) => {
261
+ const wait = durationSummary(durations);
262
+ return wait === null ? [] : [new WorkerQueueWaitView({ worker, wait })];
263
+ }),
264
+ attemptsPerRun: Array.from({ length: mostAttempts }, (_, index) => new AttemptCountView({
265
+ attempts: index + 1,
266
+ runs: attemptCounts.filter((count) => count === index + 1).length,
267
+ })),
268
+ utilization: workers.flatMap(({ name, slots }) => {
269
+ if (slots < 1)
270
+ return [];
271
+ const held = occupied(name);
272
+ return [
273
+ new WorkerUtilizationView({
274
+ worker: name,
275
+ slots,
276
+ occupiedMillis: Math.round(held),
277
+ share: windowMillis === 0 ? 0 : Math.min(1, held / (slots * windowMillis)),
278
+ }),
279
+ ];
280
+ }),
281
+ needsAttention: needsAttention(runs, from, bucket, starts),
282
+ });
283
+ };
284
+ //# sourceMappingURL=runs.js.map