@usine/orchestrator 0.2.1 → 0.3.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 (173) hide show
  1. package/README.md +151 -52
  2. package/dist/board/items.d.ts +9 -1
  3. package/dist/board/items.d.ts.map +1 -1
  4. package/dist/board/items.js +16 -4
  5. package/dist/board/items.js.map +1 -1
  6. package/dist/board/projection.d.ts +7 -1
  7. package/dist/board/projection.d.ts.map +1 -1
  8. package/dist/board/projection.js +53 -14
  9. package/dist/board/projection.js.map +1 -1
  10. package/dist/board/tasks.d.ts +14 -2
  11. package/dist/board/tasks.d.ts.map +1 -1
  12. package/dist/board/tasks.js +23 -8
  13. package/dist/board/tasks.js.map +1 -1
  14. package/dist/credentials.d.ts +5 -6
  15. package/dist/credentials.d.ts.map +1 -1
  16. package/dist/credentials.js +22 -15
  17. package/dist/credentials.js.map +1 -1
  18. package/dist/current-instance/changes.d.ts +87 -0
  19. package/dist/current-instance/changes.d.ts.map +1 -0
  20. package/dist/current-instance/changes.js +138 -0
  21. package/dist/current-instance/changes.js.map +1 -0
  22. package/dist/current-instance/current-instance.d.ts +89 -0
  23. package/dist/current-instance/current-instance.d.ts.map +1 -0
  24. package/dist/current-instance/current-instance.js +163 -0
  25. package/dist/current-instance/current-instance.js.map +1 -0
  26. package/dist/exe-dev.d.ts +6 -2
  27. package/dist/exe-dev.d.ts.map +1 -1
  28. package/dist/exe-dev.js +7 -8
  29. package/dist/exe-dev.js.map +1 -1
  30. package/dist/idle-triggers.d.ts +1 -1
  31. package/dist/idle-triggers.d.ts.map +1 -1
  32. package/dist/idle-triggers.js +1 -1
  33. package/dist/idle-triggers.js.map +1 -1
  34. package/dist/label-reconciler.d.ts +5 -2
  35. package/dist/label-reconciler.d.ts.map +1 -1
  36. package/dist/label-reconciler.js.map +1 -1
  37. package/dist/local.d.ts +4 -18
  38. package/dist/local.d.ts.map +1 -1
  39. package/dist/local.js +7 -45
  40. package/dist/local.js.map +1 -1
  41. package/dist/loop-matches.d.ts +28 -0
  42. package/dist/loop-matches.d.ts.map +1 -0
  43. package/dist/loop-matches.js +74 -0
  44. package/dist/loop-matches.js.map +1 -0
  45. package/dist/operator/attempt.d.ts +57 -10
  46. package/dist/operator/attempt.d.ts.map +1 -1
  47. package/dist/operator/attempt.js +49 -10
  48. package/dist/operator/attempt.js.map +1 -1
  49. package/dist/operator/board.d.ts +43 -16
  50. package/dist/operator/board.d.ts.map +1 -1
  51. package/dist/operator/board.js +43 -16
  52. package/dist/operator/board.js.map +1 -1
  53. package/dist/operator/configuration.d.ts +258 -0
  54. package/dist/operator/configuration.d.ts.map +1 -0
  55. package/dist/operator/configuration.js +410 -0
  56. package/dist/operator/configuration.js.map +1 -0
  57. package/dist/operator/desk.d.ts +181 -0
  58. package/dist/operator/desk.d.ts.map +1 -0
  59. package/dist/operator/desk.js +463 -0
  60. package/dist/operator/desk.js.map +1 -0
  61. package/dist/operator/github-changes.d.ts +88 -0
  62. package/dist/operator/github-changes.d.ts.map +1 -0
  63. package/dist/operator/github-changes.js +266 -0
  64. package/dist/operator/github-changes.js.map +1 -0
  65. package/dist/operator/http.d.ts +152 -57
  66. package/dist/operator/http.d.ts.map +1 -1
  67. package/dist/operator/http.js +140 -21
  68. package/dist/operator/http.js.map +1 -1
  69. package/dist/operator/need.d.ts +44 -11
  70. package/dist/operator/need.d.ts.map +1 -1
  71. package/dist/operator/need.js +46 -9
  72. package/dist/operator/need.js.map +1 -1
  73. package/dist/operator/operator.d.ts +109 -29
  74. package/dist/operator/operator.d.ts.map +1 -1
  75. package/dist/operator/operator.js +254 -52
  76. package/dist/operator/operator.js.map +1 -1
  77. package/dist/operator/overview.d.ts +7 -7
  78. package/dist/operator/overview.d.ts.map +1 -1
  79. package/dist/operator/overview.js +5 -5
  80. package/dist/operator/overview.js.map +1 -1
  81. package/dist/operator/projection.d.ts +54 -5
  82. package/dist/operator/projection.d.ts.map +1 -1
  83. package/dist/operator/projection.js +100 -9
  84. package/dist/operator/projection.js.map +1 -1
  85. package/dist/operator/run.d.ts +71 -6
  86. package/dist/operator/run.d.ts.map +1 -1
  87. package/dist/operator/run.js +69 -6
  88. package/dist/operator/run.js.map +1 -1
  89. package/dist/operator/task.d.ts +93 -0
  90. package/dist/operator/task.d.ts.map +1 -0
  91. package/dist/operator/task.js +204 -0
  92. package/dist/operator/task.js.map +1 -0
  93. package/dist/operator/transcript.d.ts +12 -12
  94. package/dist/operator/transcript.d.ts.map +1 -1
  95. package/dist/operator/transcript.js +11 -9
  96. package/dist/operator/transcript.js.map +1 -1
  97. package/dist/operator/usage.d.ts +111 -0
  98. package/dist/operator/usage.d.ts.map +1 -0
  99. package/dist/operator/usage.js +219 -0
  100. package/dist/operator/usage.js.map +1 -0
  101. package/dist/orchestrator.d.ts +8 -5
  102. package/dist/orchestrator.d.ts.map +1 -1
  103. package/dist/orchestrator.js +4 -2
  104. package/dist/orchestrator.js.map +1 -1
  105. package/dist/polling/cycle.d.ts +28 -10
  106. package/dist/polling/cycle.d.ts.map +1 -1
  107. package/dist/polling/cycle.js +20 -6
  108. package/dist/polling/cycle.js.map +1 -1
  109. package/dist/polling/evaluation-failures.d.ts +42 -0
  110. package/dist/polling/evaluation-failures.d.ts.map +1 -0
  111. package/dist/polling/evaluation-failures.js +103 -0
  112. package/dist/polling/evaluation-failures.js.map +1 -0
  113. package/dist/polling/hints.d.ts +2 -2
  114. package/dist/polling/hints.d.ts.map +1 -1
  115. package/dist/polling/hints.js +2 -2
  116. package/dist/polling/hints.js.map +1 -1
  117. package/dist/polling/loop-evaluation.d.ts +21 -11
  118. package/dist/polling/loop-evaluation.d.ts.map +1 -1
  119. package/dist/polling/loop-evaluation.js +70 -27
  120. package/dist/polling/loop-evaluation.js.map +1 -1
  121. package/dist/polling/open-issues.d.ts +23 -0
  122. package/dist/polling/open-issues.d.ts.map +1 -0
  123. package/dist/polling/open-issues.js +77 -0
  124. package/dist/polling/open-issues.js.map +1 -0
  125. package/dist/polling/polling.d.ts +20 -11
  126. package/dist/polling/polling.d.ts.map +1 -1
  127. package/dist/polling/polling.js +201 -51
  128. package/dist/polling/polling.js.map +1 -1
  129. package/dist/polling/repository-sync.d.ts +20 -14
  130. package/dist/polling/repository-sync.d.ts.map +1 -1
  131. package/dist/polling/repository-sync.js +34 -27
  132. package/dist/polling/repository-sync.js.map +1 -1
  133. package/dist/polling-triggers.d.ts +1 -1
  134. package/dist/polling-triggers.d.ts.map +1 -1
  135. package/dist/polling-triggers.js +1 -1
  136. package/dist/polling-triggers.js.map +1 -1
  137. package/dist/reloads.d.ts +14 -0
  138. package/dist/reloads.d.ts.map +1 -0
  139. package/dist/reloads.js +7 -0
  140. package/dist/reloads.js.map +1 -0
  141. package/dist/runtime.d.ts +24 -0
  142. package/dist/runtime.d.ts.map +1 -0
  143. package/dist/runtime.js +58 -0
  144. package/dist/runtime.js.map +1 -0
  145. package/dist/schedule-triggers.d.ts +14 -10
  146. package/dist/schedule-triggers.d.ts.map +1 -1
  147. package/dist/schedule-triggers.js +36 -31
  148. package/dist/schedule-triggers.js.map +1 -1
  149. package/dist/scheduler.d.ts +35 -4
  150. package/dist/scheduler.d.ts.map +1 -1
  151. package/dist/scheduler.js +327 -41
  152. package/dist/scheduler.js.map +1 -1
  153. package/dist/ssh.d.ts +39 -0
  154. package/dist/ssh.d.ts.map +1 -0
  155. package/dist/ssh.js +75 -0
  156. package/dist/ssh.js.map +1 -0
  157. package/dist/trigger-condition.d.ts +12 -0
  158. package/dist/trigger-condition.d.ts.map +1 -0
  159. package/dist/trigger-condition.js +88 -0
  160. package/dist/trigger-condition.js.map +1 -0
  161. package/dist/trigger-submission.d.ts +16 -13
  162. package/dist/trigger-submission.d.ts.map +1 -1
  163. package/dist/trigger-submission.js +19 -14
  164. package/dist/trigger-submission.js.map +1 -1
  165. package/dist/worker-engine.d.ts +10 -0
  166. package/dist/worker-engine.d.ts.map +1 -0
  167. package/dist/worker-engine.js +25 -0
  168. package/dist/worker-engine.js.map +1 -0
  169. package/dist/worker-status.d.ts +70 -0
  170. package/dist/worker-status.d.ts.map +1 -0
  171. package/dist/worker-status.js +55 -0
  172. package/dist/worker-status.js.map +1 -0
  173. package/package.json +31 -10
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/board/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../src/board/projection.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,20 @@
1
1
  import type { ItemKey } from "@usine/core/item";
