@usine/orchestrator 0.2.1 → 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.
- package/LICENSE +661 -21
- package/README.md +174 -52
- package/dist/board/items.d.ts +22 -3
- package/dist/board/items.d.ts.map +1 -1
- package/dist/board/items.js +44 -4
- package/dist/board/items.js.map +1 -1
- package/dist/board/projection.d.ts +8 -1
- package/dist/board/projection.d.ts.map +1 -1
- package/dist/board/projection.js +63 -14
- package/dist/board/projection.js.map +1 -1
- package/dist/board/tasks.d.ts +15 -3
- package/dist/board/tasks.d.ts.map +1 -1
- package/dist/board/tasks.js +28 -9
- package/dist/board/tasks.js.map +1 -1
- package/dist/cloudflare.d.ts +32 -0
- package/dist/cloudflare.d.ts.map +1 -0
- package/dist/cloudflare.js +68 -0
- package/dist/cloudflare.js.map +1 -0
- package/dist/credentials.d.ts +5 -6
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +22 -15
- package/dist/credentials.js.map +1 -1
- package/dist/current-instance/changes.d.ts +87 -0
- package/dist/current-instance/changes.d.ts.map +1 -0
- package/dist/current-instance/changes.js +141 -0
- package/dist/current-instance/changes.js.map +1 -0
- package/dist/current-instance/current-instance.d.ts +89 -0
- package/dist/current-instance/current-instance.d.ts.map +1 -0
- package/dist/current-instance/current-instance.js +163 -0
- package/dist/current-instance/current-instance.js.map +1 -0
- package/dist/exe-dev.d.ts +6 -2
- package/dist/exe-dev.d.ts.map +1 -1
- package/dist/exe-dev.js +10 -9
- package/dist/exe-dev.js.map +1 -1
- package/dist/http-client.d.ts +8 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +8 -0
- package/dist/http-client.js.map +1 -0
- package/dist/idle-triggers.d.ts +1 -1
- package/dist/idle-triggers.d.ts.map +1 -1
- package/dist/idle-triggers.js +1 -1
- package/dist/idle-triggers.js.map +1 -1
- package/dist/label-reconciler.d.ts +5 -2
- package/dist/label-reconciler.d.ts.map +1 -1
- package/dist/label-reconciler.js.map +1 -1
- package/dist/lease-order.d.ts +60 -0
- package/dist/lease-order.d.ts.map +1 -0
- package/dist/lease-order.js +76 -0
- package/dist/lease-order.js.map +1 -0
- package/dist/local.d.ts +4 -18
- package/dist/local.d.ts.map +1 -1
- package/dist/local.js +9 -45
- package/dist/local.js.map +1 -1
- package/dist/loop-matches.d.ts +28 -0
- package/dist/loop-matches.d.ts.map +1 -0
- package/dist/loop-matches.js +74 -0
- package/dist/loop-matches.js.map +1 -0
- package/dist/operator/attempt.d.ts +76 -10
- package/dist/operator/attempt.d.ts.map +1 -1
- package/dist/operator/attempt.js +69 -11
- package/dist/operator/attempt.js.map +1 -1
- package/dist/operator/board.d.ts +48 -16
- package/dist/operator/board.d.ts.map +1 -1
- package/dist/operator/board.js +48 -17
- package/dist/operator/board.js.map +1 -1
- package/dist/operator/configuration.d.ts +314 -0
- package/dist/operator/configuration.d.ts.map +1 -0
- package/dist/operator/configuration.js +490 -0
- package/dist/operator/configuration.js.map +1 -0
- package/dist/operator/desk.d.ts +206 -0
- package/dist/operator/desk.d.ts.map +1 -0
- package/dist/operator/desk.js +525 -0
- package/dist/operator/desk.js.map +1 -0
- package/dist/operator/github-changes.d.ts +88 -0
- package/dist/operator/github-changes.d.ts.map +1 -0
- package/dist/operator/github-changes.js +266 -0
- package/dist/operator/github-changes.js.map +1 -0
- package/dist/operator/http.d.ts +135 -105
- package/dist/operator/http.d.ts.map +1 -1
- package/dist/operator/http.js +155 -30
- package/dist/operator/http.js.map +1 -1
- package/dist/operator/machines.d.ts +71 -0
- package/dist/operator/machines.d.ts.map +1 -0
- package/dist/operator/machines.js +103 -0
- package/dist/operator/machines.js.map +1 -0
- package/dist/operator/need.d.ts +58 -11
- package/dist/operator/need.d.ts.map +1 -1
- package/dist/operator/need.js +61 -9
- package/dist/operator/need.js.map +1 -1
- package/dist/operator/operator.d.ts +135 -29
- package/dist/operator/operator.d.ts.map +1 -1
- package/dist/operator/operator.js +370 -63
- package/dist/operator/operator.js.map +1 -1
- package/dist/operator/overview.d.ts +7 -7
- package/dist/operator/overview.d.ts.map +1 -1
- package/dist/operator/overview.js +5 -5
- package/dist/operator/overview.js.map +1 -1
- package/dist/operator/projection.d.ts +56 -5
- package/dist/operator/projection.d.ts.map +1 -1
- package/dist/operator/projection.js +108 -9
- package/dist/operator/projection.js.map +1 -1
- package/dist/operator/run.d.ts +101 -6
- package/dist/operator/run.d.ts.map +1 -1
- package/dist/operator/run.js +100 -7
- package/dist/operator/run.js.map +1 -1
- package/dist/operator/statistics/cache.d.ts +7 -0
- package/dist/operator/statistics/cache.d.ts.map +1 -0
- package/dist/operator/statistics/cache.js +40 -0
- package/dist/operator/statistics/cache.js.map +1 -0
- package/dist/operator/statistics/runs.d.ts +36 -0
- package/dist/operator/statistics/runs.d.ts.map +1 -0
- package/dist/operator/statistics/runs.js +284 -0
- package/dist/operator/statistics/runs.js.map +1 -0
- package/dist/operator/statistics/statistics.d.ts +20 -0
- package/dist/operator/statistics/statistics.d.ts.map +1 -0
- package/dist/operator/statistics/statistics.js +138 -0
- package/dist/operator/statistics/statistics.js.map +1 -0
- package/dist/operator/statistics/tasks.d.ts +30 -0
- package/dist/operator/statistics/tasks.d.ts.map +1 -0
- package/dist/operator/statistics/tasks.js +244 -0
- package/dist/operator/statistics/tasks.js.map +1 -0
- package/dist/operator/statistics/view.d.ts +302 -0
- package/dist/operator/statistics/view.d.ts.map +1 -0
- package/dist/operator/statistics/view.js +243 -0
- package/dist/operator/statistics/view.js.map +1 -0
- package/dist/operator/statistics/window.d.ts +24 -0
- package/dist/operator/statistics/window.d.ts.map +1 -0
- package/dist/operator/statistics/window.js +47 -0
- package/dist/operator/statistics/window.js.map +1 -0
- package/dist/operator/task.d.ts +94 -0
- package/dist/operator/task.d.ts.map +1 -0
- package/dist/operator/task.js +204 -0
- package/dist/operator/task.js.map +1 -0
- package/dist/operator/transcript.d.ts +12 -12
- package/dist/operator/transcript.d.ts.map +1 -1
- package/dist/operator/transcript.js +11 -9
- package/dist/operator/transcript.js.map +1 -1
- package/dist/operator/usage.d.ts +103 -0
- package/dist/operator/usage.d.ts.map +1 -0
- package/dist/operator/usage.js +234 -0
- package/dist/operator/usage.js.map +1 -0
- package/dist/orchestrator.d.ts +8 -5
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +4 -2
- package/dist/orchestrator.js.map +1 -1
- package/dist/polling/closed-item-asks.d.ts +8 -0
- package/dist/polling/closed-item-asks.d.ts.map +1 -0
- package/dist/polling/closed-item-asks.js +28 -0
- package/dist/polling/closed-item-asks.js.map +1 -0
- package/dist/polling/cycle.d.ts +28 -10
- package/dist/polling/cycle.d.ts.map +1 -1
- package/dist/polling/cycle.js +20 -6
- package/dist/polling/cycle.js.map +1 -1
- package/dist/polling/evaluation-failures.d.ts +42 -0
- package/dist/polling/evaluation-failures.d.ts.map +1 -0
- package/dist/polling/evaluation-failures.js +103 -0
- package/dist/polling/evaluation-failures.js.map +1 -0
- package/dist/polling/hints.d.ts +2 -2
- package/dist/polling/hints.d.ts.map +1 -1
- package/dist/polling/hints.js +2 -2
- package/dist/polling/hints.js.map +1 -1
- package/dist/polling/loop-evaluation.d.ts +21 -11
- package/dist/polling/loop-evaluation.d.ts.map +1 -1
- package/dist/polling/loop-evaluation.js +70 -27
- package/dist/polling/loop-evaluation.js.map +1 -1
- package/dist/polling/open-issues.d.ts +23 -0
- package/dist/polling/open-issues.d.ts.map +1 -0
- package/dist/polling/open-issues.js +77 -0
- package/dist/polling/open-issues.js.map +1 -0
- package/dist/polling/open-pull-requests.d.ts +28 -0
- package/dist/polling/open-pull-requests.d.ts.map +1 -0
- package/dist/polling/open-pull-requests.js +131 -0
- package/dist/polling/open-pull-requests.js.map +1 -0
- package/dist/polling/polling.d.ts +20 -11
- package/dist/polling/polling.d.ts.map +1 -1
- package/dist/polling/polling.js +215 -52
- package/dist/polling/polling.js.map +1 -1
- package/dist/polling/repository-sync.d.ts +21 -14
- package/dist/polling/repository-sync.d.ts.map +1 -1
- package/dist/polling/repository-sync.js +35 -28
- package/dist/polling/repository-sync.js.map +1 -1
- package/dist/polling-triggers.d.ts +1 -1
- package/dist/polling-triggers.d.ts.map +1 -1
- package/dist/polling-triggers.js +1 -1
- package/dist/polling-triggers.js.map +1 -1
- package/dist/reloads.d.ts +14 -0
- package/dist/reloads.d.ts.map +1 -0
- package/dist/reloads.js +7 -0
- package/dist/reloads.js.map +1 -0
- package/dist/runtime.d.ts +24 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +58 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schedule-triggers.d.ts +14 -10
- package/dist/schedule-triggers.d.ts.map +1 -1
- package/dist/schedule-triggers.js +36 -31
- package/dist/schedule-triggers.js.map +1 -1
- package/dist/scheduler.d.ts +45 -5
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +587 -44
- package/dist/scheduler.js.map +1 -1
- package/dist/ssh.d.ts +103 -0
- package/dist/ssh.d.ts.map +1 -0
- package/dist/ssh.js +144 -0
- package/dist/ssh.js.map +1 -0
- package/dist/trigger-condition.d.ts +12 -0
- package/dist/trigger-condition.d.ts.map +1 -0
- package/dist/trigger-condition.js +88 -0
- package/dist/trigger-condition.js.map +1 -0
- package/dist/trigger-submission.d.ts +16 -13
- package/dist/trigger-submission.d.ts.map +1 -1
- package/dist/trigger-submission.js +19 -14
- package/dist/trigger-submission.js.map +1 -1
- package/dist/worker-engine.d.ts +13 -0
- package/dist/worker-engine.d.ts.map +1 -0
- package/dist/worker-engine.js +56 -0
- package/dist/worker-engine.js.map +1 -0
- package/dist/worker-status.d.ts +140 -0
- package/dist/worker-status.d.ts.map +1 -0
- package/dist/worker-status.js +76 -0
- package/dist/worker-status.js.map +1 -0
- package/package.json +47 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/operator/task.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as AttemptChannel from "@usine/core/attempt/channel";
|
|
2
2
|
import { Schema } from "effect";
|
|
3
3
|
declare const FailedTranscriptView_base: Schema.Class<FailedTranscriptView, Schema.TaggedStruct<"Failed", {
|
|
4
|
-
readonly failure: Schema.Union<readonly [typeof import("./attempt.ts").InfraFailureView, typeof import("./attempt.ts").DefectFailureView, typeof import("./attempt.ts").AgentFailureView, typeof import("./attempt.ts").RunawayFailureView, typeof import("./attempt.ts").ChildSessionBudgetFailureView]>;
|
|
4
|
+
readonly failure: Schema.Union<readonly [typeof import("./attempt.ts").InfraFailureView, typeof import("./attempt.ts").DefectFailureView, typeof import("./attempt.ts").AgentFailureView, typeof import("./attempt.ts").BlockedFailureView, typeof import("./attempt.ts").QuestionFailureView, typeof import("./attempt.ts").RunawayFailureView, typeof import("./attempt.ts").ChildSessionBudgetFailureView]>;
|
|
5
5
|
}>, {}>;
|
|
6
|
-
/** An Attempt failure
|
|
6
|
+
/** An Attempt failure in the transcript with only displayable details. */
|
|
7
7
|
export declare class FailedTranscriptView extends FailedTranscriptView_base {
|
|
8
8
|
}
|
|
9
|
-
/** Attempt channel messages
|
|
10
|
-
export declare const TranscriptPayload: Schema.Union<readonly [typeof AttemptChannel.Started, typeof AttemptChannel.SessionEvent, typeof AttemptChannel.Final, typeof FailedTranscriptView, typeof AttemptChannel.Interrupted, typeof AttemptChannel.Steer, typeof AttemptChannel.Interrupt, typeof AttemptChannel.OperatorMessage, typeof AttemptChannel.Release, typeof AttemptChannel.Cancel, typeof AttemptChannel.InterventionApplied, typeof AttemptChannel.InterventionRejected]>;
|
|
9
|
+
/** The Attempt channel messages shown to the operator, with defect causes removed from failures. */
|
|
10
|
+
export declare const TranscriptPayload: Schema.Union<readonly [typeof AttemptChannel.Started, typeof AttemptChannel.SessionEvent, typeof AttemptChannel.Final, typeof FailedTranscriptView, typeof AttemptChannel.Interrupted, typeof AttemptChannel.Steer, typeof AttemptChannel.Interrupt, typeof AttemptChannel.OperatorMessage, typeof AttemptChannel.Release, typeof AttemptChannel.Cancel, typeof AttemptChannel.InterventionApplied, typeof AttemptChannel.InterventionRejected, typeof AttemptChannel.WorkerUnresponsive, typeof AttemptChannel.WorkerResponsive]>;
|
|
11
11
|
export type TranscriptPayload = typeof TranscriptPayload.Type;
|
|
12
12
|
declare const TranscriptEventView_base: Schema.Class<TranscriptEventView, Schema.Struct<{
|
|
13
13
|
readonly sequence: Schema.brand<Schema.Int, "TranscriptSequence">;
|
|
@@ -16,43 +16,43 @@ declare const TranscriptEventView_base: Schema.Class<TranscriptEventView, Schema
|
|
|
16
16
|
readonly direction: Schema.Literals<readonly ["inbound", "outbound"]>;
|
|
17
17
|
readonly target: Schema.optionalKey<Schema.Union<readonly [typeof AttemptChannel.ParentTarget, typeof AttemptChannel.ChildTarget]>>;
|
|
18
18
|
readonly operator: Schema.optionalKey<Schema.NonEmptyString>;
|
|
19
|
-
readonly payload: Schema.Union<readonly [typeof AttemptChannel.Started, typeof AttemptChannel.SessionEvent, typeof AttemptChannel.Final, typeof FailedTranscriptView, typeof AttemptChannel.Interrupted, typeof AttemptChannel.Steer, typeof AttemptChannel.Interrupt, typeof AttemptChannel.OperatorMessage, typeof AttemptChannel.Release, typeof AttemptChannel.Cancel, typeof AttemptChannel.InterventionApplied, typeof AttemptChannel.InterventionRejected]>;
|
|
19
|
+
readonly payload: Schema.Union<readonly [typeof AttemptChannel.Started, typeof AttemptChannel.SessionEvent, typeof AttemptChannel.Final, typeof FailedTranscriptView, typeof AttemptChannel.Interrupted, typeof AttemptChannel.Steer, typeof AttemptChannel.Interrupt, typeof AttemptChannel.OperatorMessage, typeof AttemptChannel.Release, typeof AttemptChannel.Cancel, typeof AttemptChannel.InterventionApplied, typeof AttemptChannel.InterventionRejected, typeof AttemptChannel.WorkerUnresponsive, typeof AttemptChannel.WorkerResponsive]>;
|
|
20
20
|
}>, {}>;
|
|
21
|
-
/** A
|
|
21
|
+
/** A stored Attempt channel message with its sequence, direction, and receipt time. */
|
|
22
22
|
export declare class TranscriptEventView extends TranscriptEventView_base {
|
|
23
23
|
}
|
|
24
24
|
declare const TranscriptPageCursor_base: Schema.Class<TranscriptPageCursor, Schema.Struct<{
|
|
25
25
|
readonly attemptId: Schema.brand<Schema.NonEmptyString, "AttemptId">;
|
|
26
26
|
readonly before: Schema.brand<Schema.Int, "TranscriptSequence">;
|
|
27
27
|
}>, {}>;
|
|
28
|
-
/**
|
|
28
|
+
/** The start of the next earlier transcript page within one Attempt. */
|
|
29
29
|
export declare class TranscriptPageCursor extends TranscriptPageCursor_base {
|
|
30
30
|
}
|
|
31
31
|
declare const ColdTranscriptRequest_base: Schema.Class<ColdTranscriptRequest, Schema.TaggedStruct<"ColdTranscriptRequest", {}>, {}>;
|
|
32
|
-
/**
|
|
32
|
+
/** A request for the newest bounded transcript window when a Run opens. */
|
|
33
33
|
export declare class ColdTranscriptRequest extends ColdTranscriptRequest_base {
|
|
34
34
|
}
|
|
35
35
|
declare const TailTranscriptRequest_base: Schema.Class<TailTranscriptRequest, Schema.TaggedStruct<"TailTranscriptRequest", {
|
|
36
36
|
readonly after: Schema.brand<Schema.Int, "TranscriptSequence">;
|
|
37
37
|
}>, {}>;
|
|
38
|
-
/**
|
|
38
|
+
/** A request for transcript events after the last seen sequence. */
|
|
39
39
|
export declare class TailTranscriptRequest extends TailTranscriptRequest_base {
|
|
40
40
|
}
|
|
41
41
|
declare const EarlierTranscriptRequest_base: Schema.Class<EarlierTranscriptRequest, Schema.TaggedStruct<"EarlierTranscriptRequest", {
|
|
42
42
|
readonly attemptId: Schema.brand<Schema.NonEmptyString, "AttemptId">;
|
|
43
43
|
readonly before: Schema.brand<Schema.Int, "TranscriptSequence">;
|
|
44
44
|
}>, {}>;
|
|
45
|
-
/**
|
|
45
|
+
/** A request for an earlier page before a sequence within one Attempt. */
|
|
46
46
|
export declare class EarlierTranscriptRequest extends EarlierTranscriptRequest_base {
|
|
47
47
|
}
|
|
48
|
-
/**
|
|
48
|
+
/** A request for the initial window, live tail, or an earlier page of a Run transcript. */
|
|
49
49
|
export declare const TranscriptRequest: Schema.Union<readonly [typeof ColdTranscriptRequest, typeof TailTranscriptRequest, typeof EarlierTranscriptRequest]>;
|
|
50
50
|
export type TranscriptRequest = typeof TranscriptRequest.Type;
|
|
51
51
|
declare const TranscriptAttemptNotFoundError_base: Schema.Class<TranscriptAttemptNotFoundError, Schema.TaggedStruct<"TranscriptAttemptNotFoundError", {
|
|
52
52
|
readonly runId: Schema.brand<Schema.NonEmptyString, "RunId">;
|
|
53
53
|
readonly attemptId: Schema.brand<Schema.NonEmptyString, "AttemptId">;
|
|
54
54
|
}>, import("effect/Cause").YieldableError>;
|
|
55
|
-
/** The requested Attempt
|
|
55
|
+
/** The requested Attempt isn't in the Run whose transcript is being read. */
|
|
56
56
|
export declare class TranscriptAttemptNotFoundError extends TranscriptAttemptNotFoundError_base {
|
|
57
57
|
}
|
|
58
58
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/operator/transcript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;AAGhC,
|
|
1
|
+
{"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/operator/transcript.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;AAGhC,0EAA0E;AAC1E,qBAAa,oBAAqB,SAAQ,yBAEL;CAAG;AAExC,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,ogBAe5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;;;;;;;;;;AAE9D,uFAAuF;AACvF,qBAAa,mBAAoB,SAAQ,wBAUvC;CAAG;;;;;AAEL,wEAAwE;AACxE,qBAAa,oBAAqB,SAAQ,yBAKxC;CAAG;;AAEL,2EAA2E;AAC3E,qBAAa,qBAAsB,SAAQ,0BAEb;CAAG;;;;AAEjC,oEAAoE;AACpE,qBAAa,qBAAsB,SAAQ,0BAEc;CAAG;;;;;AAE5D,0EAA0E;AAC1E,qBAAa,wBAAyB,SAAQ,6BAK5C;CAAG;AAEL,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,sHAI5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC;;;;;AAE9D,6EAA6E;AAC7E,qBAAa,8BAA+B,SAAQ,mCAKlD;CAAG"}
|
|
@@ -4,10 +4,10 @@ import { RunId } from "@usine/core/run";
|
|
|
4
4
|
import { TranscriptSequence } from "@usine/engine/transcript";
|
|
5
5
|
import { Schema } from "effect";
|
|
6
6
|
import { FailureView } from "./attempt.js";
|
|
7
|
-
/** An Attempt failure
|
|
7
|
+
/** An Attempt failure in the transcript with only displayable details. */
|
|
8
8
|
export class FailedTranscriptView extends Schema.TaggedClass("@usine/orchestrator/FailedTranscriptView")("Failed", { failure: FailureView }) {
|
|
9
9
|
}
|
|
10
|
-
/** Attempt channel messages
|
|
10
|
+
/** The Attempt channel messages shown to the operator, with defect causes removed from failures. */
|
|
11
11
|
export const TranscriptPayload = Schema.Union([
|
|
12
12
|
AttemptChannel.Started,
|
|
13
13
|
AttemptChannel.SessionEvent,
|
|
@@ -21,8 +21,10 @@ export const TranscriptPayload = Schema.Union([
|
|
|
21
21
|
AttemptChannel.Cancel,
|
|
22
22
|
AttemptChannel.InterventionApplied,
|
|
23
23
|
AttemptChannel.InterventionRejected,
|
|
24
|
+
AttemptChannel.WorkerUnresponsive,
|
|
25
|
+
AttemptChannel.WorkerResponsive,
|
|
24
26
|
]);
|
|
25
|
-
/** A
|
|
27
|
+
/** A stored Attempt channel message with its sequence, direction, and receipt time. */
|
|
26
28
|
export class TranscriptEventView extends Schema.Class("@usine/orchestrator/TranscriptEventView")({
|
|
27
29
|
sequence: TranscriptSequence,
|
|
28
30
|
attemptId: AttemptId,
|
|
@@ -33,31 +35,31 @@ export class TranscriptEventView extends Schema.Class("@usine/orchestrator/Trans
|
|
|
33
35
|
payload: TranscriptPayload,
|
|
34
36
|
}) {
|
|
35
37
|
}
|
|
36
|
-
/**
|
|
38
|
+
/** The start of the next earlier transcript page within one Attempt. */
|
|
37
39
|
export class TranscriptPageCursor extends Schema.Class("@usine/orchestrator/TranscriptPageCursor")({
|
|
38
40
|
attemptId: AttemptId,
|
|
39
41
|
before: TranscriptSequence,
|
|
40
42
|
}) {
|
|
41
43
|
}
|
|
42
|
-
/**
|
|
44
|
+
/** A request for the newest bounded transcript window when a Run opens. */
|
|
43
45
|
export class ColdTranscriptRequest extends Schema.TaggedClass("@usine/orchestrator/ColdTranscriptRequest")("ColdTranscriptRequest", {}) {
|
|
44
46
|
}
|
|
45
|
-
/**
|
|
47
|
+
/** A request for transcript events after the last seen sequence. */
|
|
46
48
|
export class TailTranscriptRequest extends Schema.TaggedClass("@usine/orchestrator/TailTranscriptRequest")("TailTranscriptRequest", { after: TranscriptSequence }) {
|
|
47
49
|
}
|
|
48
|
-
/**
|
|
50
|
+
/** A request for an earlier page before a sequence within one Attempt. */
|
|
49
51
|
export class EarlierTranscriptRequest extends Schema.TaggedClass("@usine/orchestrator/EarlierTranscriptRequest")("EarlierTranscriptRequest", {
|
|
50
52
|
attemptId: AttemptId,
|
|
51
53
|
before: TranscriptSequence,
|
|
52
54
|
}) {
|
|
53
55
|
}
|
|
54
|
-
/**
|
|
56
|
+
/** A request for the initial window, live tail, or an earlier page of a Run transcript. */
|
|
55
57
|
export const TranscriptRequest = Schema.Union([
|
|
56
58
|
ColdTranscriptRequest,
|
|
57
59
|
TailTranscriptRequest,
|
|
58
60
|
EarlierTranscriptRequest,
|
|
59
61
|
]);
|
|
60
|
-
/** The requested Attempt
|
|
62
|
+
/** The requested Attempt isn't in the Run whose transcript is being read. */
|
|
61
63
|
export class TranscriptAttemptNotFoundError extends Schema.TaggedError("@usine/orchestrator/TranscriptAttemptNotFoundError")("TranscriptAttemptNotFoundError", {
|
|
62
64
|
runId: RunId,
|
|
63
65
|
attemptId: AttemptId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/operator/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/operator/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,0EAA0E;AAC1E,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,CAC1D,0CAA0C,CAC3C,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;CAAG;AAExC,oGAAoG;AACpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5C,cAAc,CAAC,OAAO;IACtB,cAAc,CAAC,YAAY;IAC3B,cAAc,CAAC,KAAK;IACpB,oBAAoB;IACpB,cAAc,CAAC,WAAW;IAC1B,cAAc,CAAC,KAAK;IACpB,cAAc,CAAC,SAAS;IACxB,cAAc,CAAC,eAAe;IAC9B,cAAc,CAAC,OAAO;IACtB,cAAc,CAAC,MAAM;IACrB,cAAc,CAAC,mBAAmB;IAClC,cAAc,CAAC,oBAAoB;IACnC,cAAc,CAAC,kBAAkB;IACjC,cAAc,CAAC,gBAAgB;CAChC,CAAC,CAAC;AAGH,uFAAuF;AACvF,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,KAAK,CACnD,yCAAyC,CAC1C,CAAC;IACA,QAAQ,EAAE,kBAAkB;IAC5B,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,SAAS,EAAE,cAAc,CAAC,SAAS;IACnC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC;IACxD,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC;IACnD,OAAO,EAAE,iBAAiB;CAC3B,CAAC;CAAG;AAEL,wEAAwE;AACxE,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,KAAK,CACpD,0CAA0C,CAC3C,CAAC;IACA,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,kBAAkB;CAC3B,CAAC;CAAG;AAEL,2EAA2E;AAC3E,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,CAC3D,2CAA2C,CAC5C,CAAC,uBAAuB,EAAE,EAAE,CAAC;CAAG;AAEjC,oEAAoE;AACpE,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,CAC3D,2CAA2C,CAC5C,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAAG;AAE5D,0EAA0E;AAC1E,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,CAC9D,8CAA8C,CAC/C,CAAC,0BAA0B,EAAE;IAC5B,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,kBAAkB;CAC3B,CAAC;CAAG;AAEL,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5C,qBAAqB;IACrB,qBAAqB;IACrB,wBAAwB;CACzB,CAAC,CAAC;AAGH,6EAA6E;AAC7E,MAAM,OAAO,8BAA+B,SAAQ,MAAM,CAAC,WAAW,CACpE,oDAAoD,CACrD,CAAC,gCAAgC,EAAE;IAClC,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC;CAAG"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { RunStoreError } from "@usine/engine/engine";
|
|
2
|
+
import type { RunId } from "@usine/core/run";
|
|
3
|
+
import { RunReader, type RunSnapshot } from "@usine/engine/run-reader";
|
|
4
|
+
import { Context, Effect, Layer, Schema } from "effect";
|
|
5
|
+
import type { AttemptView } from "./attempt.ts";
|
|
6
|
+
declare const UsageCostView_base: Schema.Class<UsageCostView, Schema.Struct<{
|
|
7
|
+
readonly usd: Schema.brand<Schema.Finite, "UsdAmount">;
|
|
8
|
+
readonly estimate: Schema.Boolean;
|
|
9
|
+
}>, {}>;
|
|
10
|
+
/**
|
|
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
|
+
*/
|
|
14
|
+
export declare class UsageCostView extends UsageCostView_base {
|
|
15
|
+
}
|
|
16
|
+
declare const SessionUsageView_base: Schema.Class<SessionUsageView, Schema.Struct<{
|
|
17
|
+
readonly attemptId: Schema.brand<Schema.NonEmptyString, "AttemptId">;
|
|
18
|
+
readonly session: Schema.Union<readonly [typeof import("@usine/core/agent/session").ParentSession, typeof import("@usine/core/agent/session").ChildSession]>;
|
|
19
|
+
readonly pool: Schema.Literals<readonly ["apiKeys", "claudePlan", "chatgptPlan"]>;
|
|
20
|
+
readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
|
|
21
|
+
/** Null if neither the harness nor the OpenAI price table priced the session. */
|
|
22
|
+
readonly cost: Schema.NullOr<typeof UsageCostView>;
|
|
23
|
+
}>, {}>;
|
|
24
|
+
/** One Attempt session's usage from its highest token report, and its billing pool. */
|
|
25
|
+
export declare class SessionUsageView extends SessionUsageView_base {
|
|
26
|
+
}
|
|
27
|
+
declare const PoolUsageView_base: Schema.Class<PoolUsageView, Schema.Struct<{
|
|
28
|
+
readonly pool: Schema.Literals<readonly ["apiKeys", "claudePlan", "chatgptPlan"]>;
|
|
29
|
+
readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
|
|
30
|
+
/** Null if any session in the pool has no price. */
|
|
31
|
+
readonly cost: Schema.NullOr<typeof UsageCostView>;
|
|
32
|
+
}>, {}>;
|
|
33
|
+
/** A Run's usage in one billing pool. */
|
|
34
|
+
export declare class PoolUsageView extends PoolUsageView_base {
|
|
35
|
+
}
|
|
36
|
+
declare const RunUsageView_base: Schema.Class<RunUsageView, Schema.Struct<{
|
|
37
|
+
readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
|
|
38
|
+
/** In the order API keys, Claude plan, ChatGPT plan; unused pools are absent. */
|
|
39
|
+
readonly pools: Schema.$Array<typeof PoolUsageView>;
|
|
40
|
+
/** In order of Attempt start, then first report. */
|
|
41
|
+
readonly sessions: Schema.$Array<typeof SessionUsageView>;
|
|
42
|
+
}>, {}>;
|
|
43
|
+
/** The tokens a Run's Attempts used, per pool and session, with their prices. */
|
|
44
|
+
export declare class RunUsageView extends RunUsageView_base {
|
|
45
|
+
}
|
|
46
|
+
declare const TaskPoolUsageView_base: Schema.Class<TaskPoolUsageView, Schema.Struct<{
|
|
47
|
+
readonly pool: Schema.Literals<readonly ["apiKeys", "claudePlan", "chatgptPlan"]>;
|
|
48
|
+
readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
|
|
49
|
+
/** The cost of the priced sessions, or null if no session in the pool has a price yet. */
|
|
50
|
+
readonly cost: Schema.NullOr<typeof UsageCostView>;
|
|
51
|
+
/** Whether a session in the pool has no price yet, so `cost` is a lower bound. */
|
|
52
|
+
readonly unpriced: Schema.Boolean;
|
|
53
|
+
}>, {}>;
|
|
54
|
+
/** A Task's usage in one billing pool, summed over every session of every Run. */
|
|
55
|
+
export declare class TaskPoolUsageView extends TaskPoolUsageView_base {
|
|
56
|
+
}
|
|
57
|
+
declare const TaskUsageView_base: Schema.Class<TaskUsageView, Schema.Struct<{
|
|
58
|
+
/** The summed wall time of ended Attempts, each from start to recorded end. */
|
|
59
|
+
readonly durationMillis: Schema.Int;
|
|
60
|
+
/** The start times of running Attempts; add the time since each to `durationMillis`. */
|
|
61
|
+
readonly runningSince: Schema.$Array<Schema.String>;
|
|
62
|
+
/** The number of ended Attempts with no recorded end, excluded from `durationMillis`. */
|
|
63
|
+
readonly unmeasured: Schema.Int;
|
|
64
|
+
readonly tokens: Schema.brand<Schema.Int, "TokenCount">;
|
|
65
|
+
/**
|
|
66
|
+
* Each pool summed over the Runs, in the order API keys, Claude plan, ChatGPT plan; unused
|
|
67
|
+
* pools are absent.
|
|
68
|
+
*/
|
|
69
|
+
readonly pools: Schema.$Array<typeof TaskPoolUsageView>;
|
|
70
|
+
/**
|
|
71
|
+
* The summed cost of the priced pools, or null if no pool has a price. It's an estimate if it
|
|
72
|
+
* includes the Claude or ChatGPT plan, and a lower bound if a pool is `unpriced`.
|
|
73
|
+
*/
|
|
74
|
+
readonly cost: Schema.NullOr<typeof UsageCostView>;
|
|
75
|
+
}>, {}>;
|
|
76
|
+
/**
|
|
77
|
+
* A Task's usage over every Run on its Items: Attempt wall time, and tokens and cost per billing
|
|
78
|
+
* pool.
|
|
79
|
+
*/
|
|
80
|
+
export declare class TaskUsageView extends TaskUsageView_base {
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Sums the Attempt time, tokens, and cost of a Task's `runs`. Pools sum sessions rather than Run
|
|
84
|
+
* pools, so priced sessions count even when another session is unpriced, which sets `unpriced`.
|
|
85
|
+
*/
|
|
86
|
+
export declare const taskUsage: (runs: ReadonlyArray<{
|
|
87
|
+
readonly id: RunId;
|
|
88
|
+
readonly attempts: ReadonlyArray<Pick<AttemptView, "startedAt" | "endedAt" | "outcome">>;
|
|
89
|
+
}>, usage: ReadonlyMap<RunId, RunUsageView>) => TaskUsageView;
|
|
90
|
+
type RunUsageSource = Pick<RunSnapshot, "run" | "attempts">;
|
|
91
|
+
declare const RunUsageReader_base: Context.ServiceClass<RunUsageReader, "@usine/orchestrator/RunUsageReader", {
|
|
92
|
+
readonly read: (run: RunUsageSource) => Effect.Effect<RunUsageView, RunStoreError>;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* Reads a Run's usage from each session's highest token report. Caches the reports of Attempts with
|
|
96
|
+
* an outcome and rereads running Attempts on every call. Logs one warning per Codex model that the
|
|
97
|
+
* OpenAI price table lacks.
|
|
98
|
+
*/
|
|
99
|
+
export declare class RunUsageReader extends RunUsageReader_base {
|
|
100
|
+
static readonly layer: Layer.Layer<RunUsageReader, never, RunReader>;
|
|
101
|
+
}
|
|
102
|
+
export {};
|
|
103
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { openAiPrice } from "@usine/agents/openai-prices";
|
|
2
|
+
import { AgentSession, BillingPool, sessionPool, TokenCount, UsdAmount, } from "@usine/core/agent/session";
|
|
3
|
+
import { AttemptId } from "@usine/core/attempt";
|
|
4
|
+
import { RunReader } from "@usine/engine/run-reader";
|
|
5
|
+
import { TranscriptUsageQuery } from "@usine/engine/transcript";
|
|
6
|
+
import { Context, Effect, Layer, Option, Schema } from "effect";
|
|
7
|
+
/**
|
|
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).
|
|
10
|
+
*/
|
|
11
|
+
export class UsageCostView extends Schema.Class("@usine/orchestrator/UsageCostView")({ usd: UsdAmount, estimate: Schema.Boolean }) {
|
|
12
|
+
}
|
|
13
|
+
/** One Attempt session's usage from its highest token report, and its billing pool. */
|
|
14
|
+
export class SessionUsageView extends Schema.Class("@usine/orchestrator/SessionUsageView")({
|
|
15
|
+
attemptId: AttemptId,
|
|
16
|
+
session: AgentSession,
|
|
17
|
+
pool: BillingPool,
|
|
18
|
+
tokens: TokenCount,
|
|
19
|
+
/** Null if neither the harness nor the OpenAI price table priced the session. */
|
|
20
|
+
cost: Schema.NullOr(UsageCostView),
|
|
21
|
+
}) {
|
|
22
|
+
}
|
|
23
|
+
/** A Run's usage in one billing pool. */
|
|
24
|
+
export class PoolUsageView extends Schema.Class("@usine/orchestrator/PoolUsageView")({
|
|
25
|
+
pool: BillingPool,
|
|
26
|
+
tokens: TokenCount,
|
|
27
|
+
/** Null if any session in the pool has no price. */
|
|
28
|
+
cost: Schema.NullOr(UsageCostView),
|
|
29
|
+
}) {
|
|
30
|
+
}
|
|
31
|
+
/** The tokens a Run's Attempts used, per pool and session, with their prices. */
|
|
32
|
+
export class RunUsageView extends Schema.Class("@usine/orchestrator/RunUsageView")({
|
|
33
|
+
tokens: TokenCount,
|
|
34
|
+
/** In the order API keys, Claude plan, ChatGPT plan; unused pools are absent. */
|
|
35
|
+
pools: Schema.Array(PoolUsageView),
|
|
36
|
+
/** In order of Attempt start, then first report. */
|
|
37
|
+
sessions: Schema.Array(SessionUsageView),
|
|
38
|
+
}) {
|
|
39
|
+
}
|
|
40
|
+
/** A Task's usage in one billing pool, summed over every session of every Run. */
|
|
41
|
+
export class TaskPoolUsageView extends Schema.Class("@usine/orchestrator/TaskPoolUsageView")({
|
|
42
|
+
pool: BillingPool,
|
|
43
|
+
tokens: TokenCount,
|
|
44
|
+
/** The cost of the priced sessions, or null if no session in the pool has a price yet. */
|
|
45
|
+
cost: Schema.NullOr(UsageCostView),
|
|
46
|
+
/** Whether a session in the pool has no price yet, so `cost` is a lower bound. */
|
|
47
|
+
unpriced: Schema.Boolean,
|
|
48
|
+
}) {
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A Task's usage over every Run on its Items: Attempt wall time, and tokens and cost per billing
|
|
52
|
+
* pool.
|
|
53
|
+
*/
|
|
54
|
+
export class TaskUsageView extends Schema.Class("@usine/orchestrator/TaskUsageView")({
|
|
55
|
+
/** The summed wall time of ended Attempts, each from start to recorded end. */
|
|
56
|
+
durationMillis: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
|
|
57
|
+
/** The start times of running Attempts; add the time since each to `durationMillis`. */
|
|
58
|
+
runningSince: Schema.Array(Schema.String),
|
|
59
|
+
/** The number of ended Attempts with no recorded end, excluded from `durationMillis`. */
|
|
60
|
+
unmeasured: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),
|
|
61
|
+
tokens: TokenCount,
|
|
62
|
+
/**
|
|
63
|
+
* Each pool summed over the Runs, in the order API keys, Claude plan, ChatGPT plan; unused
|
|
64
|
+
* pools are absent.
|
|
65
|
+
*/
|
|
66
|
+
pools: Schema.Array(TaskPoolUsageView),
|
|
67
|
+
/**
|
|
68
|
+
* The summed cost of the priced pools, or null if no pool has a price. It's an estimate if it
|
|
69
|
+
* includes the Claude or ChatGPT plan, and a lower bound if a pool is `unpriced`.
|
|
70
|
+
*/
|
|
71
|
+
cost: Schema.NullOr(UsageCostView),
|
|
72
|
+
}) {
|
|
73
|
+
}
|
|
74
|
+
const POOLS = ["apiKeys", "claudePlan", "chatgptPlan"];
|
|
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));
|
|
83
|
+
/**
|
|
84
|
+
* Sums a Run's token reports per pool and for the Run, using each session's highest report because
|
|
85
|
+
* reports are cumulative.
|
|
86
|
+
*/
|
|
87
|
+
const runUsage = (reports) => {
|
|
88
|
+
const highest = new Map();
|
|
89
|
+
for (const { attemptId, envelope } of reports) {
|
|
90
|
+
const payload = envelope.payload;
|
|
91
|
+
if (payload._tag !== "SessionEvent" || payload.event._tag !== "SessionTokensUpdated")
|
|
92
|
+
continue;
|
|
93
|
+
const key = `${attemptId} ${payload.event.session.id}`;
|
|
94
|
+
const previous = highest.get(key);
|
|
95
|
+
if (previous !== undefined && previous.report.totalTokens >= payload.event.totalTokens)
|
|
96
|
+
continue;
|
|
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
|
+
attemptId,
|
|
107
|
+
session: report.session,
|
|
108
|
+
pool,
|
|
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
|
+
: []));
|
|
118
|
+
const pools = POOLS.flatMap((pool) => {
|
|
119
|
+
const members = sessions.filter((session) => session.pool === pool);
|
|
120
|
+
if (members.length === 0)
|
|
121
|
+
return [];
|
|
122
|
+
const costs = members.flatMap(({ cost }) => (cost === null ? [] : [cost.usd]));
|
|
123
|
+
return [
|
|
124
|
+
new PoolUsageView({
|
|
125
|
+
pool,
|
|
126
|
+
tokens: TokenCount.make(members.reduce((sum, { tokens }) => sum + tokens, 0)),
|
|
127
|
+
cost: priced(pool, costs.length === members.length
|
|
128
|
+
? Option.some(UsdAmount.make(costs.reduce((sum, usd) => sum + usd, 0)))
|
|
129
|
+
: Option.none()),
|
|
130
|
+
}),
|
|
131
|
+
];
|
|
132
|
+
});
|
|
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
|
+
};
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Sums the Attempt time, tokens, and cost of a Task's `runs`. Pools sum sessions rather than Run
|
|
144
|
+
* pools, so priced sessions count even when another session is unpriced, which sets `unpriced`.
|
|
145
|
+
*/
|
|
146
|
+
export const taskUsage = (runs, usage) => {
|
|
147
|
+
let durationMillis = 0;
|
|
148
|
+
let unmeasured = 0;
|
|
149
|
+
const runningSince = [];
|
|
150
|
+
for (const { attempts } of runs) {
|
|
151
|
+
for (const { startedAt, endedAt, outcome } of attempts) {
|
|
152
|
+
if (outcome === null)
|
|
153
|
+
runningSince.push(startedAt);
|
|
154
|
+
else if (endedAt === null)
|
|
155
|
+
unmeasured += 1;
|
|
156
|
+
else
|
|
157
|
+
durationMillis += Math.max(0, Date.parse(endedAt) - Date.parse(startedAt));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const sessions = runs.flatMap(({ id }) => usage.get(id)?.sessions ?? []);
|
|
161
|
+
const pools = POOLS.flatMap((pool) => {
|
|
162
|
+
const members = sessions.filter((session) => session.pool === pool);
|
|
163
|
+
if (members.length === 0)
|
|
164
|
+
return [];
|
|
165
|
+
const costs = members.flatMap(({ cost }) => (cost === null ? [] : [cost.usd]));
|
|
166
|
+
return [
|
|
167
|
+
new TaskPoolUsageView({
|
|
168
|
+
pool,
|
|
169
|
+
tokens: TokenCount.make(members.reduce((sum, { tokens }) => sum + tokens, 0)),
|
|
170
|
+
cost: priced(pool, costs.length === 0
|
|
171
|
+
? Option.none()
|
|
172
|
+
: Option.some(UsdAmount.make(costs.reduce((sum, usd) => sum + usd, 0)))),
|
|
173
|
+
unpriced: costs.length < members.length,
|
|
174
|
+
}),
|
|
175
|
+
];
|
|
176
|
+
});
|
|
177
|
+
const costs = pools.flatMap(({ cost }) => (cost === null ? [] : [cost]));
|
|
178
|
+
return new TaskUsageView({
|
|
179
|
+
durationMillis: Math.round(durationMillis),
|
|
180
|
+
runningSince,
|
|
181
|
+
unmeasured,
|
|
182
|
+
tokens: TokenCount.make(sessions.reduce((sum, { tokens }) => sum + tokens, 0)),
|
|
183
|
+
pools,
|
|
184
|
+
cost: costs.length === 0
|
|
185
|
+
? null
|
|
186
|
+
: new UsageCostView({
|
|
187
|
+
usd: UsdAmount.make(costs.reduce((sum, { usd }) => sum + usd, 0)),
|
|
188
|
+
estimate: costs.some(({ estimate }) => estimate),
|
|
189
|
+
}),
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
const makeRunUsageReader = Effect.gen(function* () {
|
|
193
|
+
const runs = yield* RunReader;
|
|
194
|
+
const ended = yield* Effect.sync(() => new Map());
|
|
195
|
+
const loggedModels = yield* Effect.sync(() => new Set());
|
|
196
|
+
const attemptReports = Effect.fn("RunUsageReader.attemptReports")(function* (attempt) {
|
|
197
|
+
const cached = ended.get(attempt.id);
|
|
198
|
+
if (cached !== undefined)
|
|
199
|
+
return { reports: cached, read: false };
|
|
200
|
+
const reports = yield* runs.transcript(new TranscriptUsageQuery({ attemptId: attempt.id }));
|
|
201
|
+
if (Option.isSome(attempt.outcome))
|
|
202
|
+
ended.set(attempt.id, reports);
|
|
203
|
+
return { reports, read: true };
|
|
204
|
+
});
|
|
205
|
+
const read = Effect.fn("RunUsageReader.read")(function* (snapshot) {
|
|
206
|
+
yield* Effect.annotateCurrentSpan({ runId: snapshot.run.id });
|
|
207
|
+
const attempts = yield* Effect.forEach(snapshot.attempts, attemptReports, { concurrency: 4 });
|
|
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
|
+
}
|
|
215
|
+
yield* Effect.logDebug("Read Run usage", {
|
|
216
|
+
runId: snapshot.run.id,
|
|
217
|
+
sessions: usage.sessions.length,
|
|
218
|
+
tokens: usage.tokens,
|
|
219
|
+
attemptsRead: attempts.filter(({ read: queried }) => queried).length,
|
|
220
|
+
attemptsCached: attempts.filter(({ read: queried }) => !queried).length,
|
|
221
|
+
});
|
|
222
|
+
return usage;
|
|
223
|
+
});
|
|
224
|
+
return { read };
|
|
225
|
+
});
|
|
226
|
+
/**
|
|
227
|
+
* Reads a Run's usage from each session's highest token report. Caches the reports of Attempts with
|
|
228
|
+
* an outcome and rereads running Attempts on every call. Logs one warning per Codex model that the
|
|
229
|
+
* OpenAI price table lacks.
|
|
230
|
+
*/
|
|
231
|
+
export class RunUsageReader extends Context.Service()("@usine/orchestrator/RunUsageReader") {
|
|
232
|
+
static layer = Layer.effect(RunUsageReader, makeRunUsageReader);
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/operator/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/orchestrator.d.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import type { LoadedInstance } from "@usine/config/instance";
|
|
2
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import { CurrentInstance } from "./current-instance/current-instance.ts";
|
|
3
3
|
import { PollingTriggers } from "./polling-triggers.ts";
|
|
4
4
|
import { ScheduleTriggers } from "./schedule-triggers.ts";
|
|
5
5
|
declare const Orchestrator_base: Context.ServiceClass<Orchestrator, "@usine/orchestrator/Orchestrator", {
|
|
6
|
-
/**
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Evaluates the triggers until interrupted. Each cycle reads the current instance, and an
|
|
8
|
+
* accepted reload starts the next poll and schedule evaluation immediately.
|
|
9
|
+
*/
|
|
10
|
+
readonly run: Effect.Effect<never>;
|
|
8
11
|
}>;
|
|
9
|
-
/** Coordinates polling and schedule triggers for
|
|
12
|
+
/** Coordinates polling and schedule triggers for the factory's current instance. */
|
|
10
13
|
export declare class Orchestrator extends Orchestrator_base {
|
|
11
|
-
static readonly layer: Layer.Layer<Orchestrator, never, PollingTriggers | ScheduleTriggers>;
|
|
14
|
+
static readonly layer: Layer.Layer<Orchestrator, never, CurrentInstance | PollingTriggers | ScheduleTriggers>;
|
|
12
15
|
}
|
|
13
16
|
export {};
|
|
14
17
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;;IAmBtD;;;OAGG;kBACW,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;;AARtC,oFAAoF;AACpF,qBAAa,YAAa,SAAQ,iBASK;IACrC,MAAM,CAAC,QAAQ,CAAC,KAAK,yFAAgD;CACtE"}
|
package/dist/orchestrator.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import { CurrentInstance } from "./current-instance/current-instance.js";
|
|
2
3
|
import { PollingTriggers } from "./polling-triggers.js";
|
|
3
4
|
import { ScheduleTriggers } from "./schedule-triggers.js";
|
|
4
5
|
const makeOrchestrator = Effect.gen(function* () {
|
|
5
6
|
const polling = yield* PollingTriggers;
|
|
6
7
|
const schedules = yield* ScheduleTriggers;
|
|
7
|
-
const
|
|
8
|
+
const instances = yield* CurrentInstance;
|
|
9
|
+
const run = Effect.raceFirst(polling.run(instances), schedules.run(instances));
|
|
8
10
|
return { run };
|
|
9
11
|
});
|
|
10
|
-
/** Coordinates polling and schedule triggers for
|
|
12
|
+
/** Coordinates polling and schedule triggers for the factory's current instance. */
|
|
11
13
|
export class Orchestrator extends Context.Service()("@usine/orchestrator/Orchestrator") {
|
|
12
14
|
static layer = Layer.effect(Orchestrator, makeOrchestrator);
|
|
13
15
|
}
|
package/dist/orchestrator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC;IAEzC,MAAM,GAAG,GAAyB,MAAM,CAAC,SAAS,CAChD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EACtB,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CACzB,CAAC;IAEF,OAAO,EAAE,GAAG,EAAW,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,oFAAoF;AACpF,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,OAAO,EAS9C,CAAC,kCAAkC,CAAC;IACrC,MAAM,CAAU,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;CACtE"}
|
|
@@ -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"}
|