@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.
Files changed (121) hide show
  1. package/README.md +44 -21
  2. package/dist/board/items.d.ts +18 -0
  3. package/dist/board/items.d.ts.map +1 -0
  4. package/dist/board/items.js +46 -0
  5. package/dist/board/items.js.map +1 -0
  6. package/dist/board/projection.d.ts +6 -5
  7. package/dist/board/projection.d.ts.map +1 -1
  8. package/dist/board/projection.js +25 -65
  9. package/dist/board/projection.js.map +1 -1
  10. package/dist/board/tasks.d.ts +8 -0
  11. package/dist/board/tasks.d.ts.map +1 -0
  12. package/dist/board/tasks.js +86 -0
  13. package/dist/board/tasks.js.map +1 -0
  14. package/dist/credentials.d.ts +6 -6
  15. package/dist/credentials.d.ts.map +1 -1
  16. package/dist/credentials.js +6 -6
  17. package/dist/credentials.js.map +1 -1
  18. package/dist/exe-dev.d.ts +5 -4
  19. package/dist/exe-dev.d.ts.map +1 -1
  20. package/dist/exe-dev.js +5 -4
  21. package/dist/exe-dev.js.map +1 -1
  22. package/dist/idle-triggers.d.ts +1 -1
  23. package/dist/idle-triggers.d.ts.map +1 -1
  24. package/dist/idle-triggers.js +3 -1
  25. package/dist/idle-triggers.js.map +1 -1
  26. package/dist/label-reconciler.d.ts +30 -0
  27. package/dist/label-reconciler.d.ts.map +1 -0
  28. package/dist/label-reconciler.js +119 -0
  29. package/dist/label-reconciler.js.map +1 -0
  30. package/dist/local.d.ts +17 -12
  31. package/dist/local.d.ts.map +1 -1
  32. package/dist/local.js +20 -13
  33. package/dist/local.js.map +1 -1
  34. package/dist/operator/attempt.d.ts +66 -0
  35. package/dist/operator/attempt.d.ts.map +1 -0
  36. package/dist/operator/attempt.js +58 -0
  37. package/dist/operator/attempt.js.map +1 -0
  38. package/dist/operator/board.d.ts +119 -0
  39. package/dist/operator/board.d.ts.map +1 -0
  40. package/dist/operator/board.js +101 -0
  41. package/dist/operator/board.js.map +1 -0
  42. package/dist/operator/http.d.ts +114 -0
  43. package/dist/operator/http.d.ts.map +1 -0
  44. package/dist/operator/http.js +139 -0
  45. package/dist/operator/http.js.map +1 -0
  46. package/dist/operator/need.d.ts +66 -0
  47. package/dist/operator/need.d.ts.map +1 -0
  48. package/dist/operator/need.js +70 -0
  49. package/dist/operator/need.js.map +1 -0
  50. package/dist/operator/operator.d.ts +64 -0
  51. package/dist/operator/operator.d.ts.map +1 -0
  52. package/dist/operator/{service.js → operator.js} +147 -32
  53. package/dist/operator/operator.js.map +1 -0
  54. package/dist/operator/overview.d.ts +51 -0
  55. package/dist/operator/overview.d.ts.map +1 -0
  56. package/dist/operator/overview.js +48 -0
  57. package/dist/operator/overview.js.map +1 -0
  58. package/dist/operator/projection.d.ts +9 -9
  59. package/dist/operator/projection.d.ts.map +1 -1
  60. package/dist/operator/projection.js +18 -10
  61. package/dist/operator/projection.js.map +1 -1
  62. package/dist/operator/run.d.ts +38 -0
  63. package/dist/operator/run.d.ts.map +1 -0
  64. package/dist/operator/run.js +41 -0
  65. package/dist/operator/run.js.map +1 -0
  66. package/dist/operator/transcript.d.ts +57 -0
  67. package/dist/operator/transcript.d.ts.map +1 -0
  68. package/dist/operator/transcript.js +59 -0
  69. package/dist/operator/transcript.js.map +1 -0
  70. package/dist/orchestrator.d.ts +3 -2
  71. package/dist/orchestrator.d.ts.map +1 -1
  72. package/dist/orchestrator.js +1 -1
  73. package/dist/orchestrator.js.map +1 -1
  74. package/dist/polling/cycle.d.ts +51 -0
  75. package/dist/polling/cycle.d.ts.map +1 -0
  76. package/dist/polling/cycle.js +44 -0
  77. package/dist/polling/cycle.js.map +1 -0
  78. package/dist/polling/hints.d.ts +20 -0
  79. package/dist/polling/hints.d.ts.map +1 -0
  80. package/dist/polling/hints.js +54 -0
  81. package/dist/polling/hints.js.map +1 -0
  82. package/dist/polling/loop-evaluation.d.ts +21 -0
  83. package/dist/polling/loop-evaluation.d.ts.map +1 -0
  84. package/dist/polling/loop-evaluation.js +131 -0
  85. package/dist/polling/loop-evaluation.js.map +1 -0
  86. package/dist/polling/polling.d.ts +36 -0
  87. package/dist/polling/polling.d.ts.map +1 -0
  88. package/dist/polling/polling.js +296 -0
  89. package/dist/polling/polling.js.map +1 -0
  90. package/dist/polling/repository-sync.d.ts +45 -0
  91. package/dist/polling/repository-sync.d.ts.map +1 -0
  92. package/dist/polling/repository-sync.js +169 -0
  93. package/dist/polling/repository-sync.js.map +1 -0
  94. package/dist/polling-triggers.d.ts +3 -39
  95. package/dist/polling-triggers.d.ts.map +1 -1
  96. package/dist/polling-triggers.js +3 -393
  97. package/dist/polling-triggers.js.map +1 -1
  98. package/dist/schedule-triggers.d.ts +17 -15
  99. package/dist/schedule-triggers.d.ts.map +1 -1
  100. package/dist/schedule-triggers.js +53 -43
  101. package/dist/schedule-triggers.js.map +1 -1
  102. package/dist/scheduler.d.ts +5 -5
  103. package/dist/scheduler.d.ts.map +1 -1
  104. package/dist/scheduler.js +28 -43
  105. package/dist/scheduler.js.map +1 -1
  106. package/dist/trigger-submission.d.ts +33 -24
  107. package/dist/trigger-submission.d.ts.map +1 -1
  108. package/dist/trigger-submission.js +32 -29
  109. package/dist/trigger-submission.js.map +1 -1
  110. package/package.json +50 -14
  111. package/dist/index.d.ts +0 -11
  112. package/dist/index.d.ts.map +0 -1
  113. package/dist/index.js +0 -11
  114. package/dist/index.js.map +0 -1
  115. package/dist/operator/model.d.ts +0 -280
  116. package/dist/operator/model.d.ts.map +0 -1
  117. package/dist/operator/model.js +0 -242
  118. package/dist/operator/model.js.map +0 -1
  119. package/dist/operator/service.d.ts +0 -36
  120. package/dist/operator/service.d.ts.map +0 -1
  121. 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 { Event, Loop, Run } from "@usine/core";