2
+ import type { LoopName } from "@usine/core/loop";
2
3
  import { type RepositoryName } from "@usine/core/repository";
4
+ import type { RunId } from "@usine/core/run";
3
5
  import { BoardTaskView } from "../operator/board.ts";
4
6
  import type { RunView } from "../operator/run.ts";
7
+ import { type RunUsageView } from "../operator/usage.ts";
5
8
  import type { ProjectedItem } from "./items.ts";
6
- /** Joins explicit issue/PR relationships into Task cards without creating stored Task identities (ADR 0024). */
7
- export declare const taskCards: (repository: RepositoryName, items: ReadonlyArray<ProjectedItem>, runs: ReadonlyArray<RunView>, cycleBlockedItems: ReadonlyArray<ItemKey>) => ReadonlyArray<BoardTaskView>;
9
+ /** A Task card and the running Run that sets its lane. */
10
+ export interface TaskCard {
11
+ readonly view: BoardTaskView;
12
+ /** The Task's newest open Run once an Attempt has started, on the card's current Item. */
13
+ readonly running: RunView | undefined;
14
+ }
15
+ /**
16
+ * Joins explicit issue and pull request relationships into Task cards, without stored Task
17
+ * identities (ADR 0024). Each card includes its running Run, which sets its Board lane.
18
+ */
19
+ export declare const taskCards: (repository: RepositoryName, items: ReadonlyArray<ProjectedItem>, runs: ReadonlyArray<RunView>, cycleBlockedItems: ReadonlyArray<ItemKey>, itemLoops: ReadonlyMap<ItemKey, ReadonlyArray<LoopName>>, runUsage: ReadonlyMap<RunId, RunUsageView>) => ReadonlyArray<TaskCard>;
8
20
  //# sourceMappingURL=tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/board/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEtF,OAAO,EAAiB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqBhD,gHAAgH;AAChH,eAAO,MAAM,SAAS,eACR,cAAc,SACnB,aAAa,CAAC,aAAa,CAAC,QAC7B,aAAa,CAAC,OAAO,CAAC,qBACT,aAAa,CAAC,OAAO,CAAC,KACxC,aAAa,CAAC,aAAa,CAuF7B,CAAC"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/board/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAuC,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYhD,0DAA0D;AAC1D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAWD;;;GAGG;AACH,eAAO,MAAM,SAAS,eACR,cAAc,SACnB,aAAa,CAAC,aAAa,CAAC,QAC7B,aAAa,CAAC,OAAO,CAAC,qBACT,aAAa,CAAC,OAAO,CAAC,aAC9B,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,YAC9C,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,KACzC,aAAa,CAAC,QAAQ,CAkGxB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { canonicalRepositoryName } from "@usine/core/repository";
