@usine/engine 0.1.0 → 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 (156) hide show
  1. package/README.md +39 -12
  2. package/dist/cursor/{store.d.ts → cursor.d.ts} +9 -7
  3. package/dist/cursor/cursor.d.ts.map +1 -0
  4. package/dist/cursor/{store.js → cursor.js} +8 -7
  5. package/dist/cursor/cursor.js.map +1 -0
  6. package/dist/cycle-budget/cycle-budget.d.ts +25 -0
  7. package/dist/cycle-budget/cycle-budget.d.ts.map +1 -0
  8. package/dist/cycle-budget/cycle-budget.js +117 -0
  9. package/dist/cycle-budget/cycle-budget.js.map +1 -0
  10. package/dist/cycle-budget/model.d.ts +26 -0
  11. package/dist/cycle-budget/model.d.ts.map +1 -0
  12. package/dist/cycle-budget/model.js +20 -0
  13. package/dist/cycle-budget/model.js.map +1 -0
  14. package/dist/cycle-budget/queries.d.ts +27 -0
  15. package/dist/cycle-budget/queries.d.ts.map +1 -0
  16. package/dist/cycle-budget/queries.js +175 -0
  17. package/dist/cycle-budget/queries.js.map +1 -0
  18. package/dist/database/database.d.ts +1 -1
  19. package/dist/database/database.d.ts.map +1 -1
  20. package/dist/database/local-sqlite.d.ts +32 -12
  21. package/dist/database/local-sqlite.d.ts.map +1 -1
  22. package/dist/database/local-sqlite.js +121 -16
  23. package/dist/database/local-sqlite.js.map +1 -1
  24. package/dist/database/schema.d.ts +302 -9
  25. package/dist/database/schema.d.ts.map +1 -1
  26. package/dist/database/schema.js +69 -12
  27. package/dist/database/schema.js.map +1 -1
  28. package/dist/engine/engine.d.ts +59 -0
  29. package/dist/engine/engine.d.ts.map +1 -0
  30. package/dist/{engine.js → engine/engine.js} +80 -32
  31. package/dist/engine/engine.js.map +1 -0
  32. package/dist/engine/error.d.ts +45 -0
  33. package/dist/engine/error.d.ts.map +1 -0
  34. package/dist/engine/error.js +49 -0
  35. package/dist/engine/error.js.map +1 -0
  36. package/dist/engine/lifecycle.d.ts +112 -0
  37. package/dist/engine/lifecycle.d.ts.map +1 -0
  38. package/dist/engine/lifecycle.js +132 -0
  39. package/dist/engine/lifecycle.js.map +1 -0
  40. package/dist/engine/shutdown.d.ts +12 -0
  41. package/dist/engine/shutdown.d.ts.map +1 -0
  42. package/dist/engine/shutdown.js +10 -0
  43. package/dist/engine/shutdown.js.map +1 -0
  44. package/dist/engine/submission.d.ts +58 -0
  45. package/dist/engine/submission.d.ts.map +1 -0
  46. package/dist/engine/submission.js +54 -0
  47. package/dist/engine/submission.js.map +1 -0
  48. package/dist/item-projection/{service.d.ts → item-projection.d.ts} +6 -6
  49. package/dist/item-projection/item-projection.d.ts.map +1 -0
  50. package/dist/item-projection/{service.js → item-projection.js} +7 -5
  51. package/dist/item-projection/item-projection.js.map +1 -0
  52. package/dist/item-projection/model.d.ts +2 -5
  53. package/dist/item-projection/model.d.ts.map +1 -1
  54. package/dist/item-projection/model.js +5 -5
  55. package/dist/item-projection/model.js.map +1 -1
  56. package/dist/loop-control/loop-control.d.ts +21 -0
  57. package/dist/loop-control/loop-control.d.ts.map +1 -0
  58. package/dist/{loop-control.js → loop-control/loop-control.js} +7 -5
  59. package/dist/loop-control/loop-control.js.map +1 -0
  60. package/dist/loop-control/model.d.ts +10 -0
  61. package/dist/loop-control/model.d.ts.map +1 -0
  62. package/dist/loop-control/model.js +9 -0
  63. package/dist/loop-control/model.js.map +1 -0
  64. package/dist/repository-label-projection/model.d.ts +12 -3
  65. package/dist/repository-label-projection/model.d.ts.map +1 -1
  66. package/dist/repository-label-projection/model.js +14 -5
  67. package/dist/repository-label-projection/model.js.map +1 -1
  68. package/dist/repository-label-projection/{service.d.ts → repository-label-projection.d.ts} +5 -5
  69. package/dist/repository-label-projection/repository-label-projection.d.ts.map +1 -0
  70. package/dist/repository-label-projection/{service.js → repository-label-projection.js} +17 -7
  71. package/dist/repository-label-projection/repository-label-projection.js.map +1 -0
  72. package/dist/run-reader/model.d.ts +46 -0
  73. package/dist/run-reader/model.d.ts.map +1 -0
  74. package/dist/run-reader/model.js +44 -0
  75. package/dist/run-reader/model.js.map +1 -0
  76. package/dist/run-reader/run-reader.d.ts +29 -0
  77. package/dist/run-reader/run-reader.d.ts.map +1 -0
  78. package/dist/run-reader/run-reader.js +44 -0
  79. package/dist/run-reader/run-reader.js.map +1 -0
  80. package/dist/step-executor.d.ts +36 -12
  81. package/dist/step-executor.d.ts.map +1 -1
  82. package/dist/step-executor.js +22 -5
  83. package/dist/step-executor.js.map +1 -1
  84. package/dist/store/codec.d.ts +278 -40
  85. package/dist/store/codec.d.ts.map +1 -1
  86. package/dist/store/codec.js +72 -44
  87. package/dist/store/codec.js.map +1 -1
  88. package/dist/store/queries.d.ts +49 -16
  89. package/dist/store/queries.d.ts.map +1 -1
  90. package/dist/store/queries.js +104 -91
  91. package/dist/store/queries.js.map +1 -1
  92. package/dist/store/store.d.ts +44 -26
  93. package/dist/store/store.d.ts.map +1 -1
  94. package/dist/store/store.js +199 -128
  95. package/dist/store/store.js.map +1 -1
  96. package/dist/store/transcript.d.ts +9 -0
  97. package/dist/store/transcript.d.ts.map +1 -0
  98. package/dist/store/transcript.js +71 -0
  99. package/dist/store/transcript.js.map +1 -0
  100. package/dist/transcript.d.ts +86 -0
  101. package/dist/transcript.d.ts.map +1 -0
  102. package/dist/transcript.js +77 -0
  103. package/dist/transcript.js.map +1 -0
  104. package/dist/workflow/admission.d.ts +13 -0
  105. package/dist/workflow/admission.d.ts.map +1 -0
  106. package/dist/workflow/admission.js +55 -0
  107. package/dist/workflow/admission.js.map +1 -0
  108. package/dist/workflow/command.d.ts +13 -0
  109. package/dist/workflow/command.d.ts.map +1 -0
  110. package/dist/workflow/command.js +17 -0
  111. package/dist/workflow/command.js.map +1 -0
  112. package/dist/workflow/workflow.d.ts +18 -0
  113. package/dist/workflow/workflow.d.ts.map +1 -0
  114. package/dist/workflow/workflow.js +108 -0
  115. package/dist/workflow/workflow.js.map +1 -0
  116. package/drizzle/20260903091940_queued_approved_runs/migration.sql +3 -0
  117. package/drizzle/20260903091940_queued_approved_runs/snapshot.json +1147 -0
  118. package/drizzle/20260905150403_item_cycle_budgets/migration.sql +58 -0
  119. package/drizzle/20260905150403_item_cycle_budgets/snapshot.json +1417 -0
  120. package/drizzle/20260905174009_item_run_history/migration.sql +1 -0
  121. package/drizzle/20260905174009_item_run_history/snapshot.json +1431 -0
  122. package/drizzle/20260912111855_operator_intervention/migration.sql +42 -0
  123. package/drizzle/20260912111855_operator_intervention/snapshot.json +1461 -0
  124. package/package.json +41 -5
  125. package/dist/cursor/model.d.ts +0 -5
  126. package/dist/cursor/model.d.ts.map +0 -1
  127. package/dist/cursor/model.js +0 -4
  128. package/dist/cursor/model.js.map +0 -1
  129. package/dist/cursor/store.d.ts.map +0 -1
  130. package/dist/cursor/store.js.map +0 -1
  131. package/dist/engine.d.ts +0 -39
  132. package/dist/engine.d.ts.map +0 -1
  133. package/dist/engine.js.map +0 -1
  134. package/dist/index.d.ts +0 -20
  135. package/dist/index.d.ts.map +0 -1
  136. package/dist/index.js +0 -20
  137. package/dist/index.js.map +0 -1
  138. package/dist/item-projection/service.d.ts.map +0 -1
  139. package/dist/item-projection/service.js.map +0 -1
  140. package/dist/loop-control.d.ts +0 -16
  141. package/dist/loop-control.d.ts.map +0 -1
  142. package/dist/loop-control.js.map +0 -1
  143. package/dist/model.d.ts +0 -185
  144. package/dist/model.d.ts.map +0 -1
  145. package/dist/model.js +0 -174
  146. package/dist/model.js.map +0 -1
  147. package/dist/repository-label-projection/service.d.ts.map +0 -1
  148. package/dist/repository-label-projection/service.js.map +0 -1
  149. package/dist/run-reader.d.ts +0 -20
  150. package/dist/run-reader.d.ts.map +0 -1
  151. package/dist/run-reader.js +0 -19
  152. package/dist/run-reader.js.map +0 -1
  153. package/dist/workflow.d.ts +0 -14
  154. package/dist/workflow.d.ts.map +0 -1
  155. package/dist/workflow.js +0 -105
  156. package/dist/workflow.js.map +0 -1
