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.
Files changed (165) hide show
  1. package/README.md +161 -133
  2. package/dist/agents/runner.d.ts +2 -4
  3. package/dist/agents/runner.d.ts.map +1 -1
  4. package/dist/agents/runner.js +6 -35
  5. package/dist/agents/runner.js.map +1 -1
  6. package/dist/claude/client.d.ts +31 -6
  7. package/dist/claude/client.d.ts.map +1 -1
  8. package/dist/claude/client.js +78 -30
  9. package/dist/claude/client.js.map +1 -1
  10. package/dist/claude/index.d.ts +1 -1
  11. package/dist/claude/index.d.ts.map +1 -1
  12. package/dist/claude/index.js +1 -1
  13. package/dist/claude/index.js.map +1 -1
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +22 -6
  16. package/dist/cli.js.map +1 -1
  17. package/dist/codex/client.d.ts +0 -1
  18. package/dist/codex/client.d.ts.map +1 -1
  19. package/dist/codex/client.js +3 -6
  20. package/dist/codex/client.js.map +1 -1
  21. package/dist/commands/addTask.d.ts.map +1 -1
  22. package/dist/commands/addTask.js +17 -2
  23. package/dist/commands/addTask.js.map +1 -1
  24. package/dist/commands/eject.d.ts +13 -0
  25. package/dist/commands/eject.d.ts.map +1 -0
  26. package/dist/commands/eject.js +105 -0
  27. package/dist/commands/eject.js.map +1 -0
  28. package/dist/commands/help.d.ts.map +1 -1
  29. package/dist/commands/help.js +9 -2
  30. package/dist/commands/help.js.map +1 -1
  31. package/dist/commands/index.d.ts +1 -0
  32. package/dist/commands/index.d.ts.map +1 -1
  33. package/dist/commands/index.js +1 -0
  34. package/dist/commands/index.js.map +1 -1
  35. package/dist/commands/refreshBuiltin.d.ts +4 -4
  36. package/dist/commands/refreshBuiltin.d.ts.map +1 -1
  37. package/dist/commands/refreshBuiltin.js +13 -29
  38. package/dist/commands/refreshBuiltin.js.map +1 -1
  39. package/dist/commands/workflowExecution.d.ts.map +1 -1
  40. package/dist/commands/workflowExecution.js +85 -18
  41. package/dist/commands/workflowExecution.js.map +1 -1
  42. package/dist/config/agentLoader.d.ts +3 -1
  43. package/dist/config/agentLoader.d.ts.map +1 -1
  44. package/dist/config/agentLoader.js +17 -24
  45. package/dist/config/agentLoader.js.map +1 -1
  46. package/dist/config/globalConfig.d.ts +2 -0
  47. package/dist/config/globalConfig.d.ts.map +1 -1
  48. package/dist/config/globalConfig.js +14 -0
  49. package/dist/config/globalConfig.js.map +1 -1
  50. package/dist/config/initialization.d.ts +7 -5
  51. package/dist/config/initialization.d.ts.map +1 -1
  52. package/dist/config/initialization.js +23 -21
  53. package/dist/config/initialization.js.map +1 -1
  54. package/dist/config/paths.d.ts +5 -0
  55. package/dist/config/paths.d.ts.map +1 -1
  56. package/dist/config/paths.js +9 -0
  57. package/dist/config/paths.js.map +1 -1
  58. package/dist/config/workflowLoader.d.ts +6 -4
  59. package/dist/config/workflowLoader.d.ts.map +1 -1
  60. package/dist/config/workflowLoader.js +190 -35
  61. package/dist/config/workflowLoader.js.map +1 -1
  62. package/dist/github/issue.d.ts +72 -0
  63. package/dist/github/issue.d.ts.map +1 -0
  64. package/dist/github/issue.js +143 -0
  65. package/dist/github/issue.js.map +1 -0
  66. package/dist/models/index.d.ts +1 -1
  67. package/dist/models/index.d.ts.map +1 -1
  68. package/dist/models/index.js.map +1 -1
  69. package/dist/models/schemas.d.ts +164 -90
  70. package/dist/models/schemas.d.ts.map +1 -1
  71. package/dist/models/schemas.js +77 -51
  72. package/dist/models/schemas.js.map +1 -1
  73. package/dist/models/types.d.ts +51 -20
  74. package/dist/models/types.d.ts.map +1 -1
  75. package/dist/providers/claude.js +2 -2
  76. package/dist/providers/claude.js.map +1 -1
  77. package/dist/providers/codex.d.ts.map +1 -1
  78. package/dist/providers/codex.js +0 -2
  79. package/dist/providers/codex.js.map +1 -1
  80. package/dist/providers/index.d.ts +2 -1
  81. package/dist/providers/index.d.ts.map +1 -1
  82. package/dist/providers/index.js.map +1 -1
  83. package/dist/resources/index.d.ts +3 -22
  84. package/dist/resources/index.d.ts.map +1 -1
  85. package/dist/resources/index.js +3 -73
  86. package/dist/resources/index.js.map +1 -1
  87. package/dist/utils/session.d.ts +74 -10
  88. package/dist/utils/session.d.ts.map +1 -1
  89. package/dist/utils/session.js +101 -51
  90. package/dist/utils/session.js.map +1 -1
  91. package/dist/workflow/engine.d.ts +34 -1
  92. package/dist/workflow/engine.d.ts.map +1 -1
  93. package/dist/workflow/engine.js +228 -36
  94. package/dist/workflow/engine.js.map +1 -1
  95. package/dist/workflow/index.d.ts +1 -1
  96. package/dist/workflow/index.d.ts.map +1 -1
  97. package/dist/workflow/index.js +1 -1
  98. package/dist/workflow/index.js.map +1 -1
  99. package/dist/workflow/instruction-builder.d.ts +87 -18
  100. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  101. package/dist/workflow/instruction-builder.js +404 -57
  102. package/dist/workflow/instruction-builder.js.map +1 -1
  103. package/dist/workflow/parallel-logger.d.ts +76 -0
  104. package/dist/workflow/parallel-logger.d.ts.map +1 -0
  105. package/dist/workflow/parallel-logger.js +173 -0
  106. package/dist/workflow/parallel-logger.js.map +1 -0
  107. package/dist/workflow/phase-runner.d.ts +40 -0
  108. package/dist/workflow/phase-runner.d.ts.map +1 -0
  109. package/dist/workflow/phase-runner.js +69 -0
  110. package/dist/workflow/phase-runner.js.map +1 -0
  111. package/dist/workflow/rule-evaluator.d.ts +64 -0
  112. package/dist/workflow/rule-evaluator.d.ts.map +1 -0
  113. package/dist/workflow/rule-evaluator.js +178 -0
  114. package/dist/workflow/rule-evaluator.js.map +1 -0
  115. package/dist/workflow/rule-utils.d.ts +13 -0
  116. package/dist/workflow/rule-utils.d.ts.map +1 -0
  117. package/dist/workflow/rule-utils.js +17 -0
  118. package/dist/workflow/rule-utils.js.map +1 -0
  119. package/dist/workflow/transitions.d.ts +5 -13
  120. package/dist/workflow/transitions.d.ts.map +1 -1
  121. package/dist/workflow/transitions.js +8 -78
  122. package/dist/workflow/transitions.js.map +1 -1
  123. package/dist/workflow/types.d.ts +2 -1
  124. package/dist/workflow/types.d.ts.map +1 -1
  125. package/package.json +1 -1
  126. package/resources/global/en/agents/default/ai-antipattern-reviewer.md +71 -15
  127. package/resources/global/en/agents/default/{architect.md → architecture-reviewer.md} +144 -44
  128. package/resources/global/en/agents/default/coder.md +4 -4
  129. package/resources/global/en/agents/default/planner.md +16 -9
  130. package/resources/global/en/agents/default/{security.md → security-reviewer.md} +23 -5
  131. package/resources/global/en/agents/default/supervisor.md +13 -2
  132. package/resources/global/en/agents/expert/frontend-reviewer.md +0 -17
  133. package/resources/global/en/agents/expert/qa-reviewer.md +0 -16
  134. package/resources/global/en/agents/expert/security-reviewer.md +0 -16
  135. package/resources/global/en/agents/expert-cqrs/cqrs-es-reviewer.md +0 -17
  136. package/resources/global/en/agents/templates/coder.md +128 -0
  137. package/resources/global/en/agents/templates/planner.md +44 -0
  138. package/resources/global/en/agents/templates/reviewer.md +57 -0
  139. package/resources/global/en/agents/templates/supervisor.md +64 -0
  140. package/resources/global/en/workflows/default.yaml +232 -772
  141. package/resources/global/en/workflows/expert-cqrs.yaml +319 -698
  142. package/resources/global/en/workflows/expert.yaml +348 -723
  143. package/resources/global/en/workflows/magi.yaml +45 -52
  144. package/resources/global/en/workflows/research.yaml +18 -99
  145. package/resources/global/en/workflows/simple.yaml +152 -421
  146. package/resources/global/ja/agents/default/ai-antipattern-reviewer.md +71 -15
  147. package/resources/global/ja/agents/default/{architect.md → architecture-reviewer.md} +148 -48
  148. package/resources/global/ja/agents/default/coder.md +4 -4
  149. package/resources/global/ja/agents/default/planner.md +16 -9
  150. package/resources/global/ja/agents/default/{security.md → security-reviewer.md} +23 -5
  151. package/resources/global/ja/agents/default/supervisor.md +13 -2
  152. package/resources/global/ja/agents/expert/frontend-reviewer.md +0 -18
  153. package/resources/global/ja/agents/expert/qa-reviewer.md +0 -16
  154. package/resources/global/ja/agents/expert/security-reviewer.md +0 -16
  155. package/resources/global/ja/agents/expert-cqrs/cqrs-es-reviewer.md +0 -18
  156. package/resources/global/ja/agents/templates/coder.md +128 -0
  157. package/resources/global/ja/agents/templates/planner.md +44 -0
  158. package/resources/global/ja/agents/templates/reviewer.md +57 -0
  159. package/resources/global/ja/agents/templates/supervisor.md +64 -0
  160. package/resources/global/ja/workflows/default.yaml +227 -773
  161. package/resources/global/ja/workflows/expert-cqrs.yaml +309 -833
  162. package/resources/global/ja/workflows/expert.yaml +325 -712
  163. package/resources/global/ja/workflows/magi.yaml +45 -52
  164. package/resources/global/ja/workflows/research.yaml +18 -99
  165. 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":"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"}
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 resource setup.
5
- * Separated from paths.ts to avoid UI dependencies in utility modules.
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 language-specific resources need to be initialized.
10
- * Returns true if agents or workflows directories don't exist.
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
- * If agents/workflows don't exist, prompts user for language preference.
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;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAkBnD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C;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;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBpD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAIxD"}
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 resource setup.
5
- * Separated from paths.ts to avoid UI dependencies in utility modules.
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, getGlobalAgentsDir, getGlobalWorkflowsDir, getGlobalLogsDir, getProjectConfigDir, ensureDir, } from './paths.js';
11
- import { copyGlobalResourcesToDir, copyLanguageResourcesToDir, copyProjectResourcesToDir, } from '../resources/index.js';
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 language-specific resources need to be initialized.
15
- * Returns true if agents or workflows directories don't exist.
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
- const agentsDir = getGlobalAgentsDir();
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
- * If agents/workflows don't exist, prompts user for language preference.
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
- // Check if we need to set up language-specific resources
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 language-specific resources (agents, workflows, config.yaml)
67
- copyLanguageResourcesToDir(getGlobalConfigDir(), lang);
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
- else {
73
- // Just copy base global resources (won't overwrite existing)
74
- copyGlobalResourcesToDir(getGlobalConfigDir());
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":"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"}
1
+ {"version":3,"file":"initialization.js","sourceRoot":"","sources":["../../src/config/initialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,OAAO,GAAyC;QACpD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;QACjC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE;KACzC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,qFAAqF,EACrF,OAAO,EACP,gBAAgB,CACjB,CAAC;IAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,OAAO,GAAmD;QAC9D,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE;QACzC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;KACnC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,2DAA2D,EAC3D,OAAO,EACP,QAAQ,CACT,CAAC;IAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAChC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE9B,IAAI,kBAAkB,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAEjD,gDAAgD;QAChD,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAE7B,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,SAAS,sBAAsB,CAAC,IAAc;IAC5C,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAClD,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,yBAAyB,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC"}
@@ -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;AAMH,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,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"}
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"}
@@ -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');
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"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"}
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 from ~/.takt/workflows/ directory only.
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 from global directory.
16
- * Looks for ~/.takt/workflows/{name}.yaml
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 from global directory (~/.takt/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;;;;GAIG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,oBAAoB,CAAC;AAGvE,mCAAmC;AACnC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAItE;AA0ED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAQrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAQhE;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAuB9D;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAiBxC"}
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 from ~/.takt/workflows/ directory only.
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
- // No built-in workflows - all workflows must be defined in ~/.takt/workflows/
14
- void name;
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
- * Convert raw YAML workflow config to internal format.
50
- * Agent paths are resolved relative to the workflow directory.
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 normalizeWorkflowConfig(raw, workflowDir) {
53
- const parsed = WorkflowConfigRawSchema.parse(raw);
54
- const steps = parsed.steps.map((step) => ({
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: step.agent,
57
- agentDisplayName: step.agent_name || extractAgentDisplayName(step.agent),
58
- agentPath: resolveAgentPathForWorkflow(step.agent, workflowDir),
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
- instructionTemplate: step.instruction_template || step.instruction || '{task}',
64
- statusRulesPrompt: step.status_rules_prompt,
65
- transitions: step.transitions.map((t) => ({
66
- condition: t.condition,
67
- nextStep: t.next_step,
68
- })),
69
- passPreviousResponse: step.pass_previous_response,
70
- onNoStatus: step.on_no_status,
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 from global directory.
96
- * Looks for ~/.takt/workflows/{name}.yaml
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
- return null;
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
- // Global workflows (~/.takt/workflows/{name}.yaml)
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 from global directory (~/.takt/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
- if (existsSync(globalWorkflowsDir)) {
135
- for (const entry of readdirSync(globalWorkflowsDir)) {
136
- if (!entry.endsWith('.yaml') && !entry.endsWith('.yml'))
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
- const entryPath = join(globalWorkflowsDir, entry);
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":"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"}
1
+ {"version":3,"file":"workflowLoader.js","sourceRoot":"","sources":["../../src/config/workflowLoader.ts"],"names":[],"mappings":"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"}