takt 0.2.3 → 0.3.1
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 +186 -162
- 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/executor.d.ts.map +1 -1
- package/dist/claude/executor.js +17 -8
- package/dist/claude/executor.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 +5 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +160 -119
- 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 +15 -8
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +63 -26
- 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/index.d.ts +2 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/interactive.d.ts +28 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +186 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/taskExecution.js +2 -2
- package/dist/commands/taskExecution.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/prompt/index.d.ts +0 -7
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +0 -11
- package/dist/prompt/index.js.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/task/display.js +1 -1
- package/dist/task/display.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 +84 -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 +22 -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/supervisor.md +2 -0
- 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 +84 -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 +22 -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/supervisor.md +2 -0
- 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
- package/dist/commands/help.d.ts +0 -8
- package/dist/commands/help.d.ts.map +0 -1
- package/dist/commands/help.js +0 -48
- package/dist/commands/help.js.map +0 -1
- package/dist/commands/refreshBuiltin.d.ts +0 -11
- package/dist/commands/refreshBuiltin.d.ts.map +0 -1
- package/dist/commands/refreshBuiltin.js +0 -37
- package/dist/commands/refreshBuiltin.js.map +0 -1
|
@@ -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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|
|
@@ -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":"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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
|
|
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"}
|