@gobing-ai/ts-dual-workflow-engine 0.4.28 → 0.4.30
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/dist/action-step.d.ts.map +1 -1
- package/dist/action-step.js +2 -1
- package/dist/events.d.ts +19 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/extensions.d.ts +7 -5
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +5 -18
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +2 -1
- package/dist/persistence.d.ts +12 -3
- package/dist/persistence.d.ts.map +1 -1
- package/dist/persistence.js +47 -12
- package/dist/run-lifecycle.d.ts.map +1 -1
- package/dist/run-lifecycle.js +29 -4
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +9 -1
- package/dist/types.d.ts +9 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/action-step.ts +3 -0
- package/src/events.ts +42 -8
- package/src/extensions.ts +12 -26
- package/src/host.ts +2 -1
- package/src/persistence.ts +53 -15
- package/src/run-lifecycle.ts +29 -4
- package/src/service.ts +9 -1
- package/src/types.ts +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-step.d.ts","sourceRoot":"","sources":["../src/action-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"action-step.d.ts","sourceRoot":"","sources":["../src/action-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGtH;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AAElE,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,aAAa,GAAG,SAAS,CAAC;CACtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAC/B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,IAAI,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAkD3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,SAAS,SAAS,EAAE,EAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,IAAI,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAS3B"}
|
package/dist/action-step.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defaultActionRedactor } from './persistence.js';
|
|
1
2
|
import { runtimeBuiltins } from './run-lifecycle.js';
|
|
2
3
|
import { resolveOnErrorPolicy, resolveTemplates } from './variables.js';
|
|
3
4
|
/**
|
|
@@ -44,7 +45,7 @@ export async function runActionStep(action, vars, deps) {
|
|
|
44
45
|
// keeps a rejected write from surfacing as an unhandledRejection (repo convention,
|
|
45
46
|
// see runtime/process-executor.ts).
|
|
46
47
|
void persistence
|
|
47
|
-
.saveActionFinalize(actionId, result?.ok !== false ? 'done' : 'failed', durationMs, result?.ok ?? false, result)
|
|
48
|
+
.saveActionFinalize(actionId, result?.ok !== false ? 'done' : 'failed', durationMs, result?.ok ?? false, action.kind, result, deps.options.redactor ?? defaultActionRedactor)
|
|
48
49
|
.catch(() => undefined);
|
|
49
50
|
}
|
|
50
51
|
if (result.terminal === true)
|
package/dist/events.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { EventSeverity } from '@gobing-ai/ts-infra';
|
|
1
2
|
/** Typed event map for workflow-engine run observability. All events prefixed `workflow.`. */
|
|
2
3
|
export type WorkflowEngineEvents = {
|
|
3
4
|
/** Emitted when a run begins (inside the span). */
|
|
@@ -7,6 +8,7 @@ export type WorkflowEngineEvents = {
|
|
|
7
8
|
runId: string;
|
|
8
9
|
dryRun: boolean;
|
|
9
10
|
externalKey?: string;
|
|
11
|
+
severity: EventSeverity;
|
|
10
12
|
}) => void;
|
|
11
13
|
/** Emitted when a run completes successfully. */
|
|
12
14
|
'workflow.run.done': (data: {
|
|
@@ -14,6 +16,7 @@ export type WorkflowEngineEvents = {
|
|
|
14
16
|
finalState: string;
|
|
15
17
|
transitionsTaken: number;
|
|
16
18
|
externalKey?: string;
|
|
19
|
+
severity: EventSeverity;
|
|
17
20
|
}) => void;
|
|
18
21
|
/** Emitted when a run fails. */
|
|
19
22
|
'workflow.run.failed': (data: {
|
|
@@ -21,12 +24,14 @@ export type WorkflowEngineEvents = {
|
|
|
21
24
|
finalState: string;
|
|
22
25
|
reason: string;
|
|
23
26
|
externalKey?: string;
|
|
27
|
+
severity: EventSeverity;
|
|
24
28
|
}) => void;
|
|
25
29
|
/** Emitted when entering a state or node. */
|
|
26
30
|
'workflow.node.enter': (data: {
|
|
27
31
|
runId: string;
|
|
28
32
|
node: string;
|
|
29
33
|
transitionsTaken: number;
|
|
34
|
+
severity: EventSeverity;
|
|
30
35
|
}) => void;
|
|
31
36
|
/** Emitted on a state/node transition. */
|
|
32
37
|
'workflow.node.transition': (data: {
|
|
@@ -35,12 +40,14 @@ export type WorkflowEngineEvents = {
|
|
|
35
40
|
to: string;
|
|
36
41
|
trigger: string | null;
|
|
37
42
|
externalKey?: string;
|
|
43
|
+
severity: EventSeverity;
|
|
38
44
|
}) => void;
|
|
39
45
|
/** Emitted when an action starts executing. */
|
|
40
46
|
'workflow.action.start': (data: {
|
|
41
47
|
runId: string;
|
|
42
48
|
node: string;
|
|
43
49
|
kind: string;
|
|
50
|
+
severity: EventSeverity;
|
|
44
51
|
}) => void;
|
|
45
52
|
/** Emitted when an action finishes executing (success or failure). */
|
|
46
53
|
'workflow.action.done': (data: {
|
|
@@ -49,6 +56,7 @@ export type WorkflowEngineEvents = {
|
|
|
49
56
|
kind: string;
|
|
50
57
|
durationMs: number;
|
|
51
58
|
ok: boolean;
|
|
59
|
+
severity: EventSeverity;
|
|
52
60
|
}) => void;
|
|
53
61
|
/** Emitted when a non-fatal action failure is continued past (onError: 'continue'). */
|
|
54
62
|
'workflow.action.failed_continue': (data: {
|
|
@@ -56,17 +64,20 @@ export type WorkflowEngineEvents = {
|
|
|
56
64
|
node: string;
|
|
57
65
|
transitionsTaken: number;
|
|
58
66
|
error?: string;
|
|
67
|
+
severity: EventSeverity;
|
|
59
68
|
}) => void;
|
|
60
69
|
/** Emitted by the builtin `event.emit` action for custom user-defined events. */
|
|
61
70
|
'workflow.custom': (data: {
|
|
62
71
|
name: string;
|
|
63
72
|
payload: Record<string, unknown>;
|
|
73
|
+
severity: EventSeverity;
|
|
64
74
|
}) => void;
|
|
65
75
|
/** Emitted by the builtin `note` action for workflow-visible annotations. */
|
|
66
76
|
'workflow.hitl.note': (data: {
|
|
67
77
|
runId: string;
|
|
68
78
|
node: string;
|
|
69
79
|
message: string;
|
|
80
|
+
severity: EventSeverity;
|
|
70
81
|
}) => void;
|
|
71
82
|
/** Emitted when a guard condition is evaluated. Fires for every guard, including rejected ones. */
|
|
72
83
|
'workflow.guard.evaluated': (data: {
|
|
@@ -76,6 +87,7 @@ export type WorkflowEngineEvents = {
|
|
|
76
87
|
kind: string;
|
|
77
88
|
passed: boolean;
|
|
78
89
|
externalKey?: string;
|
|
90
|
+
severity: EventSeverity;
|
|
79
91
|
}) => void;
|
|
80
92
|
/** Emitted when an interactive HITL prompt is presented and the engine waits for input. */
|
|
81
93
|
'workflow.hitl.ask': (data: {
|
|
@@ -83,12 +95,14 @@ export type WorkflowEngineEvents = {
|
|
|
83
95
|
node: string;
|
|
84
96
|
kind: string;
|
|
85
97
|
message: string;
|
|
98
|
+
severity: EventSeverity;
|
|
86
99
|
}) => void;
|
|
87
100
|
/** Emitted when an interactive HITL prompt receives a response. */
|
|
88
101
|
'workflow.hitl.response': (data: {
|
|
89
102
|
runId: string;
|
|
90
103
|
node: string;
|
|
91
104
|
ok: boolean;
|
|
105
|
+
severity: EventSeverity;
|
|
92
106
|
}) => void;
|
|
93
107
|
/** Emitted when a run's state is force-set via reseed (consumer-side authority reconciliation). */
|
|
94
108
|
'workflow.run.reseeded': (data: {
|
|
@@ -96,6 +110,7 @@ export type WorkflowEngineEvents = {
|
|
|
96
110
|
fromState: string;
|
|
97
111
|
toState: string;
|
|
98
112
|
externalKey?: string;
|
|
113
|
+
severity: EventSeverity;
|
|
99
114
|
}) => void;
|
|
100
115
|
/** Emitted when an external transition request is allowed and committed. */
|
|
101
116
|
'workflow.transition.requested': (data: {
|
|
@@ -104,6 +119,7 @@ export type WorkflowEngineEvents = {
|
|
|
104
119
|
to: string;
|
|
105
120
|
trigger: string | null;
|
|
106
121
|
externalKey?: string;
|
|
122
|
+
severity: EventSeverity;
|
|
107
123
|
}) => void;
|
|
108
124
|
/** Emitted when an external transition request is denied. */
|
|
109
125
|
'workflow.transition.denied': (data: {
|
|
@@ -112,6 +128,7 @@ export type WorkflowEngineEvents = {
|
|
|
112
128
|
to: string;
|
|
113
129
|
reason: string;
|
|
114
130
|
externalKey?: string;
|
|
131
|
+
severity: EventSeverity;
|
|
115
132
|
}) => void;
|
|
116
133
|
/** Emitted when a run pauses at a declared pause point. */
|
|
117
134
|
'workflow.run.paused': (data: {
|
|
@@ -119,12 +136,14 @@ export type WorkflowEngineEvents = {
|
|
|
119
136
|
node: string;
|
|
120
137
|
transitionsTaken: number;
|
|
121
138
|
externalKey?: string;
|
|
139
|
+
severity: EventSeverity;
|
|
122
140
|
}) => void;
|
|
123
141
|
/** Emitted when a paused run is resumed. */
|
|
124
142
|
'workflow.run.resumed': (data: {
|
|
125
143
|
runId: string;
|
|
126
144
|
node: string;
|
|
127
145
|
externalKey?: string;
|
|
146
|
+
severity: EventSeverity;
|
|
128
147
|
}) => void;
|
|
129
148
|
};
|
|
130
149
|
//# sourceMappingURL=events.d.ts.map
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,MAAM,oBAAoB,GAAG;IAC/B,mDAAmD;IACnD,sBAAsB,EAAE,CAAC,IAAI,EAAE;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/extensions.d.ts
CHANGED
|
@@ -13,15 +13,17 @@ export type WorkflowExtensionKind = 'actions' | 'guards';
|
|
|
13
13
|
/**
|
|
14
14
|
* A single workflow extension module reference.
|
|
15
15
|
*
|
|
16
|
-
* The caller
|
|
17
|
-
* shared
|
|
18
|
-
*
|
|
16
|
+
* The caller supplies the authored relative path plus the declaring directory; the
|
|
17
|
+
* shared loader resolves `(baseDir, path)` and applies its traversal + symlink
|
|
18
|
+
* guards to the authored string exactly as declared (task 0060 C2).
|
|
19
19
|
*/
|
|
20
20
|
export interface WorkflowExtensionRef {
|
|
21
21
|
/** Target capability registry. */
|
|
22
22
|
readonly kind: WorkflowExtensionKind;
|
|
23
|
-
/**
|
|
24
|
-
readonly
|
|
23
|
+
/** Relative path as authored (e.g. `./exts/foo.ts`). */
|
|
24
|
+
readonly path: string;
|
|
25
|
+
/** Absolute directory the authored `path` is resolved against. */
|
|
26
|
+
readonly baseDir: string;
|
|
25
27
|
/** Name of the config declaring this extension (for diagnostics). */
|
|
26
28
|
readonly sourceName: string;
|
|
27
29
|
}
|
package/dist/extensions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAGjD,6GAA6G;AAC7G,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACjC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,sDAAsD;AACtD,MAAM,WAAW,6BAA6B;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CACnD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,8BAA8B,CAChD,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,SAAS,oBAAoB,EAAE,EACrC,OAAO,EAAE,6BAA6B,GACvC,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
package/dist/extensions.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { basenamePath, dirnamePath, SEP } from '@gobing-ai/ts-runtime';
|
|
2
1
|
import { loadExtensionModules } from '@gobing-ai/ts-runtime/extension';
|
|
3
2
|
import { WorkflowValidationError } from './errors.js';
|
|
4
3
|
/**
|
|
@@ -17,25 +16,13 @@ import { WorkflowValidationError } from './errors.js';
|
|
|
17
16
|
export async function loadWorkflowExtensionsIntoHost(host, refs, options) {
|
|
18
17
|
if (refs.length === 0)
|
|
19
18
|
return;
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
// traversal in the caller-supplied absPath before basename strips it (R6).
|
|
24
|
-
for (const ref of refs) {
|
|
25
|
-
const segments = ref.absPath.split(SEP);
|
|
26
|
-
if (segments.includes('..')) {
|
|
27
|
-
throw new Error(`extension path "${ref.absPath}" declared by "${ref.sourceName}" must not contain ".." traversal`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
// Adapt WorkflowExtensionRef → shared ExtensionRef so the generic loader
|
|
31
|
-
// governs every import. The shared loader resolves (baseDir, path) ->
|
|
32
|
-
// absPath internally; we supply dirname/basename so the resolved path
|
|
33
|
-
// reconstructs the caller's original absPath. assertRelativeExtensionPath
|
|
34
|
-
// is satisfied because basenamePath() is always a simple filename.
|
|
19
|
+
// Map 1:1 onto the shared ref shape — no dirname/basename smash, so the shared
|
|
20
|
+
// loader's assertRelativeExtensionPath + realPath confinement govern the authored
|
|
21
|
+
// path exactly as declared (task 0060 C2).
|
|
35
22
|
const sharedRefs = refs.map((ref) => ({
|
|
36
23
|
kind: ref.kind,
|
|
37
|
-
path:
|
|
38
|
-
baseDir:
|
|
24
|
+
path: ref.path,
|
|
25
|
+
baseDir: ref.baseDir,
|
|
39
26
|
sourceName: ref.sourceName,
|
|
40
27
|
}));
|
|
41
28
|
const sharedOptions = {
|
package/dist/host.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,iCAAiC,CAAC;AAE5F,OAAO,KAAK,EACR,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACd,MAAM,SAAS,CAAC;AAEjB,sDAAsD;AACtD,qBAAa,kBAAkB;IAIf,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAHhE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2D;IACnF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyD;gBAE3D,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,YAAA;IAEhE,4CAA4C;IAC5C,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,GAAE,gBAA8B,GAAG,IAAI;IAKlF,0CAA0C;IAC1C,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,GAAE,gBAA8B,GAAG,IAAI;IAK/E,0DAA0D;IAC1D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,0DAA0D;IAC1D,WAAW,IAAI,MAAM,EAAE;IAIvB,yDAAyD;IACzD,UAAU,IAAI,MAAM,EAAE;IAItB,mHAAmH;IACnH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIxD,0DAA0D;IAC1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIvD,mCAAmC;IAC7B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOjH,mCAAmC;IAC7B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5G,uFAAuF;IACjF,mBAAmB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,YAAY,GACtB,OAAO,CAAC,qBAAqB,CAAC;CAKpC;AAED,4FAA4F;AAC5F,wBAAgB,+BAA+B,CAC3C,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,eAAe,CAAC;IAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CAAO,GACjG,kBAAkB,CAsBpB;AAED,gFAAgF;AAChF,qBAAa,gBAAiB,YAAW,YAAY;IACjD,QAAQ,CAAC,IAAI,UAAU;IAEvB,kEAAkE;IAC5D,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
|
package/dist/host.js
CHANGED
|
@@ -88,6 +88,7 @@ export class NoteActionRunner {
|
|
|
88
88
|
runId: context.runId,
|
|
89
89
|
node: context.stateOrNodeId,
|
|
90
90
|
message,
|
|
91
|
+
severity: 'info',
|
|
91
92
|
});
|
|
92
93
|
return { ok: true, data: { message } };
|
|
93
94
|
}
|
|
@@ -100,7 +101,7 @@ export class EventEmitActionRunner {
|
|
|
100
101
|
if (!name)
|
|
101
102
|
return { ok: false, error: 'event.emit requires a non-empty "name" option' };
|
|
102
103
|
const payload = options.payload ?? {};
|
|
103
|
-
void context?.events?.emit('workflow.custom', { name, payload });
|
|
104
|
+
void context?.events?.emit('workflow.custom', { name, payload, severity: 'info' });
|
|
104
105
|
return { ok: true, data: { name, payload } };
|
|
105
106
|
}
|
|
106
107
|
}
|
package/dist/persistence.d.ts
CHANGED
|
@@ -2,6 +2,14 @@ import type { DbAdapter } from '@gobing-ai/ts-db';
|
|
|
2
2
|
import type { ActionRedactor, WorkflowPersistenceAdapter, WorkflowReseedResult, WorkflowRunRecord, WorkflowStatus } from './types';
|
|
3
3
|
/** Apply workflow-engine-owned schema to a database adapter. */
|
|
4
4
|
export declare function applyWorkflowEngineSchema(db: DbAdapter): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Default result redactor (task 0060 F4): shell action results keep `ok`/`exitCode`
|
|
7
|
+
* but drop raw `stdout`/`stderr`, which may carry secrets, from the persisted row.
|
|
8
|
+
* Non-shell results pass through unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export declare function defaultActionRedactor(kind: string, payload: Record<string, unknown>): Record<string, unknown>;
|
|
11
|
+
/** Apply the caller redactor, or the built-in default when none is supplied. */
|
|
12
|
+
export declare function applyRedactor(redactor: ActionRedactor | undefined, kind: string, result: unknown): Record<string, unknown>;
|
|
5
13
|
/** SQLite/D1-compatible workflow persistence adapter backed by ts-db. */
|
|
6
14
|
export declare class DbWorkflowPersistenceAdapter implements WorkflowPersistenceAdapter {
|
|
7
15
|
private readonly db;
|
|
@@ -34,7 +42,7 @@ export declare class DbWorkflowPersistenceAdapter implements WorkflowPersistence
|
|
|
34
42
|
/** Insert a running action row. Returns the row id for later finalization. The `options` arg is mirror-only (observability seam) and deliberately ignored by persistence. */
|
|
35
43
|
saveActionStart(runId: string, node: string, kind: string, _options?: Record<string, unknown>): Promise<string>;
|
|
36
44
|
/** Finalize an action row with duration, ok flag, and optional redacted result. */
|
|
37
|
-
saveActionFinalize(actionId: string, status: WorkflowStatus, durationMs: number, ok: boolean, result?: unknown,
|
|
45
|
+
saveActionFinalize(actionId: string, status: WorkflowStatus, durationMs: number, ok: boolean, kind: string, result?: unknown, redactor?: ActionRedactor): Promise<void>;
|
|
38
46
|
/** Load a single run by id. */
|
|
39
47
|
loadRun(runId: string): Promise<WorkflowRunRecord | undefined>;
|
|
40
48
|
/** List persisted workflow runs. */
|
|
@@ -43,7 +51,8 @@ export declare class DbWorkflowPersistenceAdapter implements WorkflowPersistence
|
|
|
43
51
|
findRunByKey(workflowName: string, externalKey: string): Promise<WorkflowRunRecord | undefined>;
|
|
44
52
|
/** Create a run or attach to an existing one by external key. */
|
|
45
53
|
createOrAttachRun(record: WorkflowRunRecord): Promise<WorkflowRunRecord>;
|
|
46
|
-
/** Force-set the current state of a run (reseed).
|
|
54
|
+
/** Force-set the current state of a run (reseed). Atomic: snapshot + `__reseed__` transition
|
|
55
|
+
* commit in one `db.batch`, and the previous snapshot's `effectiveVars` survive (task 0060 F6). */
|
|
47
56
|
reseedRun(runId: string, newState: string): Promise<WorkflowReseedResult>;
|
|
48
57
|
/** Load the current state name for a run. */
|
|
49
58
|
loadCurrentState(runId: string): Promise<string | undefined>;
|
|
@@ -94,7 +103,7 @@ export declare class MemoryWorkflowPersistenceAdapter implements WorkflowPersist
|
|
|
94
103
|
/** Insert a running action row. The `options` arg is mirror-only (observability seam) and deliberately ignored by the in-memory adapter. */
|
|
95
104
|
saveActionStart(runId: string, node: string, kind: string, _options?: Record<string, unknown>): Promise<string>;
|
|
96
105
|
/** Finalize an action row. */
|
|
97
|
-
saveActionFinalize(actionId: string, status: WorkflowStatus, durationMs: number, ok: boolean, result?: unknown,
|
|
106
|
+
saveActionFinalize(actionId: string, status: WorkflowStatus, durationMs: number, ok: boolean, kind: string, result?: unknown, redactor?: ActionRedactor): Promise<void>;
|
|
98
107
|
/** Save one phase/state execution record. */
|
|
99
108
|
savePhase(runId: string, phase: string, status: WorkflowStatus): Promise<void>;
|
|
100
109
|
/** Save one transition record. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAG7D,OAAO,KAAK,EACR,cAAc,EACd,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACjB,MAAM,SAAS,CAAC;AAEjB,gEAAgE;AAChE,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5E;AAED,yEAAyE;AACzE,qBAAa,4BAA6B,YAAW,0BAA0B;IAI/D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,8EAA8E;IAC9E,OAAO,CAAC,WAAW,CAA4B;gBAElB,EAAE,EAAE,SAAS;IAE1C;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAKpB,qDAAqD;IAC/C,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzD,yDAAyD;IACnD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5F,6CAA6C;IACvC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpF,kCAAkC;IAC5B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpG,+CAA+C;IACzC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7F,gBAAgB,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAgBhB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,QAAQ;IAiBhB,6KAA6K;IACvK,eAAe,CACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,MAAM,CAAC;IAkBlB,mFAAmF;IAC7E,kBAAkB,CACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,OAAO,EACX,MAAM,CAAC,EAAE,OAAO,EAChB,
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"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"}
|
package/dist/persistence.js
CHANGED
|
@@ -8,6 +8,32 @@ export async function applyWorkflowEngineSchema(db) {
|
|
|
8
8
|
await db.exec(sql);
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
/** Narrow to a non-array object record. */
|
|
12
|
+
function isRecord(value) {
|
|
13
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Default result redactor (task 0060 F4): shell action results keep `ok`/`exitCode`
|
|
17
|
+
* but drop raw `stdout`/`stderr`, which may carry secrets, from the persisted row.
|
|
18
|
+
* Non-shell results pass through unchanged.
|
|
19
|
+
*/
|
|
20
|
+
export function defaultActionRedactor(kind, payload) {
|
|
21
|
+
if (kind !== 'shell')
|
|
22
|
+
return payload;
|
|
23
|
+
const data = isRecord(payload.data) ? { ...payload.data } : payload.data;
|
|
24
|
+
if (isRecord(data)) {
|
|
25
|
+
if ('stdout' in data)
|
|
26
|
+
data.stdout = '[redacted]';
|
|
27
|
+
if ('stderr' in data)
|
|
28
|
+
data.stderr = '[redacted]';
|
|
29
|
+
}
|
|
30
|
+
return { ...payload, data };
|
|
31
|
+
}
|
|
32
|
+
/** Apply the caller redactor, or the built-in default when none is supplied. */
|
|
33
|
+
export function applyRedactor(redactor, kind, result) {
|
|
34
|
+
const payload = isRecord(result) ? result : { value: result };
|
|
35
|
+
return redactor !== undefined ? redactor(kind, payload) : defaultActionRedactor(kind, payload);
|
|
36
|
+
}
|
|
11
37
|
/** SQLite/D1-compatible workflow persistence adapter backed by ts-db. */
|
|
12
38
|
export class DbWorkflowPersistenceAdapter {
|
|
13
39
|
db;
|
|
@@ -115,11 +141,11 @@ export class DbWorkflowPersistenceAdapter {
|
|
|
115
141
|
return id;
|
|
116
142
|
}
|
|
117
143
|
/** Finalize an action row with duration, ok flag, and optional redacted result. */
|
|
118
|
-
async saveActionFinalize(actionId, status, durationMs, ok, result,
|
|
144
|
+
async saveActionFinalize(actionId, status, durationMs, ok, kind, result, redactor) {
|
|
119
145
|
const now = Date.now();
|
|
120
146
|
await this.db.run(`UPDATE action_runs
|
|
121
147
|
SET status = ?, duration_ms = ?, ok = ?, result_json = ?, completed_at = ?, updated_at = ?
|
|
122
|
-
WHERE id = ?`, status, durationMs, ok ? 1 : 0, result !== undefined ? JSON.stringify(result) : null, new Date(now).toISOString(), now, actionId);
|
|
148
|
+
WHERE id = ?`, status, durationMs, ok ? 1 : 0, result !== undefined ? JSON.stringify(applyRedactor(redactor, kind, result)) : null, new Date(now).toISOString(), now, actionId);
|
|
123
149
|
}
|
|
124
150
|
/** Load a single run by id. */
|
|
125
151
|
async loadRun(runId) {
|
|
@@ -159,13 +185,18 @@ export class DbWorkflowPersistenceAdapter {
|
|
|
159
185
|
}
|
|
160
186
|
return { ...record };
|
|
161
187
|
}
|
|
162
|
-
/** Force-set the current state of a run (reseed).
|
|
188
|
+
/** Force-set the current state of a run (reseed). Atomic: snapshot + `__reseed__` transition
|
|
189
|
+
* commit in one `db.batch`, and the previous snapshot's `effectiveVars` survive (task 0060 F6). */
|
|
163
190
|
async reseedRun(runId, newState) {
|
|
164
|
-
const now = Date.now();
|
|
165
191
|
await this.ensureSchema();
|
|
166
|
-
const previous = await this.
|
|
167
|
-
|
|
168
|
-
|
|
192
|
+
const previous = await this.loadLatestStateSnapshot(runId);
|
|
193
|
+
const now = Date.now();
|
|
194
|
+
const data = {
|
|
195
|
+
...(previous?.data ?? {}),
|
|
196
|
+
reseeded: true,
|
|
197
|
+
reseededAt: new Date(now).toISOString(),
|
|
198
|
+
};
|
|
199
|
+
await this.commitTransition(runId, previous?.state ?? '', newState, '__reseed__', newState, data);
|
|
169
200
|
return { fromState: previous?.state ?? null, toState: newState };
|
|
170
201
|
}
|
|
171
202
|
/** Load the current state name for a run. */
|
|
@@ -241,14 +272,14 @@ export class MemoryWorkflowPersistenceAdapter {
|
|
|
241
272
|
return id;
|
|
242
273
|
}
|
|
243
274
|
/** Finalize an action row. */
|
|
244
|
-
async saveActionFinalize(actionId, status, durationMs, ok, result,
|
|
275
|
+
async saveActionFinalize(actionId, status, durationMs, ok, kind, result, redactor) {
|
|
245
276
|
const row = this.actionRuns.find((a) => a.id === actionId);
|
|
246
277
|
if (row === undefined)
|
|
247
278
|
return;
|
|
248
279
|
row.status = status;
|
|
249
280
|
row.durationMs = durationMs;
|
|
250
281
|
row.ok = ok ? 1 : 0;
|
|
251
|
-
row.resultJson = result !== undefined ? JSON.stringify(result) : null;
|
|
282
|
+
row.resultJson = result !== undefined ? JSON.stringify(applyRedactor(redactor, kind, result)) : null;
|
|
252
283
|
}
|
|
253
284
|
/** Save one phase/state execution record. */
|
|
254
285
|
async savePhase(runId, phase, status) {
|
|
@@ -298,9 +329,13 @@ export class MemoryWorkflowPersistenceAdapter {
|
|
|
298
329
|
}
|
|
299
330
|
/** Force-set the current state of a run (reseed). */
|
|
300
331
|
async reseedRun(runId, newState) {
|
|
301
|
-
const previous = this.
|
|
302
|
-
|
|
303
|
-
|
|
332
|
+
const previous = await this.loadLatestStateSnapshot(runId);
|
|
333
|
+
const data = {
|
|
334
|
+
...(previous?.data ?? {}),
|
|
335
|
+
reseeded: true,
|
|
336
|
+
reseededAt: new Date().toISOString(),
|
|
337
|
+
};
|
|
338
|
+
await this.commitTransition(runId, previous?.state ?? '', newState, '__reseed__', newState, data);
|
|
304
339
|
return { fromState: previous?.state ?? null, toState: newState };
|
|
305
340
|
}
|
|
306
341
|
/** Load the current state name for a run. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-lifecycle.d.ts","sourceRoot":"","sources":["../src/run-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,kBAAkB,EACvB,QAAQ,EAER,KAAK,MAAM,EAEd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EACR,IAAI,EACJ,0BAA0B,EAC1B,kBAAkB,EAElB,iBAAiB,EACjB,cAAc,EACjB,MAAM,SAAS,CAAC;AAEjB,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAErD,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,wFASvB,CAAC;AAEX,mGAAmG;AACnG,wBAAgB,eAAe,CAC3B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,YAAY,GACnB,MAAM,CAAC,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAWhE;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CACtB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAmB,GAC7D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIxB;AAED,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACjD,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CACxD;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IASjB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IATzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO;IAgBP;;;;;;;;OAQG;IACH,MAAM,CAAC,qBAAqB,CACxB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,GAChC,YAAY;IAIf;;;;OAIG;WACU,GAAG,CACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,iBAAiB,CAAC,GAC9D,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-lifecycle.d.ts","sourceRoot":"","sources":["../src/run-lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/run-lifecycle.js
CHANGED
|
@@ -96,6 +96,7 @@ export class RunLifecycle {
|
|
|
96
96
|
runId: lifecycle.runId,
|
|
97
97
|
dryRun: options.dryRun ?? false,
|
|
98
98
|
externalKey: extKey,
|
|
99
|
+
severity: 'info',
|
|
99
100
|
});
|
|
100
101
|
return await loop(lifecycle);
|
|
101
102
|
}, { attributes: { 'workflow.name': workflowName, 'workflow.mode': mode } });
|
|
@@ -134,6 +135,7 @@ export class RunLifecycle {
|
|
|
134
135
|
runId: this.runId,
|
|
135
136
|
node: stateOrNodeId,
|
|
136
137
|
transitionsTaken,
|
|
138
|
+
severity: 'info',
|
|
137
139
|
});
|
|
138
140
|
}
|
|
139
141
|
/**
|
|
@@ -161,6 +163,7 @@ export class RunLifecycle {
|
|
|
161
163
|
to,
|
|
162
164
|
trigger,
|
|
163
165
|
externalKey: this.externalKey,
|
|
166
|
+
severity: 'info',
|
|
164
167
|
});
|
|
165
168
|
}
|
|
166
169
|
async recordTransition(from, to, trigger) {
|
|
@@ -177,6 +180,7 @@ export class RunLifecycle {
|
|
|
177
180
|
to,
|
|
178
181
|
trigger,
|
|
179
182
|
externalKey: this.externalKey,
|
|
183
|
+
severity: 'info',
|
|
180
184
|
});
|
|
181
185
|
}
|
|
182
186
|
/** Finalize the run as succeeded and return its result. */
|
|
@@ -190,6 +194,7 @@ export class RunLifecycle {
|
|
|
190
194
|
finalState,
|
|
191
195
|
transitionsTaken,
|
|
192
196
|
externalKey: this.externalKey,
|
|
197
|
+
severity: 'info',
|
|
193
198
|
});
|
|
194
199
|
return this.result('done', finalState, transitionsTaken);
|
|
195
200
|
}
|
|
@@ -203,6 +208,7 @@ export class RunLifecycle {
|
|
|
203
208
|
finalState,
|
|
204
209
|
reason,
|
|
205
210
|
externalKey: this.externalKey,
|
|
211
|
+
severity: 'error',
|
|
206
212
|
});
|
|
207
213
|
this.logger.warn('workflow run failed', { finalState, transitionsTaken, reason });
|
|
208
214
|
return this.result('failed', finalState, transitionsTaken, reason);
|
|
@@ -228,18 +234,29 @@ export class RunLifecycle {
|
|
|
228
234
|
node: stateOrNodeId,
|
|
229
235
|
transitionsTaken,
|
|
230
236
|
externalKey: this.externalKey,
|
|
237
|
+
severity: 'warning',
|
|
231
238
|
});
|
|
232
239
|
return this.result('paused', stateOrNodeId, transitionsTaken);
|
|
233
240
|
}
|
|
234
241
|
/** Emit the resumed event (called by WorkflowService after re-creating a lifecycle for resume). */
|
|
235
242
|
emitResumed(node) {
|
|
236
243
|
addSpanEvent('workflow.run.resumed', { runId: this.runId, node });
|
|
237
|
-
void this.events?.emit('workflow.run.resumed', {
|
|
244
|
+
void this.events?.emit('workflow.run.resumed', {
|
|
245
|
+
runId: this.runId,
|
|
246
|
+
node,
|
|
247
|
+
externalKey: this.externalKey,
|
|
248
|
+
severity: 'info',
|
|
249
|
+
});
|
|
238
250
|
}
|
|
239
251
|
/** Emit action-level observability before a host action is invoked. */
|
|
240
252
|
actionStart(stateOrNodeId, kind) {
|
|
241
253
|
addSpanEvent('workflow.action.start', { runId: this.runId, node: stateOrNodeId, kind });
|
|
242
|
-
void this.events?.emit('workflow.action.start', {
|
|
254
|
+
void this.events?.emit('workflow.action.start', {
|
|
255
|
+
runId: this.runId,
|
|
256
|
+
node: stateOrNodeId,
|
|
257
|
+
kind,
|
|
258
|
+
severity: 'info',
|
|
259
|
+
});
|
|
243
260
|
}
|
|
244
261
|
/** Emit action-level observability after a host action settles. */
|
|
245
262
|
actionDone(stateOrNodeId, kind, durationMs, ok) {
|
|
@@ -250,6 +267,7 @@ export class RunLifecycle {
|
|
|
250
267
|
kind,
|
|
251
268
|
durationMs,
|
|
252
269
|
ok,
|
|
270
|
+
severity: ok ? 'info' : 'error',
|
|
253
271
|
});
|
|
254
272
|
}
|
|
255
273
|
/** Log and trace a non-fatal action failure for the 'continue' error policy (ADR-013 observability seam). */
|
|
@@ -265,6 +283,7 @@ export class RunLifecycle {
|
|
|
265
283
|
node: stateOrNodeId,
|
|
266
284
|
transitionsTaken,
|
|
267
285
|
...(error === undefined ? {} : { error }),
|
|
286
|
+
severity: 'warning',
|
|
268
287
|
});
|
|
269
288
|
this.logger.warn('action failed (continuing)', { node: stateOrNodeId, transitionsTaken, error });
|
|
270
289
|
}
|
|
@@ -277,15 +296,21 @@ export class RunLifecycle {
|
|
|
277
296
|
kind,
|
|
278
297
|
passed,
|
|
279
298
|
externalKey: this.externalKey,
|
|
299
|
+
severity: passed ? 'info' : 'warning',
|
|
280
300
|
});
|
|
281
301
|
}
|
|
282
302
|
/** Emit when an interactive HITL prompt is presented. */
|
|
283
303
|
hitlAsk(node, kind, message) {
|
|
284
|
-
void this.events?.emit('workflow.hitl.ask', { runId: this.runId, node, kind, message });
|
|
304
|
+
void this.events?.emit('workflow.hitl.ask', { runId: this.runId, node, kind, message, severity: 'info' });
|
|
285
305
|
}
|
|
286
306
|
/** Emit when an interactive HITL prompt resolves. */
|
|
287
307
|
hitlResponse(node, ok) {
|
|
288
|
-
void this.events?.emit('workflow.hitl.response', {
|
|
308
|
+
void this.events?.emit('workflow.hitl.response', {
|
|
309
|
+
runId: this.runId,
|
|
310
|
+
node,
|
|
311
|
+
ok,
|
|
312
|
+
severity: ok ? 'info' : 'warning',
|
|
313
|
+
});
|
|
289
314
|
}
|
|
290
315
|
result(status, finalState, transitionsTaken, reason) {
|
|
291
316
|
return {
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAIjD,OAAO,KAAK,EACR,uBAAuB,EAEvB,uBAAuB,EAEvB,WAAW,EACX,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAGjB,6FAA6F;AAC7F,qBAAa,eAAe;IAMpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IANhC,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;gBAGnD,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,0BAA0B;IACxD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAK/C,sGAAsG;IACtG,OAAO,CAAC,aAAa;IASrB,4CAA4C;IACtC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI9C,iDAAiD;IAC3C,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAc9F,oCAAoC;IAC9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIzF,oCAAoC;IAC9B,QAAQ;IAId,mEAAmE;IAC7D,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAIrG,gFAAgF;IAC1E,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI9E,qFAAqF;IAC/E,SAAS,CACX,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC;IACV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B7F,iGAAiG;IACjG,OAAO,CAAC,0BAA0B;IASlC,oFAAoF;YACtE,YAAY;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAIjD,OAAO,KAAK,EACR,uBAAuB,EAEvB,uBAAuB,EAEvB,WAAW,EACX,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAGjB,6FAA6F;AAC7F,qBAAa,eAAe;IAMpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IANhC,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;gBAGnD,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,0BAA0B;IACxD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAK/C,sGAAsG;IACtG,OAAO,CAAC,aAAa;IASrB,4CAA4C;IACtC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI9C,iDAAiD;IAC3C,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAc9F,oCAAoC;IAC9B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIzF,oCAAoC;IAC9B,QAAQ;IAId,mEAAmE;IAC7D,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAIrG,gFAAgF;IAC1E,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI9E,qFAAqF;IAC/E,SAAS,CACX,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC;IACV,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B7F,iGAAiG;IACjG,OAAO,CAAC,0BAA0B;IASlC,oFAAoF;YACtE,YAAY;IAa1B,uEAAuE;IACjE,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6C/G,iEAAiE;IAC3D,cAAc,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAIhH;;;;;OAKG;IACG,iBAAiB,CACnB,QAAQ,EAAE,uBAAuB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,uBAAuB,CAAC;YAsBrB,iBAAiB;IAiF/B;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAkBzB"}
|