takt 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +161 -133
- package/dist/agents/runner.d.ts +2 -4
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +6 -35
- package/dist/agents/runner.js.map +1 -1
- package/dist/claude/client.d.ts +31 -6
- package/dist/claude/client.d.ts.map +1 -1
- package/dist/claude/client.js +78 -30
- package/dist/claude/client.js.map +1 -1
- package/dist/claude/index.d.ts +1 -1
- package/dist/claude/index.d.ts.map +1 -1
- package/dist/claude/index.js +1 -1
- package/dist/claude/index.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +22 -6
- package/dist/cli.js.map +1 -1
- package/dist/codex/client.d.ts +0 -1
- package/dist/codex/client.d.ts.map +1 -1
- package/dist/codex/client.js +3 -6
- package/dist/codex/client.js.map +1 -1
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +17 -2
- package/dist/commands/addTask.js.map +1 -1
- package/dist/commands/eject.d.ts +13 -0
- package/dist/commands/eject.d.ts.map +1 -0
- package/dist/commands/eject.js +105 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +9 -2
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/refreshBuiltin.d.ts +4 -4
- package/dist/commands/refreshBuiltin.d.ts.map +1 -1
- package/dist/commands/refreshBuiltin.js +13 -29
- package/dist/commands/refreshBuiltin.js.map +1 -1
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +85 -18
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/agentLoader.d.ts +3 -1
- package/dist/config/agentLoader.d.ts.map +1 -1
- package/dist/config/agentLoader.js +17 -24
- package/dist/config/agentLoader.js.map +1 -1
- package/dist/config/globalConfig.d.ts +2 -0
- package/dist/config/globalConfig.d.ts.map +1 -1
- package/dist/config/globalConfig.js +14 -0
- package/dist/config/globalConfig.js.map +1 -1
- package/dist/config/initialization.d.ts +7 -5
- package/dist/config/initialization.d.ts.map +1 -1
- package/dist/config/initialization.js +23 -21
- package/dist/config/initialization.js.map +1 -1
- package/dist/config/paths.d.ts +5 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +9 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/workflowLoader.d.ts +6 -4
- package/dist/config/workflowLoader.d.ts.map +1 -1
- package/dist/config/workflowLoader.js +190 -35
- package/dist/config/workflowLoader.js.map +1 -1
- package/dist/github/issue.d.ts +72 -0
- package/dist/github/issue.d.ts.map +1 -0
- package/dist/github/issue.js +143 -0
- package/dist/github/issue.js.map +1 -0
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/schemas.d.ts +164 -90
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +77 -51
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +51 -20
- package/dist/models/types.d.ts.map +1 -1
- package/dist/providers/claude.js +2 -2
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/codex.d.ts.map +1 -1
- package/dist/providers/codex.js +0 -2
- package/dist/providers/codex.js.map +1 -1
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/resources/index.d.ts +3 -22
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +3 -73
- package/dist/resources/index.js.map +1 -1
- package/dist/utils/session.d.ts +74 -10
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +101 -51
- package/dist/utils/session.js.map +1 -1
- package/dist/workflow/engine.d.ts +34 -1
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +228 -36
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/index.d.ts +1 -1
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +1 -1
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +87 -18
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +404 -57
- package/dist/workflow/instruction-builder.js.map +1 -1
- package/dist/workflow/parallel-logger.d.ts +76 -0
- package/dist/workflow/parallel-logger.d.ts.map +1 -0
- package/dist/workflow/parallel-logger.js +173 -0
- package/dist/workflow/parallel-logger.js.map +1 -0
- package/dist/workflow/phase-runner.d.ts +40 -0
- package/dist/workflow/phase-runner.d.ts.map +1 -0
- package/dist/workflow/phase-runner.js +69 -0
- package/dist/workflow/phase-runner.js.map +1 -0
- package/dist/workflow/rule-evaluator.d.ts +64 -0
- package/dist/workflow/rule-evaluator.d.ts.map +1 -0
- package/dist/workflow/rule-evaluator.js +178 -0
- package/dist/workflow/rule-evaluator.js.map +1 -0
- package/dist/workflow/rule-utils.d.ts +13 -0
- package/dist/workflow/rule-utils.d.ts.map +1 -0
- package/dist/workflow/rule-utils.js +17 -0
- package/dist/workflow/rule-utils.js.map +1 -0
- package/dist/workflow/transitions.d.ts +5 -13
- package/dist/workflow/transitions.d.ts.map +1 -1
- package/dist/workflow/transitions.js +8 -78
- package/dist/workflow/transitions.js.map +1 -1
- package/dist/workflow/types.d.ts +2 -1
- package/dist/workflow/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/resources/global/en/agents/default/ai-antipattern-reviewer.md +71 -15
- package/resources/global/en/agents/default/{architect.md → architecture-reviewer.md} +144 -44
- package/resources/global/en/agents/default/coder.md +4 -4
- package/resources/global/en/agents/default/planner.md +16 -9
- package/resources/global/en/agents/default/{security.md → security-reviewer.md} +23 -5
- package/resources/global/en/agents/default/supervisor.md +13 -2
- package/resources/global/en/agents/expert/frontend-reviewer.md +0 -17
- package/resources/global/en/agents/expert/qa-reviewer.md +0 -16
- package/resources/global/en/agents/expert/security-reviewer.md +0 -16
- package/resources/global/en/agents/expert-cqrs/cqrs-es-reviewer.md +0 -17
- package/resources/global/en/agents/templates/coder.md +128 -0
- package/resources/global/en/agents/templates/planner.md +44 -0
- package/resources/global/en/agents/templates/reviewer.md +57 -0
- package/resources/global/en/agents/templates/supervisor.md +64 -0
- package/resources/global/en/workflows/default.yaml +232 -772
- package/resources/global/en/workflows/expert-cqrs.yaml +319 -698
- package/resources/global/en/workflows/expert.yaml +348 -723
- package/resources/global/en/workflows/magi.yaml +45 -52
- package/resources/global/en/workflows/research.yaml +18 -99
- package/resources/global/en/workflows/simple.yaml +152 -421
- package/resources/global/ja/agents/default/ai-antipattern-reviewer.md +71 -15
- package/resources/global/ja/agents/default/{architect.md → architecture-reviewer.md} +148 -48
- package/resources/global/ja/agents/default/coder.md +4 -4
- package/resources/global/ja/agents/default/planner.md +16 -9
- package/resources/global/ja/agents/default/{security.md → security-reviewer.md} +23 -5
- package/resources/global/ja/agents/default/supervisor.md +13 -2
- package/resources/global/ja/agents/expert/frontend-reviewer.md +0 -18
- package/resources/global/ja/agents/expert/qa-reviewer.md +0 -16
- package/resources/global/ja/agents/expert/security-reviewer.md +0 -16
- package/resources/global/ja/agents/expert-cqrs/cqrs-es-reviewer.md +0 -18
- package/resources/global/ja/agents/templates/coder.md +128 -0
- package/resources/global/ja/agents/templates/planner.md +44 -0
- package/resources/global/ja/agents/templates/reviewer.md +57 -0
- package/resources/global/ja/agents/templates/supervisor.md +64 -0
- package/resources/global/ja/workflows/default.yaml +227 -773
- package/resources/global/ja/workflows/expert-cqrs.yaml +309 -833
- package/resources/global/ja/workflows/expert.yaml +325 -712
- package/resources/global/ja/workflows/magi.yaml +45 -52
- package/resources/global/ja/workflows/research.yaml +18 -99
- package/resources/global/ja/workflows/simple.yaml +145 -415
|
@@ -31,6 +31,7 @@ export function loadGlobalConfig() {
|
|
|
31
31
|
logFile: parsed.debug.log_file,
|
|
32
32
|
} : undefined,
|
|
33
33
|
worktreeDir: parsed.worktree_dir,
|
|
34
|
+
disabledBuiltins: parsed.disabled_builtins,
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
/** Save global configuration */
|
|
@@ -55,8 +56,21 @@ export function saveGlobalConfig(config) {
|
|
|
55
56
|
if (config.worktreeDir) {
|
|
56
57
|
raw.worktree_dir = config.worktreeDir;
|
|
57
58
|
}
|
|
59
|
+
if (config.disabledBuiltins && config.disabledBuiltins.length > 0) {
|
|
60
|
+
raw.disabled_builtins = config.disabledBuiltins;
|
|
61
|
+
}
|
|
58
62
|
writeFileSync(configPath, stringifyYaml(raw), 'utf-8');
|
|
59
63
|
}
|
|
64
|
+
/** Get list of disabled builtin names */
|
|
65
|
+
export function getDisabledBuiltins() {
|
|
66
|
+
try {
|
|
67
|
+
const config = loadGlobalConfig();
|
|
68
|
+
return config.disabledBuiltins ?? [];
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
60
74
|
/** Get current language setting */
|
|
61
75
|
export function getLanguage() {
|
|
62
76
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalConfig.js","sourceRoot":"","sources":["../../src/config/globalConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,gCAAgC;AAChC,MAAM,UAAU,gBAAgB;IAC9B,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,4BAA4B,UAAU,IAAI;YAC1C,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,kBAAkB,EAAE,MAAM,CAAC,mBAAmB;QAC9C,eAAe,EAAE,MAAM,CAAC,gBAAgB;QACxC,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;YAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;SAC/B,CAAC,CAAC,CAAC,SAAS;QACb,WAAW,EAAE,MAAM,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"globalConfig.js","sourceRoot":"","sources":["../../src/config/globalConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Initialization module for first-time setup
|
|
3
3
|
*
|
|
4
|
-
* Handles language selection and initial
|
|
5
|
-
*
|
|
4
|
+
* Handles language selection and initial config.yaml creation.
|
|
5
|
+
* Builtin agents/workflows are loaded via fallback from resources/
|
|
6
|
+
* and no longer copied to ~/.takt/ on setup.
|
|
6
7
|
*/
|
|
7
8
|
import type { Language } from '../models/types.js';
|
|
8
9
|
/**
|
|
9
|
-
* Check if
|
|
10
|
-
* Returns true if
|
|
10
|
+
* Check if initial setup is needed.
|
|
11
|
+
* Returns true if config.yaml doesn't exist yet.
|
|
11
12
|
*/
|
|
12
13
|
export declare function needsLanguageSetup(): boolean;
|
|
13
14
|
/**
|
|
@@ -23,7 +24,8 @@ export declare function promptLanguageSelection(): Promise<Language>;
|
|
|
23
24
|
export declare function promptProviderSelection(): Promise<'claude' | 'codex'>;
|
|
24
25
|
/**
|
|
25
26
|
* Initialize global takt directory structure with language selection.
|
|
26
|
-
*
|
|
27
|
+
* On first run, creates config.yaml from language template.
|
|
28
|
+
* Agents/workflows are NOT copied — they are loaded via builtin fallback.
|
|
27
29
|
*/
|
|
28
30
|
export declare function initGlobalDirs(): Promise<void>;
|
|
29
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialization.d.ts","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"initialization.d.ts","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAanD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAiBjE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,CAiB3E;AAED;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAcpD;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAIxD"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Initialization module for first-time setup
|
|
3
3
|
*
|
|
4
|
-
* Handles language selection and initial
|
|
5
|
-
*
|
|
4
|
+
* Handles language selection and initial config.yaml creation.
|
|
5
|
+
* Builtin agents/workflows are loaded via fallback from resources/
|
|
6
|
+
* and no longer copied to ~/.takt/ on setup.
|
|
6
7
|
*/
|
|
7
|
-
import { existsSync } from 'node:fs';
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
8
10
|
import { DEFAULT_LANGUAGE } from '../constants.js';
|
|
9
11
|
import { selectOptionWithDefault } from '../prompt/index.js';
|
|
10
|
-
import { getGlobalConfigDir,
|
|
11
|
-
import {
|
|
12
|
+
import { getGlobalConfigDir, getGlobalConfigPath, getGlobalLogsDir, getProjectConfigDir, ensureDir, } from './paths.js';
|
|
13
|
+
import { copyProjectResourcesToDir, getLanguageResourcesDir } from '../resources/index.js';
|
|
12
14
|
import { setLanguage, setProvider } from './globalConfig.js';
|
|
13
15
|
/**
|
|
14
|
-
* Check if
|
|
15
|
-
* Returns true if
|
|
16
|
+
* Check if initial setup is needed.
|
|
17
|
+
* Returns true if config.yaml doesn't exist yet.
|
|
16
18
|
*/
|
|
17
19
|
export function needsLanguageSetup() {
|
|
18
|
-
|
|
19
|
-
const workflowsDir = getGlobalWorkflowsDir();
|
|
20
|
-
return !existsSync(agentsDir) || !existsSync(workflowsDir);
|
|
20
|
+
return !existsSync(getGlobalConfigPath());
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Prompt user to select language for resources.
|
|
@@ -52,26 +52,28 @@ export async function promptProviderSelection() {
|
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Initialize global takt directory structure with language selection.
|
|
55
|
-
*
|
|
55
|
+
* On first run, creates config.yaml from language template.
|
|
56
|
+
* Agents/workflows are NOT copied — they are loaded via builtin fallback.
|
|
56
57
|
*/
|
|
57
58
|
export async function initGlobalDirs() {
|
|
58
59
|
ensureDir(getGlobalConfigDir());
|
|
59
60
|
ensureDir(getGlobalLogsDir());
|
|
60
|
-
|
|
61
|
-
const needsSetup = needsLanguageSetup();
|
|
62
|
-
if (needsSetup) {
|
|
63
|
-
// Ask user for language preference
|
|
61
|
+
if (needsLanguageSetup()) {
|
|
64
62
|
const lang = await promptLanguageSelection();
|
|
65
63
|
const provider = await promptProviderSelection();
|
|
66
|
-
// Copy
|
|
67
|
-
|
|
68
|
-
// Explicitly save the selected language (handles case where config.yaml existed)
|
|
64
|
+
// Copy only config.yaml from language resources
|
|
65
|
+
copyLanguageConfigYaml(lang);
|
|
69
66
|
setLanguage(lang);
|
|
70
67
|
setProvider(provider);
|
|
71
68
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
}
|
|
70
|
+
/** Copy config.yaml from language resources to ~/.takt/ (if not already present) */
|
|
71
|
+
function copyLanguageConfigYaml(lang) {
|
|
72
|
+
const langDir = getLanguageResourcesDir(lang);
|
|
73
|
+
const srcPath = join(langDir, 'config.yaml');
|
|
74
|
+
const destPath = getGlobalConfigPath();
|
|
75
|
+
if (existsSync(srcPath) && !existsSync(destPath)) {
|
|
76
|
+
writeFileSync(destPath, readFileSync(srcPath));
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialization.js","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"initialization.js","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"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"}
|
package/dist/config/paths.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* This module provides pure path utilities without UI dependencies.
|
|
5
5
|
* For initialization with language selection, use initialization.ts.
|
|
6
6
|
*/
|
|
7
|
+
import type { Language } from '../models/types.js';
|
|
7
8
|
/** Get takt global config directory (~/.takt) */
|
|
8
9
|
export declare function getGlobalConfigDir(): string;
|
|
9
10
|
/** Get takt global agents directory (~/.takt/agents) */
|
|
@@ -14,6 +15,10 @@ export declare function getGlobalWorkflowsDir(): string;
|
|
|
14
15
|
export declare function getGlobalLogsDir(): string;
|
|
15
16
|
/** Get takt global config file path */
|
|
16
17
|
export declare function getGlobalConfigPath(): string;
|
|
18
|
+
/** Get builtin workflows directory (resources/global/{lang}/workflows) */
|
|
19
|
+
export declare function getBuiltinWorkflowsDir(lang: Language): string;
|
|
20
|
+
/** Get builtin agents directory (resources/global/{lang}/agents) */
|
|
21
|
+
export declare function getBuiltinAgentsDir(lang: Language): string;
|
|
17
22
|
/** Get project takt config directory (.takt in project) */
|
|
18
23
|
export declare function getProjectConfigDir(projectDir: string): string;
|
|
19
24
|
/** Get project config file path */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,iDAAiD;AACjD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,8DAA8D;AAC9D,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAE7D;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAE1D;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,kCAAkC;AAClC,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,+CAA+C;AAC/C,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIxE;AAGD,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAElB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
|
package/dist/config/paths.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { homedir } from 'node:os';
|
|
8
8
|
import { join, resolve } from 'node:path';
|
|
9
9
|
import { existsSync, mkdirSync } from 'node:fs';
|
|
10
|
+
import { getLanguageResourcesDir } from '../resources/index.js';
|
|
10
11
|
/** Get takt global config directory (~/.takt) */
|
|
11
12
|
export function getGlobalConfigDir() {
|
|
12
13
|
return join(homedir(), '.takt');
|
|
@@ -27,6 +28,14 @@ export function getGlobalLogsDir() {
|
|
|
27
28
|
export function getGlobalConfigPath() {
|
|
28
29
|
return join(getGlobalConfigDir(), 'config.yaml');
|
|
29
30
|
}
|
|
31
|
+
/** Get builtin workflows directory (resources/global/{lang}/workflows) */
|
|
32
|
+
export function getBuiltinWorkflowsDir(lang) {
|
|
33
|
+
return join(getLanguageResourcesDir(lang), 'workflows');
|
|
34
|
+
}
|
|
35
|
+
/** Get builtin agents directory (resources/global/{lang}/agents) */
|
|
36
|
+
export function getBuiltinAgentsDir(lang) {
|
|
37
|
+
return join(getLanguageResourcesDir(lang), 'agents');
|
|
38
|
+
}
|
|
30
39
|
/** Get project takt config directory (.takt in project) */
|
|
31
40
|
export function getProjectConfigDir(projectDir) {
|
|
32
41
|
return join(resolve(projectDir), '.takt');
|
package/dist/config/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,iDAAiD;AACjD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,aAAa,CAAC,CAAC;AACnD,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;AAC9D,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,UAAkB;IAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjD,CAAC;AAED,qCAAqC;AACrC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GAEd,MAAM,oBAAoB,CAAC;AAE5B,iEAAiE;AACjE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAEjB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB;AAClB,oBAAoB;AACpB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow configuration loader
|
|
3
3
|
*
|
|
4
|
-
* Loads workflows
|
|
4
|
+
* Loads workflows with user → builtin fallback:
|
|
5
|
+
* 1. User workflows: ~/.takt/workflows/{name}.yaml
|
|
6
|
+
* 2. Builtin workflows: resources/global/{lang}/workflows/{name}.yaml
|
|
5
7
|
*/
|
|
6
8
|
import type { WorkflowConfig } from '../models/types.js';
|
|
7
9
|
/** Get builtin workflow by name */
|
|
@@ -12,12 +14,12 @@ export declare function getBuiltinWorkflow(name: string): WorkflowConfig | null;
|
|
|
12
14
|
*/
|
|
13
15
|
export declare function loadWorkflowFromFile(filePath: string): WorkflowConfig;
|
|
14
16
|
/**
|
|
15
|
-
* Load workflow by name
|
|
16
|
-
*
|
|
17
|
+
* Load workflow by name.
|
|
18
|
+
* Priority: user (~/.takt/workflows/) → builtin (resources/global/{lang}/workflows/)
|
|
17
19
|
*/
|
|
18
20
|
export declare function loadWorkflow(name: string): WorkflowConfig | null;
|
|
19
21
|
/** Load all workflows with descriptions (for switch command) */
|
|
20
22
|
export declare function loadAllWorkflows(): Map<string, WorkflowConfig>;
|
|
21
|
-
/** List available workflows
|
|
23
|
+
/** List available workflows (user + builtin, excluding disabled) */
|
|
22
24
|
export declare function listWorkflows(): string[];
|
|
23
25
|
//# sourceMappingURL=workflowLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowLoader.d.ts","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflowLoader.d.ts","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAgE,MAAM,oBAAoB,CAAC;AAIvH,mCAAmC;AACnC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAWtE;AAwMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAQrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAUhE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CA4C9D;AAED,oEAAoE;AACpE,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAcxC"}
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow configuration loader
|
|
3
3
|
*
|
|
4
|
-
* Loads workflows
|
|
4
|
+
* Loads workflows with user → builtin fallback:
|
|
5
|
+
* 1. User workflows: ~/.takt/workflows/{name}.yaml
|
|
6
|
+
* 2. Builtin workflows: resources/global/{lang}/workflows/{name}.yaml
|
|
5
7
|
*/
|
|
6
8
|
import { readFileSync, existsSync, readdirSync, statSync } from 'node:fs';
|
|
7
9
|
import { join, dirname, basename } from 'node:path';
|
|
8
10
|
import { parse as parseYaml } from 'yaml';
|
|
9
11
|
import { WorkflowConfigRawSchema } from '../models/schemas.js';
|
|
10
|
-
import { getGlobalWorkflowsDir } from './paths.js';
|
|
12
|
+
import { getGlobalWorkflowsDir, getBuiltinWorkflowsDir } from './paths.js';
|
|
13
|
+
import { getLanguage, getDisabledBuiltins } from './globalConfig.js';
|
|
11
14
|
/** Get builtin workflow by name */
|
|
12
15
|
export function getBuiltinWorkflow(name) {
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
const lang = getLanguage();
|
|
17
|
+
const disabled = getDisabledBuiltins();
|
|
18
|
+
if (disabled.includes(name))
|
|
19
|
+
return null;
|
|
20
|
+
const builtinDir = getBuiltinWorkflowsDir(lang);
|
|
21
|
+
const yamlPath = join(builtinDir, `${name}.yaml`);
|
|
22
|
+
if (existsSync(yamlPath)) {
|
|
23
|
+
return loadWorkflowFromFile(yamlPath);
|
|
24
|
+
}
|
|
15
25
|
return null;
|
|
16
26
|
}
|
|
17
27
|
/**
|
|
@@ -46,29 +56,138 @@ function extractAgentDisplayName(agentPath) {
|
|
|
46
56
|
return filename;
|
|
47
57
|
}
|
|
48
58
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
59
|
+
* Resolve a string value that may be a file path.
|
|
60
|
+
* If the value ends with .md and the file exists (resolved relative to workflowDir),
|
|
61
|
+
* read and return the file contents. Otherwise return the value as-is.
|
|
51
62
|
*/
|
|
52
|
-
function
|
|
53
|
-
|
|
54
|
-
|
|
63
|
+
function resolveContentPath(value, workflowDir) {
|
|
64
|
+
if (value == null)
|
|
65
|
+
return undefined;
|
|
66
|
+
if (value.endsWith('.md')) {
|
|
67
|
+
// Resolve path relative to workflow directory
|
|
68
|
+
let resolvedPath = value;
|
|
69
|
+
if (value.startsWith('./')) {
|
|
70
|
+
resolvedPath = join(workflowDir, value.slice(2));
|
|
71
|
+
}
|
|
72
|
+
else if (value.startsWith('~')) {
|
|
73
|
+
const homedir = process.env.HOME || process.env.USERPROFILE || '';
|
|
74
|
+
resolvedPath = join(homedir, value.slice(1));
|
|
75
|
+
}
|
|
76
|
+
else if (!value.startsWith('/')) {
|
|
77
|
+
resolvedPath = join(workflowDir, value);
|
|
78
|
+
}
|
|
79
|
+
if (existsSync(resolvedPath)) {
|
|
80
|
+
return readFileSync(resolvedPath, 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return value;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if a raw report value is the object form (has 'name' property).
|
|
87
|
+
*/
|
|
88
|
+
function isReportObject(raw) {
|
|
89
|
+
return typeof raw === 'object' && raw !== null && !Array.isArray(raw) && 'name' in raw;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Normalize the raw report field from YAML into internal format.
|
|
93
|
+
*
|
|
94
|
+
* YAML formats:
|
|
95
|
+
* report: "00-plan.md" → string (single file)
|
|
96
|
+
* report: → ReportConfig[] (multiple files)
|
|
97
|
+
* - Scope: 01-scope.md
|
|
98
|
+
* - Decisions: 02-decisions.md
|
|
99
|
+
* report: → ReportObjectConfig (object form)
|
|
100
|
+
* name: 00-plan.md
|
|
101
|
+
* order: ...
|
|
102
|
+
* format: ...
|
|
103
|
+
*
|
|
104
|
+
* Array items are parsed as single-key objects: [{Scope: "01-scope.md"}, ...]
|
|
105
|
+
*/
|
|
106
|
+
function normalizeReport(raw, workflowDir) {
|
|
107
|
+
if (raw == null)
|
|
108
|
+
return undefined;
|
|
109
|
+
if (typeof raw === 'string')
|
|
110
|
+
return raw;
|
|
111
|
+
if (isReportObject(raw)) {
|
|
112
|
+
return {
|
|
113
|
+
name: raw.name,
|
|
114
|
+
order: resolveContentPath(raw.order, workflowDir),
|
|
115
|
+
format: resolveContentPath(raw.format, workflowDir),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
// Convert [{Scope: "01-scope.md"}, ...] to [{label: "Scope", path: "01-scope.md"}, ...]
|
|
119
|
+
return raw.flatMap((entry) => Object.entries(entry).map(([label, path]) => ({ label, path })));
|
|
120
|
+
}
|
|
121
|
+
/** Regex to detect ai("...") condition expressions */
|
|
122
|
+
const AI_CONDITION_REGEX = /^ai\("(.+)"\)$/;
|
|
123
|
+
/** Regex to detect all("...")/any("...") aggregate condition expressions */
|
|
124
|
+
const AGGREGATE_CONDITION_REGEX = /^(all|any)\("(.+)"\)$/;
|
|
125
|
+
/**
|
|
126
|
+
* Parse a rule's condition for ai() and all()/any() expressions.
|
|
127
|
+
* - `ai("text")` → sets isAiCondition and aiConditionText
|
|
128
|
+
* - `all("text")` / `any("text")` → sets isAggregateCondition, aggregateType, aggregateConditionText
|
|
129
|
+
*/
|
|
130
|
+
function normalizeRule(r) {
|
|
131
|
+
const aiMatch = r.condition.match(AI_CONDITION_REGEX);
|
|
132
|
+
if (aiMatch?.[1]) {
|
|
133
|
+
return {
|
|
134
|
+
condition: r.condition,
|
|
135
|
+
next: r.next,
|
|
136
|
+
appendix: r.appendix,
|
|
137
|
+
isAiCondition: true,
|
|
138
|
+
aiConditionText: aiMatch[1],
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
const aggMatch = r.condition.match(AGGREGATE_CONDITION_REGEX);
|
|
142
|
+
if (aggMatch?.[1] && aggMatch[2]) {
|
|
143
|
+
return {
|
|
144
|
+
condition: r.condition,
|
|
145
|
+
next: r.next,
|
|
146
|
+
appendix: r.appendix,
|
|
147
|
+
isAggregateCondition: true,
|
|
148
|
+
aggregateType: aggMatch[1],
|
|
149
|
+
aggregateConditionText: aggMatch[2],
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
condition: r.condition,
|
|
154
|
+
next: r.next,
|
|
155
|
+
appendix: r.appendix,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Normalize a raw step into internal WorkflowStep format.
|
|
160
|
+
*/
|
|
161
|
+
function normalizeStepFromRaw(step, workflowDir) {
|
|
162
|
+
const rules = step.rules?.map(normalizeRule);
|
|
163
|
+
const agentSpec = step.agent ?? '';
|
|
164
|
+
const result = {
|
|
55
165
|
name: step.name,
|
|
56
|
-
agent:
|
|
57
|
-
agentDisplayName: step.agent_name || extractAgentDisplayName(step.
|
|
58
|
-
agentPath: resolveAgentPathForWorkflow(
|
|
166
|
+
agent: agentSpec,
|
|
167
|
+
agentDisplayName: step.agent_name || (agentSpec ? extractAgentDisplayName(agentSpec) : step.name),
|
|
168
|
+
agentPath: agentSpec ? resolveAgentPathForWorkflow(agentSpec, workflowDir) : undefined,
|
|
59
169
|
allowedTools: step.allowed_tools,
|
|
60
170
|
provider: step.provider,
|
|
61
171
|
model: step.model,
|
|
62
172
|
permissionMode: step.permission_mode,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
173
|
+
edit: step.edit,
|
|
174
|
+
instructionTemplate: resolveContentPath(step.instruction_template, workflowDir) || step.instruction || '{task}',
|
|
175
|
+
rules,
|
|
176
|
+
report: normalizeReport(step.report, workflowDir),
|
|
177
|
+
passPreviousResponse: step.pass_previous_response ?? true,
|
|
178
|
+
};
|
|
179
|
+
if (step.parallel && step.parallel.length > 0) {
|
|
180
|
+
result.parallel = step.parallel.map((sub) => normalizeStepFromRaw(sub, workflowDir));
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Convert raw YAML workflow config to internal format.
|
|
186
|
+
* Agent paths are resolved relative to the workflow directory.
|
|
187
|
+
*/
|
|
188
|
+
function normalizeWorkflowConfig(raw, workflowDir) {
|
|
189
|
+
const parsed = WorkflowConfigRawSchema.parse(raw);
|
|
190
|
+
const steps = parsed.steps.map((step) => normalizeStepFromRaw(step, workflowDir));
|
|
72
191
|
return {
|
|
73
192
|
name: parsed.name,
|
|
74
193
|
description: parsed.description,
|
|
@@ -92,21 +211,45 @@ export function loadWorkflowFromFile(filePath) {
|
|
|
92
211
|
return normalizeWorkflowConfig(raw, workflowDir);
|
|
93
212
|
}
|
|
94
213
|
/**
|
|
95
|
-
* Load workflow by name
|
|
96
|
-
*
|
|
214
|
+
* Load workflow by name.
|
|
215
|
+
* Priority: user (~/.takt/workflows/) → builtin (resources/global/{lang}/workflows/)
|
|
97
216
|
*/
|
|
98
217
|
export function loadWorkflow(name) {
|
|
218
|
+
// 1. User workflow
|
|
99
219
|
const globalWorkflowsDir = getGlobalWorkflowsDir();
|
|
100
220
|
const workflowYamlPath = join(globalWorkflowsDir, `${name}.yaml`);
|
|
101
221
|
if (existsSync(workflowYamlPath)) {
|
|
102
222
|
return loadWorkflowFromFile(workflowYamlPath);
|
|
103
223
|
}
|
|
104
|
-
|
|
224
|
+
// 2. Builtin fallback
|
|
225
|
+
return getBuiltinWorkflow(name);
|
|
105
226
|
}
|
|
106
227
|
/** Load all workflows with descriptions (for switch command) */
|
|
107
228
|
export function loadAllWorkflows() {
|
|
108
229
|
const workflows = new Map();
|
|
109
|
-
|
|
230
|
+
const disabled = getDisabledBuiltins();
|
|
231
|
+
// 1. Builtin workflows (lower priority — will be overridden by user)
|
|
232
|
+
const lang = getLanguage();
|
|
233
|
+
const builtinDir = getBuiltinWorkflowsDir(lang);
|
|
234
|
+
if (existsSync(builtinDir)) {
|
|
235
|
+
for (const entry of readdirSync(builtinDir)) {
|
|
236
|
+
if (!entry.endsWith('.yaml') && !entry.endsWith('.yml'))
|
|
237
|
+
continue;
|
|
238
|
+
const entryPath = join(builtinDir, entry);
|
|
239
|
+
if (statSync(entryPath).isFile()) {
|
|
240
|
+
const workflowName = entry.replace(/\.ya?ml$/, '');
|
|
241
|
+
if (disabled.includes(workflowName))
|
|
242
|
+
continue;
|
|
243
|
+
try {
|
|
244
|
+
workflows.set(workflowName, loadWorkflowFromFile(entryPath));
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
// Skip invalid workflows
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// 2. User workflows (higher priority — overrides builtins)
|
|
110
253
|
const globalWorkflowsDir = getGlobalWorkflowsDir();
|
|
111
254
|
if (existsSync(globalWorkflowsDir)) {
|
|
112
255
|
for (const entry of readdirSync(globalWorkflowsDir)) {
|
|
@@ -127,21 +270,33 @@ export function loadAllWorkflows() {
|
|
|
127
270
|
}
|
|
128
271
|
return workflows;
|
|
129
272
|
}
|
|
130
|
-
/** List available workflows
|
|
273
|
+
/** List available workflows (user + builtin, excluding disabled) */
|
|
131
274
|
export function listWorkflows() {
|
|
132
275
|
const workflows = new Set();
|
|
276
|
+
const disabled = getDisabledBuiltins();
|
|
277
|
+
// 1. Builtin workflows
|
|
278
|
+
const lang = getLanguage();
|
|
279
|
+
const builtinDir = getBuiltinWorkflowsDir(lang);
|
|
280
|
+
scanWorkflowDir(builtinDir, workflows, disabled);
|
|
281
|
+
// 2. User workflows
|
|
133
282
|
const globalWorkflowsDir = getGlobalWorkflowsDir();
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
283
|
+
scanWorkflowDir(globalWorkflowsDir, workflows);
|
|
284
|
+
return Array.from(workflows).sort();
|
|
285
|
+
}
|
|
286
|
+
/** Scan a directory for .yaml/.yml files and add names to the set */
|
|
287
|
+
function scanWorkflowDir(dir, target, disabled) {
|
|
288
|
+
if (!existsSync(dir))
|
|
289
|
+
return;
|
|
290
|
+
for (const entry of readdirSync(dir)) {
|
|
291
|
+
if (!entry.endsWith('.yaml') && !entry.endsWith('.yml'))
|
|
292
|
+
continue;
|
|
293
|
+
const entryPath = join(dir, entry);
|
|
294
|
+
if (statSync(entryPath).isFile()) {
|
|
295
|
+
const workflowName = entry.replace(/\.ya?ml$/, '');
|
|
296
|
+
if (disabled?.includes(workflowName))
|
|
137
297
|
continue;
|
|
138
|
-
|
|
139
|
-
if (statSync(entryPath).isFile()) {
|
|
140
|
-
const workflowName = entry.replace(/\.ya?ml$/, '');
|
|
141
|
-
workflows.add(workflowName);
|
|
142
|
-
}
|
|
298
|
+
target.add(workflowName);
|
|
143
299
|
}
|
|
144
300
|
}
|
|
145
|
-
return Array.from(workflows).sort();
|
|
146
301
|
}
|
|
147
302
|
//# sourceMappingURL=workflowLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowLoader.js","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"workflowLoader.js","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"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"}
|