@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.
Files changed (49) hide show
  1. package/SKILL.md +40 -4
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +268 -86
  4. package/dist/cli.js.map +1 -1
  5. package/dist/src/card-state.d.ts +20 -0
  6. package/dist/src/card-state.d.ts.map +1 -0
  7. package/dist/src/card-state.js +121 -0
  8. package/dist/src/card-state.js.map +1 -0
  9. package/dist/src/engine.d.ts +9 -2
  10. package/dist/src/engine.d.ts.map +1 -1
  11. package/dist/src/engine.js +70 -22
  12. package/dist/src/engine.js.map +1 -1
  13. package/dist/src/failure.d.ts +41 -0
  14. package/dist/src/failure.d.ts.map +1 -0
  15. package/dist/src/failure.js +122 -0
  16. package/dist/src/failure.js.map +1 -0
  17. package/dist/src/list-view.d.ts +22 -0
  18. package/dist/src/list-view.d.ts.map +1 -0
  19. package/dist/src/list-view.js +188 -0
  20. package/dist/src/list-view.js.map +1 -0
  21. package/dist/src/mermaid.js +3 -3
  22. package/dist/src/mermaid.js.map +1 -1
  23. package/dist/src/parent-task-sync.d.ts +139 -0
  24. package/dist/src/parent-task-sync.d.ts.map +1 -0
  25. package/dist/src/parent-task-sync.js +445 -0
  26. package/dist/src/parent-task-sync.js.map +1 -0
  27. package/dist/src/retry-policy.d.ts +38 -0
  28. package/dist/src/retry-policy.d.ts.map +1 -0
  29. package/dist/src/retry-policy.js +140 -0
  30. package/dist/src/retry-policy.js.map +1 -0
  31. package/dist/src/run-manager.d.ts +36 -2
  32. package/dist/src/run-manager.d.ts.map +1 -1
  33. package/dist/src/run-manager.js +1195 -234
  34. package/dist/src/run-manager.js.map +1 -1
  35. package/dist/src/types.d.ts +37 -3
  36. package/dist/src/types.d.ts.map +1 -1
  37. package/dist/src/types.js +2 -0
  38. package/dist/src/types.js.map +1 -1
  39. package/dist/src/utils/output-format.d.ts +12 -0
  40. package/dist/src/utils/output-format.d.ts.map +1 -1
  41. package/dist/src/utils/output-format.js +103 -5
  42. package/dist/src/utils/output-format.js.map +1 -1
  43. package/dist/src/workflow-persistence.d.ts +48 -0
  44. package/dist/src/workflow-persistence.d.ts.map +1 -0
  45. package/dist/src/workflow-persistence.js +224 -0
  46. package/dist/src/workflow-persistence.js.map +1 -0
  47. package/dist/workflow-schema.json +29 -4
  48. package/package.json +23 -4
  49. 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":"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"}
@@ -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' ? '통과' : condLabel === 'false' ? '반려' : condLabel);
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('승인')}| ${safeNodeId(node.on_approve)}`);
109
+ lines.push(` ${src} -->|${escapeMermaidLabel('Approve')}| ${safeNodeId(node.on_approve)}`);
110
110
  }
111
111
  if (node.on_reject) {
112
- lines.push(` ${src} -->|${escapeMermaidLabel('반려')}| ${safeNodeId(node.on_reject)}`);
112
+ lines.push(` ${src} -->|${escapeMermaidLabel('Reject')}| ${safeNodeId(node.on_reject)}`);
113
113
  }
114
114
  }
115
115
  }
@@ -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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"}