@usine/engine 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 (150) hide show
  1. package/README.md +37 -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 +113 -14
  23. package/dist/database/local-sqlite.js.map +1 -1
  24. package/dist/database/schema.d.ts +254 -9
  25. package/dist/database/schema.d.ts.map +1 -1
  26. package/dist/database/schema.js +65 -12
  27. package/dist/database/schema.js.map +1 -1
  28. package/dist/engine/engine.d.ts +55 -0
  29. package/dist/engine/engine.d.ts.map +1 -0
  30. package/dist/{engine.js → engine/engine.js} +44 -30
  31. package/dist/engine/engine.js.map +1 -0
  32. package/dist/engine/error.d.ts +37 -0
  33. package/dist/engine/error.d.ts.map +1 -0
  34. package/dist/engine/error.js +41 -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 +34 -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 +104 -40
  85. package/dist/store/codec.d.ts.map +1 -1
  86. package/dist/store/codec.js +66 -44
  87. package/dist/store/codec.js.map +1 -1
  88. package/dist/store/queries.d.ts +47 -15
  89. package/dist/store/queries.d.ts.map +1 -1
  90. package/dist/store/queries.js +74 -39
  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 +185 -127
  95. package/dist/store/store.js.map +1 -1
  96. package/dist/transcript.d.ts +64 -0
  97. package/dist/transcript.d.ts.map +1 -0
  98. package/dist/transcript.js +59 -0
  99. package/dist/transcript.js.map +1 -0
  100. package/dist/workflow/admission.d.ts +13 -0
  101. package/dist/workflow/admission.d.ts.map +1 -0
  102. package/dist/workflow/admission.js +55 -0
  103. package/dist/workflow/admission.js.map +1 -0
  104. package/dist/workflow/command.d.ts +13 -0
  105. package/dist/workflow/command.d.ts.map +1 -0
  106. package/dist/workflow/command.js +17 -0
  107. package/dist/workflow/command.js.map +1 -0
  108. package/dist/workflow/workflow.d.ts +18 -0
  109. package/dist/workflow/workflow.d.ts.map +1 -0
  110. package/dist/workflow/workflow.js +108 -0
  111. package/dist/workflow/workflow.js.map +1 -0
  112. package/drizzle/20260903091940_queued_approved_runs/migration.sql +3 -0
  113. package/drizzle/20260903091940_queued_approved_runs/snapshot.json +1147 -0
  114. package/drizzle/20260905150403_item_cycle_budgets/migration.sql +58 -0
  115. package/drizzle/20260905150403_item_cycle_budgets/snapshot.json +1417 -0
  116. package/drizzle/20260905174009_item_run_history/migration.sql +1 -0
  117. package/drizzle/20260905174009_item_run_history/snapshot.json +1431 -0
  118. package/package.json +41 -5
  119. package/dist/cursor/model.d.ts +0 -5
  120. package/dist/cursor/model.d.ts.map +0 -1
  121. package/dist/cursor/model.js +0 -4
  122. package/dist/cursor/model.js.map +0 -1
  123. package/dist/cursor/store.d.ts.map +0 -1
  124. package/dist/cursor/store.js.map +0 -1
  125. package/dist/engine.d.ts +0 -39
  126. package/dist/engine.d.ts.map +0 -1
  127. package/dist/engine.js.map +0 -1
  128. package/dist/index.d.ts +0 -20
  129. package/dist/index.d.ts.map +0 -1
  130. package/dist/index.js +0 -20
  131. package/dist/index.js.map +0 -1
  132. package/dist/item-projection/service.d.ts.map +0 -1
  133. package/dist/item-projection/service.js.map +0 -1
  134. package/dist/loop-control.d.ts +0 -16
  135. package/dist/loop-control.d.ts.map +0 -1
  136. package/dist/loop-control.js.map +0 -1
  137. package/dist/model.d.ts +0 -185
  138. package/dist/model.d.ts.map +0 -1
  139. package/dist/model.js +0 -174
  140. package/dist/model.js.map +0 -1
  141. package/dist/repository-label-projection/service.d.ts.map +0 -1
  142. package/dist/repository-label-projection/service.js.map +0 -1
  143. package/dist/run-reader.d.ts +0 -20
  144. package/dist/run-reader.d.ts.map +0 -1
  145. package/dist/run-reader.js +0 -19
  146. package/dist/run-reader.js.map +0 -1
  147. package/dist/workflow.d.ts +0 -14
  148. package/dist/workflow.d.ts.map +0 -1
  149. package/dist/workflow.js +0 -105
  150. 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 } 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,88 @@ 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,
146
210
  parentModel: current.parentModel,
