task-pipeliner 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +17 -1
- package/README.md +17 -1
- package/dist/index.cjs +18 -16
- package/dist/index.js +18 -16
- package/dist/task-pipeliner-rs.node +0 -0
- package/package.json +17 -1
- package/dist/cli/index.d.ts +0 -19
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -305
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/prompts.d.ts +0 -48
- package/dist/cli/prompts.d.ts.map +0 -1
- package/dist/cli/prompts.js +0 -75
- package/dist/cli/prompts.js.map +0 -1
- package/dist/cli/ui.d.ts +0 -39
- package/dist/cli/ui.d.ts.map +0 -1
- package/dist/cli/ui.js +0 -84
- package/dist/cli/ui.js.map +0 -1
- package/dist/core/__tests__/actual-execution.test.d.ts +0 -2
- package/dist/core/__tests__/actual-execution.test.d.ts.map +0 -1
- package/dist/core/__tests__/actual-execution.test.js +0 -147
- package/dist/core/__tests__/actual-execution.test.js.map +0 -1
- package/dist/core/__tests__/base-dir.test.d.ts +0 -2
- package/dist/core/__tests__/base-dir.test.d.ts.map +0 -1
- package/dist/core/__tests__/base-dir.test.js +0 -146
- package/dist/core/__tests__/base-dir.test.js.map +0 -1
- package/dist/core/__tests__/built-code-execution.test.d.ts +0 -2
- package/dist/core/__tests__/built-code-execution.test.d.ts.map +0 -1
- package/dist/core/__tests__/built-code-execution.test.js +0 -48
- package/dist/core/__tests__/built-code-execution.test.js.map +0 -1
- package/dist/core/__tests__/choose-as-var-condition.test.d.ts +0 -2
- package/dist/core/__tests__/choose-as-var-condition.test.d.ts.map +0 -1
- package/dist/core/__tests__/choose-as-var-condition.test.js +0 -308
- package/dist/core/__tests__/choose-as-var-condition.test.js.map +0 -1
- package/dist/core/__tests__/cli-integration.test.d.ts +0 -2
- package/dist/core/__tests__/cli-integration.test.d.ts.map +0 -1
- package/dist/core/__tests__/cli-integration.test.js +0 -83
- package/dist/core/__tests__/cli-integration.test.js.map +0 -1
- package/dist/core/__tests__/comprehensive-basic-yaml.test.d.ts +0 -2
- package/dist/core/__tests__/comprehensive-basic-yaml.test.d.ts.map +0 -1
- package/dist/core/__tests__/comprehensive-basic-yaml.test.js +0 -114
- package/dist/core/__tests__/comprehensive-basic-yaml.test.js.map +0 -1
- package/dist/core/__tests__/condition-evaluator.test.d.ts +0 -2
- package/dist/core/__tests__/condition-evaluator.test.d.ts.map +0 -1
- package/dist/core/__tests__/condition-evaluator.test.js +0 -164
- package/dist/core/__tests__/condition-evaluator.test.js.map +0 -1
- package/dist/core/__tests__/debug-basic-yaml.test.d.ts +0 -2
- package/dist/core/__tests__/debug-basic-yaml.test.d.ts.map +0 -1
- package/dist/core/__tests__/debug-basic-yaml.test.js +0 -126
- package/dist/core/__tests__/debug-basic-yaml.test.js.map +0 -1
- package/dist/core/__tests__/example-files.test.d.ts +0 -2
- package/dist/core/__tests__/example-files.test.d.ts.map +0 -1
- package/dist/core/__tests__/example-files.test.js +0 -199
- package/dist/core/__tests__/example-files.test.js.map +0 -1
- package/dist/core/__tests__/executor-choice-integration.test.d.ts +0 -2
- package/dist/core/__tests__/executor-choice-integration.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-choice-integration.test.js +0 -169
- package/dist/core/__tests__/executor-choice-integration.test.js.map +0 -1
- package/dist/core/__tests__/executor-choice.test.d.ts +0 -2
- package/dist/core/__tests__/executor-choice.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-choice.test.js +0 -170
- package/dist/core/__tests__/executor-choice.test.js.map +0 -1
- package/dist/core/__tests__/executor-parallel.test.d.ts +0 -2
- package/dist/core/__tests__/executor-parallel.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-parallel.test.js +0 -129
- package/dist/core/__tests__/executor-parallel.test.js.map +0 -1
- package/dist/core/__tests__/executor-prompt.test.d.ts +0 -2
- package/dist/core/__tests__/executor-prompt.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-prompt.test.js +0 -147
- package/dist/core/__tests__/executor-prompt.test.js.map +0 -1
- package/dist/core/__tests__/executor-real-scenario.test.d.ts +0 -2
- package/dist/core/__tests__/executor-real-scenario.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-real-scenario.test.js +0 -169
- package/dist/core/__tests__/executor-real-scenario.test.js.map +0 -1
- package/dist/core/__tests__/file-condition.test.d.ts +0 -2
- package/dist/core/__tests__/file-condition.test.d.ts.map +0 -1
- package/dist/core/__tests__/file-condition.test.js +0 -172
- package/dist/core/__tests__/file-condition.test.js.map +0 -1
- package/dist/core/__tests__/final-verification.test.d.ts +0 -2
- package/dist/core/__tests__/final-verification.test.d.ts.map +0 -1
- package/dist/core/__tests__/final-verification.test.js +0 -56
- package/dist/core/__tests__/final-verification.test.js.map +0 -1
- package/dist/core/__tests__/parallel-when-condition.test.d.ts +0 -2
- package/dist/core/__tests__/parallel-when-condition.test.d.ts.map +0 -1
- package/dist/core/__tests__/parallel-when-condition.test.js +0 -155
- package/dist/core/__tests__/parallel-when-condition.test.js.map +0 -1
- package/dist/core/__tests__/parser.test.d.ts +0 -2
- package/dist/core/__tests__/parser.test.d.ts.map +0 -1
- package/dist/core/__tests__/parser.test.js +0 -91
- package/dist/core/__tests__/parser.test.js.map +0 -1
- package/dist/core/__tests__/real-inquirer-test.test.d.ts +0 -2
- package/dist/core/__tests__/real-inquirer-test.test.d.ts.map +0 -1
- package/dist/core/__tests__/real-inquirer-test.test.js +0 -20
- package/dist/core/__tests__/real-inquirer-test.test.js.map +0 -1
- package/dist/core/__tests__/reproduce-bug.test.d.ts +0 -2
- package/dist/core/__tests__/reproduce-bug.test.d.ts.map +0 -1
- package/dist/core/__tests__/reproduce-bug.test.js +0 -85
- package/dist/core/__tests__/reproduce-bug.test.js.map +0 -1
- package/dist/core/__tests__/timeout-retry.test.d.ts +0 -2
- package/dist/core/__tests__/timeout-retry.test.d.ts.map +0 -1
- package/dist/core/__tests__/timeout-retry.test.js +0 -184
- package/dist/core/__tests__/timeout-retry.test.js.map +0 -1
- package/dist/core/__tests__/workflow-validation.test.d.ts +0 -2
- package/dist/core/__tests__/workflow-validation.test.d.ts.map +0 -1
- package/dist/core/__tests__/workflow-validation.test.js +0 -116
- package/dist/core/__tests__/workflow-validation.test.js.map +0 -1
- package/dist/core/__tests__/workspace.test.d.ts +0 -2
- package/dist/core/__tests__/workspace.test.d.ts.map +0 -1
- package/dist/core/__tests__/workspace.test.js +0 -29
- package/dist/core/__tests__/workspace.test.js.map +0 -1
- package/dist/core/__tests__/yaml-integration.test.d.ts +0 -2
- package/dist/core/__tests__/yaml-integration.test.d.ts.map +0 -1
- package/dist/core/__tests__/yaml-integration.test.js +0 -114
- package/dist/core/__tests__/yaml-integration.test.js.map +0 -1
- package/dist/core/__tests__/yaml-scenarios.test.d.ts +0 -2
- package/dist/core/__tests__/yaml-scenarios.test.d.ts.map +0 -1
- package/dist/core/__tests__/yaml-scenarios.test.js +0 -197
- package/dist/core/__tests__/yaml-scenarios.test.js.map +0 -1
- package/dist/core/condition-evaluator.d.ts +0 -44
- package/dist/core/condition-evaluator.d.ts.map +0 -1
- package/dist/core/condition-evaluator.js +0 -121
- package/dist/core/condition-evaluator.js.map +0 -1
- package/dist/core/executor.d.ts +0 -172
- package/dist/core/executor.d.ts.map +0 -1
- package/dist/core/executor.js +0 -590
- package/dist/core/executor.js.map +0 -1
- package/dist/core/history.d.ts +0 -51
- package/dist/core/history.d.ts.map +0 -1
- package/dist/core/history.js +0 -57
- package/dist/core/history.js.map +0 -1
- package/dist/core/parser.d.ts +0 -41
- package/dist/core/parser.d.ts.map +0 -1
- package/dist/core/parser.js +0 -206
- package/dist/core/parser.js.map +0 -1
- package/dist/core/recorder.d.ts +0 -48
- package/dist/core/recorder.d.ts.map +0 -1
- package/dist/core/recorder.js +0 -56
- package/dist/core/recorder.js.map +0 -1
- package/dist/core/rust-task-runner.d.ts +0 -14
- package/dist/core/rust-task-runner.d.ts.map +0 -1
- package/dist/core/rust-task-runner.js +0 -34
- package/dist/core/rust-task-runner.js.map +0 -1
- package/dist/core/task-runner.d.ts +0 -63
- package/dist/core/task-runner.d.ts.map +0 -1
- package/dist/core/task-runner.js +0 -259
- package/dist/core/task-runner.js.map +0 -1
- package/dist/core/template.d.ts +0 -11
- package/dist/core/template.d.ts.map +0 -1
- package/dist/core/template.js +0 -36
- package/dist/core/template.js.map +0 -1
- package/dist/core/workflow-schema.d.ts +0 -31
- package/dist/core/workflow-schema.d.ts.map +0 -1
- package/dist/core/workflow-schema.js +0 -127
- package/dist/core/workflow-schema.js.map +0 -1
- package/dist/core/workspace.d.ts +0 -90
- package/dist/core/workspace.d.ts.map +0 -1
- package/dist/core/workspace.js +0 -143
- package/dist/core/workspace.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types/condition.d.ts +0 -62
- package/dist/types/condition.d.ts.map +0 -1
- package/dist/types/condition.js +0 -6
- package/dist/types/condition.js.map +0 -1
- package/dist/types/workflow.d.ts +0 -90
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/types/workflow.js +0 -2
- package/dist/types/workflow.js.map +0 -1
package/dist/core/history.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { mkdir, readdir, rm, writeFile } from 'fs/promises';
|
|
2
|
-
import { homedir } from 'os';
|
|
3
|
-
import { basename, join } from 'path';
|
|
4
|
-
import dayjs from 'dayjs';
|
|
5
|
-
/**
|
|
6
|
-
* Default directory for storing workflow execution history
|
|
7
|
-
* Located at ~/.pipeliner/workflow-history/
|
|
8
|
-
*/
|
|
9
|
-
export const WORKFLOW_HISTORY_DIR = join(homedir(), '.pipeliner', 'workflow-history');
|
|
10
|
-
/**
|
|
11
|
-
* WorkflowHistoryManager
|
|
12
|
-
*
|
|
13
|
-
* Manages workflow execution history storage and retrieval.
|
|
14
|
-
* Handles saving, listing, and clearing workflow execution records.
|
|
15
|
-
*/
|
|
16
|
-
export class WorkflowHistoryManager {
|
|
17
|
-
constructor() { }
|
|
18
|
-
/**
|
|
19
|
-
* Save history to file
|
|
20
|
-
* Creates the storage directory if it doesn't exist.
|
|
21
|
-
* Generates a timestamp-based filename with random hash.
|
|
22
|
-
*/
|
|
23
|
-
async saveHistory(history) {
|
|
24
|
-
// Create storage directory if it doesn't exist
|
|
25
|
-
await mkdir(WORKFLOW_HISTORY_DIR, { recursive: true });
|
|
26
|
-
// Generate filename with timestamp and random hash
|
|
27
|
-
const dateFormat = dayjs().format('YYYY-MM-DD_HH-mm-ss');
|
|
28
|
-
const hash = Math.random().toString(36).slice(2, 6);
|
|
29
|
-
const filepath = join(WORKFLOW_HISTORY_DIR, `workflow-${dateFormat}-${hash}.json`);
|
|
30
|
-
// Save history to file
|
|
31
|
-
await writeFile(filepath, JSON.stringify(history, null, 2), { encoding: 'utf8' });
|
|
32
|
-
return filepath;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Clear the storage directory
|
|
36
|
-
* Removes all workflow execution history files.
|
|
37
|
-
*/
|
|
38
|
-
async clearAllHistories() {
|
|
39
|
-
// Remove the storage directory and all its contents
|
|
40
|
-
await rm(WORKFLOW_HISTORY_DIR, { recursive: true, force: true });
|
|
41
|
-
}
|
|
42
|
-
async removeHistory(filename) {
|
|
43
|
-
// Remove the history file
|
|
44
|
-
await rm(join(WORKFLOW_HISTORY_DIR, filename), { force: true });
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Get all history names
|
|
48
|
-
* Returns an array of all history file names in the storage directory.
|
|
49
|
-
*/
|
|
50
|
-
async getHistoryNames() {
|
|
51
|
-
// Get all files in the storage directory
|
|
52
|
-
const files = await readdir(WORKFLOW_HISTORY_DIR);
|
|
53
|
-
const fileNames = files.map((file) => basename(file));
|
|
54
|
-
return fileNames;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=history.js.map
|
package/dist/core/history.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/core/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAoBtF;;;;;GAKG;AACH,MAAM,OAAO,sBAAsB;IACjC,gBAAe,CAAC;IAEhB;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,OAAgB;QACvC,+CAA+C;QAC/C,MAAM,KAAK,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,mDAAmD;QACnD,MAAM,UAAU,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,UAAU,IAAI,IAAI,OAAO,CAAC,CAAC;QAEnF,uBAAuB;QACvB,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB;QAC5B,oDAAoD;QACpD,MAAM,EAAE,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,QAAgB;QACzC,0BAA0B;QAC1B,MAAM,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,eAAe;QAC1B,yCAAyC;QACzC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
package/dist/core/parser.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow Parser
|
|
3
|
-
*
|
|
4
|
-
* Supports both YAML and JSON format workflow files.
|
|
5
|
-
* Uses polymorphism to handle different file formats.
|
|
6
|
-
* Validates parsed data using Zod schemas for type safety.
|
|
7
|
-
*/
|
|
8
|
-
import type { Workflow } from '../types/workflow';
|
|
9
|
-
/**
|
|
10
|
-
* Parser interface for workflow files
|
|
11
|
-
*/
|
|
12
|
-
export interface WorkflowParser {
|
|
13
|
-
/**
|
|
14
|
-
* Parse workflow content into Workflow object
|
|
15
|
-
*/
|
|
16
|
-
parse(content: string): Workflow;
|
|
17
|
-
/**
|
|
18
|
-
* Extract line numbers for each step (for error reporting)
|
|
19
|
-
* Returns a map: stepIndex -> lineNumber
|
|
20
|
-
*/
|
|
21
|
-
extractStepLineNumbers(content: string): Map<number, number>;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* YAML Parser
|
|
25
|
-
*/
|
|
26
|
-
export declare class YAMLParser implements WorkflowParser {
|
|
27
|
-
parse(content: string): Workflow;
|
|
28
|
-
extractStepLineNumbers(content: string): Map<number, number>;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* JSON Parser
|
|
32
|
-
*/
|
|
33
|
-
export declare class JSONParser implements WorkflowParser {
|
|
34
|
-
parse(content: string): Workflow;
|
|
35
|
-
extractStepLineNumbers(content: string): Map<number, number>;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Get appropriate parser based on file extension
|
|
39
|
-
*/
|
|
40
|
-
export declare function getParser(filePath: string): WorkflowParser;
|
|
41
|
-
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAEjC;;;OAGG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9D;AAwDD;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAqChC,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAqB7D;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAqChC,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CA0C7D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAc1D"}
|
package/dist/core/parser.js
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow Parser
|
|
3
|
-
*
|
|
4
|
-
* Supports both YAML and JSON format workflow files.
|
|
5
|
-
* Uses polymorphism to handle different file formats.
|
|
6
|
-
* Validates parsed data using Zod schemas for type safety.
|
|
7
|
-
*/
|
|
8
|
-
import { parse } from 'yaml';
|
|
9
|
-
import { ZodError } from 'zod';
|
|
10
|
-
import { validateWorkflow } from './workflow-schema';
|
|
11
|
-
/**
|
|
12
|
-
* Fix malformed step (YAML indentation issue)
|
|
13
|
-
* When choose/prompt is null but properties exist at step level
|
|
14
|
-
* This happens when YAML is incorrectly indented
|
|
15
|
-
*/
|
|
16
|
-
function fixMalformedStep(step) {
|
|
17
|
-
const stepAsRecord = step;
|
|
18
|
-
// Fix malformed choose structure
|
|
19
|
-
if ('choose' in stepAsRecord &&
|
|
20
|
-
(stepAsRecord.choose === null || stepAsRecord.choose === undefined) &&
|
|
21
|
-
'message' in stepAsRecord &&
|
|
22
|
-
'options' in stepAsRecord) {
|
|
23
|
-
return {
|
|
24
|
-
choose: {
|
|
25
|
-
message: stepAsRecord.message,
|
|
26
|
-
options: stepAsRecord.options,
|
|
27
|
-
as: stepAsRecord.as,
|
|
28
|
-
},
|
|
29
|
-
when: stepAsRecord.when,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
// Fix malformed prompt structure
|
|
33
|
-
if ('prompt' in stepAsRecord &&
|
|
34
|
-
(stepAsRecord.prompt === null || stepAsRecord.prompt === undefined) &&
|
|
35
|
-
'message' in stepAsRecord &&
|
|
36
|
-
'as' in stepAsRecord) {
|
|
37
|
-
return {
|
|
38
|
-
prompt: {
|
|
39
|
-
message: stepAsRecord.message,
|
|
40
|
-
as: stepAsRecord.as,
|
|
41
|
-
default: stepAsRecord.default,
|
|
42
|
-
validate: stepAsRecord.validate,
|
|
43
|
-
},
|
|
44
|
-
when: stepAsRecord.when,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
// Fix malformed parallel steps
|
|
48
|
-
if ('parallel' in stepAsRecord && Array.isArray(stepAsRecord.parallel)) {
|
|
49
|
-
return {
|
|
50
|
-
...stepAsRecord,
|
|
51
|
-
parallel: stepAsRecord.parallel.map((subStep) => fixMalformedStep(subStep)),
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
return step;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* YAML Parser
|
|
58
|
-
*/
|
|
59
|
-
export class YAMLParser {
|
|
60
|
-
parse(content) {
|
|
61
|
-
let parsed;
|
|
62
|
-
try {
|
|
63
|
-
parsed = parse(content);
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
throw new Error(`Invalid YAML format: ${error instanceof Error ? error.message : String(error)}`);
|
|
67
|
-
}
|
|
68
|
-
// Fix malformed steps before validation
|
|
69
|
-
if (parsed && typeof parsed === 'object' && 'steps' in parsed) {
|
|
70
|
-
const workflow = parsed;
|
|
71
|
-
if (Array.isArray(workflow.steps)) {
|
|
72
|
-
workflow.steps = workflow.steps.map((step) => fixMalformedStep(step));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Validate using Zod schema
|
|
76
|
-
try {
|
|
77
|
-
const validated = validateWorkflow(parsed);
|
|
78
|
-
return validated;
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
if (error instanceof ZodError) {
|
|
82
|
-
// Zod validation error
|
|
83
|
-
const issues = error.issues
|
|
84
|
-
.map((issue) => {
|
|
85
|
-
const path = issue.path.length > 0 ? ` at ${issue.path.join('.')}` : '';
|
|
86
|
-
return ` - ${issue.message}${path}`;
|
|
87
|
-
})
|
|
88
|
-
.join('\n');
|
|
89
|
-
throw new Error(`Invalid workflow structure:\n${issues}`);
|
|
90
|
-
}
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
extractStepLineNumbers(content) {
|
|
95
|
-
const lineNumbers = new Map();
|
|
96
|
-
const lines = content.split('\n');
|
|
97
|
-
let stepIndex = 0;
|
|
98
|
-
let inSteps = false; // Track if we're inside the "steps:" section
|
|
99
|
-
for (let i = 0; i < lines.length; i++) {
|
|
100
|
-
const trimmed = lines[i].trim();
|
|
101
|
-
// Found the "steps:" section
|
|
102
|
-
if (trimmed === 'steps:' || trimmed.startsWith('steps:')) {
|
|
103
|
-
inSteps = true;
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
// Found a step (line starting with "-")
|
|
107
|
-
if (inSteps && trimmed.startsWith('-')) {
|
|
108
|
-
lineNumbers.set(stepIndex++, i + 1); // i+1 because line numbers are 1-based
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return lineNumbers;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* JSON Parser
|
|
116
|
-
*/
|
|
117
|
-
export class JSONParser {
|
|
118
|
-
parse(content) {
|
|
119
|
-
let parsed;
|
|
120
|
-
try {
|
|
121
|
-
parsed = JSON.parse(content);
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
throw new Error(`Invalid JSON format: ${error instanceof Error ? error.message : String(error)}`);
|
|
125
|
-
}
|
|
126
|
-
// Fix malformed steps before validation
|
|
127
|
-
if (parsed && typeof parsed === 'object' && 'steps' in parsed) {
|
|
128
|
-
const workflow = parsed;
|
|
129
|
-
if (Array.isArray(workflow.steps)) {
|
|
130
|
-
workflow.steps = workflow.steps.map((step) => fixMalformedStep(step));
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
// Validate using Zod schema
|
|
134
|
-
try {
|
|
135
|
-
const validated = validateWorkflow(parsed);
|
|
136
|
-
return validated;
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
if (error instanceof ZodError) {
|
|
140
|
-
// Zod validation error
|
|
141
|
-
const issues = error.issues
|
|
142
|
-
.map((issue) => {
|
|
143
|
-
const path = issue.path.length > 0 ? ` at ${issue.path.join('.')}` : '';
|
|
144
|
-
return ` - ${issue.message}${path}`;
|
|
145
|
-
})
|
|
146
|
-
.join('\n');
|
|
147
|
-
throw new Error(`Invalid workflow structure:\n${issues}`);
|
|
148
|
-
}
|
|
149
|
-
throw error;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
extractStepLineNumbers(content) {
|
|
153
|
-
const lineNumbers = new Map();
|
|
154
|
-
const lines = content.split('\n');
|
|
155
|
-
let stepIndex = 0;
|
|
156
|
-
let inSteps = false;
|
|
157
|
-
let inStepsArray = false;
|
|
158
|
-
for (let i = 0; i < lines.length; i++) {
|
|
159
|
-
const line = lines[i];
|
|
160
|
-
const trimmed = line.trim();
|
|
161
|
-
// Found "steps" property
|
|
162
|
-
if (trimmed.startsWith('"steps"') || trimmed.startsWith("'steps'")) {
|
|
163
|
-
inSteps = true;
|
|
164
|
-
// Check if it's an array start on the same line
|
|
165
|
-
if (trimmed.includes('[')) {
|
|
166
|
-
inStepsArray = true;
|
|
167
|
-
}
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
// Found array start after "steps"
|
|
171
|
-
if (inSteps && trimmed === '[') {
|
|
172
|
-
inStepsArray = true;
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
// Found array end
|
|
176
|
-
if (inStepsArray && trimmed === ']') {
|
|
177
|
-
inStepsArray = false;
|
|
178
|
-
inSteps = false;
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
// Found a step object (starts with "{" and we're in steps array)
|
|
182
|
-
if (inStepsArray && trimmed.startsWith('{')) {
|
|
183
|
-
lineNumbers.set(stepIndex++, i + 1);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return lineNumbers;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Get appropriate parser based on file extension
|
|
191
|
-
*/
|
|
192
|
-
export function getParser(filePath) {
|
|
193
|
-
const ext = filePath.toLowerCase().split('.').pop();
|
|
194
|
-
switch (ext) {
|
|
195
|
-
case 'yaml':
|
|
196
|
-
case 'yml':
|
|
197
|
-
return new YAMLParser();
|
|
198
|
-
case 'json':
|
|
199
|
-
return new JSONParser();
|
|
200
|
-
default:
|
|
201
|
-
// Default to YAML if extension is not recognized
|
|
202
|
-
// This maintains backward compatibility
|
|
203
|
-
return new YAMLParser();
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
//# sourceMappingURL=parser.js.map
|
package/dist/core/parser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/core/recorder.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { Step, StepResult, StepStatus } from '../types/workflow';
|
|
2
|
-
import { ExecutionContext } from './executor';
|
|
3
|
-
/**
|
|
4
|
-
* Interface for recording workflow step execution
|
|
5
|
-
*/
|
|
6
|
-
export interface Recorder {
|
|
7
|
-
/**
|
|
8
|
-
* Record the start of a step execution (initial timestamp for duration calculation)
|
|
9
|
-
*/
|
|
10
|
-
recordStart(): void;
|
|
11
|
-
/**
|
|
12
|
-
* Record a step execution with its result and status
|
|
13
|
-
*/
|
|
14
|
-
recordEnd(step: Step, context: ExecutionContext, output: StepResult, status: StepStatus): void;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* WorkflowRecorder
|
|
18
|
-
*
|
|
19
|
-
* Records workflow execution history and saves it to disk.
|
|
20
|
-
* Stores execution records in ~/.pipeliner/workflow-history/ directory.
|
|
21
|
-
*/
|
|
22
|
-
declare class WorkflowRecorder implements Recorder {
|
|
23
|
-
private records;
|
|
24
|
-
private initialTimestamp;
|
|
25
|
-
private recordStartTimestamp;
|
|
26
|
-
constructor();
|
|
27
|
-
recordStart(): void;
|
|
28
|
-
/**
|
|
29
|
-
* Record a step execution
|
|
30
|
-
*/
|
|
31
|
-
recordEnd(step: Step, context: ExecutionContext, output: StepResult, status: StepStatus): void;
|
|
32
|
-
/**
|
|
33
|
-
* Reset the recorder, clearing all records and resetting the timestamp
|
|
34
|
-
*/
|
|
35
|
-
reset(): void;
|
|
36
|
-
/**
|
|
37
|
-
* Save execution records to a JSON file
|
|
38
|
-
* Creates the storage directory if it doesn't exist.
|
|
39
|
-
* Generates a timestamp-based filename with random hash if filename is not provided.
|
|
40
|
-
*/
|
|
41
|
-
save(): Promise<string>;
|
|
42
|
-
/**
|
|
43
|
-
* Get the duration since the recorder was initialized or last reset
|
|
44
|
-
*/
|
|
45
|
-
private getDuration;
|
|
46
|
-
}
|
|
47
|
-
export { WorkflowRecorder };
|
|
48
|
-
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/core/recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,WAAW,IAAI,IAAI,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;CAChG;AAED;;;;;GAKG;AACH,cAAM,gBAAiB,YAAW,QAAQ;IACxC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,oBAAoB,CAAc;;IAMnC,WAAW,IAAI,IAAI;IAI1B;;OAEG;IACI,SAAS,CACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,GACjB,IAAI;IAKP;;OAEG;IACI,KAAK;IAKZ;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAYpC;;OAEG;IACH,OAAO,CAAC,WAAW;CAGpB;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/core/recorder.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { WorkflowHistoryManager } from './history';
|
|
2
|
-
/**
|
|
3
|
-
* WorkflowRecorder
|
|
4
|
-
*
|
|
5
|
-
* Records workflow execution history and saves it to disk.
|
|
6
|
-
* Stores execution records in ~/.pipeliner/workflow-history/ directory.
|
|
7
|
-
*/
|
|
8
|
-
class WorkflowRecorder {
|
|
9
|
-
records = [];
|
|
10
|
-
initialTimestamp = Date.now();
|
|
11
|
-
recordStartTimestamp = Date.now();
|
|
12
|
-
constructor() {
|
|
13
|
-
this.records = [];
|
|
14
|
-
}
|
|
15
|
-
recordStart() {
|
|
16
|
-
this.recordStartTimestamp = Date.now();
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Record a step execution
|
|
20
|
-
*/
|
|
21
|
-
recordEnd(step, context, output, status) {
|
|
22
|
-
const duration = this.getDuration();
|
|
23
|
-
this.records.push({ step, context, output, duration, status });
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Reset the recorder, clearing all records and resetting the timestamp
|
|
27
|
-
*/
|
|
28
|
-
reset() {
|
|
29
|
-
this.records = [];
|
|
30
|
-
this.initialTimestamp = Date.now();
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Save execution records to a JSON file
|
|
34
|
-
* Creates the storage directory if it doesn't exist.
|
|
35
|
-
* Generates a timestamp-based filename with random hash if filename is not provided.
|
|
36
|
-
*/
|
|
37
|
-
async save() {
|
|
38
|
-
// Create storage directory if it doesn't exist
|
|
39
|
-
const historyManager = new WorkflowHistoryManager();
|
|
40
|
-
// Create history object
|
|
41
|
-
const resultJson = {
|
|
42
|
-
initialTimestamp: this.initialTimestamp,
|
|
43
|
-
records: this.records,
|
|
44
|
-
};
|
|
45
|
-
// Save history to file
|
|
46
|
-
return await historyManager.saveHistory(resultJson);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Get the duration since the recorder was initialized or last reset
|
|
50
|
-
*/
|
|
51
|
-
getDuration() {
|
|
52
|
-
return Date.now() - this.recordStartTimestamp;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
export { WorkflowRecorder };
|
|
56
|
-
//# sourceMappingURL=recorder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/core/recorder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAgBnD;;;;;GAKG;AACH,MAAM,gBAAgB;IACZ,OAAO,GAAa,EAAE,CAAC;IACvB,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE1C;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,SAAS,CACd,IAAU,EACV,OAAyB,EACzB,MAAkB,EAClB,MAAkB;QAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI;QACf,+CAA+C;QAC/C,MAAM,cAAc,GAAG,IAAI,sBAAsB,EAAE,CAAC;QACpD,wBAAwB;QACxB,MAAM,UAAU,GAAY;YAC1B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;QACF,uBAAuB;QACvB,OAAO,MAAM,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAChD,CAAC;CACF;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rust Task Runner Module
|
|
3
|
-
* Directly imports Rust NAPI module (auto-generated by @napi-rs/cli)
|
|
4
|
-
*/
|
|
5
|
-
interface RustTaskRunnerModule {
|
|
6
|
-
runTask(command: string): Promise<boolean>;
|
|
7
|
-
runTaskSync(command: string): boolean;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Load Rust module (dynamically require .node file in ESM)
|
|
11
|
-
*/
|
|
12
|
-
export declare function loadRustModule(): Promise<RustTaskRunnerModule | null>;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=rust-task-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rust-task-runner.d.ts","sourceRoot":"","sources":["../../src/core/rust-task-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,UAAU,oBAAoB;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC;AAID;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA4B3E"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rust Task Runner Module
|
|
3
|
-
* Directly imports Rust NAPI module (auto-generated by @napi-rs/cli)
|
|
4
|
-
*/
|
|
5
|
-
let rustModule = null;
|
|
6
|
-
/**
|
|
7
|
-
* Load Rust module (dynamically require .node file in ESM)
|
|
8
|
-
*/
|
|
9
|
-
export async function loadRustModule() {
|
|
10
|
-
if (rustModule) {
|
|
11
|
-
return rustModule;
|
|
12
|
-
}
|
|
13
|
-
try {
|
|
14
|
-
const path = await import('path');
|
|
15
|
-
const { fileURLToPath } = await import('url');
|
|
16
|
-
const { createRequire } = await import('module');
|
|
17
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
18
|
-
const __dirname = path.dirname(__filename);
|
|
19
|
-
const nodePath = path.resolve(__dirname, '../task-pipeliner-rs.node');
|
|
20
|
-
// Use require to load .node file in ESM
|
|
21
|
-
const require = createRequire(import.meta.url);
|
|
22
|
-
const module = require(nodePath);
|
|
23
|
-
if (module && 'runTask' in module) {
|
|
24
|
-
rustModule = module;
|
|
25
|
-
return rustModule;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (_error) {
|
|
29
|
-
// Return null if Rust module not found (use fallback)
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=rust-task-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rust-task-runner.js","sourceRoot":"","sources":["../../src/core/rust-task-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,IAAI,UAAU,GAAgC,IAAI,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;QAEtE,wCAAwC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YAClC,UAAU,GAAG,MAA8B,CAAC;YAC5C,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,sDAAsD;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
export interface TaskRunResult {
|
|
2
|
-
success: boolean;
|
|
3
|
-
stdout: string[];
|
|
4
|
-
stderr: string[];
|
|
5
|
-
}
|
|
6
|
-
export declare class TaskRunner {
|
|
7
|
-
/**
|
|
8
|
-
* Run a task command with box-style output streaming
|
|
9
|
-
*
|
|
10
|
-
* @param command - Shell command to execute
|
|
11
|
-
* @param stepIndex - Step index in workflow (for tracking)
|
|
12
|
-
* @param stepName - Display name for the step
|
|
13
|
-
* @param branchIndex - Branch index for parallel execution
|
|
14
|
-
* @param bufferOutput - If true, collect output instead of displaying immediately
|
|
15
|
-
* @param hasCondition - If true, step has a condition (affects border color)
|
|
16
|
-
* @param lineNumber - Line number in YAML file (for error reporting)
|
|
17
|
-
* @param fileName - YAML file name (for error reporting)
|
|
18
|
-
* @param cwd - Working directory for command execution
|
|
19
|
-
* @param timeout - Timeout in seconds (optional)
|
|
20
|
-
*/
|
|
21
|
-
run(command: string, stepIndex?: number, stepName?: string, branchIndex?: number, bufferOutput?: boolean, hasCondition?: boolean, lineNumber?: number, fileName?: string, cwd?: string, timeout?: number): Promise<boolean | TaskRunResult>;
|
|
22
|
-
/**
|
|
23
|
-
* Run command in buffered mode (collect all output for later display)
|
|
24
|
-
* Used for parallel execution where we need to collect output first
|
|
25
|
-
*/
|
|
26
|
-
private runBuffered;
|
|
27
|
-
/**
|
|
28
|
-
* Run command in real-time mode (output immediately as it happens)
|
|
29
|
-
*/
|
|
30
|
-
private runRealtime;
|
|
31
|
-
/**
|
|
32
|
-
* Parse command string into command and arguments
|
|
33
|
-
*/
|
|
34
|
-
private parseCommand;
|
|
35
|
-
/**
|
|
36
|
-
* Create spawn options with optional working directory
|
|
37
|
-
*/
|
|
38
|
-
private createSpawnOptions;
|
|
39
|
-
/**
|
|
40
|
-
* Process stream buffer and extract complete lines
|
|
41
|
-
*
|
|
42
|
-
* Command output comes in chunks, not necessarily line-by-line.
|
|
43
|
-
* This function:
|
|
44
|
-
* 1. Combines new chunk with existing buffer
|
|
45
|
-
* 2. Extracts all complete lines (ending with \n)
|
|
46
|
-
* 3. Keeps incomplete line in buffer for next chunk
|
|
47
|
-
*
|
|
48
|
-
* Example:
|
|
49
|
-
* - Buffer: "Hello "
|
|
50
|
-
* - Chunk: "World\nHow are"
|
|
51
|
-
* - Result: lines=["Hello World"], remaining="How are"
|
|
52
|
-
*/
|
|
53
|
-
private processStreamBuffer;
|
|
54
|
-
/**
|
|
55
|
-
* Format nested output (add | prefix for nested display)
|
|
56
|
-
*/
|
|
57
|
-
private formatNestedOutput;
|
|
58
|
-
/**
|
|
59
|
-
* Display buffered output in box format (for parallel execution, nested display)
|
|
60
|
-
*/
|
|
61
|
-
displayBufferedOutput(result: TaskRunResult, stepName: string, isNested?: boolean, lineNumber?: number, fileName?: string): void;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=task-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/core/task-runner.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAQD,qBAAa,UAAU;IACrB;;;;;;;;;;;;;OAaG;IACG,GAAG,CACP,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,GAAE,OAAe,EAC7B,YAAY,GAAE,OAAe,EAC7B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;IAmBnC;;;OAGG;YACW,WAAW;IA8EzB;;OAEG;YACW,WAAW;IAwFzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,qBAAqB,CACnB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAe,EACzB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI;CAmBR"}
|