@@ -1,25 +1,38 @@
1
- import { Attempt, AttemptChannel, AttemptFailure, Event, Item, Loop, Run, RunState, StepResult, Worker, } from "@usine/core";
2
- import { Cause, Context, DateTime, Effect, Exit, Layer, Option, Schema } from "effect";
1
+ import { Attempt, AttemptId, AttemptContext } from "@usine/core/attempt";
2
+ import * as AttemptChannel from "@usine/core/attempt/channel";
3
+ import { AttemptFailure, InfraFailure } from "@usine/core/attempt/failure";
4
+ import { Event } from "@usine/core/event";
5
+ import { ItemKey } from "@usine/core/item";
6
+ import { LoopName } from "@usine/core/loop";
7
+ import { RunId, Run } from "@usine/core/run";
8
+ import { WorkerName } from "@usine/core/worker";
9
+ import * as RunState from "@usine/core/run/state";
10
+ import { StepResult } from "@usine/core/step/result";
11
+ import { Cause, Context, DateTime, Effect, Exit, Layer, Match, Option, Result, Schema, } from "effect";
3
12
  import { RunDatabase } from "../database/database.js";
4
- import { Claimed, Ignored, Queued, RunOperationRejectedError, RunSnapshot, StepExecution, Submission, TranscriptEntry, TranscriptQuery, } from "../model.js";
13
+ import { Claimed, CycleBlocked, Ignored, Queued, Submission, SubmissionResult, } from "../engine/submission.js";
14
+ import { RunOperationRejectedError } from "../engine/error.js";
15
+ import { RunSnapshot } from "../run-reader/model.js";
16
+ import { StepExecution } from "../step-executor.js";
17
+ import { TranscriptEntry, TranscriptQuery } from "../transcript.js";
5
18
  import { persistence, submissionFromRow } from "./codec.js";