2
- import { ItemProjectionReader, LoopControl, RepositoryLabelProjectionReader, RunEngine, RunReader, } from "@usine/engine";
3
- import { GitHubItemWriter } from "@usine/github";
4
- import { Context, DateTime, Effect, Layer, Option, SynchronizedRef } from "effect";
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, BoardItemNotFoundError as BoardItemNotFound, BoardLaneNotFoundError as BoardLaneNotFound, BoardLaneReadOnlyError as BoardLaneReadOnly, BoardProjectionNeed, BoardProjectNotFoundError as BoardProjectNotFound, ColdTranscriptRequest, LoopView, PollFailureNeed, ProjectView, ReadyOverview, RunDetailView, RunFailureNeed, ScheduleFailureNeed, } from "./model.js";
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
- /** Settled Runs kept in the overview beside every open one; history stays bounded. */
24
+ /** How many settled Runs the overview keeps beside the open ones. */
11
25
  const OVERVIEW_CLOSED_RUNS = 100;
12
- /** Newest Items projected onto a Board; older ones fall off instead of growing the overview. */
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([reader.list({ closedLimit: OVERVIEW_CLOSED_RUNS }), controls.states], { concurrency: "unbounded" });
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 projectRuns = runsByRepository.get(name) ?? [];
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 board = yield* projectBoard(repository, Option.match(labelProjection, {
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
- }), boardItems, projectRuns);
43
- const status = board.failures.length > 0 ||
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({ repository: name, status, runs: projectRuns, board });
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 run of views) {
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
- // A missing invalidation singleton means staleness is undetectable, so the
120
- // cache is bypassed entirely rather than trusted.
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
- /** Read-only operator surface; safe to build without trigger execution. */
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 = Event.DedupKey.make(JSON.stringify(["operator-approval", runId]));
172
- yield* runs.approve(runId, new Event.Event({
173
- id: Event.EventId.make(dedupKey),
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
- if (source === undefined) {
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 applied = yield* github.updateLabels(move.repository, move.item, mutation);
229
- yield* Effect.logInfo("Operator moved a Board card; the next poll projects the new lane", {
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
- return { ...observation, approve, cancel, moveBoardItem, pause, retry, unpause };
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
- /** Observe-and-intervene application service; transports only translate this API. */
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
- //# sourceMappingURL=service.js.map
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"}