@usine/orchestrator 0.1.0 → 0.2.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/README.md +44 -21
- package/dist/board/items.d.ts +18 -0
- package/dist/board/items.d.ts.map +1 -0
- package/dist/board/items.js +46 -0
- package/dist/board/items.js.map +1 -0
- package/dist/board/projection.d.ts +6 -5
- package/dist/board/projection.d.ts.map +1 -1
- package/dist/board/projection.js +25 -65
- package/dist/board/projection.js.map +1 -1
- package/dist/board/tasks.d.ts +8 -0
- package/dist/board/tasks.d.ts.map +1 -0
- package/dist/board/tasks.js +86 -0
- package/dist/board/tasks.js.map +1 -0
- package/dist/credentials.d.ts +6 -6
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +6 -6
- package/dist/credentials.js.map +1 -1
- package/dist/exe-dev.d.ts +5 -4
- package/dist/exe-dev.d.ts.map +1 -1
- package/dist/exe-dev.js +5 -4
- package/dist/exe-dev.js.map +1 -1
- package/dist/idle-triggers.d.ts +1 -1
- package/dist/idle-triggers.d.ts.map +1 -1
- package/dist/idle-triggers.js +3 -1
- package/dist/idle-triggers.js.map +1 -1
- package/dist/label-reconciler.d.ts +30 -0
- package/dist/label-reconciler.d.ts.map +1 -0
- package/dist/label-reconciler.js +119 -0
- package/dist/label-reconciler.js.map +1 -0
- package/dist/local.d.ts +17 -12
- package/dist/local.d.ts.map +1 -1
- package/dist/local.js +20 -13
- package/dist/local.js.map +1 -1
- package/dist/operator/attempt.d.ts +66 -0
- package/dist/operator/attempt.d.ts.map +1 -0
- package/dist/operator/attempt.js +58 -0
- package/dist/operator/attempt.js.map +1 -0
- package/dist/operator/board.d.ts +119 -0
- package/dist/operator/board.d.ts.map +1 -0
- package/dist/operator/board.js +101 -0
- package/dist/operator/board.js.map +1 -0
- package/dist/operator/http.d.ts +114 -0
- package/dist/operator/http.d.ts.map +1 -0
- package/dist/operator/http.js +139 -0
- package/dist/operator/http.js.map +1 -0
- package/dist/operator/need.d.ts +66 -0
- package/dist/operator/need.d.ts.map +1 -0
- package/dist/operator/need.js +70 -0
- package/dist/operator/need.js.map +1 -0
- package/dist/operator/operator.d.ts +64 -0
- package/dist/operator/operator.d.ts.map +1 -0
- package/dist/operator/{service.js → operator.js} +147 -32
- package/dist/operator/operator.js.map +1 -0
- package/dist/operator/overview.d.ts +51 -0
- package/dist/operator/overview.d.ts.map +1 -0
- package/dist/operator/overview.js +48 -0
- package/dist/operator/overview.js.map +1 -0
- package/dist/operator/projection.d.ts +9 -9
- package/dist/operator/projection.d.ts.map +1 -1
- package/dist/operator/projection.js +18 -10
- package/dist/operator/projection.js.map +1 -1
- package/dist/operator/run.d.ts +38 -0
- package/dist/operator/run.d.ts.map +1 -0
- package/dist/operator/run.js +41 -0
- package/dist/operator/run.js.map +1 -0
- package/dist/operator/transcript.d.ts +57 -0
- package/dist/operator/transcript.d.ts.map +1 -0
- package/dist/operator/transcript.js +59 -0
- package/dist/operator/transcript.js.map +1 -0
- package/dist/orchestrator.d.ts +3 -2
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +1 -1
- package/dist/orchestrator.js.map +1 -1
- package/dist/polling/cycle.d.ts +51 -0
- package/dist/polling/cycle.d.ts.map +1 -0
- package/dist/polling/cycle.js +44 -0
- package/dist/polling/cycle.js.map +1 -0
- package/dist/polling/hints.d.ts +20 -0
- package/dist/polling/hints.d.ts.map +1 -0
- package/dist/polling/hints.js +54 -0
- package/dist/polling/hints.js.map +1 -0
- package/dist/polling/loop-evaluation.d.ts +21 -0
- package/dist/polling/loop-evaluation.d.ts.map +1 -0
- package/dist/polling/loop-evaluation.js +131 -0
- package/dist/polling/loop-evaluation.js.map +1 -0
- package/dist/polling/polling.d.ts +36 -0
- package/dist/polling/polling.d.ts.map +1 -0
- package/dist/polling/polling.js +296 -0
- package/dist/polling/polling.js.map +1 -0
- package/dist/polling/repository-sync.d.ts +45 -0
- package/dist/polling/repository-sync.d.ts.map +1 -0
- package/dist/polling/repository-sync.js +169 -0
- package/dist/polling/repository-sync.js.map +1 -0
- package/dist/polling-triggers.d.ts +3 -39
- package/dist/polling-triggers.d.ts.map +1 -1
- package/dist/polling-triggers.js +3 -393
- package/dist/polling-triggers.js.map +1 -1
- package/dist/schedule-triggers.d.ts +17 -15
- package/dist/schedule-triggers.d.ts.map +1 -1
- package/dist/schedule-triggers.js +53 -43
- package/dist/schedule-triggers.js.map +1 -1
- package/dist/scheduler.d.ts +5 -5
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +28 -43
- package/dist/scheduler.js.map +1 -1
- package/dist/trigger-submission.d.ts +33 -24
- package/dist/trigger-submission.d.ts.map +1 -1
- package/dist/trigger-submission.js +32 -29
- package/dist/trigger-submission.js.map +1 -1
- package/package.json +50 -14
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/operator/model.d.ts +0 -280
- package/dist/operator/model.d.ts.map +0 -1
- package/dist/operator/model.js +0 -242
- package/dist/operator/model.js.map +0 -1
- package/dist/operator/service.d.ts +0 -36
- package/dist/operator/service.d.ts.map +0 -1
- package/dist/operator/service.js.map +0 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { LoopName } from "@usine/core/loop";
|
|
2
|
+
import { CycleBudgetAsk } from "@usine/core/cycle-budget";
|
|
3
|
+
import { RepositoryName } from "@usine/core/repository";
|
|
4
|
+
import { RunId } from "@usine/core/run";
|
|
5
|
+
import { Schema } from "effect";
|
|
6
|
+
import { LabelPreflightFinding } from "../label-reconciler.js";
|
|
7
|
+
import { RepositoryPollFailure } from "../polling-triggers.js";
|
|
8
|
+
import { ScheduleFailure } from "../schedule-triggers.js";
|
|
9
|
+
import { FailureView } from "./attempt.js";
|
|
10
|
+
import { BoardProjectionError } from "./board.js";
|
|
11
|
+
/** An operator approval is required before this Run can proceed. */
|
|
12
|
+
export class ApprovalNeed extends Schema.TaggedClass("@usine/orchestrator/ApprovalNeed")("ApprovalNeed", {
|
|
13
|
+
id: Schema.String,
|
|
14
|
+
repository: RepositoryName,
|
|
15
|
+
runId: RunId,
|
|
16
|
+
loop: LoopName,
|
|
17
|
+
}) {
|
|
18
|
+
}
|
|
19
|
+
/** A failed Run requires an operator decision, with its displayable failure details. */
|
|
20
|
+
export class RunFailureNeed extends Schema.TaggedClass("@usine/orchestrator/RunFailureNeed")("RunFailureNeed", {
|
|
21
|
+
id: Schema.String,
|
|
22
|
+
repository: RepositoryName,
|
|
23
|
+
runId: RunId,
|
|
24
|
+
loop: LoopName,
|
|
25
|
+
failure: FailureView,
|
|
26
|
+
}) {
|
|
27
|
+
}
|
|
28
|
+
/** Repository polling failed and needs operator attention. */
|
|
29
|
+
export class PollFailureNeed extends Schema.TaggedClass("@usine/orchestrator/PollFailureNeed")("PollFailureNeed", {
|
|
30
|
+
id: Schema.String,
|
|
31
|
+
failure: RepositoryPollFailure,
|
|
32
|
+
}) {
|
|
33
|
+
}
|
|
34
|
+
/** A declared repository label could not be provisioned or confirmed. */
|
|
35
|
+
export class PreflightFindingNeed extends Schema.TaggedClass("@usine/orchestrator/PreflightFindingNeed")("PreflightFindingNeed", {
|
|
36
|
+
id: Schema.String,
|
|
37
|
+
finding: LabelPreflightFinding,
|
|
38
|
+
}) {
|
|
39
|
+
}
|
|
40
|
+
/** An Item could not be displayed on its Board and needs operator attention. */
|
|
41
|
+
export class BoardProjectionNeed extends Schema.TaggedClass("@usine/orchestrator/BoardProjectionNeed")("BoardProjectionNeed", {
|
|
42
|
+
id: Schema.String,
|
|
43
|
+
failure: BoardProjectionError,
|
|
44
|
+
}) {
|
|
45
|
+
}
|
|
46
|
+
/** A scheduled Loop could not evaluate or submit its work. */
|
|
47
|
+
export class ScheduleFailureNeed extends Schema.TaggedClass("@usine/orchestrator/ScheduleFailureNeed")("ScheduleFailureNeed", {
|
|
48
|
+
id: Schema.String,
|
|
49
|
+
failure: ScheduleFailure,
|
|
50
|
+
}) {
|
|
51
|
+
}
|
|
52
|
+
/** An Item stopped opening Runs and requires an explicit reset of its shared cycle budget. */
|
|
53
|
+
export class CycleBudgetNeed extends Schema.TaggedClass("CycleBudgetNeed")("CycleBudgetNeed", {
|
|
54
|
+
id: Schema.String,
|
|
55
|
+
ask: CycleBudgetAsk,
|
|
56
|
+
itemLabel: Schema.String,
|
|
57
|
+
itemUrl: Schema.NullOr(Schema.String),
|
|
58
|
+
}) {
|
|
59
|
+
}
|
|
60
|
+
/** One reason the factory asks for operator attention in the overview. */
|
|
61
|
+
export const NeedView = Schema.Union([
|
|
62
|
+
CycleBudgetNeed,
|
|
63
|
+
ApprovalNeed,
|
|
64
|
+
BoardProjectionNeed,
|
|
65
|
+
RunFailureNeed,
|
|
66
|
+
PollFailureNeed,
|
|
67
|
+
PreflightFindingNeed,
|
|
68
|
+
ScheduleFailureNeed,
|
|
69
|
+
]);
|
|
70
|
+
//# sourceMappingURL=need.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"need.js","sourceRoot":"","sources":["../../src/operator/need.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,oEAAoE;AACpE,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,CAClD,kCAAkC,CACnC,CAAC,cAAc,EAAE;IAChB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,UAAU,EAAE,cAAc;IAC1B,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,QAAQ;CACf,CAAC;CAAG;AAEL,wFAAwF;AACxF,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,CACpD,oCAAoC,CACrC,CAAC,gBAAgB,EAAE;IAClB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,UAAU,EAAE,cAAc;IAC1B,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;CACrB,CAAC;CAAG;AAEL,8DAA8D;AAC9D,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,CACrD,qCAAqC,CACtC,CAAC,iBAAiB,EAAE;IACnB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,OAAO,EAAE,qBAAqB;CAC/B,CAAC;CAAG;AAEL,yEAAyE;AACzE,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,CAC1D,0CAA0C,CAC3C,CAAC,sBAAsB,EAAE;IACxB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,OAAO,EAAE,qBAAqB;CAC/B,CAAC;CAAG;AAEL,gFAAgF;AAChF,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,CACzD,yCAAyC,CAC1C,CAAC,qBAAqB,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,OAAO,EAAE,oBAAoB;CAC9B,CAAC;CAAG;AAEL,8DAA8D;AAC9D,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,CACzD,yCAAyC,CAC1C,CAAC,qBAAqB,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,OAAO,EAAE,eAAe;CACzB,CAAC;CAAG;AAEL,8FAA8F;AAC9F,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,CAAkB,iBAAiB,CAAC,CACzF,iBAAiB,EACjB;IACE,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,GAAG,EAAE,cAAc;IACnB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CACtC,CACF;CAAG;AAEJ,0EAA0E;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,eAAe;IACf,YAAY;IACZ,mBAAmB;IACnB,cAAc;IACd,eAAe;IACf,oBAAoB;IACpB,mBAAmB;CACpB,CAAC,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { LoadedInstance } from "@usine/config/instance";
|
|
2
|
+
import { CycleBudgetAskId } from "@usine/core/cycle-budget";
|
|
3
|
+
import { CycleBudgets, type CycleBudgetResetRejectedError } from "@usine/engine/cycle-budget";
|
|
4
|
+
import { LoopName } from "@usine/core/loop";
|
|
5
|
+
import { RunId } from "@usine/core/run";
|
|
6
|
+
import { RunEngine, type EnginePersistenceError, type RunEngineError, type RunStoreError } from "@usine/engine/engine";
|
|
7
|
+
import { ItemProjectionReader } from "@usine/engine/item-projection";
|
|
8
|
+
import { LoopControl, type LoopRuntimeState } from "@usine/engine/loop-control";
|
|
9
|
+
import { RunReader } from "@usine/engine/run-reader";
|
|
10
|
+
import { RepositoryLabelProjectionReader } from "@usine/engine/repository-label-projection";
|
|
11
|
+
import { GitHubItemWriter } from "@usine/github/item-writer";
|
|
12
|
+
import type { GitHubAppError } from "@usine/github/github-app";
|
|
13
|
+
import { Context, Effect, Layer } from "effect";
|
|
14
|
+
import { PollingTriggers } from "../polling-triggers.ts";
|
|
15
|
+
import { ScheduleTriggers } from "../schedule-triggers.ts";
|
|
16
|
+
import { type BoardItemNotFoundError, type BoardLaneNotFoundError, type BoardLaneReadOnlyError, type BoardMove, type BoardProjectNotFoundError } from "./board.ts";
|
|
17
|
+
import { type TranscriptAttemptNotFoundError, type TranscriptRequest } from "./transcript.ts";
|
|
18
|
+
import { ReadyOverview } from "./overview.ts";
|
|
19
|
+
import { RunDetailView } from "./run.ts";
|
|
20
|
+
export type BoardMoveError = BoardItemNotFoundError | BoardLaneNotFoundError | BoardLaneReadOnlyError | BoardProjectNotFoundError | EnginePersistenceError | GitHubAppError;
|
|
21
|
+
export type OperatorError = RunEngineError | TranscriptAttemptNotFoundError | BoardMoveError | CycleBudgetResetRejectedError;
|
|
22
|
+
export type OperatorObservationError = RunStoreError | TranscriptAttemptNotFoundError;
|
|
23
|
+
declare const OperatorObservation_base: Context.ServiceClass<OperatorObservation, "@usine/orchestrator/OperatorObservation", {
|
|
24
|
+
/** Builds the supplied instance's Projects, Boards, Runs, and items needing operator attention. */
|
|
25
|
+
readonly overview: (instance: LoadedInstance) => Effect.Effect<ReadyOverview, OperatorObservationError>;
|
|
26
|
+
/** Reads one Run and a bounded transcript page; `request` selects the latest, newer, or earlier activity. */
|
|
27
|
+
readonly detail: (runId: RunId, request?: TranscriptRequest) => Effect.Effect<RunDetailView, OperatorObservationError>;
|
|
28
|
+
}>;
|
|
29
|
+
/** The read-only operator surface. It needs no trigger execution to build. */
|
|
30
|
+
export declare class OperatorObservation extends OperatorObservation_base {
|
|
31
|
+
static readonly layer: Layer.Layer<OperatorObservation, never, CycleBudgets | ItemProjectionReader | LoopControl | PollingTriggers | RepositoryLabelProjectionReader | RunReader | ScheduleTriggers>;
|
|
32
|
+
}
|
|
33
|
+
declare const Operator_base: Context.ServiceClass<Operator, "@usine/orchestrator/Operator", {
|
|
34
|
+
/** Builds the supplied instance's Projects, Boards, Runs, and items needing operator attention. */
|
|
35
|
+
readonly overview: (instance: LoadedInstance) => Effect.Effect<ReadyOverview, OperatorObservationError>;
|
|
36
|
+
/** Reads one Run and a bounded transcript page; `request` selects the latest, newer, or earlier activity. */
|
|
37
|
+
readonly detail: (runId: RunId, request?: TranscriptRequest) => Effect.Effect<RunDetailView, OperatorObservationError>;
|
|
38
|
+
} & {
|
|
39
|
+
/** Answers the Item's current cycle Ask; polling refreshes its state before more Runs open. */
|
|
40
|
+
readonly resetCycleBudget: (askId: CycleBudgetAskId) => Effect.Effect<void, OperatorError>;
|
|
41
|
+
/** Records approval for a waiting Run; execution still waits for Worker capacity. */
|
|
42
|
+
readonly approve: (runId: RunId) => Effect.Effect<void, OperatorError>;
|
|
43
|
+
/** Requests a new Attempt for a failed Run using its effective task and Agent. */
|
|
44
|
+
readonly retry: (runId: RunId) => Effect.Effect<void, OperatorError>;
|
|
45
|
+
/** Cancels an open Run and interrupts its current Attempt; an already closed Run is unchanged. */
|
|
46
|
+
readonly cancel: (runId: RunId) => Effect.Effect<void, OperatorError>;
|
|
47
|
+
/** Swaps lane labels on GitHub and hints an authoritative refresh of its Board position and Loop matches. */
|
|
48
|
+
readonly moveBoardItem: (instance: LoadedInstance, move: BoardMove) => Effect.Effect<void, BoardMoveError>;
|
|
49
|
+
/** Pauses new work for a Loop while its existing Runs continue. */
|
|
50
|
+
readonly pause: (loop: LoopName) => Effect.Effect<LoopRuntimeState, EnginePersistenceError>;
|
|
51
|
+
/** Allows the Loop's triggers to open new Runs again. */
|
|
52
|
+
readonly unpause: (loop: LoopName) => Effect.Effect<LoopRuntimeState, EnginePersistenceError>;
|
|
53
|
+
}>;
|
|
54
|
+
/** The operator's view of the factory and actions for approving, retrying, canceling, and directing work. */
|
|
55
|
+
export declare class Operator extends Operator_base {
|
|
56
|
+
static readonly layer: Layer.Layer<Operator, never, CycleBudgets | GitHubItemWriter | ItemProjectionReader | LoopControl | PollingTriggers | RepositoryLabelProjectionReader | RunEngine | RunReader | ScheduleTriggers>;
|
|
57
|
+
}
|
|
58
|
+
export { ProjectStatus, ProjectView, LoopView, ReadyOverview, NeedsSetupOverview, FactoryOverview, } from "./overview.ts";
|
|
59
|
+
export { RunStateTag, RunView, RunDetailView } from "./run.ts";
|
|
60
|
+
export { InfraFailureView, DefectFailureView, AgentFailureView, RunawayFailureView, ChildSessionBudgetFailureView, FailureView, SucceededAttemptView, FailedAttemptView, CanceledAttemptView, AttemptOutcomeView, AttemptView, } from "./attempt.ts";
|
|
61
|
+
export { BoardLaneId, BoardLaneOrigin, BoardItemLink, BoardTaskView, WritableBoardLaneView, ReadOnlyBoardLaneView, BoardLaneView, BoardProjectionError, BoardView, LabelView, BoardMove, BoardProjectNotFoundError, BoardItemNotFoundError, BoardLaneNotFoundError, BoardLaneReadOnlyError, } from "./board.ts";
|
|
62
|
+
export { ApprovalNeed, CycleBudgetNeed, RunFailureNeed, PollFailureNeed, PreflightFindingNeed, BoardProjectionNeed, ScheduleFailureNeed, NeedView, } from "./need.ts";
|
|
63
|
+
export { FailedTranscriptView, TranscriptPayload, TranscriptEventView, TranscriptPageCursor, ColdTranscriptRequest, TailTranscriptRequest, EarlierTranscriptRequest, TranscriptRequest, TranscriptAttemptNotFoundError, } from "./transcript.ts";
|
|
64
|
+
//# sourceMappingURL=operator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../../src/operator/operator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { GitHubLabelName } from "@usine/config/label";
|
|
2
|
+
import { Event, DedupKey, EventId } from "@usine/core/event";
|
|
3
|
+
import { CycleBudgetAskId } from "@usine/core/cycle-budget";
|
|
4
|
+
import { CycleBudgets } from "@usine/engine/cycle-budget";
|
|
5
|
+
import { LoopName } from "@usine/core/loop";
|
|
6
|
+
import { RunId } from "@usine/core/run";
|
|
7
|
+
import { RunEngine, RunOperationRejectedError, } from "@usine/engine/engine";
|
|
8
|
+
import { ItemProjectionReader } from "@usine/engine/item-projection";
|
|
9
|
+
import { LoopControl } from "@usine/engine/loop-control";
|
|
10
|
+
import { RunReader } from "@usine/engine/run-reader";
|
|
11
|
+
import { RepositoryLabelProjectionReader } from "@usine/engine/repository-label-projection";
|
|
12
|
+
import { GitHubItemWriter } from "@usine/github/item-writer";
|
|
13
|
+
import { ChangedIssue, ChangedPullRequest } from "@usine/github/polling";
|
|
14
|
+
import { Context, DateTime, Effect, Exit, Layer, Option, Schema, SynchronizedRef } from "effect";
|
|
5
15
|
import { labelMutationForBoardMove, projectBoard } from "../board/projection.js";
|
|
6
|
-
import { PollingTriggers } from "../polling-triggers.js";
|
|
16
|
+
import { GitHubItemKey, PollingTriggers } from "../polling-triggers.js";
|
|
7
17
|
import { ScheduleTriggers } from "../schedule-triggers.js";
|
|
8
|
-
import { ApprovalNeed,
|
|
18
|
+
import { ApprovalNeed, CycleBudgetNeed, BoardProjectionNeed, PollFailureNeed, PreflightFindingNeed, RunFailureNeed, ScheduleFailureNeed, } from "./need.js";
|
|
19
|
+
import { BoardItemNotFoundError as BoardItemNotFound, BoardLaneNotFoundError as BoardLaneNotFound, BoardLaneReadOnlyError as BoardLaneReadOnly, BoardProjectNotFoundError as BoardProjectNotFound, LabelView, } from "./board.js";
|
|
20
|
+
import { ColdTranscriptRequest, } from "./transcript.js";
|
|
21
|
+
import { LoopView, ProjectView, ReadyOverview } from "./overview.js";
|
|
22
|
+
import { RunDetailView } from "./run.js";
|
|
9
23
|
import { readTranscript, runView } from "./projection.js";
|
|
10
|
-
/**
|
|
24
|
+
/** How many settled Runs the overview keeps beside the open ones. */
|
|
11
25
|
const OVERVIEW_CLOSED_RUNS = 100;
|
|
12
|
-
/**
|
|
26
|
+
/** How many newest Items a Board shows; older ones drop off. */
|
|
13
27
|
const OVERVIEW_BOARD_ITEMS = 500;
|
|
14
28
|
const makeOperatorObservation = Effect.gen(function* () {
|
|
29
|
+
const budgets = yield* CycleBudgets;
|
|
15
30
|
const reader = yield* RunReader;
|
|
16
31
|
const controls = yield* LoopControl;
|
|
17
32
|
const itemReader = yield* ItemProjectionReader;
|
|
@@ -19,8 +34,12 @@ const makeOperatorObservation = Effect.gen(function* () {
|
|
|
19
34
|
const polling = yield* PollingTriggers;
|
|
20
35
|
const schedules = yield* ScheduleTriggers;
|
|
21
36
|
const cache = yield* SynchronizedRef.make(Option.none());
|
|
22
|
-
const projectOverview = Effect.fn("Operator.projectOverview")(function* (instance, pollFailures, scheduleFailures, revision) {
|
|
23
|
-
const [snapshots, states] = yield* Effect.all([
|
|
37
|
+
const projectOverview = Effect.fn("Operator.projectOverview")(function* (instance, pollFailures, preflightFindings, scheduleFailures, revision) {
|
|
38
|
+
const [snapshots, states, cycleAsks] = yield* Effect.all([
|
|
39
|
+
reader.list({ closedLimit: OVERVIEW_CLOSED_RUNS }),
|
|
40
|
+
controls.states,
|
|
41
|
+
budgets.asks(),
|
|
42
|
+
], { concurrency: "unbounded" });
|
|
24
43
|
const paused = new Set(states.filter((state) => state.paused).map((state) => state.loop));
|
|
25
44
|
const views = snapshots.map((snapshot) => runView(snapshot, paused));
|
|
26
45
|
const runsByRepository = new Map();
|
|
@@ -31,22 +50,43 @@ const makeOperatorObservation = Effect.gen(function* () {
|
|
|
31
50
|
}
|
|
32
51
|
const projects = yield* Effect.forEach(instance.config.repos, (repository) => Effect.gen(function* () {
|
|
33
52
|
const { name } = repository;
|
|
34
|
-
const
|
|
53
|
+
const projectFindings = preflightFindings.filter(({ repository: findingRepository }) => findingRepository === name);
|
|
35
54
|
const [boardItems, labelProjection] = yield* Effect.all([
|
|
36
55
|
itemReader.list(name, { limit: OVERVIEW_BOARD_ITEMS }),
|
|
37
56
|
repositoryLabels.get(name),
|
|
38
57
|
], { concurrency: "unbounded" });
|
|
39
|
-
const
|
|
58
|
+
const history = yield* reader.forItems(boardItems.map(({ itemKey }) => itemKey));
|
|
59
|
+
const merged = new Map((runsByRepository.get(name) ?? []).map((run) => [run.id, run]));
|
|
60
|
+
for (const saved of history) {
|
|
61
|
+
const view = runView(saved, paused);
|
|
62
|
+
merged.set(view.id, view);
|
|
63
|
+
}
|
|
64
|
+
const projectRuns = [...merged.values()].sort((a, b) => b.openedAt.localeCompare(a.openedAt) || b.id.localeCompare(a.id));
|
|
65
|
+
const catalog = Option.match(labelProjection, {
|
|
40
66
|
onNone: () => [],
|
|
41
67
|
onSome: ({ labels }) => labels,
|
|
42
|
-
})
|
|
43
|
-
const
|
|
68
|
+
});
|
|
69
|
+
const board = yield* projectBoard(repository, catalog.map(({ name }) => name), boardItems, projectRuns, cycleAsks.map(({ itemKey }) => itemKey));
|
|
70
|
+
const status = cycleAsks.some((ask) => ask.repository === name) ||
|
|
71
|
+
board.failures.length > 0 ||
|
|
72
|
+
projectFindings.length > 0 ||
|
|
44
73
|
projectRuns.some((run) => run.state === "Waiting" || run.state === "Failed")
|
|
45
74
|
? "needs-you"
|
|
46
75
|
: projectRuns.some((run) => run.canCancel)
|
|
47
76
|
? "active"
|
|
48
77
|
: "clear";
|
|
49
|
-
return new ProjectView({
|
|
78
|
+
return new ProjectView({
|
|
79
|
+
repository: name,
|
|
80
|
+
status,
|
|
81
|
+
runs: projectRuns,
|
|
82
|
+
board,
|
|
83
|
+
labels: catalog.map(({ name: label, color, description }) => new LabelView({
|
|
84
|
+
name: GitHubLabelName.make(label),
|
|
85
|
+
color: Option.getOrNull(color),
|
|
86
|
+
description: Option.getOrNull(description),
|
|
87
|
+
})),
|
|
88
|
+
preflightFindings: projectFindings,
|
|
89
|
+
});
|
|
50
90
|
}), { concurrency: 4 });
|
|
51
91
|
const loops = instance.loops.map((loop) => new LoopView({
|
|
52
92
|
name: loop.name,
|
|
@@ -55,7 +95,26 @@ const makeOperatorObservation = Effect.gen(function* () {
|
|
|
55
95
|
paused: paused.has(loop.name),
|
|
56
96
|
}));
|
|
57
97
|
const needsYou = [];
|
|
58
|
-
for (const
|
|
98
|
+
for (const ask of cycleAsks) {
|
|
99
|
+
const item = Schema.decodeUnknownOption(GitHubItemKey)(ask.itemKey);
|
|
100
|
+
needsYou.push(new CycleBudgetNeed({
|
|
101
|
+
id: `cycle-budget:${ask.id}`,
|
|
102
|
+
ask,
|
|
103
|
+
itemLabel: Option.match(item, {
|
|
104
|
+
onNone: () => ask.itemKey,
|
|
105
|
+
onSome: ([, repository, number]) => `${repository}#${number}`,
|
|
106
|
+
}),
|
|
107
|
+
itemUrl: Option.match(item, {
|
|
108
|
+
onNone: () => null,
|
|
109
|
+
onSome: ([, repository, number]) => `https://github.com/${repository}/issues/${number}`,
|
|
110
|
+
}),
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
const allRuns = new Map(views.map((run) => [run.id, run]));
|
|
114
|
+
for (const project of projects)
|
|
115
|
+
for (const run of project.runs)
|
|
116
|
+
allRuns.set(run.id, run);
|
|
117
|
+
for (const run of allRuns.values()) {
|
|
59
118
|
if (run.state === "Waiting") {
|
|
60
119
|
needsYou.push(new ApprovalNeed({
|
|
61
120
|
id: `approval:${run.id}`,
|
|
@@ -92,6 +151,12 @@ const makeOperatorObservation = Effect.gen(function* () {
|
|
|
92
151
|
failure,
|
|
93
152
|
}));
|
|
94
153
|
});
|
|
154
|
+
preflightFindings.forEach((finding) => {
|
|
155
|
+
needsYou.push(new PreflightFindingNeed({
|
|
156
|
+
id: `preflight:${finding.repository}:${finding.label}`,
|
|
157
|
+
finding,
|
|
158
|
+
}));
|
|
159
|
+
});
|
|
95
160
|
scheduleFailures.forEach((failure, index) => {
|
|
96
161
|
needsYou.push(new ScheduleFailureNeed({
|
|
97
162
|
id: `schedule-failure:${failure.loop}:${failure._tag}:${index}`,
|
|
@@ -112,22 +177,27 @@ const makeOperatorObservation = Effect.gen(function* () {
|
|
|
112
177
|
onNone: () => [],
|
|
113
178
|
onSome: ({ failures }) => failures,
|
|
114
179
|
});
|
|
180
|
+
const preflightFindings = Option.match(latestPoll, {
|
|
181
|
+
onNone: () => [],
|
|
182
|
+
onSome: ({ preflightFindings }) => preflightFindings,
|
|
183
|
+
});
|
|
115
184
|
const scheduleFailures = Option.match(latestSchedule, {
|
|
116
185
|
onNone: () => [],
|
|
117
186
|
onSome: ({ failures }) => failures,
|
|
118
187
|
});
|
|
119
|
-
//
|
|
120
|
-
// cache is bypassed
|
|
188
|
+
// Without the invalidation singleton staleness cannot be detected, so the
|
|
189
|
+
// cache is bypassed.
|
|
121
190
|
const token = Option.map(revision, (value) => JSON.stringify([
|
|
122
191
|
value,
|
|
123
192
|
instance.config.repos.map(({ name, lanes }) => [name, lanes]),
|
|
124
193
|
instance.loops.map(({ name, agent, trigger }) => [name, agent, trigger.on]),
|
|
125
194
|
pollFailures,
|
|
195
|
+
preflightFindings,
|
|
126
196
|
scheduleFailures,
|
|
127
197
|
]));
|
|
128
198
|
if (Option.isNone(token)) {
|
|
129
199
|
yield* Effect.logWarning("Projection revision singleton is missing; the overview cache is bypassed");
|
|
130
|
-
const projected = yield* projectOverview(instance, pollFailures, scheduleFailures, revision);
|
|
200
|
+
const projected = yield* projectOverview(instance, pollFailures, preflightFindings, scheduleFailures, revision);
|
|
131
201
|
return [projected, Option.none()];
|
|
132
202
|
}
|
|
133
203
|
if (Option.isSome(cached) && cached.value.token === token.value) {
|
|
@@ -136,7 +206,7 @@ const makeOperatorObservation = Effect.gen(function* () {
|
|
|
136
206
|
});
|
|
137
207
|
return [cached.value.overview, cached];
|
|
138
208
|
}
|
|
139
|
-
const projected = yield* projectOverview(instance, pollFailures, scheduleFailures, revision);
|
|
209
|
+
const projected = yield* projectOverview(instance, pollFailures, preflightFindings, scheduleFailures, revision);
|
|
140
210
|
return [projected, Option.some({ token: token.value, overview: projected })];
|
|
141
211
|
})));
|
|
142
212
|
const detail = Effect.fn("Operator.detail")(function* (runId, request = new ColdTranscriptRequest()) {
|
|
@@ -154,23 +224,37 @@ const makeOperatorObservation = Effect.gen(function* () {
|
|
|
154
224
|
});
|
|
155
225
|
return { detail, overview };
|
|
156
226
|
});
|
|
157
|
-
/**
|
|
227
|
+
/** The read-only operator surface. It needs no trigger execution to build. */
|
|
158
228
|
export class OperatorObservation extends Context.Service()("@usine/orchestrator/OperatorObservation") {
|
|
159
229
|
static layer = Layer.effect(OperatorObservation, makeOperatorObservation);
|
|
160
230
|
}
|
|
161
231
|
const makeOperator = Effect.gen(function* () {
|
|
232
|
+
const budgets = yield* CycleBudgets;
|
|
162
233
|
const observation = yield* OperatorObservation;
|
|
163
234
|
const runs = yield* RunEngine;
|
|
164
235
|
const controls = yield* LoopControl;
|
|
165
236
|
const items = yield* ItemProjectionReader;
|
|
166
237
|
const repositoryLabels = yield* RepositoryLabelProjectionReader;
|
|
167
238
|
const github = yield* GitHubItemWriter;
|
|
239
|
+
const polling = yield* PollingTriggers;
|
|
168
240
|
const approve = Effect.fn("Operator.approve")(function* (runId) {
|
|
169
241
|
yield* Effect.annotateCurrentSpan({ runId });
|
|
242
|
+
const current = yield* runs.inspect(runId);
|
|
243
|
+
if (current.run.state._tag !== "Waiting") {
|
|
244
|
+
yield* Effect.logInfo("Operator approval rejected; the Run is past its gate", {
|
|
245
|
+
runId,
|
|
246
|
+
state: current.run.state._tag,
|
|
247
|
+
});
|
|
248
|
+
return yield* new RunOperationRejectedError({
|
|
249
|
+
runId,
|
|
250
|
+
operation: "approve",
|
|
251
|
+
state: current.run.state._tag,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
170
254
|
const receivedAt = yield* DateTime.now;
|
|
171
|
-
const dedupKey =
|
|
172
|
-
yield* runs.approve(runId, new Event
|
|
173
|
-
id:
|
|
255
|
+
const dedupKey = DedupKey.make(JSON.stringify(["operator-approval", runId]));
|
|
256
|
+
yield* runs.approve(runId, new Event({
|
|
257
|
+
id: EventId.make(dedupKey),
|
|
174
258
|
dedupKey,
|
|
175
259
|
payload: { runId, decision: "approved" },
|
|
176
260
|
receivedAt,
|
|
@@ -211,10 +295,11 @@ const makeOperator = Effect.gen(function* () {
|
|
|
211
295
|
], { concurrency: "unbounded" });
|
|
212
296
|
const board = yield* projectBoard(repository, Option.match(labelProjection, {
|
|
213
297
|
onNone: () => [],
|
|
214
|
-
onSome: ({ labels }) => labels,
|
|
298
|
+
onSome: ({ labels }) => labels.map(({ name }) => name),
|
|
215
299
|
}), storedItems, []);
|
|
216
|
-
const source = board.lanes.find(({ items: laneItems }) => laneItems.some(({ number }) => number === move.item));
|
|
217
|
-
|
|
300
|
+
const source = board.lanes.find(({ items: laneItems }) => laneItems.some(({ items }) => items.some(({ number }) => number === move.item)));
|
|
301
|
+
const movedItem = storedItems.find(({ number }) => number === move.item);
|
|
302
|
+
if (source === undefined || movedItem === undefined) {
|
|
218
303
|
return yield* new BoardItemNotFound({ repository: move.repository, item: move.item });
|
|
219
304
|
}
|
|
220
305
|
const target = board.lanes.find(({ id }) => id === move.toLane);
|
|
@@ -225,8 +310,13 @@ const makeOperator = Effect.gen(function* () {
|
|
|
225
310
|
return yield* new BoardLaneReadOnly({ repository: move.repository, lane: move.toLane });
|
|
226
311
|
}
|
|
227
312
|
const mutation = labelMutationForBoardMove(board, target);
|
|
228
|
-
const
|
|
229
|
-
|
|
313
|
+
const changed = { number: move.item, updatedAt: yield* DateTime.now };
|
|
314
|
+
const item = movedItem.source === "pr" ? new ChangedPullRequest(changed) : new ChangedIssue(changed);
|
|
315
|
+
const applied = yield* github.updateLabels(move.repository, move.item, mutation).pipe(
|
|
316
|
+
// A failed or interrupted request may have applied part of the label
|
|
317
|
+
// swap. Reconcile it without replacing the writer's original outcome.
|
|
318
|
+
Effect.onExit((exit) => polling.hint(move.repository, item, Option.flatMap(Exit.findErrorOption(exit), (error) => error._tag === "GitHubRateLimitError" ? Option.some(error.retryAt) : Option.none()))));
|
|
319
|
+
yield* Effect.logInfo("Operator moved a Board card and queued its authoritative refresh", {
|
|
230
320
|
repository: move.repository,
|
|
231
321
|
item: move.item,
|
|
232
322
|
fromLane: source.id,
|
|
@@ -239,10 +329,35 @@ const makeOperator = Effect.gen(function* () {
|
|
|
239
329
|
errorTag: error._tag,
|
|
240
330
|
message: error.message,
|
|
241
331
|
})));
|
|
242
|
-
|
|
332
|
+
const resetCycleBudget = Effect.fn("Operator.resetCycleBudget")(function* (askId) {
|
|
333
|
+
yield* Effect.annotateCurrentSpan({ askId });
|
|
334
|
+
const key = `cycle-budget-reset:${askId}`;
|
|
335
|
+
yield* budgets.reset(askId, new Event({
|
|
336
|
+
id: EventId.make(key),
|
|
337
|
+
dedupKey: DedupKey.make(key),
|
|
338
|
+
payload: { action: "reset-cycle-budget", askId },
|
|
339
|
+
receivedAt: yield* DateTime.now,
|
|
340
|
+
}));
|
|
341
|
+
});
|
|
342
|
+
return {
|
|
343
|
+
...observation,
|
|
344
|
+
approve,
|
|
345
|
+
cancel,
|
|
346
|
+
moveBoardItem,
|
|
347
|
+
pause,
|
|
348
|
+
retry,
|
|
349
|
+
unpause,
|
|
350
|
+
resetCycleBudget,
|
|
351
|
+
};
|
|
243
352
|
});
|
|
244
|
-
/**
|
|
353
|
+
/** The operator's view of the factory and actions for approving, retrying, canceling, and directing work. */
|
|
245
354
|
export class Operator extends Context.Service()("@usine/orchestrator/Operator") {
|
|
246
355
|
static layer = Layer.effect(Operator, makeOperator).pipe(Layer.provide(OperatorObservation.layer));
|
|
247
356
|
}
|
|
248
|
-
|
|
357
|
+
export { ProjectStatus, ProjectView, LoopView, ReadyOverview, NeedsSetupOverview, FactoryOverview, } from "./overview.js";
|
|
358
|
+
export { RunStateTag, RunView, RunDetailView } from "./run.js";
|
|
359
|
+
export { InfraFailureView, DefectFailureView, AgentFailureView, RunawayFailureView, ChildSessionBudgetFailureView, FailureView, SucceededAttemptView, FailedAttemptView, CanceledAttemptView, AttemptOutcomeView, AttemptView, } from "./attempt.js";
|
|
360
|
+
export { BoardLaneId, BoardLaneOrigin, BoardItemLink, BoardTaskView, WritableBoardLaneView, ReadOnlyBoardLaneView, BoardLaneView, BoardProjectionError, BoardView, LabelView, BoardMove, BoardProjectNotFoundError, BoardItemNotFoundError, BoardLaneNotFoundError, BoardLaneReadOnlyError, } from "./board.js";
|
|
361
|
+
export { ApprovalNeed, CycleBudgetNeed, RunFailureNeed, PollFailureNeed, PreflightFindingNeed, BoardProjectionNeed, ScheduleFailureNeed, NeedView, } from "./need.js";
|
|
362
|
+
export { FailedTranscriptView, TranscriptPayload, TranscriptEventView, TranscriptPageCursor, ColdTranscriptRequest, TailTranscriptRequest, EarlierTranscriptRequest, TranscriptRequest, TranscriptAttemptNotFoundError, } from "./transcript.js";
|
|
363
|
+
//# sourceMappingURL=operator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operator.js","sourceRoot":"","sources":["../../src/operator/operator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import { LabelPreflightFinding } from "../label-reconciler.ts";
|
|
3
|
+
import { RunView } from "./run.ts";
|
|
4
|
+
import { BoardView, LabelView } from "./board.ts";
|
|
5
|
+
/** The Project's summary indicator for activity or required operator attention. */
|
|
6
|
+
export declare const ProjectStatus: Schema.Literals<readonly ["clear", "active", "needs-you"]>;
|
|
7
|
+
export type ProjectStatus = typeof ProjectStatus.Type;
|
|
8
|
+
declare const ProjectView_base: Schema.Class<ProjectView, Schema.Struct<{
|
|
9
|
+
readonly repository: Schema.brand<Schema.String, "RepositoryName">;
|
|
10
|
+
readonly status: Schema.Literals<readonly ["clear", "active", "needs-you"]>;
|
|
11
|
+
readonly runs: Schema.$Array<typeof RunView>;
|
|
12
|
+
readonly board: typeof BoardView;
|
|
13
|
+
/** The repository's label catalog, used to color badges on cards and lanes. */
|
|
14
|
+
readonly labels: Schema.$Array<typeof LabelView>;
|
|
15
|
+
/** Failures from provisioning this Project's declared labels; they do not block the Board. */
|
|
16
|
+
readonly preflightFindings: Schema.$Array<typeof LabelPreflightFinding>;
|
|
17
|
+
}>, {}>;
|
|
18
|
+
/** A managed repository with its Runs, Board, label catalog, and preflight findings. */
|
|
19
|
+
export declare class ProjectView extends ProjectView_base {
|
|
20
|
+
}
|
|
21
|
+
declare const LoopView_base: Schema.Class<LoopView, Schema.Struct<{
|
|
22
|
+
readonly name: Schema.brand<Schema.NonEmptyString, "LoopName">;
|
|
23
|
+
readonly trigger: Schema.String;
|
|
24
|
+
readonly agent: Schema.brand<Schema.String, "AgentName">;
|
|
25
|
+
readonly paused: Schema.Boolean;
|
|
26
|
+
}>, {}>;
|
|
27
|
+
/** A Loop's authored trigger and Agent together with its runtime pause state. */
|
|
28
|
+
export declare class LoopView extends LoopView_base {
|
|
29
|
+
}
|
|
30
|
+
declare const ReadyOverview_base: Schema.Class<ReadyOverview, Schema.TaggedStruct<"Ready", {
|
|
31
|
+
readonly projects: Schema.$Array<typeof ProjectView>;
|
|
32
|
+
readonly loops: Schema.$Array<typeof LoopView>;
|
|
33
|
+
readonly needsYou: Schema.$Array<Schema.Union<readonly [typeof import("./need.ts").CycleBudgetNeed, typeof import("./need.ts").ApprovalNeed, typeof import("./need.ts").BoardProjectionNeed, typeof import("./need.ts").RunFailureNeed, typeof import("./need.ts").PollFailureNeed, typeof import("./need.ts").PreflightFindingNeed, typeof import("./need.ts").ScheduleFailureNeed]>>;
|
|
34
|
+
}>, {}>;
|
|
35
|
+
/** The Projects, Loops, and operator needs of a configured factory. */
|
|
36
|
+
export declare class ReadyOverview extends ReadyOverview_base {
|
|
37
|
+
}
|
|
38
|
+
declare const NeedsSetupOverview_base: Schema.Class<NeedsSetupOverview, Schema.TaggedStruct<"NeedsSetup", {
|
|
39
|
+
readonly errorTag: Schema.NonEmptyString;
|
|
40
|
+
readonly projects: Schema.$Array<typeof ProjectView>;
|
|
41
|
+
readonly loops: Schema.$Array<typeof LoopView>;
|
|
42
|
+
readonly needsYou: Schema.$Array<Schema.Union<readonly [typeof import("./need.ts").CycleBudgetNeed, typeof import("./need.ts").ApprovalNeed, typeof import("./need.ts").BoardProjectionNeed, typeof import("./need.ts").RunFailureNeed, typeof import("./need.ts").PollFailureNeed, typeof import("./need.ts").PreflightFindingNeed, typeof import("./need.ts").ScheduleFailureNeed]>>;
|
|
43
|
+
}>, {}>;
|
|
44
|
+
/** An overview available during setup, including the error that prevents normal operation. */
|
|
45
|
+
export declare class NeedsSetupOverview extends NeedsSetupOverview_base {
|
|
46
|
+
}
|
|
47
|
+
/** The operator overview, distinguished by whether factory setup is complete. */
|
|
48
|
+
export declare const FactoryOverview: Schema.Union<readonly [typeof ReadyOverview, typeof NeedsSetupOverview]>;
|
|
49
|
+
export type FactoryOverview = typeof FactoryOverview.Type;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=overview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../src/operator/overview.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGlD,mFAAmF;AACnF,eAAO,MAAM,aAAa,4DAAoD,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;;;;;;IAQpD,+EAA+E;;IAE/E,8FAA8F;;;AARhG,wFAAwF;AACxF,qBAAa,WAAY,SAAQ,gBAS/B;CAAG;;;;;;;AAEL,iFAAiF;AACjF,qBAAa,QAAS,SAAQ,aAK5B;CAAG;;;;;;AAEL,uEAAuE;AACvE,qBAAa,aAAc,SAAQ,kBAMjC;CAAG;;;;;;;AAEL,8FAA8F;AAC9F,qBAAa,kBAAmB,SAAQ,uBAOtC;CAAG;AAEL,iFAAiF;AACjF,eAAO,MAAM,eAAe,0EAAoD,CAAC;AACjF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AgentName } from "@usine/core/agent";
|
|
2
|
+
import { LoopName } from "@usine/core/loop";
|
|
3
|
+
import { RepositoryName } from "@usine/core/repository";
|
|
4
|
+
import { Schema } from "effect";
|
|
5
|
+
import { LabelPreflightFinding } from "../label-reconciler.js";
|
|
6
|
+
import { RunView } from "./run.js";
|
|
7
|
+
import { BoardView, LabelView } from "./board.js";
|
|
8
|
+
import { NeedView } from "./need.js";
|
|
9
|
+
/** The Project's summary indicator for activity or required operator attention. */
|
|
10
|
+
export const ProjectStatus = Schema.Literals(["clear", "active", "needs-you"]);
|
|
11
|
+
/** A managed repository with its Runs, Board, label catalog, and preflight findings. */
|
|
12
|
+
export class ProjectView extends Schema.Class("@usine/orchestrator/ProjectView")({
|
|
13
|
+
repository: RepositoryName,
|
|
14
|
+
status: ProjectStatus,
|
|
15
|
+
runs: Schema.Array(RunView),
|
|
16
|
+
board: BoardView,
|
|
17
|
+
/** The repository's label catalog, used to color badges on cards and lanes. */
|
|
18
|
+
labels: Schema.Array(LabelView),
|
|
19
|
+
/** Failures from provisioning this Project's declared labels; they do not block the Board. */
|
|
20
|
+
preflightFindings: Schema.Array(LabelPreflightFinding),
|
|
21
|
+
}) {
|
|
22
|
+
}
|
|
23
|
+
/** A Loop's authored trigger and Agent together with its runtime pause state. */
|
|
24
|
+
export class LoopView extends Schema.Class("@usine/orchestrator/LoopView")({
|
|
25
|
+
name: LoopName,
|
|
26
|
+
trigger: Schema.String,
|
|
27
|
+
agent: AgentName,
|
|
28
|
+
paused: Schema.Boolean,
|
|
29
|
+
}) {
|
|
30
|
+
}
|
|
31
|
+
/** The Projects, Loops, and operator needs of a configured factory. */
|
|
32
|
+
export class ReadyOverview extends Schema.TaggedClass("@usine/orchestrator/ReadyOverview")("Ready", {
|
|
33
|
+
projects: Schema.Array(ProjectView),
|
|
34
|
+
loops: Schema.Array(LoopView),
|
|
35
|
+
needsYou: Schema.Array(NeedView),
|
|
36
|
+
}) {
|
|
37
|
+
}
|
|
38
|
+
/** An overview available during setup, including the error that prevents normal operation. */
|
|
39
|
+
export class NeedsSetupOverview extends Schema.TaggedClass("@usine/orchestrator/NeedsSetupOverview")("NeedsSetup", {
|
|
40
|
+
errorTag: Schema.NonEmptyString,
|
|
41
|
+
projects: Schema.Array(ProjectView),
|
|
42
|
+
loops: Schema.Array(LoopView),
|
|
43
|
+
needsYou: Schema.Array(NeedView),
|
|
44
|
+
}) {
|
|
45
|
+
}
|
|
46
|
+
/** The operator overview, distinguished by whether factory setup is complete. */
|
|
47
|
+
export const FactoryOverview = Schema.Union([ReadyOverview, NeedsSetupOverview]);
|
|
48
|
+
//# sourceMappingURL=overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/operator/overview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAG/E,wFAAwF;AACxF,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAc,iCAAiC,CAAC,CAAC;IAC5F,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAC3B,KAAK,EAAE,SAAS;IAChB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IAC/B,8FAA8F;IAC9F,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC;CACvD,CAAC;CAAG;AAEL,iFAAiF;AACjF,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,8BAA8B,CAAC,CAAC;IACnF,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,MAAM,CAAC,OAAO;CACvB,CAAC;CAAG;AAEL,uEAAuE;AACvE,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,WAAW,CACnD,mCAAmC,CACpC,CAAC,OAAO,EAAE;IACT,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;CACjC,CAAC;CAAG;AAEL,8FAA8F;AAC9F,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,CACxD,wCAAwC,CACzC,CAAC,YAAY,EAAE;IACd,QAAQ,EAAE,MAAM,CAAC,cAAc;IAC/B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;CACjC,CAAC;CAAG;AAEL,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC"}
|