6
19
  import { queriesFor } from "./queries.js";
7
- const MAX_AUTO_ATTEMPTS = Attempt.AttemptNumber.make(3);
20
+ import { beginAttempt as decideBeginAttempt, cancelRun, claimRun, finishAttempt as decideFinishAttempt, reconcileAttempt, retryRun, } from "../engine/lifecycle.js";
8
21
  export class StoredSubmission extends Schema.Class("@usine/engine/internal/StoredSubmission")({
9
22
  submission: Submission,
10
- runId: Run.RunId,
23
+ runId: RunId,
11
24
  }) {
12
25
  }
13
26
  export class RecoverableRun extends Schema.Class("@usine/engine/internal/RecoverableRun")({
14
27
  submission: Submission,
15
- runId: Run.RunId,
28
+ runId: RunId,
16
29
  state: RunState.RunState,
17
30
  }) {
18
31
  }
19
32
  export class Claim extends Schema.Class("@usine/engine/internal/Claim")({
20
33
  submission: Submission,
21
- result: Schema.Union([Claimed, Queued, Ignored]),
22
- supersededRun: Schema.Option(Run.RunId),
34
+ result: SubmissionResult,
35
+ supersededRun: Schema.Option(RunId),
23
36
  }) {
24
37
  }
25
38
  export class AttemptStarted extends Schema.TaggedClass("@usine/engine/internal/AttemptStarted")("AttemptStarted", {
@@ -27,12 +40,12 @@ export class AttemptStarted extends Schema.TaggedClass("@usine/engine/internal/A
27
40
  }) {
28
41
  }
29
42
  export class AttemptRecoveryFailed extends Schema.TaggedClass("@usine/engine/internal/AttemptRecoveryFailed")("AttemptRecoveryFailed", {
30
- failure: AttemptFailure.InfraFailure,
43
+ failure: InfraFailure,
31
44
  }) {
32
45
  }
33
46
  /**
34
47
  * The Run closed (canceled, superseded, or revoked) while it waited for a
35
- * worker slot — a routine outcome once capacity queues exist, never an error.
48
+ * worker slot. Routine once capacity queues exist, never an error.
36
49
  */
37
50
  export class RunClosed extends Schema.TaggedClass("@usine/engine/internal/RunClosed")("RunClosed", {
38
51
  state: Schema.String,
@@ -47,19 +60,41 @@ const makeRunStore = Effect.gen(function* () {
47
60
  supersededRun,
48
61
  });
49
62
  const openRun = Effect.fn("RunStore.openRun")(function* (tx, submission, runId, supersededRun = Option.none()) {
63
+ const blocked = yield* tx.cycles.admit(submission);
64
+ if (Option.isSome(blocked))
65
+ return new Claim({
66
+ submission,
67
+ supersededRun,
68
+ result: new CycleBlocked({ eventId: submission.event.id, ask: blocked.value }),
69
+ });
50
70
  yield* tx.createRun(submission, submission.event.id, runId);
71
+ yield* tx.cycles.reserve(submission, runId);
51
72
  return claimedRun(submission, runId, supersededRun);
52
73
  });
53
74
  const recordAndClaim = Effect.fn("RunStore.recordAndClaim")(function* (submission, requestedRunId) {
75
+ yield* Effect.annotateCurrentSpan({
76
+ eventId: submission.event.id,
77
+ runId: requestedRunId,
78
+ loop: submission.loop,
79
+ itemKey: submission.itemKey,
80
+ });
54
81
  return yield* database.transaction((transaction) => Effect.gen(function* () {
55
82
  const tx = queriesFor(transaction);
56
83
  const recorded = yield* tx.recordTriggerEvent(submission);
57
84
  const existing = yield* tx.runForEvent(recorded.event.id);
58
85
  if (existing[0] !== undefined) {
86
+ yield* Effect.logInfo("Event joined its existing Run", {
87
+ eventId: recorded.event.id,
88
+ runId: existing[0].runId,
89
+ });
59
90
  return claimedRun(recorded, existing[0].runId);
60
91
  }
61
92
  const ignored = yield* tx.ignoredEvent(recorded.event.id);
62
93
  if (ignored[0] !== undefined) {
94
+ yield* Effect.logInfo("Event remains ignored", {
95
+ eventId: recorded.event.id,
96
+ reason: ignored[0].reason,
97
+ });
63
98
  return new Claim({
64
99
  submission: recorded,
65
100
  result: new Ignored({
@@ -69,26 +104,36 @@ const makeRunStore = Effect.gen(function* () {
69
104
  supersededRun: Option.none(),
70
105
  });
71
106
  }
72
- const blocking = yield* tx.blockingRun(recorded.loop, recorded.itemKey);
73
- const blockedBy = blocking[0];
74
- if (blockedBy === undefined) {
75
- return yield* openRun(tx, recorded, requestedRunId);
76
- }
77
- const blockedSnapshot = yield* tx.snapshot(blockedBy.runId);
78
- if (blockedSnapshot.run.state._tag === "Running") {
107
+ if (!(yield* tx.cycles.isCurrentEvent(recorded))) {
79
108
  return new Claim({
80
109
  submission: recorded,
81
- result: new Queued({ eventId: recorded.event.id }),
82
110
  supersededRun: Option.none(),
111
+ result: new Ignored({ eventId: recorded.event.id, reason: "superseded" }),
83
112
  });
84
113
  }
85
- if (blockedSnapshot.run.state._tag === "Pending" ||
86
- blockedSnapshot.run.state._tag === "Waiting") {
87
- yield* tx.updateState(blockedSnapshot.run.id, RunState.supersede(blockedSnapshot.run.state, recorded.event.id));
88
- yield* tx.requestInterrupt(blockedSnapshot.run.id);
89
- return yield* openRun(tx, recorded, requestedRunId, Option.some(blockedSnapshot.run.id));
114
+ const blocking = yield* tx.blockingRun(recorded.loop, recorded.itemKey);
115
+ const blockedBy = blocking[0];
116
+ const decision = claimRun(blockedBy === undefined
117
+ ? Option.none()
118
+ : Option.some((yield* tx.snapshot(blockedBy.runId)).run), recorded.event.id);
119
+ yield* Effect.logInfo("Event claim decided", {
120
+ eventId: recorded.event.id,
121
+ decision: decision._tag,
122
+ });
123
+ switch (decision._tag) {
124
+ case "QueueEvent":
125
+ return new Claim({
126
+ submission: recorded,
127
+ result: new Queued({ eventId: recorded.event.id }),
128
+ supersededRun: Option.none(),
129
+ });
130
+ case "SupersedeRun":
131
+ yield* tx.updateState(decision.runId, decision.state);
132
+ yield* tx.requestInterrupt(decision.runId);
133
+ return yield* openRun(tx, recorded, requestedRunId, Option.some(decision.runId));
134
+ case "OpenRun":
135
+ return yield* openRun(tx, recorded, requestedRunId);
90
136
  }
91
- return yield* openRun(tx, recorded, requestedRunId);
92
137
  }));
93
138
  }, persistence("submit Event"));
94
139
  const parkForApproval = Effect.fn("RunStore.parkForApproval")(function* (runId) {
@@ -100,63 +145,91 @@ const makeRunStore = Effect.gen(function* () {
100
145
  }
101
146
  }));
102
147
  }, persistence("park run for approval"));
148
+ // All callers supply a transaction: Attempt, Run, Step and outbox writes
149
+ // either commit together or roll back together (ADRs 0010 and 0020).
150
+ const applyFinish = Effect.fn("RunStore.applyFinish")(function* (tx, runId, decision) {
151
+ yield* Effect.annotateCurrentSpan({ runId });
152
+ if (decision._tag === "Unchanged") {
153
+ yield* Effect.logInfo("Attempt completion ignored", { runId, reason: decision.reason });
154
+ return;
155
+ }
156
+ const { attempt, outcome } = decision;
157
+ yield* Effect.annotateCurrentSpan({ attemptId: attempt.id });
158
+ const fields = {
159
+ runId,
160
+ attemptId: attempt.id,
161
+ number: attempt.number,
162
+ decision: decision._tag,
163
+ };
164
+ yield* Effect.logInfo("Attempt completion decided", Match.valueTags(outcome, {
165
+ Failed: ({ failure }) => ({ ...fields, failure: failure._tag }),
166
+ Succeeded: () => fields,
167
+ }));
168
+ yield* tx.closeAttempt(attempt.id, outcome);
169
+ if (decision._tag === "RetryAttempt")
170
+ return;
171
+ if (decision._tag === "RunSucceeded") {
172
+ yield* tx.updateStepResult(runId, attempt.stepName, decision.result);
173
+ }
174
+ yield* tx.updateState(runId, decision.state);
175
+ yield* tx.requestWorkflowCommand(runId, "Continue");
176
+ });
103
177
  const beginAttempt = Effect.fn("RunStore.beginAttempt")(function* (runId, worker) {
178
+ yield* Effect.annotateCurrentSpan({ runId });
104
179
  return yield* database.transaction((transaction) => Effect.gen(function* () {
105
180
  const tx = queriesFor(transaction);
106
181
  const current = yield* tx.snapshot(runId);
107
- let runState = current.run.state;
108
- const lastAttempt = current.attempts[current.attempts.length - 1];
109
- if (runState._tag === "Running" &&
110
- lastAttempt !== undefined &&
111
- Option.isNone(lastAttempt.outcome)) {
112
- const failure = new AttemptFailure.InfraFailure({
113
- message: "The orchestrator stopped during the attempt",
114
- cause: new Error("attempt interrupted by orchestrator restart"),
115
- });
116
- yield* tx.closeAttempt(lastAttempt.id, new Attempt.Failed({ failure }));
117
- if (!Attempt.shouldAutoRetry({
118
- failure,
119
- number: lastAttempt.number,
120
- maxAutoAttempts: MAX_AUTO_ATTEMPTS,
121
- })) {
122
- yield* tx.updateState(runId, RunState.fail(runState));
123
- yield* tx.requestWorkflowCommand(runId, "Continue");
124
- return new AttemptRecoveryFailed({ failure });
125
- }
182
+ const interruption = new InfraFailure({
183
+ message: "The orchestrator stopped during the attempt",
184
+ cause: new Error("attempt interrupted by orchestrator restart"),
185
+ });
186
+ const decision = decideBeginAttempt(current, interruption);
187
+ if (decision._tag === "RunClosed") {
188
+ yield* Effect.logInfo("Attempt start skipped", { runId, state: decision.state._tag });
189
+ return new RunClosed({ state: decision.state._tag });
190
+ }
191
+ if (decision._tag === "RunFailed") {
192
+ yield* applyFinish(tx, runId, decision);
193
+ return new AttemptRecoveryFailed({ failure: interruption });
126
194
  }
127
- if (runState._tag === "Pending" || runState._tag === "Waiting") {
128
- runState = RunState.start(runState);
129
- yield* tx.updateState(runId, runState);
195
+ if (Option.isSome(decision.interrupted)) {
196
+ yield* applyFinish(tx, runId, decision.interrupted.value);
130
197
  }
131
- if (runState._tag !== "Running") {
132
- // Cancel, supersede, and revoke can all land while the run waits
133
- // for a worker slot; the caller releases the slot and moves on.
134
- return new RunClosed({ state: runState._tag });
198
+ if (current.run.state._tag !== decision.state._tag) {
199
+ yield* tx.updateState(runId, decision.state);
135
200
  }
136
- const number = Attempt.AttemptNumber.make((lastAttempt?.number ?? 0) + 1);
137
- const attemptId = Attempt.AttemptId.make(`${runId}/${current.step.name}/${number}`);
201
+ const attemptId = AttemptId.make(`${runId}/${current.step.name}/${decision.number}`);
138
202
  const startedAt = yield* DateTime.now;
139
- const attempt = new Attempt.Attempt({
203
+ const attempt = new Attempt({
140
204
  id: attemptId,
141
205
  runId,
142
206
  stepName: current.step.name,
143
207
  worker,
144
- number,
208
+ number: decision.number,
145
209
  brain: current.agent.brain,
210
+ task: current.task,
211
+ agent: current.agent.name,
212
+ operatorIntervened: false,
146
213
  parentModel: current.parentModel,
147
214
  startedAt,
148
215
  outcome: Option.none(),
149
216
  });
150
217
  yield* tx.addAttempt(attempt);
218
+ yield* Effect.logInfo("Attempt started", {
219
+ runId,
220
+ attemptId,
221
+ number: decision.number,
222
+ worker,
223
+ });
151
224
  return new AttemptStarted({
152
225
  execution: new StepExecution({
153
226
  attempt,
154
227
  event: current.event,
155
- run: new Run.Run({
228
+ run: new Run({
156
229
  id: current.run.id,
157
230
  eventId: current.run.eventId,
158
231
  loop: current.run.loop,
159
- state: runState,
232
+ state: decision.state,
160
233
  openedAt: current.run.openedAt,
161
234
  }),
162
235
  step: current.step,
@@ -169,37 +242,16 @@ const makeRunStore = Effect.gen(function* () {
169
242
  });
170
243
  }));
171
244
  }, persistence("begin attempt"));
172
- const succeedAttempt = Effect.fn("RunStore.succeedAttempt")(function* (attempt, result) {
173
- yield* database.transaction((transaction) => Effect.gen(function* () {
174
- const tx = queriesFor(transaction);
175
- const current = yield* tx.snapshot(attempt.runId);
176
- if (current.run.state._tag !== "Running")
177
- return;
178
- yield* tx.closeAttempt(attempt.id, new Attempt.Succeeded());
179
- yield* tx.updateStepResult(attempt.runId, attempt.stepName, result);
180
- yield* tx.updateState(attempt.runId, RunState.succeed(current.run.state));
181
- yield* tx.requestWorkflowCommand(attempt.runId, "Continue");
182
- }));
183
- }, persistence("succeed attempt"));
184
- const failAttempt = Effect.fn("RunStore.failAttempt")(function* (attempt, failure) {
245
+ const finishAttempt = Effect.fn("RunStore.finishAttempt")(function* (attempt, result) {
246
+ yield* Effect.annotateCurrentSpan({ runId: attempt.runId, attemptId: attempt.id });
185
247
  return yield* database.transaction((transaction) => Effect.gen(function* () {
186
248
  const tx = queriesFor(transaction);
187
249
  const current = yield* tx.snapshot(attempt.runId);
188
- if (current.run.state._tag !== "Running")
189
- return false;
190
- yield* tx.closeAttempt(attempt.id, new Attempt.Failed({ failure }));
191
- const retry = Attempt.shouldAutoRetry({
192
- failure,
193
- number: attempt.number,
194
- maxAutoAttempts: MAX_AUTO_ATTEMPTS,
195
- });
196
- if (!retry) {
197
- yield* tx.updateState(attempt.runId, RunState.fail(current.run.state));
198
- yield* tx.requestWorkflowCommand(attempt.runId, "Continue");
199
- }
200
- return retry;
250
+ const decision = decideFinishAttempt(current, attempt.id, result);
251
+ yield* applyFinish(tx, attempt.runId, decision);
252
+ return decision;
201
253
  }));
202
- }, persistence("fail attempt"));
254
+ }, persistence("finish attempt"));
203
255
  const approve = Effect.fn("RunStore.approve")(function* (runId, approval) {
204
256
  yield* database.transaction((transaction) => Effect.gen(function* () {
205
257
  const tx = queriesFor(transaction);
@@ -214,22 +266,35 @@ const makeRunStore = Effect.gen(function* () {
214
266
  });
215
267
  }
216
268
  yield* tx.recordApproval(runId, approval);
269
+ yield* tx.updateState(runId, RunState.approve(current.run.state));
217
270
  yield* tx.requestWorkflowCommand(runId, "Approve");
218
271
  }));
219
272
  }, persistence("approve run"));
220
- const retry = Effect.fn("RunStore.retry")(function* (runId) {
273
+ const retry = Effect.fn("RunStore.retry")(function* (runId, amendment = Option.none()) {
274
+ yield* Effect.annotateCurrentSpan({ runId });
221
275
  yield* database.transaction((transaction) => Effect.gen(function* () {
222
276
  const tx = queriesFor(transaction);
223
277
  const current = yield* tx.snapshot(runId);
224
- if (current.run.state._tag === "Failed") {
225
- yield* tx.updateState(runId, RunState.retry(current.run.state));
278
+ const decision = retryRun(current.run.state, yield* tx.workflowCommandsFor(runId));
279
+ yield* Effect.logInfo("Operator retry decided", {
280
+ runId,
281
+ state: current.run.state._tag,
282
+ decision: decision._tag,
283
+ });
284
+ if (decision._tag === "Resume") {
285
+ if (Option.isSome(amendment)) {
286
+ yield* tx.amend(runId, amendment.value);
287
+ yield* Effect.logInfo("Run effective task and Agent amended", {
288
+ runId,
289
+ agent: amendment.value.agent.name,
290
+ });
291
+ }
292
+ yield* tx.updateState(runId, decision.state);
226
293
  yield* tx.requestWorkflowCommand(runId, "Resume");
227
294
  return;
228
295
  }
229
- if (current.run.state._tag === "Running" &&
230
- (yield* tx.hasWorkflowCommand(runId, "Resume"))) {
296
+ if (decision._tag === "ResumePending" && Option.isNone(amendment))
231
297
  return;
232
- }
233
298
  return yield* new RunOperationRejectedError({
234
299
  runId,
235
300
  operation: "retry",
@@ -238,25 +303,28 @@ const makeRunStore = Effect.gen(function* () {
238
303
  }));
239
304
  }, persistence("retry run"));
240
305
  const cancel = Effect.fn("RunStore.cancel")(function* (runId) {
306
+ yield* Effect.annotateCurrentSpan({ runId });
241
307
  return yield* database.transaction((transaction) => Effect.gen(function* () {
242
308
  const tx = queriesFor(transaction);
243
309
  const current = yield* tx.snapshot(runId);
244
- if (!RunState.isOpen(current.run.state)) {
245
- const alreadyClosed = { _tag: "AlreadyClosed" };
246
- return alreadyClosed;
247
- }
248
- let openAttempt = Option.none();
249
- if (current.run.state._tag === "Running") {
250
- const attempt = current.attempts[current.attempts.length - 1];
251
- if (attempt !== undefined && Option.isNone(attempt.outcome)) {
252
- yield* tx.closeAttempt(attempt.id, new Attempt.Canceled());
253
- openAttempt = Option.some(attempt.id);
254
- }
310
+ const decision = cancelRun(current);
311
+ yield* Effect.logInfo("Operator cancellation decided", {
312
+ runId,
313
+ state: current.run.state._tag,
314
+ decision: decision._tag,
315
+ });
316
+ if (decision._tag === "AlreadyClosed")
317
+ return decision;
318
+ if (Option.isSome(decision.attempt)) {
319
+ yield* tx.closeAttempt(decision.attempt.value.id, decision.attempt.value.outcome);
255
320
  }
256
- yield* tx.updateState(runId, RunState.cancelByOperator(current.run.state));
321
+ yield* tx.updateState(runId, decision.state);
257
322
  yield* tx.requestInterrupt(runId);
258
323
  yield* tx.requestWorkflowCommand(runId, "Continue");
259
- const canceled = { _tag: "Canceled", openAttempt };
324
+ const canceled = {
325
+ _tag: "Canceled",
326
+ openAttempt: Option.map(decision.attempt, ({ id }) => id),
327
+ };
260
328
  return canceled;
261
329
  }));
262
330
  }, persistence("cancel run"));
@@ -266,7 +334,7 @@ const makeRunStore = Effect.gen(function* () {
266
334
  const storedRuns = yield* tx.revokeUnstarted(loop, itemKey);
267
335
  for (const row of storedRuns) {
268
336
  const current = yield* tx.snapshot(row.runId);
269
- if (current.run.state._tag === "Pending" || current.run.state._tag === "Waiting") {
337
+ if (RunState.isUnstarted(current.run.state)) {
270
338
  yield* tx.updateState(row.runId, RunState.revoke(current.run.state));
271
339
  yield* tx.requestInterrupt(row.runId);
272
340
  }
@@ -287,8 +355,12 @@ const makeRunStore = Effect.gen(function* () {
287
355
  if ((yield* tx.blockingRun(submission.loop, submission.itemKey)).length > 0) {
288
356
  return Option.none();
289
357
  }
290
- yield* tx.createRun(submission, submission.event.id, runId);
291
- return Option.some(new StoredSubmission({ submission, runId }));
358
+ if (!(yield* tx.cycles.isCurrentEvent(submission)))
359
+ return Option.none();
360
+ const claimed = yield* openRun(tx, submission, runId);
361
+ return claimed.result._tag === "Claimed"
362
+ ? Option.some(new StoredSubmission({ submission, runId }))
363
+ : Option.none();
292
364
  }));
293
365
  }, persistence("claim queued Event"));
294
366
  const recoverable = Effect.fn("RunStore.recoverable")(function* () {
@@ -305,6 +377,9 @@ const makeRunStore = Effect.gen(function* () {
305
377
  if (direction === "outbound" && envelope.payload._tag === "Started") {
306
378
  yield* tx.updateAttemptParentModel(envelope.attemptId, envelope.payload.parentModel);
307
379
  }
380
+ if (direction === "outbound" && envelope.payload._tag === "InterventionApplied") {
381
+ yield* tx.markIntervened(envelope.attemptId);
382
+ }
308
383
  yield* tx.appendTranscript(direction, envelope, receivedAt);
309
384
  }));
310
385
  }, persistence("append Attempt transcript"));
@@ -312,29 +387,27 @@ const makeRunStore = Effect.gen(function* () {
312
387
  return yield* queries.transcript(query);
313
388
  }, persistence("read Attempt transcript"));
314
389
  const reconcileCompletion = Effect.fn("RunStore.reconcileCompletion")(function* (runId, result) {
315
- if (result._tag !== "Complete")
390
+ yield* Effect.annotateCurrentSpan({ runId });
391
+ if (result._tag !== "Complete") {
392
+ yield* Effect.logDebug("Workflow reconciliation skipped", { runId, reason: "Suspended" });
316
393
  return;
394
+ }
317
395
  yield* database.transaction((transaction) => Effect.gen(function* () {
318
396
  const tx = queriesFor(transaction);
319
397
  const current = yield* tx.snapshot(runId);
320
- if (current.run.state._tag !== "Running")
321
- return;
322
- const attempt = current.attempts[current.attempts.length - 1];
323
- if (attempt === undefined || Option.isSome(attempt.outcome))
324
- return;
325
- if (Exit.isSuccess(result.exit)) {
326
- yield* tx.closeAttempt(attempt.id, new Attempt.Succeeded());
327
- yield* tx.updateStepResult(attempt.runId, attempt.stepName, result.exit.value);
328
- yield* tx.updateState(runId, RunState.succeed(current.run.state));
329
- yield* tx.requestWorkflowCommand(runId, "Continue");
398
+ // Workflow defects and interruption do not become typed Attempt failures.
399
+ // Keep the projection available to the existing restart recovery path.
400
+ const completion = Exit.isSuccess(result.exit)
401
+ ? Option.some(Result.succeed(result.exit.value))
402
+ : Option.map(Cause.findErrorOption(result.exit.cause), Result.fail);
403
+ if (Option.isNone(completion)) {
404
+ yield* Effect.logInfo("Workflow reconciliation skipped", {
405
+ runId,
406
+ reason: "NoTypedOutcome",
407
+ });
330
408
  return;
331
409
  }
332
- const failure = Cause.findErrorOption(result.exit.cause);
333
- if (Option.isNone(failure))
334
- return;
335
- yield* tx.closeAttempt(attempt.id, new Attempt.Failed({ failure: failure.value }));
336
- yield* tx.updateState(runId, RunState.fail(current.run.state));
337
- yield* tx.requestWorkflowCommand(runId, "Continue");
410
+ yield* applyFinish(tx, runId, reconcileAttempt(current, completion.value));
338
411
  }));
339
412
  }, persistence("reconcile workflow completion"));
340
413
  return {
@@ -346,7 +419,7 @@ const makeRunStore = Effect.gen(function* () {
346
419
  completeWorkflowCommand: (runId, command) => queries
347
420
  .completeWorkflowCommand(runId, command)
348
421
  .pipe(persistence("complete workflow command")),
349
- failAttempt,
422
+ finishAttempt,
350
423
  nextQueued: (runId) => queries.nextQueued(runId).pipe(persistence("find queued Event")),
351
424
  parkForApproval,
352
425
  pendingWorkflowCommands: queries
@@ -358,15 +431,13 @@ const makeRunStore = Effect.gen(function* () {
358
431
  retry,
359
432
  revoke,
360
433
  snapshot: (runId) => queries.snapshot(runId).pipe(persistence("read run")),
361
- succeedAttempt,
362
434
  transcript,
363
435
  };
364
436
  });
365
437
  /**
366
- * The durable Run projection store. The interface below is the store's
367
- * declared contract — the seam any other backend (for example a Postgres
368
- * store) implements with its own `Layer.effect(RunStore, ...)`. Methods speak
369
- * domain vocabulary only and fail only with `RunStoreError`.
438
+ * The durable Run projection store. Another backend implements this interface
439
+ * with its own `Layer.effect(RunStore, ...)`; methods speak domain vocabulary
440
+ * and fail only with `RunStoreError`.
370
441
  */
371
442
  export class RunStore extends Context.Service()("@usine/engine/internal/RunStore") {
372
443
  static layer = Layer.effect(RunStore, makeRunStore);
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import * as AttemptChannel from "@usine/core/attempt/channel";
2
+ import { DateTime, Effect } from "effect";
3
+ import type { RunDatabaseClient } from "../database/database.ts";
4
+ /** Owns durable transcript writes and bounded history/session reads on the caller's transaction. */
5
+ export declare const transcriptQueries: (database: RunDatabaseClient) => {
6
+ appendTranscript: (direction: "inbound" | "outbound", envelope: AttemptChannel.InboundEnvelope | AttemptChannel.OutboundEnvelope, receivedAt: DateTime.Utc) => Effect.Effect<void, import("drizzle-orm/effect-core").EffectDrizzleQueryError, never>;
7
+ transcript: (query: import("../transcript.ts").TranscriptAllQuery | import("../transcript.ts").TranscriptPageQuery | import("../transcript.ts").TranscriptSessionsQuery | import("../transcript.ts").TranscriptTailQuery) => Effect.Effect<import("../transcript.ts").TranscriptEntry[], import("drizzle-orm/effect-core").EffectDrizzleQueryError | import("effect/Schema").SchemaError, never>;
8
+ };
9
+ //# sourceMappingURL=transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/store/transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAC;AAI9D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAiB,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAYjE,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,aAAc,iBAAiB;;;CAyF5D,CAAC"}