2
2
  import { Array as EffectArray, Option, Order, Schema } from "effect";
3
- import { BoardItemLink, BoardTaskView } from "../operator/board.js";
3
+ import { BoardItemLink, BoardPullRequestView, BoardTaskView } from "../operator/board.js";
4
+ import { taskUsage } from "../operator/usage.js";
4
5
  const decodeUrl = Schema.decodeUnknownOption(Schema.URLFromString);
5
6
  const itemLink = (item) => new BoardItemLink({
6
7
  itemKey: item.itemKey,
@@ -9,8 +10,11 @@ const itemLink = (item) => new BoardItemLink({
9
10
  title: item.title,
10
11
  url: item.url,
11
12
  });
12
- /** Joins explicit issue/PR relationships into Task cards without creating stored Task identities (ADR 0024). */
13
- export const taskCards = (repository, items, runs, cycleBlockedItems) => {
13
+ /**
14
+ * Joins explicit issue and pull request relationships into Task cards, without stored Task
15
+ * identities (ADR 0024). Each card includes its running Run, which sets its Board lane.
16
+ */
17
+ export const taskCards = (repository, items, runs, cycleBlockedItems, itemLoops, runUsage) => {
14
18
  const runsByItem = EffectArray.groupBy(runs, ({ itemKey }) => itemKey);
15
19
  const nodes = items.map((item) => ({
16
20
  item,
@@ -68,18 +72,29 @@ export const taskCards = (repository, items, runs, cycleBlockedItems) => {
68
72
  .sort(({ item: a }, { item: b }) => Number(b.state === "pr-open") - Number(a.state === "pr-open") || b.number - a.number);
69
73
  // An open Run controls the lane. Between stages, a PR takes over from its issue.
70
74
  const current = active?.item ?? prs[0]?.item ?? origin.item;
71
- const preferred = history.find(({ run }) => run.canApprove || run.canRetry) ?? active ?? history[0];
72
- cards.push(new BoardTaskView({
75
+ // Open pull requests sort first, so the first open or merged one is the open one or, without
76
+ // one, the newest merged one.
77
+ const [pullRequest = null] = prs.flatMap(({ item: { number, url, state } }) => state === "pr-open" || state === "pr-merged"
78
+ ? [new BoardPullRequestView({ number, url, state })]
79
+ : []);
80
+ const preferred = history.find(({ run }) => run.canApprove || run.canResolveFailure) ?? active ?? history[0];
81
+ const runs = history.map(({ run }) => run).reverse();
82
+ const view = new BoardTaskView({
73
83
  ...itemLink(current),
74
84
  title: origin.item.title,
75
85
  state: current.state,
76
86
  labels: current.labels,
77
87
  items: ordered.map(({ item }) => itemLink(item)),
78
- runs: history.map(({ run }) => run).reverse(),
88
+ pullRequest,
89
+ runs,
79
90
  run: preferred?.run ?? null,
80
- needsYou: history.some(({ run }) => run.canApprove || run.canRetry) ||
91
+ needsYou: history.some(({ run }) => run.canApprove || run.canResolveFailure) ||
81
92
  members.some(({ item }) => blocked.has(item.itemKey)),
82
- }));
93
+ conflicting: current.conflicting,
94
+ loops: [...new Set(ordered.flatMap(({ item }) => itemLoops.get(item.itemKey) ?? []))],
95
+ usage: taskUsage(runs, runUsage),
96
+ });
97
+ cards.push({ view, running: active?.run.state === "Running" ? active.run : undefined });
83
98
  }
84
99
  return cards;
85
100
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/board/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/board/tasks.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
- import type { UsineConfig } from "@usine/config/factory";
2
1
  import { CredentialProvider } from "@usine/executor";
3
2
  import { GitHubApp } from "@usine/github/github-app";
4
3
  import { Layer } from "effect";
4
+ import { CurrentInstance } from "./current-instance/current-instance.ts";
5
5
  /**
6
- * Mints one fresh single-repository GitHub App token per Attempt. Project
7
- * access is discovered on the first mint and cached, so a GitHub outage cannot
8
- * block startup, and a repository added to the installation later is found by
9
- * the refresh that follows a miss.
6
+ * Mints renewable single-repository GitHub App tokens at each Attempt's Loop permission level (ADR
7
+ * 0011). Fails with a `refused` credential error if GitHub refuses, or `unreachable` on an outage
8
+ * or rate limit.
10
9
  */
11
- export declare const gitHubCredentialLayer: (config: UsineConfig) => Layer.Layer<CredentialProvider, never, GitHubApp>;
10
+ export declare const gitHubCredentialLayer: Layer.Layer<CredentialProvider, never, CurrentInstance | GitHubApp>;
12
11
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAA8B,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAkB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAU,KAAK,EAA2B,MAAM,QAAQ,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,WACxB,WAAW,KAClB,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAoFhD,CAAC"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAInB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,SAAS,EAGV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAU,KAAK,EAA2B,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAKzE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAC7C,kBAAkB,EAClB,KAAK,EACL,eAAe,GAAG,SAAS,CA6F5B,CAAC"}
@@ -1,23 +1,26 @@
1
- import { CredentialProvider, CredentialUnavailableError } from "@usine/executor";
2
- import { GitHubApp, CoveredProject } from "@usine/github/github-app";
1
+ import { CredentialProvider, CredentialUnavailableError, WorkerCredential, } from "@usine/executor";
2
+ import { CoveredProject, GitHubApp, isRefusal, } from "@usine/github/github-app";
3
3
  import { Effect, Layer, Option, SynchronizedRef } from "effect";
4
+ import { CurrentInstance } from "./current-instance/current-instance.js";
5
+ const reasonOf = (cause) => isRefusal(cause) ? "refused" : "unreachable";
4
6
  /**
5
- * Mints one fresh single-repository GitHub App token per Attempt. Project
6
- * access is discovered on the first mint and cached, so a GitHub outage cannot
7
- * block startup, and a repository added to the installation later is found by
8
- * the refresh that follows a miss.
7
+ * Mints renewable single-repository GitHub App tokens at each Attempt's Loop permission level (ADR
8
+ * 0011). Fails with a `refused` credential error if GitHub refuses, or `unreachable` on an outage
9
+ * or rate limit.
9
10
  */
10
- export const gitHubCredentialLayer = (config) => Layer.effect(CredentialProvider, Effect.gen(function* () {
11
+ export const gitHubCredentialLayer = Layer.effect(CredentialProvider, Effect.gen(function* () {
11
12
  const app = yield* GitHubApp;
13
+ const instances = yield* CurrentInstance;
12
14
  const projectsRef = yield* SynchronizedRef.make(Option.none());
13
- const discover = (repository) => app.projectAccess(config.repos.map(({ name }) => name)).pipe(Effect.map((access) => new Map(access
15
+ const discover = (repository) => instances.get.pipe(Effect.flatMap(({ config }) => app.projectAccess(config.repos.map(({ name }) => name))), Effect.map((access) => new Map(access
14
16
  .filter((project) => project._tag === "CoveredProject")
15
17
  .map((project) => [project.repository, project]))), Effect.mapError((cause) => new CredentialUnavailableError({
16
18
  repository,
17
- message: "Could not discover GitHub App repository access",
19
+ reason: reasonOf(cause),
20
+ message: `Could not discover GitHub App repository access: ${cause.message}`,
18
21
  cause,
19
22
  })));
20
- /** Refreshes the cached project map once on a miss before answering "not covered". */
23
+ /** Refreshes the cached project map once on a miss before returning "not covered". */
21
24
  const projectFor = Effect.fn("GitHubCredentialProvider.projectFor")(function* (repository) {
22
25
  const project = yield* SynchronizedRef.modifyEffect(projectsRef, (current) => Effect.gen(function* () {
23
26
  if (Option.isSome(current)) {
@@ -37,25 +40,29 @@ export const gitHubCredentialLayer = (config) => Layer.effect(CredentialProvider
37
40
  if (Option.isNone(project)) {
38
41
  return yield* new CredentialUnavailableError({
39
42
  repository,
40
- message: `GitHub App installation does not cover ${repository}`,
43
+ reason: "refused",
44
+ message: `The GitHub App installation has no access to "${repository}"`,
41
45
  cause: new Error("no project access after refresh"),
42
46
  });
43
47
  }
44
48
  return project.value;
45
49
  });
46
50
  return CredentialProvider.of({
47
- issue: Effect.fn("GitHubCredentialProvider.issue")(function* (repository, attemptId) {
51
+ issue: Effect.fn("GitHubCredentialProvider.issue")(function* (repository, attemptId, permissions) {
52
+ yield* Effect.annotateCurrentSpan({ repository, attemptId, permissions });
48
53
  const project = yield* projectFor(repository);
49
- const token = yield* app.workerToken(project).pipe(Effect.mapError((cause) => new CredentialUnavailableError({
54
+ const token = yield* app.workerToken(project, permissions).pipe(Effect.mapError((cause) => new CredentialUnavailableError({
50
55
  repository,
51
- message: `Could not mint a worker token for ${repository}`,
56
+ reason: reasonOf(cause),
57
+ message: `Could not create a worker token for "${repository}": ${cause.message}`,
52
58
  cause,
53
59
  })));
54
60
  yield* Effect.logInfo("Minted a single-repository worker token", {
55
61
  repository,
56
62
  attemptId,
63
+ permissions,
57
64
  });
58
- return token.value;
65
+ return new WorkerCredential({ value: token.value, expiresAt: token.expiresAt });
59
66
  }),
60
67
  });
61
68
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAmB,EACgC,EAAE,CACrD,KAAK,CAAC,MAAM,CACV,kBAAkB,EAClB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;IAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAC7C,MAAM,CAAC,IAAI,EAA+C,CAC3D,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,UAA0B,EAAE,EAAE,CAC9C,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1D,MAAM,CAAC,GAAG,CACR,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,GAAG,CACL,MAAM;SACH,MAAM,CAAC,CAAC,OAAO,EAA6B,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,gBAAgB,CAAC;SACjF,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CACnD,CACJ,EACD,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,0BAA0B,CAAC;QAC7B,UAAU;QACV,OAAO,EAAE,iDAAiD;QAC1D,KAAK;KACN,CAAC,CACL,CACF,CAAC;IAEJ,sFAAsF;IACtF,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,qCAAqC,CAAC,CAAC,QAAQ,CAAC,EAC3E,UAA0B;QAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAoD;wBAC5D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;wBAClB,OAAO;qBACR,CAAC;oBACF,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,eAAe,GAGjB,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9E,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC,CACH,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,CAAC,IAAI,0BAA0B,CAAC;gBAC3C,UAAU;gBACV,OAAO,EAAE,0CAA0C,UAAU,EAAE;gBAC/D,KAAK,EAAE,IAAI,KAAK,CAAC,iCAAiC,CAAC;aACpD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,EAAE,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS;YACjF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,QAAQ,CACb,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,0BAA0B,CAAC;gBAC7B,UAAU;gBACV,OAAO,EAAE,qCAAqC,UAAU,EAAE;gBAC1D,KAAK;aACN,CAAC,CACL,CACF,CAAC;YACF,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,yCAAyC,EAAE;gBAC/D,UAAU;gBACV,SAAS;aACV,CAAC,CAAC;YACH,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { type AgentFile, InvalidAgent } from "@usine/config/agent";
2
+ import type { Worker as ConfigWorker } from "@usine/config/factory";
3
+ import type { LoadedInstance } from "@usine/config/instance";
4
+ import { QuarantinedLoop } from "@usine/config/loop";
5
+ import { Schema } from "effect";
6
+ /**
7
+ * A `usine.yaml` block with changes that apply only when `usine up` starts, so a reload refuses
8
+ * them.
9
+ */
10
+ export declare const RestartBlock: Schema.Literals<readonly ["workers", "webhooks"]>;
11
+ export type RestartBlock = typeof RestartBlock.Type;
12
+ /** A change to `usine.yaml` that only a restart of `usine up` applies. */
13
+ export interface RestartChange {
14
+ readonly block: RestartBlock;
15
+ /** The changed field as a path into `usine.yaml`, such as `webhooks` or `workers.build-1.destination`. */
16
+ readonly field: string;
17
+ /** An operator-facing clause, such as `the webhooks block changed`. */
18
+ readonly reason: string;
19
+ }
20
+ declare const InstanceReload_base: Schema.Class<InstanceReload, Schema.Struct<{
21
+ readonly loops: Schema.Struct<{
22
+ readonly added: Schema.$Array<Schema.brand<Schema.NonEmptyString, "LoopName">>;
23
+ readonly removed: Schema.$Array<Schema.brand<Schema.NonEmptyString, "LoopName">>;
24
+ readonly changed: Schema.$Array<Schema.brand<Schema.NonEmptyString, "LoopName">>;
25
+ }>;
26
+ readonly agents: Schema.Struct<{
27
+ readonly added: Schema.$Array<Schema.brand<Schema.String, "AgentName">>;
28
+ readonly removed: Schema.$Array<Schema.brand<Schema.String, "AgentName">>;
29
+ readonly changed: Schema.$Array<Schema.brand<Schema.String, "AgentName">>;
30
+ }>;
31
+ readonly labels: Schema.Struct<{
32
+ readonly added: Schema.$Array<Schema.brand<Schema.String, "GitHubLabelName">>;
33
+ readonly removed: Schema.$Array<Schema.brand<Schema.String, "GitHubLabelName">>;
34
+ readonly changed: Schema.$Array<Schema.brand<Schema.String, "GitHubLabelName">>;
35
+ }>;
36
+ readonly repos: Schema.Struct<{
37
+ readonly added: Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>;
38
+ readonly removed: Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>;
39
+ readonly changed: Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>;
40
+ }>;
41
+ readonly workers: Schema.Struct<{
42
+ readonly added: Schema.$Array<Schema.brand<Schema.String, "WorkerName">>;
43
+ readonly removed: Schema.$Array<Schema.brand<Schema.String, "WorkerName">>;
44
+ readonly changed: Schema.$Array<Schema.brand<Schema.String, "WorkerName">>;
45
+ }>;
46
+ readonly settingsChanged: Schema.Boolean;
47
+ readonly operatorChanged: Schema.Boolean;
48
+ readonly quarantinedLoops: Schema.$Array<typeof QuarantinedLoop>;
49
+ readonly invalidAgents: Schema.$Array<typeof InvalidAgent>;
50
+ }>, {}>;
51
+ /**
52
+ * The changes of an accepted reload by name, whether `settings` or the `operator` login changed,
53
+ * and the Loop and Agent files that were left out.
54
+ */
55
+ export declare class InstanceReload extends InstanceReload_base {
56
+ }
57
+ /** Compares a newly loaded instance folder with the running instance. */
58
+ export declare const instanceReload: (running: LoadedInstance, loaded: LoadedInstance) => InstanceReload;
59
+ /** Returns the Agents of `loaded` whose brain no running Agent has. */
60
+ export declare const agentsWithNewBrains: (running: LoadedInstance, loaded: LoadedInstance) => ReadonlyArray<AgentFile>;
61
+ /**
62
+ * Returns the changes in `loaded` that only a restart applies: a changed `webhooks` block, and a
63
+ * changed `workers` block while no Worker runs Attempts, as in setup mode.
64
+ */
65
+ export declare const restartChanges: (running: LoadedInstance, loaded: LoadedInstance, workersRun: boolean) => ReadonlyArray<RestartChange>;
66
+ /** A Worker that a reload keeps with a new `max_concurrent_attempts`. */
67
+ interface ResizedWorker {
68
+ readonly worker: ConfigWorker;
69
+ /** The `max_concurrent_attempts` in the running instance. */
70
+ readonly from: number;
71
+ }
72
+ /** The changes a reload makes to the `workers` block, by Worker name. */
73
+ export interface WorkersChange {
74
+ readonly resized: ReadonlyArray<ResizedWorker>;
75
+ readonly added: ReadonlyArray<ConfigWorker>;
76
+ readonly removed: ReadonlyArray<ConfigWorker>;
77
+ /**
78
+ * The changes running Workers can't apply: a changed kind or setting other than
79
+ * `max_concurrent_attempts`, and a rename, which counts as a removal plus an addition with the
80
+ * same settings.
81
+ */
82
+ readonly restart: ReadonlyArray<RestartChange>;
83
+ }
84
+ /** Compares the reloaded `workers` block with the running one. */
85
+ export declare const workersChange: (running: ReadonlyArray<ConfigWorker>, loaded: ReadonlyArray<ConfigWorker>) => WorkersChange;
86
+ export {};
87
+ //# sourceMappingURL=changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/current-instance/changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,OAAO,EAAS,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIvC;;;GAGG;AACH,eAAO,MAAM,YAAY,mDAAkC,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;AAEpD,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,0GAA0G;IAC1G,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAYlC;CAAG;AA4BL,yEAAyE;AACzE,eAAO,MAAM,cAAc,YAAa,cAAc,UAAU,cAAc,KAAG,cAoC7E,CAAC;AAEL,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,YACrB,cAAc,UACf,cAAc,KACrB,aAAa,CAAC,SAAS,CAKzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,YAChB,cAAc,UACf,cAAc,cACV,OAAO,KAClB,aAAa,CAAC,aAAa,CAa7B,CAAC;AAyBF,yEAAyE;AACzE,UAAU,aAAa;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CAChD;AAED,kEAAkE;AAClE,eAAO,MAAM,aAAa,YACf,aAAa,CAAC,YAAY,CAAC,UAC5B,aAAa,CAAC,YAAY,CAAC,KAClC,aAmCF,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { InvalidAgent } from "@usine/config/agent";
2
+ import { canonicalLabelName, GitHubLabelName } from "@usine/config/label";
3
+ import { QuarantinedLoop } from "@usine/config/loop";
4
+ import { AgentName } from "@usine/core/agent";
5
+ import { LoopName } from "@usine/core/loop";
6
+ import { canonicalRepositoryName, RepositoryName } from "@usine/core/repository";
7
+ import { WorkerName } from "@usine/core/worker";
8
+ import { Equal, Schema } from "effect";
9
+ const RESTART_BLOCKS = ["workers", "webhooks"];
10
+ /**
11
+ * A `usine.yaml` block with changes that apply only when `usine up` starts, so a reload refuses
12
+ * them.
13
+ */
14
+ export const RestartBlock = Schema.Literals(RESTART_BLOCKS);
15
+ const nameChanges = (name) => Schema.Struct({
16
+ added: Schema.Array(name),
17
+ removed: Schema.Array(name),
18
+ changed: Schema.Array(name),
19
+ });
20
+ /**
21
+ * The changes of an accepted reload by name, whether `settings` or the `operator` login changed,
22
+ * and the Loop and Agent files that were left out.
23
+ */
24
+ export class InstanceReload extends Schema.Class("@usine/orchestrator/InstanceReload")({
25
+ loops: nameChanges(LoopName),
26
+ agents: nameChanges(AgentName),
27
+ labels: nameChanges(GitHubLabelName),
28
+ repos: nameChanges(RepositoryName),
29
+ workers: nameChanges(WorkerName),
30
+ settingsChanged: Schema.Boolean,
31
+ operatorChanged: Schema.Boolean,
32
+ quarantinedLoops: Schema.Array(QuarantinedLoop),
33
+ invalidAgents: Schema.Array(InvalidAgent),
34
+ }) {
35
+ }
36
+ const changesBy = (running, loaded, name, key) => {
37
+ const before = new Map(running.map((value) => [key(value), value]));
38
+ const after = new Set(loaded.map(key));
39
+ return {
40
+ added: loaded.filter((value) => !before.has(key(value))).map(name),
41
+ removed: running.filter((value) => !after.has(key(value))).map(name),
42
+ changed: loaded
43
+ .filter((value) => {
44
+ const previous = before.get(key(value));
45
+ return previous !== undefined && !Equal.equals(previous, value);
46
+ })
47
+ .map(name),
48
+ };
49
+ };
50
+ /** Compares a newly loaded instance folder with the running instance. */
51
+ export const instanceReload = (running, loaded) => new InstanceReload({
52
+ loops: changesBy(running.loops, loaded.loops, ({ name }) => name, ({ name }) => name),
53
+ agents: changesBy(running.agents, loaded.agents, ({ name }) => name, ({ name }) => name),
54
+ labels: changesBy(running.config.labels, loaded.config.labels, ({ name }) => name, ({ name }) => canonicalLabelName(name)),
55
+ repos: changesBy(running.config.repos, loaded.config.repos, ({ name }) => name, ({ name }) => canonicalRepositoryName(name)),
56
+ workers: changesBy(running.config.workers, loaded.config.workers, ({ name }) => name, ({ name }) => name),
57
+ settingsChanged: !Equal.equals(running.config.settings, loaded.config.settings),
58
+ operatorChanged: !Equal.equals(running.config.operator, loaded.config.operator),
59
+ quarantinedLoops: loaded.quarantinedLoops,
60
+ invalidAgents: loaded.invalidAgents,
61
+ });
62
+ /** Returns the Agents of `loaded` whose brain no running Agent has. */
63
+ export const agentsWithNewBrains = (running, loaded) => {
64
+ const runningBrains = running.agents.map(({ agent }) => agent.brain);
65
+ return loaded.agents.filter(({ agent }) => !runningBrains.some((brain) => Equal.equals(brain, agent.brain)));
66
+ };
67
+ /**
68
+ * Returns the changes in `loaded` that only a restart applies: a changed `webhooks` block, and a
69
+ * changed `workers` block while no Worker runs Attempts, as in setup mode.
70
+ */
71
+ export const restartChanges = (running, loaded, workersRun) => [
72
+ ...(Equal.equals(running.config.webhooks, loaded.config.webhooks)
73
+ ? []
74
+ : [{ block: "webhooks", field: "webhooks", reason: "the webhooks block changed" }]),
75
+ ...(workersRun || Equal.equals(running.config.workers, loaded.config.workers)
76
+ ? []
77
+ : [
78
+ {
79
+ block: "workers",
80
+ field: "workers",
81
+ reason: "the workers block changed while no worker is running",
82
+ },
83
+ ]),
84
+ ];
85
+ const yamlKey = (field) => field.replace(/[A-Z]/gu, (letter) => `_${letter.toLowerCase()}`);
86
+ /**
87
+ * Returns the keys of a Worker entry, other than `name` and `max_concurrent_attempts`, that differ
88
+ * between `before` and `after`. Returns only `kind` if the kind differs.
89
+ */
90
+ const changedWorkerSettings = (before, after) => {
91
+ if (before.kind !== after.kind)
92
+ return ["kind"];
93
+ const settings = (worker) => new Map(Object.entries(worker).filter(([key]) => key !== "name" && key !== "maxConcurrentAttempts"));
94
+ const previous = settings(before);
95
+ const next = settings(after);
96
+ return [...new Set([...previous.keys(), ...next.keys()])]
97
+ .filter((key) => !Equal.equals(previous.get(key), next.get(key)))
98
+ .map(yamlKey);
99
+ };
100
+ /** Compares the reloaded `workers` block with the running one. */
101
+ export const workersChange = (running, loaded) => {
102
+ const before = new Map(running.map((worker) => [worker.name, worker]));
103
+ const after = new Set(loaded.map(({ name }) => name));
104
+ const restart = [];
105
+ const resized = [];
106
+ for (const worker of loaded) {
107
+ const previous = before.get(worker.name);
108
+ if (previous === undefined)
109
+ continue;
110
+ const changed = changedWorkerSettings(previous, worker);
111
+ for (const key of changed) {
112
+ restart.push({
113
+ block: "workers",
114
+ field: `workers.${worker.name}.${key}`,
115
+ reason: key === "kind"
116
+ ? `worker "${worker.name}" changed kind from ${previous.kind} to ${worker.kind}`
117
+ : `worker "${worker.name}" changed ${key}`,
118
+ });
119
+ }
120
+ if (changed.length === 0 && previous.maxConcurrentAttempts !== worker.maxConcurrentAttempts) {
121
+ resized.push({ worker, from: previous.maxConcurrentAttempts });
122
+ }
123
+ }
124
+ const added = loaded.filter(({ name }) => !before.has(name));
125
+ const removed = running.filter(({ name }) => !after.has(name));
126
+ for (const previous of removed) {
127
+ const renamed = added.find((worker) => changedWorkerSettings(previous, worker).length === 0);
128
+ if (renamed === undefined)
129
+ continue;
130
+ restart.push({
131
+ block: "workers",
132
+ field: `workers.${previous.name}.name`,
133
+ reason: `worker "${previous.name}" was renamed to "${renamed.name}"`,
134
+ });
135
+ }
136
+ return { resized, added, removed, restart };
137
+ };
138
+ //# sourceMappingURL=changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/current-instance/changes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import type { FactoryConfigError } from "@usine/config/file";
2
+ import { InstanceFolder } from "@usine/config/instance-folder";
3
+ import type { LoadedInstance } from "@usine/config/instance";
4
+ import { AgentName } from "@usine/core/agent";
5
+ import type { InstanceDirectory } from "@usine/core/instance";
6
+ import { WorkerName } from "@usine/core/worker";
7
+ import { ExecutorError } from "@usine/executor";
8
+ import { Array as EffectArray, Context, Effect, Layer, Schema, type Scope, type Stream } from "effect";
9
+ import { InstanceReload, type RestartChange } from "./changes.ts";
10
+ declare const RestartRequiredError_base: Schema.Class<RestartRequiredError, Schema.TaggedStruct<"RestartRequiredError", {
11
+ readonly blocks: Schema.NonEmptyArray<Schema.Literals<readonly ["workers", "webhooks"]>>;
12
+ /**
13
+ * The changed fields as paths into `usine.yaml`, such as `webhooks` or
14
+ * `workers.build-1.destination`.
15
+ */
16
+ readonly fields: Schema.NonEmptyArray<Schema.NonEmptyString>;
17
+ /** An operator summary of each change, stating that the running configuration is kept. */
18
+ readonly message: Schema.NonEmptyString;
19
+ }>, import("effect/Cause").YieldableError>;
20
+ /** A reload changed `usine.yaml` in a way that needs a restart, so the running instance is kept. */
21
+ export declare class RestartRequiredError extends RestartRequiredError_base {
22
+ }
23
+ /** Returns the refusal for a reload that makes `changes`. */
24
+ export declare const restartRequired: (changes: EffectArray.NonEmptyReadonlyArray<RestartChange>) => RestartRequiredError;
25
+ declare const ReloadPreflightError_base: Schema.Class<ReloadPreflightError, Schema.TaggedStruct<"ReloadPreflightError", {
26
+ /**
27
+ * The reloaded Agents with brains that no running Agent has, which preflight checked on every
28
+ * Worker.
29
+ */
30
+ readonly agents: Schema.$Array<Schema.brand<Schema.String, "AgentName">>;
31
+ /**
32
+ * The Workers added or given more slots by the reload, which preflight checked with every
33
+ * rostered brain.
34
+ */
35
+ readonly workers: Schema.$Array<Schema.brand<Schema.String, "WorkerName">>;
36
+ /**
37
+ * An operator summary of the additions and the failed check, stating that the running
38
+ * configuration is kept.
39
+ */
40
+ readonly message: Schema.NonEmptyString;
41
+ readonly cause: Schema.Union<readonly [typeof import("@usine/executor").ExecutorOperationError, typeof import("@usine/executor").CredentialUnavailableError, typeof import("@usine/executor").WorkerCapabilityError]>;
42
+ }>, import("effect/Cause").YieldableError>;
43
+ /**
44
+ * A reload adds Workers, slots, or brains that failed Worker preflight, so the running instance is
45
+ * kept.
46
+ */
47
+ export declare class ReloadPreflightError extends ReloadPreflightError_base {
48
+ }
49
+ /**
50
+ * Returns the refusal for a reload whose preflight of `agents` and `workers` failed with `cause`.
51
+ */
52
+ export declare const reloadPreflightFailed: (agents: ReadonlyArray<AgentName>, workers: ReadonlyArray<WorkerName>, cause: ExecutorError) => ReloadPreflightError;
53
+ /** The reason a reload kept the running instance. */
54
+ export type InstanceReloadError = FactoryConfigError | RestartRequiredError | ReloadPreflightError;
55
+ /**
56
+ * Checks a reload from `running` to `loaded` without changing anything, and returns the effect that
57
+ * applies `loaded`'s `workers` block. Fails on an unsupported `workers` change or a failed
58
+ * preflight.
59
+ */
60
+ export type WorkerReload = (running: LoadedInstance, loaded: LoadedInstance) => Effect.Effect<Effect.Effect<void>, RestartRequiredError | ReloadPreflightError>;
61
+ declare const CurrentInstance_base: Context.ServiceClass<CurrentInstance, "@usine/orchestrator/CurrentInstance", {
62
+ /** The snapshot that new work reads. */
63
+ readonly get: Effect.Effect<LoadedInstance>;
64
+ /** The current snapshot, then each snapshot an accepted reload installs. */
65
+ readonly changes: Stream.Stream<LoadedInstance>;
66
+ /**
67
+ * Reloads the instance folder, one reload at a time, and returns what changed. Fails and keeps
68
+ * the running snapshot on an invalid `usine.yaml`, a changed `webhooks` block, or a rejected
69
+ * `workers` change.
70
+ */
71
+ readonly reload: Effect.Effect<InstanceReload, InstanceReloadError>;
72
+ /**
73
+ * Routes each reload through `workers` until the scope closes. Without a registration, as in
74
+ * setup mode, a reload rejects any `workers` change.
75
+ */
76
+ readonly registerWorkers: (workers: WorkerReload) => Effect.Effect<void, never, Scope.Scope>;
77
+ }>;
78
+ /**
79
+ * The instance folder snapshot that the orchestrator runs, replaced by each reload. Consumers read
80
+ * it each time they act; a Run keeps the Agent, task, and parent model it opened with.
81
+ */
82
+ export declare class CurrentInstance extends CurrentInstance_base {
83
+ /**
84
+ * Starts from `initial`, the folder that `usine up` loaded at startup, and reloads `directory`.
85
+ */
86
+ static readonly layer: (directory: InstanceDirectory, initial: LoadedInstance) => Layer.Layer<CurrentInstance, never, InstanceFolder>;
87
+ }
88
+ export { InstanceReload, RestartBlock } from "./changes.ts";
89
+ //# sourceMappingURL=current-instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"current-instance.d.ts","sourceRoot":"","sources":["../../src/current-instance/current-instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,KAAK,IAAI,WAAW,EACpB,OAAO,EACP,MAAM,EACN,KAAK,EAIL,MAAM,EACN,KAAK,KAAK,EAEV,KAAK,MAAM,EAEZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EAEL,cAAc,EAGd,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;;;IAOpB;;;OAGG;;IAEH,0FAA0F;;;AAV5F,oGAAoG;AACpG,qBAAa,oBAAqB,SAAQ,yBAWxC;CAAG;AAEL,6DAA6D;AAC7D,eAAO,MAAM,eAAe,YACjB,WAAW,CAAC,qBAAqB,CAAC,aAAa,CAAC,KACxD,oBAKC,CAAC;;IASH;;;OAGG;;IAEH;;;OAGG;;IAEH;;;OAGG;;;;AApBL;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,yBAmBxC;CAAG;AAEL;;GAEG;AACH,eAAO,MAAM,qBAAqB,WACxB,aAAa,CAAC,SAAS,CAAC,WACvB,aAAa,CAAC,UAAU,CAAC,SAC3B,aAAa,KACnB,oBAuBF,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAEnG;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,KACnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,oBAAoB,CAAC,CAAC;;IAgCjF,wCAAwC;kBAC1B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;IAC3C,4EAA4E;sBAC1D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;IAC/C;;;;OAIG;qBACc,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACnE;;;OAGG;8BACuB,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;;AArBhG;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAmBK;IACxC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,cACR,iBAAiB,WACnB,cAAc,KACtB,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,cAAc,CAAC,CAuFlD;CACL;AAED,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}