147
211
  startedAt,
148
212
  outcome: Option.none(),
149
213
  });
150
214
  yield* tx.addAttempt(attempt);
215
+ yield* Effect.logInfo("Attempt started", {
216
+ runId,
217
+ attemptId,
218
+ number: decision.number,
219
+ worker,
220
+ });
151
221
  return new AttemptStarted({
152
222
  execution: new StepExecution({
153
223
  attempt,
154
224
  event: current.event,
155
- run: new Run.Run({
225
+ run: new Run({
156
226
  id: current.run.id,
157
227
  eventId: current.run.eventId,
158
228
  loop: current.run.loop,
159
- state: runState,
229
+ state: decision.state,
160
230
  openedAt: current.run.openedAt,
161
231
  }),
162
232
  step: current.step,
@@ -169,37 +239,16 @@ const makeRunStore = Effect.gen(function* () {
169
239
  });
170
240
  }));
171
241
  }, 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) {
242
+ const finishAttempt = Effect.fn("RunStore.finishAttempt")(function* (attempt, result) {
243
+ yield* Effect.annotateCurrentSpan({ runId: attempt.runId, attemptId: attempt.id });
185
244
  return yield* database.transaction((transaction) => Effect.gen(function* () {
186
245
  const tx = queriesFor(transaction);
187
246
  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;
247
+ const decision = decideFinishAttempt(current, attempt.id, result);
248
+ yield* applyFinish(tx, attempt.runId, decision);
249
+ return decision;
201
250
  }));
202
- }, persistence("fail attempt"));
251
+ }, persistence("finish attempt"));
203
252
  const approve = Effect.fn("RunStore.approve")(function* (runId, approval) {
204
253
  yield* database.transaction((transaction) => Effect.gen(function* () {
205
254
  const tx = queriesFor(transaction);
@@ -214,22 +263,28 @@ const makeRunStore = Effect.gen(function* () {
214
263
  });
215
264
  }
216
265
  yield* tx.recordApproval(runId, approval);
266
+ yield* tx.updateState(runId, RunState.approve(current.run.state));
217
267
  yield* tx.requestWorkflowCommand(runId, "Approve");
218
268
  }));
219
269
  }, persistence("approve run"));
