@crewx/workflow 0.3.22-rc.19 → 0.3.22-rc.191
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/SKILL.md +40 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +268 -86
- package/dist/cli.js.map +1 -1
- package/dist/src/card-state.d.ts +20 -0
- package/dist/src/card-state.d.ts.map +1 -0
- package/dist/src/card-state.js +121 -0
- package/dist/src/card-state.js.map +1 -0
- package/dist/src/engine.d.ts +9 -2
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +70 -22
- package/dist/src/engine.js.map +1 -1
- package/dist/src/failure.d.ts +41 -0
- package/dist/src/failure.d.ts.map +1 -0
- package/dist/src/failure.js +122 -0
- package/dist/src/failure.js.map +1 -0
- package/dist/src/list-view.d.ts +22 -0
- package/dist/src/list-view.d.ts.map +1 -0
- package/dist/src/list-view.js +188 -0
- package/dist/src/list-view.js.map +1 -0
- package/dist/src/mermaid.js +3 -3
- package/dist/src/mermaid.js.map +1 -1
- package/dist/src/parent-task-sync.d.ts +139 -0
- package/dist/src/parent-task-sync.d.ts.map +1 -0
- package/dist/src/parent-task-sync.js +445 -0
- package/dist/src/parent-task-sync.js.map +1 -0
- package/dist/src/retry-policy.d.ts +38 -0
- package/dist/src/retry-policy.d.ts.map +1 -0
- package/dist/src/retry-policy.js +140 -0
- package/dist/src/retry-policy.js.map +1 -0
- package/dist/src/run-manager.d.ts +36 -2
- package/dist/src/run-manager.d.ts.map +1 -1
- package/dist/src/run-manager.js +1195 -234
- package/dist/src/run-manager.js.map +1 -1
- package/dist/src/types.d.ts +37 -3
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/output-format.d.ts +12 -0
- package/dist/src/utils/output-format.d.ts.map +1 -1
- package/dist/src/utils/output-format.js +103 -5
- package/dist/src/utils/output-format.js.map +1 -1
- package/dist/src/workflow-persistence.d.ts +48 -0
- package/dist/src/workflow-persistence.d.ts.map +1 -0
- package/dist/src/workflow-persistence.js +224 -0
- package/dist/src/workflow-persistence.js.map +1 -0
- package/dist/workflow-schema.json +29 -4
- package/package.json +23 -4
- package/workflow-schema.json +29 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../../src/failure.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,IAAI,CAAC;AAG1E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAGD,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;AAGxF,MAAM,WAAW,kCAAkC;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAoBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,4BAA4B,GAAG,MAAM,CAEhF;AAGD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,4BAA4B,EAClC,OAAO,EAAE,MAAM,GACd,KAAK,GAAG;IAAE,IAAI,EAAE,4BAA4B,CAAA;CAAE,CAIhD;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,GAAG,SAAS,CAM/F;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,kCAAkC,GACxC,4BAA4B,CAqB9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,4BAA4B,CAAC;IACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAqB7E;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,4BAA4B,CAAC;IACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAKD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAiBxE;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM5E;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGzE"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getStableCauseMessage = getStableCauseMessage;
|
|
4
|
+
exports.createWorkflowFailureError = createWorkflowFailureError;
|
|
5
|
+
exports.getWorkflowFailureCode = getWorkflowFailureCode;
|
|
6
|
+
exports.classifyWorkflowFailure = classifyWorkflowFailure;
|
|
7
|
+
exports.buildNodeFailure = buildNodeFailure;
|
|
8
|
+
exports.buildEvidencePreview = buildEvidencePreview;
|
|
9
|
+
exports.sanitizeLocalRunError = sanitizeLocalRunError;
|
|
10
|
+
exports.readNodeAttempt = readNodeAttempt;
|
|
11
|
+
const sdk_1 = require("@crewx/sdk");
|
|
12
|
+
const STABLE_CAUSE_MESSAGES = {
|
|
13
|
+
CLI_UNRESOLVABLE: 'CrewX CLI executable could not be resolved.',
|
|
14
|
+
SPAWN_FAILED: 'The node process could not be started.',
|
|
15
|
+
NODE_TIMEOUT: 'The node execution exceeded its timeout.',
|
|
16
|
+
NODE_EXIT_NONZERO: 'The node process exited with a non-zero status.',
|
|
17
|
+
OUTPUT_INVALID: 'The node output did not match the required format.',
|
|
18
|
+
CONFIG_INVALID: 'The workflow node configuration is invalid.',
|
|
19
|
+
INTERRUPTED: 'The node execution was interrupted.',
|
|
20
|
+
CANCELLED: 'The workflow run was cancelled.',
|
|
21
|
+
UNKNOWN: 'The node execution failed.',
|
|
22
|
+
};
|
|
23
|
+
const PERSISTED_FAILURE_CODES = new Set(Object.keys(STABLE_CAUSE_MESSAGES));
|
|
24
|
+
function getStableCauseMessage(code) {
|
|
25
|
+
return STABLE_CAUSE_MESSAGES[code];
|
|
26
|
+
}
|
|
27
|
+
function createWorkflowFailureError(code, message) {
|
|
28
|
+
const error = new Error(message);
|
|
29
|
+
error.code = code;
|
|
30
|
+
return error;
|
|
31
|
+
}
|
|
32
|
+
function getWorkflowFailureCode(error) {
|
|
33
|
+
if (!error || typeof error !== 'object')
|
|
34
|
+
return undefined;
|
|
35
|
+
const code = error.code;
|
|
36
|
+
return typeof code === 'string' && PERSISTED_FAILURE_CODES.has(code)
|
|
37
|
+
? code
|
|
38
|
+
: undefined;
|
|
39
|
+
}
|
|
40
|
+
function classifyWorkflowFailure(input) {
|
|
41
|
+
const typedCode = input.errorCode;
|
|
42
|
+
if (typedCode === 'CLI_UNRESOLVABLE')
|
|
43
|
+
return 'CLI_UNRESOLVABLE';
|
|
44
|
+
if (typedCode === 'CONFIG_INVALID')
|
|
45
|
+
return 'CONFIG_INVALID';
|
|
46
|
+
if (typedCode === 'OUTPUT_INVALID')
|
|
47
|
+
return 'OUTPUT_INVALID';
|
|
48
|
+
if (typedCode === 'CANCELLED')
|
|
49
|
+
return 'CANCELLED';
|
|
50
|
+
if (typedCode === 'INTERRUPTED')
|
|
51
|
+
return 'INTERRUPTED';
|
|
52
|
+
if (typedCode === 'UNKNOWN')
|
|
53
|
+
return 'UNKNOWN';
|
|
54
|
+
const processResult = input.process;
|
|
55
|
+
if (!processResult)
|
|
56
|
+
return 'UNKNOWN';
|
|
57
|
+
if (processResult.errorOrigin === 'spawn')
|
|
58
|
+
return 'SPAWN_FAILED';
|
|
59
|
+
if (processResult.timedOut)
|
|
60
|
+
return 'NODE_TIMEOUT';
|
|
61
|
+
if (processResult.signal !== null)
|
|
62
|
+
return 'INTERRUPTED';
|
|
63
|
+
if (processResult.errorOrigin === 'post_spawn' || processResult.errorOrigin === 'stdin') {
|
|
64
|
+
return 'UNKNOWN';
|
|
65
|
+
}
|
|
66
|
+
if (typeof processResult.status === 'number' && processResult.status !== 0) {
|
|
67
|
+
return 'NODE_EXIT_NONZERO';
|
|
68
|
+
}
|
|
69
|
+
return 'UNKNOWN';
|
|
70
|
+
}
|
|
71
|
+
function buildNodeFailure(input) {
|
|
72
|
+
const exitCode = input.causeCode === 'NODE_EXIT_NONZERO' && typeof input.exitCode === 'number'
|
|
73
|
+
? input.exitCode
|
|
74
|
+
: null;
|
|
75
|
+
const signal = input.causeCode === 'INTERRUPTED' ? input.signal : null;
|
|
76
|
+
return {
|
|
77
|
+
failedNode: input.failedNode,
|
|
78
|
+
attempt: input.attempt,
|
|
79
|
+
causeCode: input.causeCode,
|
|
80
|
+
causeMessage: getStableCauseMessage(input.causeCode),
|
|
81
|
+
exitCode,
|
|
82
|
+
evidencePreview: buildEvidencePreview({
|
|
83
|
+
causeCode: input.causeCode,
|
|
84
|
+
exitCode,
|
|
85
|
+
signal,
|
|
86
|
+
errorOrigin: input.errorOrigin,
|
|
87
|
+
timedOut: input.timedOut ?? false,
|
|
88
|
+
}),
|
|
89
|
+
occurredAt: input.occurredAt ?? new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function buildEvidencePreview(input) {
|
|
93
|
+
switch (input.causeCode) {
|
|
94
|
+
case 'NODE_EXIT_NONZERO':
|
|
95
|
+
return typeof input.exitCode === 'number' ? `exit code: ${input.exitCode}` : null;
|
|
96
|
+
case 'NODE_TIMEOUT':
|
|
97
|
+
return input.timedOut ? 'timeout' : null;
|
|
98
|
+
case 'SPAWN_FAILED':
|
|
99
|
+
return input.errorOrigin === 'spawn' ? 'origin: spawn' : null;
|
|
100
|
+
case 'INTERRUPTED':
|
|
101
|
+
return input.signal === null ? null : `signal: ${input.signal}`;
|
|
102
|
+
case 'UNKNOWN':
|
|
103
|
+
return input.errorOrigin === 'post_spawn' || input.errorOrigin === 'stdin'
|
|
104
|
+
? `origin: ${input.errorOrigin}`
|
|
105
|
+
: null;
|
|
106
|
+
default:
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function sanitizeLocalRunError(raw, fallback) {
|
|
111
|
+
try {
|
|
112
|
+
return (0, sdk_1.redactTechnicalMessage)(raw) ?? fallback;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return fallback;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function readNodeAttempt(run, nodeId) {
|
|
119
|
+
const attempt = run.node_attempts?.[nodeId];
|
|
120
|
+
return typeof attempt === 'number' && Number.isInteger(attempt) && attempt > 0 ? attempt : 1;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../../src/failure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { PromptListResolver } from '@crewx/sdk';
|
|
2
|
+
import type { LoadedWorkflow } from './types';
|
|
3
|
+
export declare function loadWorkflowDirectory(dir: string): LoadedWorkflow[] | null;
|
|
4
|
+
export declare function loadWorkflowPaths(paths: string[], cwd: string): LoadedWorkflow[];
|
|
5
|
+
export declare function readWorkflowConfig(configPath: string): {
|
|
6
|
+
paths: string[];
|
|
7
|
+
};
|
|
8
|
+
export declare function readWorkflowList(options: {
|
|
9
|
+
cwd: string;
|
|
10
|
+
env: Record<string, string>;
|
|
11
|
+
configPath?: string;
|
|
12
|
+
}): {
|
|
13
|
+
paths: string[];
|
|
14
|
+
workflows: LoadedWorkflow[];
|
|
15
|
+
};
|
|
16
|
+
export declare function createWorkflowListPromptResolver(configPath?: string): PromptListResolver;
|
|
17
|
+
export declare function formatWorkflowList({ paths, workflows, jsonMode }: {
|
|
18
|
+
paths: string[];
|
|
19
|
+
workflows: LoadedWorkflow[];
|
|
20
|
+
jsonMode: boolean;
|
|
21
|
+
}): string;
|
|
22
|
+
//# sourceMappingURL=list-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-view.d.ts","sourceRoot":"","sources":["../../src/list-view.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAkC,MAAM,SAAS,CAAC;AAc9E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,IAAI,CAwB1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAehF;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAU1E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;;;EAI1G;AAED,wBAAgB,gCAAgC,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAqBxF;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAgD9I"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadWorkflowDirectory = loadWorkflowDirectory;
|
|
37
|
+
exports.loadWorkflowPaths = loadWorkflowPaths;
|
|
38
|
+
exports.readWorkflowConfig = readWorkflowConfig;
|
|
39
|
+
exports.readWorkflowList = readWorkflowList;
|
|
40
|
+
exports.createWorkflowListPromptResolver = createWorkflowListPromptResolver;
|
|
41
|
+
exports.formatWorkflowList = formatWorkflowList;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const yaml = __importStar(require("js-yaml"));
|
|
45
|
+
const knowledge_core_1 = require("@crewx/knowledge-core");
|
|
46
|
+
const GIT_ROOT_ENV_KEYS = new Set([
|
|
47
|
+
'GIT_DIR',
|
|
48
|
+
'GIT_WORK_TREE',
|
|
49
|
+
'GIT_COMMON_DIR',
|
|
50
|
+
'GIT_CEILING_DIRECTORIES',
|
|
51
|
+
'GIT_DISCOVERY_ACROSS_FILESYSTEM',
|
|
52
|
+
]);
|
|
53
|
+
function hasGitRootOverride(env) {
|
|
54
|
+
return Object.keys(env).some(key => GIT_ROOT_ENV_KEYS.has(key));
|
|
55
|
+
}
|
|
56
|
+
function loadWorkflowDirectory(dir) {
|
|
57
|
+
if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const files = fs.readdirSync(dir).filter(f => f.endsWith('.yaml') || f.endsWith('.yml'));
|
|
61
|
+
const workflows = [];
|
|
62
|
+
for (const file of files) {
|
|
63
|
+
const filePath = path.join(dir, file);
|
|
64
|
+
try {
|
|
65
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
66
|
+
const doc = yaml.load(content);
|
|
67
|
+
if (!doc?.workflows || typeof doc.workflows !== 'object')
|
|
68
|
+
continue;
|
|
69
|
+
for (const [id, spec] of Object.entries(doc.workflows)) {
|
|
70
|
+
workflows.push({ id, filePath, spec });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return workflows;
|
|
77
|
+
}
|
|
78
|
+
function loadWorkflowPaths(paths, cwd) {
|
|
79
|
+
const all = [];
|
|
80
|
+
const seenIds = new Set();
|
|
81
|
+
for (const dir of paths) {
|
|
82
|
+
const absDir = path.resolve(cwd, dir);
|
|
83
|
+
const workflows = loadWorkflowDirectory(absDir);
|
|
84
|
+
if (!workflows)
|
|
85
|
+
continue;
|
|
86
|
+
for (const wf of workflows) {
|
|
87
|
+
if (!seenIds.has(wf.id)) {
|
|
88
|
+
seenIds.add(wf.id);
|
|
89
|
+
all.push(wf);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return all;
|
|
94
|
+
}
|
|
95
|
+
function readWorkflowConfig(configPath) {
|
|
96
|
+
try {
|
|
97
|
+
const raw = fs.readFileSync(configPath, 'utf8');
|
|
98
|
+
const config = yaml.load(raw);
|
|
99
|
+
const settings = config?.settings;
|
|
100
|
+
const wf = settings?.workflow ?? {};
|
|
101
|
+
return { paths: wf.paths ?? ['workflows'] };
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return { paths: ['workflows'] };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function readWorkflowList(options) {
|
|
108
|
+
const configPath = path.resolve(options.cwd, options.env.CREWX_CONFIG ?? options.configPath ?? 'crewx.yaml');
|
|
109
|
+
const { paths } = readWorkflowConfig(configPath);
|
|
110
|
+
return { paths, workflows: loadWorkflowPaths(paths, options.cwd) };
|
|
111
|
+
}
|
|
112
|
+
function createWorkflowListPromptResolver(configPath) {
|
|
113
|
+
const hostCwd = process.cwd();
|
|
114
|
+
return (argv, ctx) => {
|
|
115
|
+
if (argv.length !== 3 || argv[0] !== 'crewx' || argv[1] !== 'workflow' || argv[2] !== 'list')
|
|
116
|
+
return undefined;
|
|
117
|
+
const hostPath = ctx.cwd === hostCwd ? configPath : undefined;
|
|
118
|
+
if (ctx.env.CREWX_CONFIG === '')
|
|
119
|
+
return undefined;
|
|
120
|
+
if (!ctx.env.CREWX_CONFIG) {
|
|
121
|
+
if (hostPath && path.resolve(ctx.cwd, hostPath) !== path.resolve(ctx.cwd, 'crewx.yaml'))
|
|
122
|
+
return undefined;
|
|
123
|
+
if (hasGitRootOverride(ctx.env))
|
|
124
|
+
return undefined;
|
|
125
|
+
if (!fs.existsSync(path.join(ctx.cwd, '.git'))) {
|
|
126
|
+
let parent = path.dirname(ctx.cwd);
|
|
127
|
+
while (parent !== path.dirname(parent)) {
|
|
128
|
+
if (fs.existsSync(path.join(parent, '.git')))
|
|
129
|
+
return undefined;
|
|
130
|
+
parent = path.dirname(parent);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (!ctx.env.CREWX_CONFIG && !hostPath && !fs.existsSync(path.resolve(ctx.cwd, 'crewx.yaml')))
|
|
135
|
+
return undefined;
|
|
136
|
+
return formatWorkflowList({ ...readWorkflowList({ ...ctx, configPath: hostPath }), jsonMode: false }) + '\n';
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function formatWorkflowList({ paths, workflows, jsonMode }) {
|
|
140
|
+
const lines = [];
|
|
141
|
+
if (workflows.length === 0) {
|
|
142
|
+
const msg = `No workflow YAML files found in: ${paths.join(', ')}`;
|
|
143
|
+
if (jsonMode) {
|
|
144
|
+
lines.push(JSON.stringify({ success: true, message: msg, workflows: [] }));
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
lines.push(`\u2139\uFE0F ${msg}`);
|
|
148
|
+
}
|
|
149
|
+
return lines.join('\n');
|
|
150
|
+
}
|
|
151
|
+
if (jsonMode) {
|
|
152
|
+
lines.push(JSON.stringify({
|
|
153
|
+
success: true,
|
|
154
|
+
workflows: workflows.map(wf => {
|
|
155
|
+
const meta = wf.spec.metadata ?? {};
|
|
156
|
+
const nodeCount = wf.spec.nodes ? Object.keys(wf.spec.nodes).length : 0;
|
|
157
|
+
return {
|
|
158
|
+
id: wf.id,
|
|
159
|
+
name: meta.name ?? wf.id,
|
|
160
|
+
description: meta.description ?? '',
|
|
161
|
+
node_count: nodeCount,
|
|
162
|
+
file: wf.filePath,
|
|
163
|
+
};
|
|
164
|
+
}),
|
|
165
|
+
}, null, 2));
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
lines.push('📋 Workflows');
|
|
169
|
+
workflows.forEach((wf, i) => {
|
|
170
|
+
const meta = wf.spec.metadata ?? {};
|
|
171
|
+
const nodeCount = wf.spec.nodes ? Object.keys(wf.spec.nodes).length : 0;
|
|
172
|
+
const descLine = meta.description ? `\n \uD83D\uDCDD ${meta.description.trim().split('\n')[0]}` : '';
|
|
173
|
+
lines.push(` ${i + 1}. ${wf.id} \u2014 ${meta.name ?? wf.id} (${nodeCount} nodes)\n \uD83D\uDCC1 ${wf.filePath}${descLine}`);
|
|
174
|
+
});
|
|
175
|
+
const listCtx = {
|
|
176
|
+
commandId: 'workflow.list',
|
|
177
|
+
params: {},
|
|
178
|
+
resultIds: workflows.slice(0, 3).map(w => w.id),
|
|
179
|
+
resultCount: workflows.length,
|
|
180
|
+
};
|
|
181
|
+
const listActions = (0, knowledge_core_1.generateNextActions)(listCtx);
|
|
182
|
+
const listBlock = (0, knowledge_core_1.formatActions)(listActions);
|
|
183
|
+
if (listBlock)
|
|
184
|
+
lines.push(listBlock);
|
|
185
|
+
}
|
|
186
|
+
return lines.join('\n');
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=list-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-view.js","sourceRoot":"","sources":["../../src/list-view.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,sDAwBC;AAED,8CAeC;AAED,gDAUC;AAED,4CAIC;AAED,4EAqBC;AAED,gDAgDC;AAxJD,uCAAyB;AACzB,2CAA6B;AAC7B,8CAAgC;AAChC,0DAA2E;AAK3E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,yBAAyB;IACzB,iCAAiC;CAClC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,GAA2B;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzF,MAAM,SAAS,GAAqB,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAA4B,CAAC;YAC1D,IAAI,CAAC,GAAG,EAAE,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;gBAAE,SAAS;YAEnE,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvD,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAe,EAAE,GAAW;IAC5D,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmC,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,EAAE,QAA+C,CAAC;QACzE,MAAM,EAAE,GAAI,QAAQ,EAAE,QAAiC,IAAI,EAAE,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAA0E;IACzG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC;IAC7G,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,SAAgB,gCAAgC,CAAC,UAAmB;IAClE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAC/G,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,EAAE;YAAE,OAAO,SAAS,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1B,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC;gBAAE,OAAO,SAAS,CAAC;YAE1G,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnC,OAAO,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAAE,OAAO,SAAS,CAAC;oBAC/D,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAChH,OAAO,kBAAkB,CAAC,EAAE,GAAG,gBAAgB,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/G,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAuE;IACpI,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,oCAAoC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACxB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAC5B,MAAM,IAAI,GAA0B,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC3D,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxE,OAAO;oBACL,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;oBACxB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;oBACnC,UAAU,EAAE,SAAS;oBACrB,IAAI,EAAE,EAAE,CAAC,QAAQ;iBAClB,CAAC;YACJ,CAAC,CAAC;SACH,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3B,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,IAAI,GAA0B,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC3D,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,SAAS,8BAA8B,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC;QACrI,CAAC,CAAC,CAAC;QAGH,MAAM,OAAO,GAAkB;YAC7B,SAAS,EAAE,eAAe;YAC1B,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,WAAW,EAAE,SAAS,CAAC,MAAM;SAC9B,CAAC;QACF,MAAM,WAAW,GAAG,IAAA,oCAAmB,EAAC,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAA,8BAAa,EAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/src/mermaid.js
CHANGED
|
@@ -87,7 +87,7 @@ function toMermaid(spec) {
|
|
|
87
87
|
}
|
|
88
88
|
if (node.type === 'branch' && node.branches && !Array.isArray(node.branches)) {
|
|
89
89
|
for (const [condLabel, target] of Object.entries(node.branches)) {
|
|
90
|
-
const edgeLabel = escapeMermaidLabel(condLabel === 'true' ? '
|
|
90
|
+
const edgeLabel = escapeMermaidLabel(condLabel === 'true' ? 'Approve' : condLabel === 'false' ? 'Reject' : condLabel);
|
|
91
91
|
lines.push(` ${src} -->|${edgeLabel}| ${safeNodeId(target)}`);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
@@ -106,10 +106,10 @@ function toMermaid(spec) {
|
|
|
106
106
|
}
|
|
107
107
|
if (node.type === 'approval') {
|
|
108
108
|
if (node.on_approve) {
|
|
109
|
-
lines.push(` ${src} -->|${escapeMermaidLabel('
|
|
109
|
+
lines.push(` ${src} -->|${escapeMermaidLabel('Approve')}| ${safeNodeId(node.on_approve)}`);
|
|
110
110
|
}
|
|
111
111
|
if (node.on_reject) {
|
|
112
|
-
lines.push(` ${src} -->|${escapeMermaidLabel('
|
|
112
|
+
lines.push(` ${src} -->|${escapeMermaidLabel('Reject')}| ${safeNodeId(node.on_reject)}`);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
}
|
package/dist/src/mermaid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mermaid.js","sourceRoot":"","sources":["../../src/mermaid.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mermaid.js","sourceRoot":"","sources":["../../src/mermaid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { RunExecution } from './types.js';
|
|
2
|
+
export type WorkflowParentTaskStatus = 'pending' | 'running' | 'success' | 'failed';
|
|
3
|
+
export type WorkflowParentTaskKind = 'workflow_card' | 'workflow_ui_instance';
|
|
4
|
+
export interface WorkflowParentTaskLookup {
|
|
5
|
+
workspaceId: string;
|
|
6
|
+
workflowRunId: string;
|
|
7
|
+
kind: WorkflowParentTaskKind;
|
|
8
|
+
}
|
|
9
|
+
export interface WorkflowParentLifecycle {
|
|
10
|
+
status: WorkflowParentTaskStatus;
|
|
11
|
+
error: string | null;
|
|
12
|
+
completedAt: string | null;
|
|
13
|
+
durationMs: number | null;
|
|
14
|
+
}
|
|
15
|
+
export interface WorkflowParentLifecycleSnapshot {
|
|
16
|
+
status: string;
|
|
17
|
+
error: string | null;
|
|
18
|
+
completedAt: string | null;
|
|
19
|
+
durationMs: number | null;
|
|
20
|
+
}
|
|
21
|
+
export interface WorkflowParentLifecycleChange {
|
|
22
|
+
id: string;
|
|
23
|
+
kind: WorkflowParentTaskKind;
|
|
24
|
+
before: WorkflowParentLifecycleSnapshot;
|
|
25
|
+
after: WorkflowParentLifecycle;
|
|
26
|
+
reason: string;
|
|
27
|
+
}
|
|
28
|
+
export interface WorkflowParentTaskRow {
|
|
29
|
+
id: string;
|
|
30
|
+
agent_id: string;
|
|
31
|
+
thread_id: string | null;
|
|
32
|
+
workspace_id: string | null;
|
|
33
|
+
platform: string | null;
|
|
34
|
+
status: string;
|
|
35
|
+
error: string | null;
|
|
36
|
+
completed_at: string | null;
|
|
37
|
+
duration_ms: number | null;
|
|
38
|
+
started_at: string;
|
|
39
|
+
metadata: string | null;
|
|
40
|
+
}
|
|
41
|
+
export interface WorkflowParentTaskRepository {
|
|
42
|
+
findRunningWorkflowParentTasks(): WorkflowParentTaskRow[];
|
|
43
|
+
findWorkflowParentTask(opts: WorkflowParentTaskLookup): WorkflowParentTaskRow | undefined;
|
|
44
|
+
updateTaskLifecycle(opts: {
|
|
45
|
+
id: string;
|
|
46
|
+
status: WorkflowParentTaskStatus;
|
|
47
|
+
error: string | null;
|
|
48
|
+
completedAt: string | null;
|
|
49
|
+
durationMs: number | null;
|
|
50
|
+
workspaceId: string;
|
|
51
|
+
}): void;
|
|
52
|
+
}
|
|
53
|
+
export interface WorkflowParentPersistTaskRepository {
|
|
54
|
+
findWorkflowParentTask(opts: WorkflowParentTaskLookup): WorkflowParentTaskRow | undefined;
|
|
55
|
+
updateTaskLifecycle: WorkflowParentTaskRepository['updateTaskLifecycle'];
|
|
56
|
+
}
|
|
57
|
+
export interface SyncWorkflowParentTaskLifecycleOptions {
|
|
58
|
+
taskRepo: Pick<WorkflowParentPersistTaskRepository, 'updateTaskLifecycle'>;
|
|
59
|
+
row: WorkflowParentTaskRow;
|
|
60
|
+
run: RunExecution;
|
|
61
|
+
workspaceId: string;
|
|
62
|
+
kind: WorkflowParentTaskKind;
|
|
63
|
+
snapshotUpdatedAt?: string | null;
|
|
64
|
+
}
|
|
65
|
+
export interface WorkflowParentPersistSinkOptions {
|
|
66
|
+
taskRepo: WorkflowParentPersistTaskRepository;
|
|
67
|
+
workspaceId: string;
|
|
68
|
+
parentKinds?: readonly WorkflowParentTaskKind[];
|
|
69
|
+
}
|
|
70
|
+
export interface WorkflowParentPersistResult {
|
|
71
|
+
changedParentTaskIds: string[];
|
|
72
|
+
linkedAuditInstanceIds: string[];
|
|
73
|
+
}
|
|
74
|
+
export interface DeriveWorkflowParentLifecycleChangeOptions {
|
|
75
|
+
row: WorkflowParentTaskRow;
|
|
76
|
+
run: RunExecution;
|
|
77
|
+
workspaceId: string;
|
|
78
|
+
kind: WorkflowParentTaskKind;
|
|
79
|
+
snapshotUpdatedAt?: string | null;
|
|
80
|
+
}
|
|
81
|
+
export type WorkflowParentLifecycleDecisionStatus = 'ineligible' | 'unchanged' | 'stale-suppressed' | 'changed';
|
|
82
|
+
export interface WorkflowParentLifecycleDecision {
|
|
83
|
+
status: WorkflowParentLifecycleDecisionStatus;
|
|
84
|
+
change: WorkflowParentLifecycleChange | null;
|
|
85
|
+
linkedAuditInstanceId: string | null;
|
|
86
|
+
}
|
|
87
|
+
export interface PreviewWorkflowParentRepairOptions {
|
|
88
|
+
taskRepo: Pick<WorkflowParentPersistTaskRepository, 'findWorkflowParentTask'>;
|
|
89
|
+
run: RunExecution;
|
|
90
|
+
workspaceId: string;
|
|
91
|
+
parentKinds?: readonly WorkflowParentTaskKind[];
|
|
92
|
+
}
|
|
93
|
+
export interface WorkflowParentRepairPreview {
|
|
94
|
+
runId: string;
|
|
95
|
+
runStatus: NonNullable<RunExecution['status']>;
|
|
96
|
+
changes: WorkflowParentLifecycleChange[];
|
|
97
|
+
linkedAuditInstanceIds: string[];
|
|
98
|
+
}
|
|
99
|
+
export interface ReconcileWorkflowParentTasksOptions {
|
|
100
|
+
taskRepo: WorkflowParentTaskRepository;
|
|
101
|
+
resolveWorkspacePath: (workspaceId: string) => string | undefined;
|
|
102
|
+
loadRun: (workspacePath: string, workflowRunId: string) => RunExecution | null;
|
|
103
|
+
orphanGraceMs?: number;
|
|
104
|
+
nowMs?: number;
|
|
105
|
+
}
|
|
106
|
+
export interface WorkflowParentWorkspace {
|
|
107
|
+
workspaceId: string;
|
|
108
|
+
workspacePath: string;
|
|
109
|
+
}
|
|
110
|
+
export type WorkflowParentReconciliationSkipReason = 'no-marker' | 'no-workspace-id' | 'no-workspace-path' | 'run-missing' | 'not-stale' | 'ineligible' | 'suppressed';
|
|
111
|
+
export type WorkflowParentReconciliationSkipCounts = Partial<Record<WorkflowParentReconciliationSkipReason, number>>;
|
|
112
|
+
export interface ReconcileWorkflowParentRunFilesOptions {
|
|
113
|
+
taskRepo: WorkflowParentPersistTaskRepository;
|
|
114
|
+
workspaces: readonly WorkflowParentWorkspace[];
|
|
115
|
+
listRunIds: (workspacePath: string) => readonly string[];
|
|
116
|
+
readRun: (workspacePath: string, workflowRunId: string) => RunExecution | null;
|
|
117
|
+
listWorkflowParentTasks?: (workspaceId: string) => readonly WorkflowParentTaskRow[];
|
|
118
|
+
parentKinds?: readonly WorkflowParentTaskKind[];
|
|
119
|
+
}
|
|
120
|
+
export interface WorkflowParentReconciliationResult {
|
|
121
|
+
aligned: number;
|
|
122
|
+
orphaned: number;
|
|
123
|
+
skipped: number;
|
|
124
|
+
scanned?: number;
|
|
125
|
+
skippedBy?: WorkflowParentReconciliationSkipCounts;
|
|
126
|
+
runFilesScanned?: number;
|
|
127
|
+
}
|
|
128
|
+
export declare const WORKFLOW_PARENT_ORPHAN_GRACE_MS: number;
|
|
129
|
+
export declare const WORKFLOW_PARENT_ORPHAN_ERROR = "Workflow run file missing after grace period (orphaned workflow task)";
|
|
130
|
+
export declare const WORKFLOW_PARENT_TASK_KINDS: readonly WorkflowParentTaskKind[];
|
|
131
|
+
export declare function deriveWorkflowParentLifecycle(run: RunExecution): WorkflowParentLifecycle | null;
|
|
132
|
+
export declare function deriveWorkflowParentLifecycleDecision(options: DeriveWorkflowParentLifecycleChangeOptions): WorkflowParentLifecycleDecision;
|
|
133
|
+
export declare function deriveWorkflowParentLifecycleChange(options: DeriveWorkflowParentLifecycleChangeOptions): WorkflowParentLifecycleChange | null;
|
|
134
|
+
export declare function syncWorkflowParentTaskLifecycle(options: SyncWorkflowParentTaskLifecycleOptions): boolean;
|
|
135
|
+
export declare function previewWorkflowParentRepair(options: PreviewWorkflowParentRepairOptions): WorkflowParentRepairPreview;
|
|
136
|
+
export declare function createWorkflowParentPersistSink(options: WorkflowParentPersistSinkOptions): (run: RunExecution) => WorkflowParentPersistResult;
|
|
137
|
+
export declare function reconcileWorkflowParentTasks(options: ReconcileWorkflowParentTasksOptions): WorkflowParentReconciliationResult;
|
|
138
|
+
export declare function reconcileWorkflowParentRunFiles(options: ReconcileWorkflowParentRunFilesOptions): WorkflowParentReconciliationResult;
|
|
139
|
+
//# sourceMappingURL=parent-task-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parent-task-sync.d.ts","sourceRoot":"","sources":["../../src/parent-task-sync.ts"],"names":[],"mappings":"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"}
|