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
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* /eject command implementation
|
|
3
|
+
*
|
|
4
|
+
* Copies a builtin workflow (and its agents) to ~/.takt/ for user customization.
|
|
5
|
+
* Once ejected, the user copy takes priority over the builtin version.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readdirSync, statSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
8
|
+
import { join, dirname } from 'node:path';
|
|
9
|
+
import { getGlobalWorkflowsDir, getGlobalAgentsDir, getBuiltinWorkflowsDir, getBuiltinAgentsDir } from '../config/paths.js';
|
|
10
|
+
import { getLanguage } from '../config/globalConfig.js';
|
|
11
|
+
import { header, success, info, warn, error } from '../utils/ui.js';
|
|
12
|
+
/**
|
|
13
|
+
* Eject a builtin workflow to user space for customization.
|
|
14
|
+
* Copies the workflow YAML and related agent .md files to ~/.takt/.
|
|
15
|
+
* Agent paths in the ejected workflow are rewritten from ../agents/ to ~/.takt/agents/.
|
|
16
|
+
*/
|
|
17
|
+
export async function ejectBuiltin(name) {
|
|
18
|
+
header('Eject Builtin');
|
|
19
|
+
const lang = getLanguage();
|
|
20
|
+
const builtinWorkflowsDir = getBuiltinWorkflowsDir(lang);
|
|
21
|
+
if (!name) {
|
|
22
|
+
// List available builtins
|
|
23
|
+
listAvailableBuiltins(builtinWorkflowsDir);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const builtinPath = join(builtinWorkflowsDir, `${name}.yaml`);
|
|
27
|
+
if (!existsSync(builtinPath)) {
|
|
28
|
+
error(`Builtin workflow not found: ${name}`);
|
|
29
|
+
info('Run "takt /eject" to see available builtins.');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const userWorkflowsDir = getGlobalWorkflowsDir();
|
|
33
|
+
const userAgentsDir = getGlobalAgentsDir();
|
|
34
|
+
const builtinAgentsDir = getBuiltinAgentsDir(lang);
|
|
35
|
+
// Copy workflow YAML (rewrite agent paths)
|
|
36
|
+
const workflowDest = join(userWorkflowsDir, `${name}.yaml`);
|
|
37
|
+
if (existsSync(workflowDest)) {
|
|
38
|
+
warn(`User workflow already exists: ${workflowDest}`);
|
|
39
|
+
warn('Skipping workflow copy (user version takes priority).');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
mkdirSync(dirname(workflowDest), { recursive: true });
|
|
43
|
+
const content = readFileSync(builtinPath, 'utf-8');
|
|
44
|
+
// Rewrite relative agent paths to ~/.takt/agents/
|
|
45
|
+
const rewritten = content.replace(/agent:\s*\.\.\/agents\//g, 'agent: ~/.takt/agents/');
|
|
46
|
+
writeFileSync(workflowDest, rewritten, 'utf-8');
|
|
47
|
+
success(`Ejected workflow: ${workflowDest}`);
|
|
48
|
+
}
|
|
49
|
+
// Copy related agent files
|
|
50
|
+
const agentPaths = extractAgentRelativePaths(builtinPath);
|
|
51
|
+
let copiedAgents = 0;
|
|
52
|
+
for (const relPath of agentPaths) {
|
|
53
|
+
const srcPath = join(builtinAgentsDir, relPath);
|
|
54
|
+
const destPath = join(userAgentsDir, relPath);
|
|
55
|
+
if (!existsSync(srcPath))
|
|
56
|
+
continue;
|
|
57
|
+
if (existsSync(destPath)) {
|
|
58
|
+
info(` Agent already exists: ${destPath}`);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
mkdirSync(dirname(destPath), { recursive: true });
|
|
62
|
+
writeFileSync(destPath, readFileSync(srcPath));
|
|
63
|
+
info(` ✓ ${destPath}`);
|
|
64
|
+
copiedAgents++;
|
|
65
|
+
}
|
|
66
|
+
if (copiedAgents > 0) {
|
|
67
|
+
success(`${copiedAgents} agent file(s) ejected.`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** List available builtin workflows for ejection */
|
|
71
|
+
function listAvailableBuiltins(builtinWorkflowsDir) {
|
|
72
|
+
if (!existsSync(builtinWorkflowsDir)) {
|
|
73
|
+
warn('No builtin workflows found.');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
info('Available builtin workflows:');
|
|
77
|
+
console.log();
|
|
78
|
+
for (const entry of readdirSync(builtinWorkflowsDir).sort()) {
|
|
79
|
+
if (!entry.endsWith('.yaml') && !entry.endsWith('.yml'))
|
|
80
|
+
continue;
|
|
81
|
+
if (!statSync(join(builtinWorkflowsDir, entry)).isFile())
|
|
82
|
+
continue;
|
|
83
|
+
const name = entry.replace(/\.ya?ml$/, '');
|
|
84
|
+
info(` ${name}`);
|
|
85
|
+
}
|
|
86
|
+
console.log();
|
|
87
|
+
info('Usage: takt /eject {name}');
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Extract agent relative paths from a builtin workflow YAML.
|
|
91
|
+
* Matches `agent: ../agents/{path}` and returns the {path} portions.
|
|
92
|
+
*/
|
|
93
|
+
function extractAgentRelativePaths(workflowPath) {
|
|
94
|
+
const content = readFileSync(workflowPath, 'utf-8');
|
|
95
|
+
const paths = new Set();
|
|
96
|
+
const regex = /agent:\s*\.\.\/agents\/(.+)/g;
|
|
97
|
+
let match;
|
|
98
|
+
while ((match = regex.exec(content)) !== null) {
|
|
99
|
+
if (match[1]) {
|
|
100
|
+
paths.add(match[1].trim());
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return Array.from(paths);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=eject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eject.js","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CA+C/B"}
|
package/dist/commands/help.js
CHANGED
|
@@ -11,22 +11,29 @@ export function showHelp() {
|
|
|
11
11
|
console.log(`
|
|
12
12
|
Usage:
|
|
13
13
|
takt {task} Execute task with current workflow (continues session)
|
|
14
|
+
takt "#N" Execute GitHub Issue #N as task (quote # in shell)
|
|
14
15
|
takt /run-tasks (/run) Run all pending tasks from .takt/tasks/
|
|
15
16
|
takt /watch Watch for tasks and auto-execute (stays resident)
|
|
16
17
|
takt /add-task (/add) Add a new task (interactive, YAML format)
|
|
17
18
|
takt /list-tasks (/list) List task branches (merge/delete)
|
|
18
19
|
takt /switch Switch workflow interactively
|
|
19
20
|
takt /clear Clear agent conversation sessions (reset to initial state)
|
|
20
|
-
takt /
|
|
21
|
+
takt /eject Copy builtin workflow/agents to ~/.takt/ for customization
|
|
22
|
+
takt /eject {name} Eject a specific builtin workflow
|
|
21
23
|
takt /help Show this help
|
|
22
24
|
|
|
23
25
|
Examples:
|
|
24
26
|
takt "Fix the bug in main.ts" # Execute task (continues session)
|
|
27
|
+
takt "#6" # Execute Issue #6 as task
|
|
28
|
+
takt "#6 #7" # Execute multiple Issues as task
|
|
29
|
+
takt /add-task "#6" # Create task from Issue #6
|
|
30
|
+
takt /add-task "#6" "#7" # Create task from multiple Issues
|
|
25
31
|
takt /add-task "認証機能を追加する" # Quick add task
|
|
26
32
|
takt /add-task # Interactive task creation
|
|
27
33
|
takt /clear # Clear sessions, start fresh
|
|
28
34
|
takt /watch # Watch & auto-execute tasks
|
|
29
|
-
takt /
|
|
35
|
+
takt /eject # List available builtins
|
|
36
|
+
takt /eject default # Eject default workflow for customization
|
|
30
37
|
takt /list-tasks # List & merge task branches
|
|
31
38
|
takt /switch
|
|
32
39
|
takt /run-tasks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCb,CAAC,CAAC;IAED,iCAAiC;IACjC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export { executeWorkflow, type WorkflowExecutionResult, type WorkflowExecutionOp
|
|
|
5
5
|
export { executeTask, runAllTasks } from './taskExecution.js';
|
|
6
6
|
export { addTask } from './addTask.js';
|
|
7
7
|
export { refreshBuiltin } from './refreshBuiltin.js';
|
|
8
|
+
export { ejectBuiltin } from './eject.js';
|
|
8
9
|
export { watchTasks } from './watchTasks.js';
|
|
9
10
|
export { showHelp } from './help.js';
|
|
10
11
|
export { withAgentSession } from './session.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export { executeWorkflow } from './workflowExecution.js';
|
|
|
5
5
|
export { executeTask, runAllTasks } from './taskExecution.js';
|
|
6
6
|
export { addTask } from './addTask.js';
|
|
7
7
|
export { refreshBuiltin } from './refreshBuiltin.js';
|
|
8
|
+
export { ejectBuiltin } from './eject.js';
|
|
8
9
|
export { watchTasks } from './watchTasks.js';
|
|
9
10
|
export { showHelp } from './help.js';
|
|
10
11
|
export { withAgentSession } from './session.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAA+D,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAA+D,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* /refresh-builtin command
|
|
2
|
+
* /refresh-builtin command — DEPRECATED
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Builtin resources are now loaded directly from the package bundle.
|
|
5
|
+
* Use /eject to copy individual builtins to ~/.takt/ for customization.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Show deprecation notice and guide user to /eject.
|
|
9
9
|
*/
|
|
10
10
|
export declare function refreshBuiltin(): Promise<void>;
|
|
11
11
|
//# sourceMappingURL=refreshBuiltin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshBuiltin.d.ts","sourceRoot":"","sources":["../../src/commands/refreshBuiltin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"refreshBuiltin.d.ts","sourceRoot":"","sources":["../../src/commands/refreshBuiltin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD"}
|
|
@@ -1,37 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* /refresh-builtin command
|
|
2
|
+
* /refresh-builtin command — DEPRECATED
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Builtin resources are now loaded directly from the package bundle.
|
|
5
|
+
* Use /eject to copy individual builtins to ~/.takt/ for customization.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import { getLanguage } from '../config/globalConfig.js';
|
|
9
|
-
import { forceRefreshLanguageResources } from '../resources/index.js';
|
|
10
|
-
import { header, success, info, error } from '../utils/ui.js';
|
|
11
|
-
import { createLogger } from '../utils/debug.js';
|
|
12
|
-
const log = createLogger('refresh-builtin');
|
|
7
|
+
import { warn, info } from '../utils/ui.js';
|
|
13
8
|
/**
|
|
14
|
-
*
|
|
9
|
+
* Show deprecation notice and guide user to /eject.
|
|
15
10
|
*/
|
|
16
11
|
export async function refreshBuiltin() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
info(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
console.log();
|
|
26
|
-
success(`${overwritten.length} files refreshed.`);
|
|
27
|
-
for (const filePath of overwritten) {
|
|
28
|
-
info(` ✓ ${filePath}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
33
|
-
log.error('Failed to refresh builtin resources', { error: message });
|
|
34
|
-
error(`Failed to refresh: ${message}`);
|
|
35
|
-
}
|
|
12
|
+
warn('/refresh-builtin is deprecated.');
|
|
13
|
+
console.log();
|
|
14
|
+
info('Builtin workflows and agents are now loaded directly from the package.');
|
|
15
|
+
info('They no longer need to be copied to ~/.takt/.');
|
|
16
|
+
console.log();
|
|
17
|
+
info('To customize a builtin, use:');
|
|
18
|
+
info(' takt /eject List available builtins');
|
|
19
|
+
info(' takt /eject {name} Copy a builtin to ~/.takt/ for editing');
|
|
36
20
|
}
|
|
37
21
|
//# sourceMappingURL=refreshBuiltin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refreshBuiltin.js","sourceRoot":"","sources":["../../src/commands/refreshBuiltin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"refreshBuiltin.js","sourceRoot":"","sources":["../../src/commands/refreshBuiltin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAC/E,IAAI,CAAC,+CAA+C,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACrC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACxD,IAAI,CAAC,gEAAgE,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowExecution.d.ts","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"workflowExecution.d.ts","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAsDnE,mCAAmC;AACnC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qCAAqC;AACrC,MAAM,WAAW,wBAAwB;IACvC,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CA6PlC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow execution logic
|
|
3
3
|
*/
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
4
5
|
import { WorkflowEngine } from '../workflow/engine.js';
|
|
5
6
|
import { loadAgentSessions, updateAgentSession, loadWorktreeSessions, updateWorktreeSession, } from '../config/paths.js';
|
|
6
7
|
import { header, info, warn, error, success, status, StreamDisplay, } from '../utils/ui.js';
|
|
7
|
-
import { generateSessionId, createSessionLog,
|
|
8
|
+
import { generateSessionId, createSessionLog, finalizeSessionLog, updateLatestPointer, initNdjsonLog, appendNdjsonLine, } from '../utils/session.js';
|
|
8
9
|
import { createLogger } from '../utils/debug.js';
|
|
9
10
|
import { notifySuccess, notifyError } from '../utils/notification.js';
|
|
10
11
|
import { selectOption, promptInput } from '../prompt/index.js';
|
|
@@ -35,14 +36,27 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
35
36
|
log.debug('Continuing session (use /clear to reset)');
|
|
36
37
|
header(`${headerPrefix} ${workflowConfig.name}`);
|
|
37
38
|
const workflowSessionId = generateSessionId();
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
39
|
+
let sessionLog = createSessionLog(task, projectCwd, workflowConfig.name);
|
|
40
|
+
// Initialize NDJSON log file + pointer at workflow start
|
|
41
|
+
const ndjsonLogPath = initNdjsonLog(workflowSessionId, task, workflowConfig.name, projectCwd);
|
|
41
42
|
updateLatestPointer(sessionLog, workflowSessionId, projectCwd, { copyToPrevious: true });
|
|
43
|
+
// Track current step name for stream log records
|
|
44
|
+
const stepRef = { current: '' };
|
|
42
45
|
// Track current display for streaming
|
|
43
46
|
const displayRef = { current: null };
|
|
44
|
-
// Create stream handler that delegates to
|
|
47
|
+
// Create stream handler that delegates to UI display + writes NDJSON log
|
|
45
48
|
const streamHandler = (event) => {
|
|
49
|
+
// Write stream event to NDJSON log (real-time)
|
|
50
|
+
if (stepRef.current) {
|
|
51
|
+
const record = {
|
|
52
|
+
type: 'stream',
|
|
53
|
+
step: stepRef.current,
|
|
54
|
+
event,
|
|
55
|
+
timestamp: new Date().toISOString(),
|
|
56
|
+
};
|
|
57
|
+
appendNdjsonLine(ndjsonLogPath, record);
|
|
58
|
+
}
|
|
59
|
+
// Delegate to UI display
|
|
46
60
|
if (!displayRef.current)
|
|
47
61
|
return;
|
|
48
62
|
if (event.type === 'result')
|
|
@@ -108,11 +122,23 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
108
122
|
log.debug('Step starting', { step: step.name, agent: step.agentDisplayName, iteration });
|
|
109
123
|
info(`[${iteration}/${workflowConfig.maxIterations}] ${step.name} (${step.agentDisplayName})`);
|
|
110
124
|
displayRef.current = new StreamDisplay(step.agentDisplayName);
|
|
125
|
+
stepRef.current = step.name;
|
|
126
|
+
// Write step_start record to NDJSON log
|
|
127
|
+
const record = {
|
|
128
|
+
type: 'step_start',
|
|
129
|
+
step: step.name,
|
|
130
|
+
agent: step.agentDisplayName,
|
|
131
|
+
iteration,
|
|
132
|
+
timestamp: new Date().toISOString(),
|
|
133
|
+
};
|
|
134
|
+
appendNdjsonLine(ndjsonLogPath, record);
|
|
111
135
|
});
|
|
112
|
-
engine.on('step:complete', (step, response) => {
|
|
136
|
+
engine.on('step:complete', (step, response, instruction) => {
|
|
113
137
|
log.debug('Step completed', {
|
|
114
138
|
step: step.name,
|
|
115
139
|
status: response.status,
|
|
140
|
+
matchedRuleIndex: response.matchedRuleIndex,
|
|
141
|
+
matchedRuleMethod: response.matchedRuleMethod,
|
|
116
142
|
contentLength: response.content.length,
|
|
117
143
|
sessionId: response.sessionId,
|
|
118
144
|
error: response.error,
|
|
@@ -122,30 +148,65 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
122
148
|
displayRef.current = null;
|
|
123
149
|
}
|
|
124
150
|
console.log();
|
|
125
|
-
|
|
151
|
+
if (response.matchedRuleIndex != null && step.rules) {
|
|
152
|
+
const rule = step.rules[response.matchedRuleIndex];
|
|
153
|
+
if (rule) {
|
|
154
|
+
const methodLabel = response.matchedRuleMethod ? ` (${response.matchedRuleMethod})` : '';
|
|
155
|
+
status('Status', `${rule.condition}${methodLabel}`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
status('Status', response.status);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
status('Status', response.status);
|
|
163
|
+
}
|
|
126
164
|
if (response.error) {
|
|
127
165
|
error(`Error: ${response.error}`);
|
|
128
166
|
}
|
|
129
167
|
if (response.sessionId) {
|
|
130
168
|
status('Session', response.sessionId);
|
|
131
169
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
170
|
+
// Write step_complete record to NDJSON log
|
|
171
|
+
const record = {
|
|
172
|
+
type: 'step_complete',
|
|
173
|
+
step: step.name,
|
|
174
|
+
agent: response.agent,
|
|
175
|
+
status: response.status,
|
|
176
|
+
content: response.content,
|
|
177
|
+
instruction,
|
|
178
|
+
...(response.matchedRuleIndex != null ? { matchedRuleIndex: response.matchedRuleIndex } : {}),
|
|
179
|
+
...(response.matchedRuleMethod ? { matchedRuleMethod: response.matchedRuleMethod } : {}),
|
|
180
|
+
...(response.error ? { error: response.error } : {}),
|
|
181
|
+
timestamp: response.timestamp.toISOString(),
|
|
182
|
+
};
|
|
183
|
+
appendNdjsonLine(ndjsonLogPath, record);
|
|
184
|
+
// Update in-memory log for pointer metadata (immutable)
|
|
185
|
+
sessionLog = { ...sessionLog, iterations: sessionLog.iterations + 1 };
|
|
135
186
|
updateLatestPointer(sessionLog, workflowSessionId, projectCwd);
|
|
136
187
|
});
|
|
188
|
+
engine.on('step:report', (_step, filePath, fileName) => {
|
|
189
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
190
|
+
console.log(`\n📄 Report: ${fileName}\n`);
|
|
191
|
+
console.log(content);
|
|
192
|
+
});
|
|
137
193
|
engine.on('workflow:complete', (state) => {
|
|
138
194
|
log.info('Workflow completed successfully', { iterations: state.iteration });
|
|
139
|
-
finalizeSessionLog(sessionLog, 'completed');
|
|
140
|
-
//
|
|
141
|
-
const
|
|
195
|
+
sessionLog = finalizeSessionLog(sessionLog, 'completed');
|
|
196
|
+
// Write workflow_complete record to NDJSON log
|
|
197
|
+
const record = {
|
|
198
|
+
type: 'workflow_complete',
|
|
199
|
+
iterations: state.iteration,
|
|
200
|
+
endTime: new Date().toISOString(),
|
|
201
|
+
};
|
|
202
|
+
appendNdjsonLine(ndjsonLogPath, record);
|
|
142
203
|
updateLatestPointer(sessionLog, workflowSessionId, projectCwd);
|
|
143
204
|
const elapsed = sessionLog.endTime
|
|
144
205
|
? formatElapsedTime(sessionLog.startTime, sessionLog.endTime)
|
|
145
206
|
: '';
|
|
146
207
|
const elapsedDisplay = elapsed ? `, ${elapsed}` : '';
|
|
147
208
|
success(`Workflow completed (${state.iteration} iterations${elapsedDisplay})`);
|
|
148
|
-
info(`Session log: ${
|
|
209
|
+
info(`Session log: ${ndjsonLogPath}`);
|
|
149
210
|
notifySuccess('TAKT', `ワークフロー完了 (${state.iteration} iterations)`);
|
|
150
211
|
});
|
|
151
212
|
engine.on('workflow:abort', (state, reason) => {
|
|
@@ -155,16 +216,22 @@ export async function executeWorkflow(workflowConfig, task, cwd, options = {}) {
|
|
|
155
216
|
displayRef.current = null;
|
|
156
217
|
}
|
|
157
218
|
abortReason = reason;
|
|
158
|
-
finalizeSessionLog(sessionLog, 'aborted');
|
|
159
|
-
//
|
|
160
|
-
const
|
|
219
|
+
sessionLog = finalizeSessionLog(sessionLog, 'aborted');
|
|
220
|
+
// Write workflow_abort record to NDJSON log
|
|
221
|
+
const record = {
|
|
222
|
+
type: 'workflow_abort',
|
|
223
|
+
iterations: state.iteration,
|
|
224
|
+
reason,
|
|
225
|
+
endTime: new Date().toISOString(),
|
|
226
|
+
};
|
|
227
|
+
appendNdjsonLine(ndjsonLogPath, record);
|
|
161
228
|
updateLatestPointer(sessionLog, workflowSessionId, projectCwd);
|
|
162
229
|
const elapsed = sessionLog.endTime
|
|
163
230
|
? formatElapsedTime(sessionLog.startTime, sessionLog.endTime)
|
|
164
231
|
: '';
|
|
165
232
|
const elapsedDisplay = elapsed ? ` (${elapsed})` : '';
|
|
166
233
|
error(`Workflow aborted after ${state.iteration} iterations${elapsedDisplay}: ${reason}`);
|
|
167
|
-
info(`Session log: ${
|
|
234
|
+
info(`Session log: ${ndjsonLogPath}`);
|
|
168
235
|
notifyError('TAKT', `中断: ${reason}`);
|
|
169
236
|
});
|
|
170
237
|
const finalState = await engine.run();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowExecution.js","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"workflowExecution.js","sourceRoot":"","sources":["../../src/commands/workflowExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GAMjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAErC;;GAEG;AACH,SAAS,iBAAiB,CAAC,SAAiB,EAAE,OAAe;IAC3D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAEpC,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IAC5C,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;AACnC,CAAC;AAkBD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAA8B,EAC9B,IAAY,EACZ,GAAW,EACX,UAAoC,EAAE;IAEtC,MAAM,EACJ,YAAY,GAAG,mBAAmB,GACnC,GAAG,OAAO,CAAC;IAEZ,iEAAiE;IACjE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;IAE7C,+DAA+D;IAC/D,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAEtD,MAAM,CAAC,GAAG,YAAY,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjD,MAAM,iBAAiB,GAAG,iBAAiB,EAAE,CAAC;IAC9C,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzE,yDAAyD;IACzD,MAAM,aAAa,GAAG,aAAa,CAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9F,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzF,iDAAiD;IACjD,MAAM,OAAO,GAAwB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAErD,sCAAsC;IACtC,MAAM,UAAU,GAAsC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAExE,yEAAyE;IACzE,MAAM,aAAa,GAAG,CACpB,KAAgE,EAC1D,EAAE;QACR,+CAA+C;QAC/C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAiB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO;QAChC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QACpC,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,yFAAyF;IACzF,MAAM,UAAU,GAAG,GAAG,KAAK,UAAU,CAAC;IACtC,MAAM,aAAa,GAAG,UAAU;QAC9B,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC;QACvC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAElC,gEAAgE;IAChE,sDAAsD;IACtD,MAAM,oBAAoB,GAAG,UAAU;QACrC,CAAC,CAAC,CAAC,SAAiB,EAAE,cAAsB,EAAQ,EAAE;YAClD,qBAAqB,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACpE,CAAC;QACH,CAAC,CAAC,CAAC,SAAiB,EAAE,cAAsB,EAAQ,EAAE;YAClD,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC,CAAC;IAEN,MAAM,qBAAqB,GAAG,KAAK,EACjC,OAA8B,EACN,EAAE;QAC1B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,CACF,qBAAqB,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,CAC1E,CAAC;QACF,IAAI,CAAC,YAAY,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE;YAC3C;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,kBAAkB;aAChC;YACD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SACjC,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,4BAA4B,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;gBACvE,cAAc,CAAC,aAAa,IAAI,oBAAoB,CAAC;gBACrD,OAAO,oBAAoB,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE;QAC3D,QAAQ,EAAE,aAAa;QACvB,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,oBAAoB;QACrC,gBAAgB,EAAE,qBAAqB;QACvC,UAAU;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IAEH,IAAI,WAA+B,CAAC;IAEpC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAC1C,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,SAAS,IAAI,cAAc,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC/F,UAAU,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9D,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE5B,wCAAwC;QACxC,MAAM,MAAM,GAAoB;YAC9B,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,gBAAgB;YAC5B,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;QACzD,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;YAC3C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;YAC7C,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;YACtC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,QAAQ,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,CAAC,UAAU,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,2CAA2C;QAC3C,MAAM,MAAM,GAAuB;YACjC,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW;YACX,GAAG,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;SAC5C,CAAC;QACF,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAExC,wDAAwD;QACxD,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACtE,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,GAAG,CAAC,IAAI,CAAC,iCAAiC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,UAAU,GAAG,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEzD,+CAA+C;QAC/C,MAAM,MAAM,GAA2B;YACrC,IAAI,EAAE,mBAAmB;YACzB,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC;QACF,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACxC,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;YAChC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAErD,OAAO,CAAC,uBAAuB,KAAK,CAAC,SAAS,cAAc,cAAc,GAAG,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;QACtC,aAAa,CAAC,MAAM,EAAE,aAAa,KAAK,CAAC,SAAS,cAAc,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5C,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACvE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,WAAW,GAAG,MAAM,CAAC;QACrB,UAAU,GAAG,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEvD,4CAA4C;QAC5C,MAAM,MAAM,GAAwB;YAClC,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,MAAM;YACN,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC;QACF,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACxC,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;YAChC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,KAAK,CAAC,0BAA0B,KAAK,CAAC,SAAS,cAAc,cAAc,KAAK,MAAM,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAC;QACtC,WAAW,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,MAAM,KAAK,WAAW;QAC1C,MAAM,EAAE,WAAW;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent configuration loader
|
|
3
3
|
*
|
|
4
|
-
* Loads agents
|
|
4
|
+
* Loads agents with user → builtin fallback:
|
|
5
|
+
* 1. User agents: ~/.takt/agents/*.md
|
|
6
|
+
* 2. Builtin agents: resources/global/{lang}/agents/*.md
|
|
5
7
|
*/
|
|
6
8
|
import type { CustomAgentConfig } from '../models/types.js';
|
|
7
9
|
/** Load agents from markdown files in a directory */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentLoader.d.ts","sourceRoot":"","sources":["../../src/config/agentLoader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agentLoader.d.ts","sourceRoot":"","sources":["../../src/config/agentLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAqB5D,qDAAqD;AACrD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAgBtE;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CASjE;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAmBhE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWjE"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent configuration loader
|
|
3
3
|
*
|
|
4
|
-
* Loads agents
|
|
4
|
+
* Loads agents with user → builtin fallback:
|
|
5
|
+
* 1. User agents: ~/.takt/agents/*.md
|
|
6
|
+
* 2. Builtin agents: resources/global/{lang}/agents/*.md
|
|
5
7
|
*/
|
|
6
8
|
import { readFileSync, existsSync, readdirSync } from 'node:fs';
|
|
7
9
|
import { join, basename } from 'node:path';
|
|
8
|
-
import { getGlobalAgentsDir, getGlobalWorkflowsDir, isPathSafe, } from './paths.js';
|
|
10
|
+
import { getGlobalAgentsDir, getGlobalWorkflowsDir, getBuiltinAgentsDir, getBuiltinWorkflowsDir, isPathSafe, } from './paths.js';
|
|
11
|
+
import { getLanguage } from './globalConfig.js';
|
|
12
|
+
/** Get all allowed base directories for agent prompt files */
|
|
13
|
+
function getAllowedAgentBases() {
|
|
14
|
+
const lang = getLanguage();
|
|
15
|
+
return [
|
|
16
|
+
getGlobalAgentsDir(),
|
|
17
|
+
getGlobalWorkflowsDir(),
|
|
18
|
+
getBuiltinAgentsDir(lang),
|
|
19
|
+
getBuiltinWorkflowsDir(lang),
|
|
20
|
+
];
|
|
21
|
+
}
|
|
9
22
|
/** Load agents from markdown files in a directory */
|
|
10
23
|
export function loadAgentsFromDir(dirPath) {
|
|
11
24
|
if (!existsSync(dirPath)) {
|
|
@@ -48,17 +61,7 @@ export function loadAgentPrompt(agent) {
|
|
|
48
61
|
return agent.prompt;
|
|
49
62
|
}
|
|
50
63
|
if (agent.promptFile) {
|
|
51
|
-
const
|
|
52
|
-
getGlobalAgentsDir(),
|
|
53
|
-
getGlobalWorkflowsDir(),
|
|
54
|
-
];
|
|
55
|
-
let isValid = false;
|
|
56
|
-
for (const base of allowedBases) {
|
|
57
|
-
if (isPathSafe(base, agent.promptFile)) {
|
|
58
|
-
isValid = true;
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
64
|
+
const isValid = getAllowedAgentBases().some((base) => isPathSafe(base, agent.promptFile));
|
|
62
65
|
if (!isValid) {
|
|
63
66
|
throw new Error(`Agent prompt file path is not allowed: ${agent.promptFile}`);
|
|
64
67
|
}
|
|
@@ -74,17 +77,7 @@ export function loadAgentPrompt(agent) {
|
|
|
74
77
|
* Used by workflow engine when agentPath is already resolved.
|
|
75
78
|
*/
|
|
76
79
|
export function loadAgentPromptFromPath(agentPath) {
|
|
77
|
-
const
|
|
78
|
-
getGlobalAgentsDir(),
|
|
79
|
-
getGlobalWorkflowsDir(),
|
|
80
|
-
];
|
|
81
|
-
let isValid = false;
|
|
82
|
-
for (const base of allowedBases) {
|
|
83
|
-
if (isPathSafe(base, agentPath)) {
|
|
84
|
-
isValid = true;
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
80
|
+
const isValid = getAllowedAgentBases().some((base) => isPathSafe(base, agentPath));
|
|
88
81
|
if (!isValid) {
|
|
89
82
|
throw new Error(`Agent prompt file path is not allowed: ${agentPath}`);
|
|
90
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentLoader.js","sourceRoot":"","sources":["../../src/config/agentLoader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agentLoader.js","sourceRoot":"","sources":["../../src/config/agentLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,8DAA8D;AAC9D,SAAS,oBAAoB;IAC3B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,OAAO;QACL,kBAAkB,EAAE;QACpB,qBAAqB,EAAE;QACvB,mBAAmB,CAAC,IAAI,CAAC;QACzB,sBAAsB,CAAC,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI;gBACJ,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEpD,0DAA0D;IAC1D,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAwB;IACtD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,UAAW,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,wBAAwB,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -8,6 +8,8 @@ import type { GlobalConfig, DebugConfig, Language } from '../models/types.js';
|
|
|
8
8
|
export declare function loadGlobalConfig(): GlobalConfig;
|
|
9
9
|
/** Save global configuration */
|
|
10
10
|
export declare function saveGlobalConfig(config: GlobalConfig): void;
|
|
11
|
+
/** Get list of disabled builtin names */
|
|
12
|
+
export declare function getDisabledBuiltins(): string[];
|
|
11
13
|
/** Get current language setting */
|
|
12
14
|
export declare function getLanguage(): Language;
|
|
13
15
|
/** Set language setting */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalConfig.d.ts","sourceRoot":"","sources":["../../src/config/globalConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9E,gCAAgC;AAChC,wBAAgB,gBAAgB,IAAI,YAAY,
|
|
1
|
+
{"version":3,"file":"globalConfig.d.ts","sourceRoot":"","sources":["../../src/config/globalConfig.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9E,gCAAgC;AAChC,wBAAgB,gBAAgB,IAAI,YAAY,CAyB/C;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAyB3D;AAED,yCAAyC;AACzC,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAO9C;AAED,mCAAmC;AACnC,wBAAgB,WAAW,IAAI,QAAQ,CAOtC;AAED,2BAA2B;AAC3B,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIpD;AAED,2BAA2B;AAC3B,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,CAI9D;AAED,8BAA8B;AAC9B,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAOrD;AAED,sCAAsC;AACtC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMvD;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAqBlF;AAED,4DAA4D;AAC5D,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAYpF"}
|