220
270
  const retry = Effect.fn("RunStore.retry")(function* (runId) {
271
+ yield* Effect.annotateCurrentSpan({ runId });
221
272
  yield* database.transaction((transaction) => Effect.gen(function* () {
222
273
  const tx = queriesFor(transaction);
223
274
  const current = yield* tx.snapshot(runId);
224
- if (current.run.state._tag === "Failed") {
225
- yield* tx.updateState(runId, RunState.retry(current.run.state));
275
+ const decision = retryRun(current.run.state, yield* tx.workflowCommandsFor(runId));
276
+ yield* Effect.logInfo("Operator retry decided", {
277
+ runId,
278
+ state: current.run.state._tag,
279
+ decision: decision._tag,
280
+ });
281
+ if (decision._tag === "Resume") {
282
+ yield* tx.updateState(runId, decision.state);
226
283
  yield* tx.requestWorkflowCommand(runId, "Resume");
227
284
  return;
228
285
  }
229
- if (current.run.state._tag === "Running" &&
230
- (yield* tx.hasWorkflowCommand(runId, "Resume"))) {
286
+ if (decision._tag === "ResumePending")
231
287
  return;
232
- }
233
288
  return yield* new RunOperationRejectedError({
234
289
  runId,
235
290
  operation: "retry",
@@ -238,25 +293,28 @@ const makeRunStore = Effect.gen(function* () {
238
293
  }));
239
294
  }, persistence("retry run"));
240
295
  const cancel = Effect.fn("RunStore.cancel")(function* (runId) {
296
+ yield* Effect.annotateCurrentSpan({ runId });
241
297
  return yield* database.transaction((transaction) => Effect.gen(function* () {
242
298
  const tx = queriesFor(transaction);
243
299
  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
- }
300
+ const decision = cancelRun(current);
301
+ yield* Effect.logInfo("Operator cancellation decided", {
302
+ runId,
303
+ state: current.run.state._tag,
304
+ decision: decision._tag,
305
+ });
306
+ if (decision._tag === "AlreadyClosed")
307
+ return decision;
308
+ if (Option.isSome(decision.attempt)) {
309
+ yield* tx.closeAttempt(decision.attempt.value.id, decision.attempt.value.outcome);
255
310
  }
256
- yield* tx.updateState(runId, RunState.cancelByOperator(current.run.state));
311
+ yield* tx.updateState(runId, decision.state);
257
312
  yield* tx.requestInterrupt(runId);
258
313
  yield* tx.requestWorkflowCommand(runId, "Continue");
259
- const canceled = { _tag: "Canceled", openAttempt };
314
+ const canceled = {
315
+ _tag: "Canceled",
316
+ openAttempt: Option.map(decision.attempt, ({ id }) => id),
317
+ };
260
318
  return canceled;
261
319
  }));
262
320
  }, persistence("cancel run"));
@@ -266,7 +324,7 @@ const makeRunStore = Effect.gen(function* () {
266
324
  const storedRuns = yield* tx.revokeUnstarted(loop, itemKey);
267
325
  for (const row of storedRuns) {
268
326
  const current = yield* tx.snapshot(row.runId);
269
- if (current.run.state._tag === "Pending" || current.run.state._tag === "Waiting") {
327
+ if (RunState.isUnstarted(current.run.state)) {
270
328
  yield* tx.updateState(row.runId, RunState.revoke(current.run.state));
271
329
  yield* tx.requestInterrupt(row.runId);
272
330
  }
@@ -287,8 +345,12 @@ const makeRunStore = Effect.gen(function* () {
287
345
  if ((yield* tx.blockingRun(submission.loop, submission.itemKey)).length > 0) {
288
346
  return Option.none();
289
347
  }
290
- yield* tx.createRun(submission, submission.event.id, runId);
291
- return Option.some(new StoredSubmission({ submission, runId }));
348
+ if (!(yield* tx.cycles.isCurrentEvent(submission)))
349
+ return Option.none();
350
+ const claimed = yield* openRun(tx, submission, runId);
351
+ return claimed.result._tag === "Claimed"
352
+ ? Option.some(new StoredSubmission({ submission, runId }))
353
+ : Option.none();
292
354
  }));
293
355
  }, persistence("claim queued Event"));
294
356
  const recoverable = Effect.fn("RunStore.recoverable")(function* () {
@@ -312,29 +374,27 @@ const makeRunStore = Effect.gen(function* () {
312
374
  return yield* queries.transcript(query);
313
375
  }, persistence("read Attempt transcript"));
314
376
  const reconcileCompletion = Effect.fn("RunStore.reconcileCompletion")(function* (runId, result) {
315
- if (result._tag !== "Complete")
377
+ yield* Effect.annotateCurrentSpan({ runId });
378
+ if (result._tag !== "Complete") {
379
+ yield* Effect.logDebug("Workflow reconciliation skipped", { runId, reason: "Suspended" });
316
380
  return;
381
+ }
317
382
  yield* database.transaction((transaction) => Effect.gen(function* () {
318
383
  const tx = queriesFor(transaction);
319
384
  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");
385
+ // Workflow defects and interruption do not become typed Attempt failures.
386
+ // Keep the projection available to the existing restart recovery path.
387
+ const completion = Exit.isSuccess(result.exit)
388
+ ? Option.some(Result.succeed(result.exit.value))
389
+ : Option.map(Cause.findErrorOption(result.exit.cause), Result.fail);
390
+ if (Option.isNone(completion)) {
391
+ yield* Effect.logInfo("Workflow reconciliation skipped", {
392
+ runId,
393
+ reason: "NoTypedOutcome",
394
+ });
330
395
  return;
331
396
  }
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");
397
+ yield* applyFinish(tx, runId, reconcileAttempt(current, completion.value));
338
398
  }));
339
399
  }, persistence("reconcile workflow completion"));
340
400
  return {
@@ -346,7 +406,7 @@ const makeRunStore = Effect.gen(function* () {
346
406
  completeWorkflowCommand: (runId, command) => queries
347
407
  .completeWorkflowCommand(runId, command)
348
408
  .pipe(persistence("complete workflow command")),
349
- failAttempt,
409
+ finishAttempt,
350
410
  nextQueued: (runId) => queries.nextQueued(runId).pipe(persistence("find queued Event")),
351
411
  parkForApproval,
352
412
  pendingWorkflowCommands: queries
@@ -358,15 +418,13 @@ const makeRunStore = Effect.gen(function* () {
358
418
  retry,
359
419
  revoke,
360
420
  snapshot: (runId) => queries.snapshot(runId).pipe(persistence("read run")),
361
- succeedAttempt,
362
421
  transcript,
363
422
  };
364
423
  });
365
424
  /**
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`.
425
+ * The durable Run projection store. Another backend implements this interface
426
+ * with its own `Layer.effect(RunStore, ...)`; methods speak domain vocabulary
427
+ * and fail only with `RunStoreError`.
370
428
  */
371
429
  export class RunStore extends Context.Service()("@usine/engine/internal/RunStore") {
372
430
  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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"}