@usine/engine 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -38
- package/dist/board-moves/board-moves.d.ts +20 -0
- package/dist/board-moves/board-moves.d.ts.map +1 -0
- package/dist/board-moves/board-moves.js +74 -0
- package/dist/board-moves/board-moves.js.map +1 -0
- package/dist/board-moves/model.d.ts +21 -0
- package/dist/board-moves/model.d.ts.map +1 -0
- package/dist/board-moves/model.js +22 -0
- package/dist/board-moves/model.js.map +1 -0
- package/dist/cursor/cursor.d.ts +2 -6
- package/dist/cursor/cursor.d.ts.map +1 -1
- package/dist/cursor/cursor.js +2 -6
- package/dist/cursor/cursor.js.map +1 -1
- package/dist/cycle-budget/cycle-budget.d.ts +6 -6
- package/dist/cycle-budget/cycle-budget.d.ts.map +1 -1
- package/dist/cycle-budget/cycle-budget.js +5 -5
- package/dist/cycle-budget/cycle-budget.js.map +1 -1
- package/dist/cycle-budget/model.d.ts +2 -2
- package/dist/cycle-budget/model.d.ts.map +1 -1
- package/dist/cycle-budget/model.js +2 -2
- package/dist/cycle-budget/model.js.map +1 -1
- package/dist/cycle-budget/queries.d.ts +1 -1
- package/dist/cycle-budget/queries.d.ts.map +1 -1
- package/dist/cycle-budget/queries.js +3 -3
- package/dist/cycle-budget/queries.js.map +1 -1
- package/dist/database/database.d.ts +1 -1
- package/dist/database/database.d.ts.map +1 -1
- package/dist/database/local-sqlite.d.ts +10 -8
- package/dist/database/local-sqlite.d.ts.map +1 -1
- package/dist/database/local-sqlite.js +11 -10
- package/dist/database/local-sqlite.js.map +1 -1
- package/dist/database/schema.d.ts +533 -22
- package/dist/database/schema.d.ts.map +1 -1
- package/dist/database/schema.js +100 -23
- package/dist/database/schema.js.map +1 -1
- package/dist/{workflow → engine}/admission.d.ts +2 -2
- package/dist/engine/admission.d.ts.map +1 -0
- package/dist/{workflow → engine}/admission.js +4 -4
- package/dist/engine/admission.js.map +1 -0
- package/dist/engine/checkout-recovery.d.ts +69 -0
- package/dist/engine/checkout-recovery.d.ts.map +1 -0
- package/dist/engine/checkout-recovery.js +181 -0
- package/dist/engine/checkout-recovery.js.map +1 -0
- package/dist/engine/engine.d.ts +55 -26
- package/dist/engine/engine.d.ts.map +1 -1
- package/dist/engine/engine.js +118 -128
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/error.d.ts +29 -10
- package/dist/engine/error.d.ts.map +1 -1
- package/dist/engine/error.js +28 -8
- package/dist/engine/error.js.map +1 -1
- package/dist/engine/lifecycle.d.ts +81 -28
- package/dist/engine/lifecycle.d.ts.map +1 -1
- package/dist/engine/lifecycle.js +83 -44
- package/dist/engine/lifecycle.js.map +1 -1
- package/dist/engine/retry.d.ts +16 -0
- package/dist/engine/retry.d.ts.map +1 -0
- package/dist/engine/retry.js +18 -0
- package/dist/engine/retry.js.map +1 -0
- package/dist/engine/run-again.d.ts +45 -0
- package/dist/engine/run-again.d.ts.map +1 -0
- package/dist/engine/run-again.js +56 -0
- package/dist/engine/run-again.js.map +1 -0
- package/dist/engine/run-driver.d.ts +54 -0
- package/dist/engine/run-driver.d.ts.map +1 -0
- package/dist/engine/run-driver.js +362 -0
- package/dist/engine/run-driver.js.map +1 -0
- package/dist/engine/shutdown.d.ts +3 -4
- package/dist/engine/shutdown.d.ts.map +1 -1
- package/dist/engine/shutdown.js +3 -4
- package/dist/engine/shutdown.js.map +1 -1
- package/dist/engine/submission.d.ts +31 -11
- package/dist/engine/submission.d.ts.map +1 -1
- package/dist/engine/submission.js +42 -12
- package/dist/engine/submission.js.map +1 -1
- package/dist/item-projection/item-projection.d.ts +12 -4
- package/dist/item-projection/item-projection.d.ts.map +1 -1
- package/dist/item-projection/item-projection.js +41 -6
- package/dist/item-projection/item-projection.js.map +1 -1
- package/dist/item-projection/model.d.ts +5 -1
- package/dist/item-projection/model.d.ts.map +1 -1
- package/dist/item-projection/model.js +6 -2
- package/dist/item-projection/model.js.map +1 -1
- package/dist/loop-control/loop-control.d.ts +5 -5
- package/dist/loop-control/loop-control.d.ts.map +1 -1
- package/dist/loop-control/loop-control.js +4 -4
- package/dist/loop-control/loop-control.js.map +1 -1
- package/dist/loop-control/model.d.ts +1 -1
- package/dist/loop-control/model.d.ts.map +1 -1
- package/dist/loop-control/model.js +1 -1
- package/dist/loop-control/model.js.map +1 -1
- package/dist/repository-label-projection/model.d.ts +2 -2
- package/dist/repository-label-projection/model.d.ts.map +1 -1
- package/dist/repository-label-projection/model.js +2 -2
- package/dist/repository-label-projection/model.js.map +1 -1
- package/dist/repository-label-projection/repository-label-projection.d.ts +1 -1
- package/dist/repository-label-projection/repository-label-projection.d.ts.map +1 -1
- package/dist/repository-label-projection/repository-label-projection.js +1 -1
- package/dist/repository-label-projection/repository-label-projection.js.map +1 -1
- package/dist/run-reader/model.d.ts +62 -4
- package/dist/run-reader/model.d.ts.map +1 -1
- package/dist/run-reader/model.js +66 -7
- package/dist/run-reader/model.js.map +1 -1
- package/dist/run-reader/run-reader.d.ts +19 -9
- package/dist/run-reader/run-reader.d.ts.map +1 -1
- package/dist/run-reader/run-reader.js +23 -7
- package/dist/run-reader/run-reader.js.map +1 -1
- package/dist/step-executor.d.ts +64 -10
- package/dist/step-executor.d.ts.map +1 -1
- package/dist/step-executor.js +10 -2
- package/dist/step-executor.js.map +1 -1
- package/dist/store/attempt-windows.d.ts +8 -0
- package/dist/store/attempt-windows.d.ts.map +1 -0
- package/dist/store/attempt-windows.js +53 -0
- package/dist/store/attempt-windows.js.map +1 -0
- package/dist/store/codec.d.ts +207 -42
- package/dist/store/codec.d.ts.map +1 -1
- package/dist/store/codec.js +52 -14
- package/dist/store/codec.js.map +1 -1
- package/dist/store/leftovers.d.ts +10 -0
- package/dist/store/leftovers.d.ts.map +1 -0
- package/dist/store/leftovers.js +43 -0
- package/dist/store/leftovers.js.map +1 -0
- package/dist/store/loop-items.d.ts +16 -0
- package/dist/store/loop-items.d.ts.map +1 -0
- package/dist/store/loop-items.js +185 -0
- package/dist/store/loop-items.js.map +1 -0
- package/dist/store/queries.d.ts +342 -35
- package/dist/store/queries.d.ts.map +1 -1
- package/dist/store/queries.js +302 -107
- package/dist/store/queries.js.map +1 -1
- package/dist/store/store.d.ts +91 -54
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +468 -190
- package/dist/store/store.js.map +1 -1
- package/dist/store/transcript.d.ts +3 -3
- package/dist/store/transcript.d.ts.map +1 -1
- package/dist/store/transcript.js +25 -6
- package/dist/store/transcript.js.map +1 -1
- package/dist/transcript.d.ts +19 -20
- package/dist/transcript.d.ts.map +1 -1
- package/dist/transcript.js +23 -21
- package/dist/transcript.js.map +1 -1
- package/dist/trigger-condition.d.ts +23 -0
- package/dist/trigger-condition.d.ts.map +1 -0
- package/dist/trigger-condition.js +8 -0
- package/dist/trigger-condition.js.map +1 -0
- package/drizzle/20260917071139_resolve_run_failure/migration.sql +1 -0
- package/drizzle/20260917071139_resolve_run_failure/snapshot.json +1471 -0
- package/drizzle/20260918032643_attempt_salvage/migration.sql +1 -0
- package/drizzle/20260918032643_attempt_salvage/snapshot.json +1481 -0
- package/drizzle/20261011153856_drop_workflow_tables/migration.sql +4 -0
- package/drizzle/20261011153856_drop_workflow_tables/snapshot.json +1433 -0
- package/drizzle/20261017155043_attempt_salvage_check/migration.sql +41 -0
- package/drizzle/20261017155043_attempt_salvage_check/snapshot.json +1421 -0
- package/drizzle/20261018162700_discard_attempt_leftovers/migration.sql +1 -0
- package/drizzle/20261018162700_discard_attempt_leftovers/snapshot.json +1431 -0
- package/drizzle/20261018172605_loop_items_and_reopenings/migration.sql +15 -0
- package/drizzle/20261018172605_loop_items_and_reopenings/snapshot.json +1574 -0
- package/drizzle/20261018180339_attempt_ended_at/migration.sql +1 -0
- package/drizzle/20261018180339_attempt_ended_at/snapshot.json +1584 -0
- package/drizzle/20261019104043_run_approval_source/migration.sql +15 -0
- package/drizzle/20261019104043_run_approval_source/snapshot.json +1610 -0
- package/drizzle/20261019133538_board_moves/migration.sql +14 -0
- package/drizzle/20261019133538_board_moves/snapshot.json +1731 -0
- package/drizzle/20261019170538_item_projection_gone/migration.sql +1 -0
- package/drizzle/20261019170538_item_projection_gone/snapshot.json +1741 -0
- package/drizzle/20261019180649_run_again_events/migration.sql +7 -0
- package/drizzle/20261019180649_run_again_events/snapshot.json +1804 -0
- package/drizzle/20261019185008_trigger_event_permissions/migration.sql +1 -0
- package/drizzle/20261019185008_trigger_event_permissions/snapshot.json +1814 -0
- package/drizzle/20261020103746_attempt_start/migration.sql +5 -0
- package/drizzle/20261020103746_attempt_start/snapshot.json +1844 -0
- package/drizzle/20261020125211_attempt_comments/migration.sql +1 -0
- package/drizzle/20261020125211_attempt_comments/snapshot.json +1854 -0
- package/drizzle/20261020191320_run_closed_at/migration.sql +6 -0
- package/drizzle/20261020191320_run_closed_at/snapshot.json +1864 -0
- package/drizzle/20261023091428_rename_loop_item_hold_to_suppression/migration.sql +2 -0
- package/drizzle/20261023091428_rename_loop_item_hold_to_suppression/snapshot.json +1867 -0
- package/package.json +15 -5
- package/dist/workflow/admission.d.ts.map +0 -1
- package/dist/workflow/admission.js.map +0 -1
- package/dist/workflow/command.d.ts +0 -13
- package/dist/workflow/command.d.ts.map +0 -1
- package/dist/workflow/command.js +0 -17
- package/dist/workflow/command.js.map +0 -1
- package/dist/workflow/workflow.d.ts +0 -18
- package/dist/workflow/workflow.d.ts.map +0 -1
- package/dist/workflow/workflow.js +0 -108
- package/dist/workflow/workflow.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usine/engine",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "The usine run engine: event ledger, dedup/supersede/revoke, run scheduling
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "The usine run engine: event ledger, dedup/supersede/revoke, run scheduling and restart recovery, SQLite store.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
+
"!dist/tsconfig.tsbuildinfo",
|
|
13
14
|
"drizzle"
|
|
14
15
|
],
|
|
15
16
|
"type": "module",
|
|
@@ -19,6 +20,10 @@
|
|
|
19
20
|
"types": "./dist/cycle-budget/cycle-budget.d.ts",
|
|
20
21
|
"default": "./dist/cycle-budget/cycle-budget.js"
|
|
21
22
|
},
|
|
23
|
+
"./board-moves": {
|
|
24
|
+
"types": "./dist/board-moves/board-moves.d.ts",
|
|
25
|
+
"default": "./dist/board-moves/board-moves.js"
|
|
26
|
+
},
|
|
22
27
|
"./engine": {
|
|
23
28
|
"types": "./dist/engine/engine.d.ts",
|
|
24
29
|
"default": "./dist/engine/engine.js"
|
|
@@ -39,6 +44,10 @@
|
|
|
39
44
|
"types": "./dist/step-executor.d.ts",
|
|
40
45
|
"default": "./dist/step-executor.js"
|
|
41
46
|
},
|
|
47
|
+
"./trigger-condition": {
|
|
48
|
+
"types": "./dist/trigger-condition.d.ts",
|
|
49
|
+
"default": "./dist/trigger-condition.js"
|
|
50
|
+
},
|
|
42
51
|
"./transcript": {
|
|
43
52
|
"types": "./dist/transcript.d.ts",
|
|
44
53
|
"default": "./dist/transcript.js"
|
|
@@ -65,13 +74,14 @@
|
|
|
65
74
|
},
|
|
66
75
|
"dependencies": {
|
|
67
76
|
"@effect/platform-node": "4.0.0-rc.111",
|
|
77
|
+
"@effect/platform-node-shared": "4.0.0-rc.111",
|
|
68
78
|
"@effect/sql-sqlite-node": "4.0.0-rc.111",
|
|
69
|
-
"drizzle-orm": "1.0.0-rc.
|
|
70
|
-
"@usine/core": "0.
|
|
79
|
+
"drizzle-orm": "1.0.0-rc.5-5935859",
|
|
80
|
+
"@usine/core": "0.4.0"
|
|
71
81
|
},
|
|
72
82
|
"devDependencies": {
|
|
73
83
|
"@effect/vitest": "4.0.0-rc.111",
|
|
74
|
-
"drizzle-kit": "1.0.0-rc.
|
|
84
|
+
"drizzle-kit": "1.0.0-rc.5-5935859",
|
|
75
85
|
"effect": "4.0.0-rc.111",
|
|
76
86
|
"typescript": "7.0.2",
|
|
77
87
|
"vitest": "4.1.11",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/workflow/admission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAY,MAAM,EAAE,KAAK,EAAe,MAAM,QAAQ,CAAC;;IAOnE,2GAA2G;0BACrF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACX,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAT7C,uGAAuG;AACvG,qBAAa,gBAAiB,SAAQ,qBAUD;IACnC,MAAM,CAAC,QAAQ,CAAC,KAAK,8CAkEnB;CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../src/workflow/admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Schema } from "effect";
|
|
2
|
-
/** One-shot requests the store hands to the workflow runtime. */
|
|
3
|
-
export declare const WORKFLOW_COMMANDS: readonly ["Approve", "Continue", "Interrupt", "Resume"];
|
|
4
|
-
export declare const WorkflowCommand: Schema.Literals<readonly ["Approve", "Continue", "Interrupt", "Resume"]>;
|
|
5
|
-
export type WorkflowCommand = typeof WorkflowCommand.Type;
|
|
6
|
-
/**
|
|
7
|
-
* Replay order after a restart, first delivered first. Interrupt precedes
|
|
8
|
-
* Continue so a canceled workflow stops before the next queued Event opens,
|
|
9
|
-
* keeping one open Run per Item; the length constraint makes the list name
|
|
10
|
-
* every command exactly once.
|
|
11
|
-
*/
|
|
12
|
-
export declare const WORKFLOW_COMMAND_PRIORITY: readonly ["Resume", "Interrupt", "Continue", "Approve"];
|
|
13
|
-
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/workflow/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,YAAI,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAEzF,eAAO,MAAM,eAAe,0EAAqC,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,yDAOrC,CAAC"}
|
package/dist/workflow/command.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Schema } from "effect";
|
|
2
|
-
/** One-shot requests the store hands to the workflow runtime. */
|
|
3
|
-
export const WORKFLOW_COMMANDS = ["Approve", "Continue", "Interrupt", "Resume"];
|
|
4
|
-
export const WorkflowCommand = Schema.Literals(WORKFLOW_COMMANDS);
|
|
5
|
-
/**
|
|
6
|
-
* Replay order after a restart, first delivered first. Interrupt precedes
|
|
7
|
-
* Continue so a canceled workflow stops before the next queued Event opens,
|
|
8
|
-
* keeping one open Run per Item; the length constraint makes the list name
|
|
9
|
-
* every command exactly once.
|
|
10
|
-
*/
|
|
11
|
-
export const WORKFLOW_COMMAND_PRIORITY = [
|
|
12
|
-
"Resume",
|
|
13
|
-
"Interrupt",
|
|
14
|
-
"Continue",
|
|
15
|
-
"Approve",
|
|
16
|
-
];
|
|
17
|
-
//# sourceMappingURL=command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/workflow/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAEzF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAIlE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,QAAQ;IACR,WAAW;IACX,UAAU;IACV,SAAS;CAGV,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { AgentFailure, DefectFailure, InfraFailure } from "@usine/core/attempt/failure";
|
|
2
|
-
import { RunId } from "@usine/core/run";
|
|
3
|
-
import { StepResult } from "@usine/core/step/result";
|
|
4
|
-
import { Effect, Schema } from "effect";
|
|
5
|
-
import { DurableDeferred, Workflow, WorkflowEngine } from "effect/unstable/workflow";
|
|
6
|
-
import { StepExecutor } from "../step-executor.ts";
|
|
7
|
-
import { AttemptAdmission } from "./admission.ts";
|
|
8
|
-
import { RunStore } from "../store/store.ts";
|
|
9
|
-
import { type RunStoreError } from "../engine/error.ts";
|
|
10
|
-
import { Submission } from "../engine/submission.ts";
|
|
11
|
-
export declare const DurableRun: Workflow.Workflow<"@usine/engine/DurableRun", Schema.Struct<{
|
|
12
|
-
readonly submission: typeof Submission;
|
|
13
|
-
}>, typeof StepResult, Schema.Union<readonly [typeof InfraFailure, typeof DefectFailure, typeof AgentFailure, typeof import("@usine/core/attempt/failure").RunawayFailure, typeof import("@usine/core/attempt/failure").ChildSessionBudgetFailure]>>;
|
|
14
|
-
export declare const ApprovalGate: DurableDeferred.DurableDeferred<Schema.Void, Schema.Never>;
|
|
15
|
-
export declare const continueWithNewest: (store: RunStore["Service"], completedRunId: RunId) => Effect.Effect<void, RunStoreError, WorkflowEngine.WorkflowEngine>;
|
|
16
|
-
export declare const durableRunLayer: import("effect/Layer").Layer<never, never, AttemptAdmission | RunStore | StepExecutor | WorkflowEngine.WorkflowEngine>;
|
|
17
|
-
export declare const runIdFor: (submission: Submission) => Effect.Effect<string & import("effect/Brand").Brand<"RunId">, never, never>;
|
|
18
|
-
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,aAAa,EACb,YAAY,EACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAkB,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAyB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAOrD,eAAO,MAAM,UAAU;;oPAKqB,CAAC;AAE7C,eAAO,MAAM,YAAY,4DAAqD,CAAC;AAiB/E,eAAO,MAAM,kBAAkB,EAAE,CAC/B,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC1B,cAAc,EAAE,KAAK,KAClB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,cAAc,CAanE,CAAC;AA6FH,eAAO,MAAM,eAAe,wHAAwC,CAAC;AAErE,eAAO,MAAM,QAAQ,yGAEnB,CAAC"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { AgentFailure, AttemptFailure, DefectFailure, InfraFailure, } from "@usine/core/attempt/failure";
|
|
2
|
-
import { RunId } from "@usine/core/run";
|
|
3
|
-
import { StepResult } from "@usine/core/step/result";
|
|
4
|
-
import { Effect, Option, Result, Schema } from "effect";
|
|
5
|
-
import { DurableDeferred, Workflow, WorkflowEngine } from "effect/unstable/workflow";
|
|
6
|
-
import { StepExecutor } from "../step-executor.js";
|
|
7
|
-
import { AttemptAdmission } from "./admission.js";
|
|
8
|
-
import { AttemptRecoveryFailed, RunStore } from "../store/store.js";
|
|
9
|
-
import { EnginePersistenceError, RunNotFoundError, RunOperationRejectedError, } from "../engine/error.js";
|
|
10
|
-
import { Submission } from "../engine/submission.js";
|
|
11
|
-
const WorkflowPayload = Schema.Struct({
|
|
12
|
-
submission: Submission,
|
|
13
|
-
});
|
|
14
|
-
export const DurableRun = Workflow.make("@usine/engine/DurableRun", {
|
|
15
|
-
payload: WorkflowPayload,
|
|
16
|
-
success: StepResult,
|
|
17
|
-
error: AttemptFailure,
|
|
18
|
-
idempotencyKey: ({ submission }) => submission.event.dedupKey,
|
|
19
|
-
}).annotate(Workflow.SuspendOnFailure, true);
|
|
20
|
-
export const ApprovalGate = DurableDeferred.make("@usine/engine/ApprovalGate");
|
|
21
|
-
const asAttemptFailure = (effect) => Effect.catchTags(effect, {
|
|
22
|
-
EnginePersistenceError: (error) => new InfraFailure({
|
|
23
|
-
message: `Engine persistence failed during ${error.operation}`,
|
|
24
|
-
cause: error,
|
|
25
|
-
}),
|
|
26
|
-
RunNotFoundError: (error) => Effect.die(error),
|
|
27
|
-
RunOperationRejectedError: (error) => Effect.die(error),
|
|
28
|
-
});
|
|
29
|
-
const executionId = (submission) => DurableRun.executionId({ submission });
|
|
30
|
-
export const continueWithNewest = Effect.fn("DurableRun.continueWithNewest")(function* (store, completedRunId) {
|
|
31
|
-
const queued = yield* store.nextQueued(completedRunId);
|
|
32
|
-
if (Option.isSome(queued)) {
|
|
33
|
-
const nextExecutionId = yield* executionId(queued.value);
|
|
34
|
-
const runId = RunId.make(nextExecutionId);
|
|
35
|
-
const claimed = yield* store.claimQueued(queued.value, runId);
|
|
36
|
-
if (Option.isSome(claimed)) {
|
|
37
|
-
yield* DurableRun.execute({ submission: claimed.value.submission }, { discard: true });
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
yield* store.completeWorkflowCommand(completedRunId, "Continue");
|
|
41
|
-
});
|
|
42
|
-
const executeAttempt = Effect.fn("DurableRun.attempt")(function* (runId, worker) {
|
|
43
|
-
yield* Effect.annotateCurrentSpan({ runId, worker });
|
|
44
|
-
const store = yield* RunStore;
|
|
45
|
-
const executor = yield* StepExecutor;
|
|
46
|
-
const started = yield* store.beginAttempt(runId, worker).pipe(asAttemptFailure);
|
|
47
|
-
if (started instanceof AttemptRecoveryFailed || started._tag === "RunClosed") {
|
|
48
|
-
return started;
|
|
49
|
-
}
|
|
50
|
-
// Durable workflows need a serializable terminal outcome. Preserve an
|
|
51
|
-
// executor defect without turning a programming bug into an automatic retry.
|
|
52
|
-
const result = yield* executor
|
|
53
|
-
.execute(started.execution, {
|
|
54
|
-
append: (direction, envelope) => store.appendTranscript(direction, envelope).pipe(asAttemptFailure),
|
|
55
|
-
})
|
|
56
|
-
.pipe(Effect.catchDefect((defect) => Effect.logError("Step executor defect; operator intervention required", { runId }).pipe(Effect.andThen(new DefectFailure({
|
|
57
|
-
message: "The step executor crashed outside its typed failure channel",
|
|
58
|
-
cause: defect,
|
|
59
|
-
})))), Effect.result);
|
|
60
|
-
const decision = yield* store
|
|
61
|
-
.finishAttempt(started.execution.attempt, result)
|
|
62
|
-
.pipe(asAttemptFailure);
|
|
63
|
-
return { _tag: "AttemptExecuted", result, decision };
|
|
64
|
-
});
|
|
65
|
-
const executeDurableRun = Effect.fn("DurableRun.execute")(function* ({ submission }, executionId) {
|
|
66
|
-
const runId = RunId.make(executionId);
|
|
67
|
-
const store = yield* RunStore;
|
|
68
|
-
const executor = yield* StepExecutor;
|
|
69
|
-
const admission = yield* AttemptAdmission;
|
|
70
|
-
if (submission.approval === "required") {
|
|
71
|
-
yield* store.parkForApproval(runId).pipe(asAttemptFailure);
|
|
72
|
-
yield* DurableDeferred.await(ApprovalGate);
|
|
73
|
-
}
|
|
74
|
-
while (true) {
|
|
75
|
-
// The wait for a worker slot stays interruptible so a cancel can reach a run
|
|
76
|
-
// parked in `reserve`; the scheduler releases or reoffers the slot in its own
|
|
77
|
-
// onInterrupt. The release obligation begins only once the lease exists.
|
|
78
|
-
const attempted = yield* Effect.uninterruptibleMask((restore) => restore(executor.reserve(submission)).pipe(Effect.flatMap((lease) => restore(admission.withAttempt(runId, executeAttempt(runId, lease.worker))).pipe(Effect.ensuring(lease.release)))));
|
|
79
|
-
if (attempted._tag === "RunClosed") {
|
|
80
|
-
// Canceled, superseded, or revoked while queued: release was the only
|
|
81
|
-
// obligation, and the closing operation already delivered the interrupt.
|
|
82
|
-
yield* Effect.logInfo("Run closed while it waited for a worker", {
|
|
83
|
-
runId,
|
|
84
|
-
state: attempted.state,
|
|
85
|
-
});
|
|
86
|
-
yield* continueWithNewest(store, runId).pipe(asAttemptFailure);
|
|
87
|
-
return yield* new AgentFailure({
|
|
88
|
-
message: `The run closed (${attempted.state}) before an attempt started`,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
if (attempted instanceof AttemptRecoveryFailed) {
|
|
92
|
-
yield* continueWithNewest(store, runId).pipe(asAttemptFailure);
|
|
93
|
-
return yield* attempted.failure;
|
|
94
|
-
}
|
|
95
|
-
const { result, decision } = attempted;
|
|
96
|
-
if (decision._tag !== "RetryAttempt") {
|
|
97
|
-
yield* continueWithNewest(store, runId).pipe(asAttemptFailure);
|
|
98
|
-
if (Result.isSuccess(result))
|
|
99
|
-
return result.success;
|
|
100
|
-
return yield* result.failure;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
export const durableRunLayer = DurableRun.toLayer(executeDurableRun);
|
|
105
|
-
export const runIdFor = Effect.fn("DurableRun.runIdFor")(function* (submission) {
|
|
106
|
-
return RunId.make(yield* executionId(submission));
|
|
107
|
-
});
|
|
108
|
-
//# sourceMappingURL=workflow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow/workflow.ts"],"names":[],"mappings":"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"}
|