takt 0.2.2 → 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 +223 -166
- 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 +4 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -20
- 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 +23 -7
- 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 +12 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/listTasks.d.ts +45 -0
- package/dist/commands/listTasks.d.ts.map +1 -0
- package/dist/commands/{reviewTasks.js → listTasks.js} +93 -73
- package/dist/commands/listTasks.js.map +1 -0
- 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/taskExecution.d.ts +7 -5
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +21 -14
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +88 -21
- 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 +18 -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 +165 -90
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +79 -51
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +53 -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 +9 -76
- package/dist/resources/index.js.map +1 -1
- package/dist/task/autoCommit.d.ts +9 -6
- package/dist/task/autoCommit.d.ts.map +1 -1
- package/dist/task/autoCommit.js +21 -12
- package/dist/task/autoCommit.js.map +1 -1
- package/dist/task/branchList.d.ts +55 -0
- package/dist/task/branchList.d.ts.map +1 -0
- package/dist/task/branchList.js +131 -0
- package/dist/task/branchList.js.map +1 -0
- package/dist/task/clone.d.ts +53 -0
- package/dist/task/clone.d.ts.map +1 -0
- package/dist/task/clone.js +181 -0
- package/dist/task/clone.js.map +1 -0
- package/dist/task/index.d.ts +3 -2
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +3 -2
- package/dist/task/index.js.map +1 -1
- package/dist/task/schema.d.ts +4 -4
- package/dist/task/schema.js +4 -4
- package/dist/task/summarize.d.ts +7 -5
- package/dist/task/summarize.d.ts.map +1 -1
- package/dist/task/summarize.js +62 -29
- package/dist/task/summarize.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/utils/updateNotifier.d.ts +6 -0
- package/dist/utils/updateNotifier.d.ts.map +1 -0
- package/dist/utils/updateNotifier.js +17 -0
- package/dist/utils/updateNotifier.js.map +1 -0
- package/dist/workflow/engine.d.ts +35 -2
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +238 -38
- 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 +89 -20
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +404 -61
- 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 +4 -1
- package/resources/global/en/agents/default/ai-antipattern-reviewer.md +193 -0
- package/resources/global/en/agents/default/{architect.md → architecture-reviewer.md} +144 -44
- package/resources/global/en/agents/default/coder.md +7 -7
- package/resources/global/en/agents/default/planner.md +29 -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 +235 -770
- package/resources/global/en/workflows/expert-cqrs.yaml +325 -697
- package/resources/global/en/workflows/expert.yaml +354 -722
- 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 +156 -421
- package/resources/global/ja/agents/default/{ai-reviewer.md → ai-antipattern-reviewer.md} +92 -15
- package/resources/global/ja/agents/default/{architect.md → architecture-reviewer.md} +148 -48
- package/resources/global/ja/agents/default/coder.md +7 -7
- package/resources/global/ja/agents/default/planner.md +29 -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 +230 -771
- package/resources/global/ja/workflows/expert-cqrs.yaml +316 -832
- package/resources/global/ja/workflows/expert.yaml +331 -711
- 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 +149 -415
- package/resources/project/dotgitignore +10 -0
- package/resources/project/tasks/TASK-FORMAT +37 -0
- package/dist/commands/reviewTasks.d.ts +0 -43
- package/dist/commands/reviewTasks.d.ts.map +0 -1
- package/dist/commands/reviewTasks.js.map +0 -1
- package/dist/task/worktree.d.ts +0 -70
- package/dist/task/worktree.d.ts.map +0 -1
- package/dist/task/worktree.js +0 -221
- package/dist/task/worktree.js.map +0 -1
- package/resources/global/en/agents/default/ai-reviewer.md +0 -116
package/dist/agents/runner.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent execution runners
|
|
3
3
|
*/
|
|
4
|
-
import { execSync } from 'node:child_process';
|
|
5
4
|
import { existsSync, readFileSync } from 'node:fs';
|
|
6
5
|
import { basename, dirname } from 'node:path';
|
|
7
6
|
import { callClaudeAgent, callClaudeSkill, } from '../claude/client.js';
|
|
@@ -45,29 +44,6 @@ function resolveModel(cwd, options, agentConfig) {
|
|
|
45
44
|
}
|
|
46
45
|
return undefined;
|
|
47
46
|
}
|
|
48
|
-
/** Get git diff for review context */
|
|
49
|
-
export function getGitDiff(cwd) {
|
|
50
|
-
try {
|
|
51
|
-
// First check if HEAD exists (new repos may not have any commits)
|
|
52
|
-
try {
|
|
53
|
-
execSync('git rev-parse HEAD', { cwd, encoding: 'utf-8', stdio: 'pipe' });
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// No commits yet, return empty diff
|
|
57
|
-
return '';
|
|
58
|
-
}
|
|
59
|
-
const diff = execSync('git diff HEAD', {
|
|
60
|
-
cwd,
|
|
61
|
-
encoding: 'utf-8',
|
|
62
|
-
maxBuffer: 1024 * 1024 * 10, // 10MB
|
|
63
|
-
stdio: 'pipe',
|
|
64
|
-
});
|
|
65
|
-
return diff.trim();
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
return '';
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
47
|
/** Run a custom agent */
|
|
72
48
|
export async function runCustomAgent(agentConfig, task, options) {
|
|
73
49
|
const allowedTools = options.allowedTools ?? agentConfig.allowedTools;
|
|
@@ -77,6 +53,7 @@ export async function runCustomAgent(agentConfig, task, options) {
|
|
|
77
53
|
cwd: options.cwd,
|
|
78
54
|
sessionId: options.sessionId,
|
|
79
55
|
allowedTools,
|
|
56
|
+
maxTurns: options.maxTurns,
|
|
80
57
|
model: resolveModel(options.cwd, options, agentConfig),
|
|
81
58
|
permissionMode: options.permissionMode,
|
|
82
59
|
onStream: options.onStream,
|
|
@@ -92,6 +69,7 @@ export async function runCustomAgent(agentConfig, task, options) {
|
|
|
92
69
|
cwd: options.cwd,
|
|
93
70
|
sessionId: options.sessionId,
|
|
94
71
|
allowedTools,
|
|
72
|
+
maxTurns: options.maxTurns,
|
|
95
73
|
model: resolveModel(options.cwd, options, agentConfig),
|
|
96
74
|
permissionMode: options.permissionMode,
|
|
97
75
|
onStream: options.onStream,
|
|
@@ -102,19 +80,15 @@ export async function runCustomAgent(agentConfig, task, options) {
|
|
|
102
80
|
return callClaudeSkill(agentConfig.claudeSkill, task, callOptions);
|
|
103
81
|
}
|
|
104
82
|
// Custom agent with prompt
|
|
105
|
-
|
|
106
|
-
// Inject status rules if provided
|
|
107
|
-
if (options.statusRulesPrompt) {
|
|
108
|
-
systemPrompt = `${systemPrompt}\n\n${options.statusRulesPrompt}`;
|
|
109
|
-
}
|
|
83
|
+
const systemPrompt = loadAgentPrompt(agentConfig);
|
|
110
84
|
const providerType = resolveProvider(options.cwd, options, agentConfig);
|
|
111
85
|
const provider = getProvider(providerType);
|
|
112
86
|
const callOptions = {
|
|
113
87
|
cwd: options.cwd,
|
|
114
88
|
sessionId: options.sessionId,
|
|
115
89
|
allowedTools,
|
|
90
|
+
maxTurns: options.maxTurns,
|
|
116
91
|
model: resolveModel(options.cwd, options, agentConfig),
|
|
117
|
-
statusPatterns: agentConfig.statusPatterns,
|
|
118
92
|
permissionMode: options.permissionMode,
|
|
119
93
|
onStream: options.onStream,
|
|
120
94
|
onPermissionRequest: options.onPermissionRequest,
|
|
@@ -170,17 +144,14 @@ export async function runAgent(agentSpec, task, options) {
|
|
|
170
144
|
if (!existsSync(options.agentPath)) {
|
|
171
145
|
throw new Error(`Agent file not found: ${options.agentPath}`);
|
|
172
146
|
}
|
|
173
|
-
|
|
174
|
-
// Inject status rules if provided
|
|
175
|
-
if (options.statusRulesPrompt) {
|
|
176
|
-
systemPrompt = `${systemPrompt}\n\n${options.statusRulesPrompt}`;
|
|
177
|
-
}
|
|
147
|
+
const systemPrompt = loadAgentPromptFromPath(options.agentPath);
|
|
178
148
|
const providerType = resolveProvider(options.cwd, options);
|
|
179
149
|
const provider = getProvider(providerType);
|
|
180
150
|
const callOptions = {
|
|
181
151
|
cwd: options.cwd,
|
|
182
152
|
sessionId: options.sessionId,
|
|
183
153
|
allowedTools: options.allowedTools,
|
|
154
|
+
maxTurns: options.maxTurns,
|
|
184
155
|
model: resolveModel(options.cwd, options),
|
|
185
156
|
systemPrompt,
|
|
186
157
|
permissionMode: options.permissionMode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/claude/client.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { type StreamCallback, type PermissionHandler, type AskUserQuestionHandler } from './process.js';
|
|
7
7
|
import type { AgentDefinition } from '@anthropic-ai/claude-agent-sdk';
|
|
8
|
-
import type { AgentResponse,
|
|
8
|
+
import type { AgentResponse, PermissionMode } from '../models/types.js';
|
|
9
9
|
/** Options for calling Claude */
|
|
10
10
|
export interface ClaudeCallOptions {
|
|
11
11
|
cwd: string;
|
|
@@ -14,7 +14,6 @@ export interface ClaudeCallOptions {
|
|
|
14
14
|
model?: string;
|
|
15
15
|
maxTurns?: number;
|
|
16
16
|
systemPrompt?: string;
|
|
17
|
-
statusPatterns?: Record<string, string>;
|
|
18
17
|
/** SDK agents to register for sub-agent execution */
|
|
19
18
|
agents?: Record<string, AgentDefinition>;
|
|
20
19
|
/** Permission mode for tool execution (from workflow step) */
|
|
@@ -28,16 +27,42 @@ export interface ClaudeCallOptions {
|
|
|
28
27
|
/** Bypass all permission checks (sacrifice-my-pc mode) */
|
|
29
28
|
bypassPermissions?: boolean;
|
|
30
29
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Detect rule index from numbered tag pattern [STEP_NAME:N].
|
|
32
|
+
* Returns 0-based rule index, or -1 if no match.
|
|
33
|
+
*
|
|
34
|
+
* Example: detectRuleIndex("... [PLAN:2] ...", "plan") → 1
|
|
35
|
+
*/
|
|
36
|
+
export declare function detectRuleIndex(content: string, stepName: string): number;
|
|
33
37
|
/** Validate regex pattern for ReDoS safety */
|
|
34
38
|
export declare function isRegexSafe(pattern: string): boolean;
|
|
35
|
-
/** Get status patterns for a built-in agent type */
|
|
36
|
-
export declare function getBuiltinStatusPatterns(_agentType: string): Record<string, string>;
|
|
37
39
|
/** Call Claude with an agent prompt */
|
|
38
40
|
export declare function callClaude(agentType: string, prompt: string, options: ClaudeCallOptions): Promise<AgentResponse>;
|
|
39
41
|
/** Call Claude with a custom agent configuration */
|
|
40
42
|
export declare function callClaudeCustom(agentName: string, prompt: string, systemPrompt: string, options: ClaudeCallOptions): Promise<AgentResponse>;
|
|
43
|
+
/**
|
|
44
|
+
* Detect judge rule index from [JUDGE:N] tag pattern.
|
|
45
|
+
* Returns 0-based rule index, or -1 if no match.
|
|
46
|
+
*/
|
|
47
|
+
export declare function detectJudgeIndex(content: string): number;
|
|
48
|
+
/**
|
|
49
|
+
* Build the prompt for the AI judge that evaluates agent output against ai() conditions.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildJudgePrompt(agentOutput: string, aiConditions: {
|
|
52
|
+
index: number;
|
|
53
|
+
text: string;
|
|
54
|
+
}[]): string;
|
|
55
|
+
/**
|
|
56
|
+
* Call AI judge to evaluate agent output against ai() conditions.
|
|
57
|
+
* Uses a lightweight model (haiku) for cost efficiency.
|
|
58
|
+
* Returns 0-based index of the matched ai() condition, or -1 if no match.
|
|
59
|
+
*/
|
|
60
|
+
export declare function callAiJudge(agentOutput: string, aiConditions: {
|
|
61
|
+
index: number;
|
|
62
|
+
text: string;
|
|
63
|
+
}[], options: {
|
|
64
|
+
cwd: string;
|
|
65
|
+
}): Promise<number>;
|
|
41
66
|
/** Call a Claude Code built-in agent (using claude --agent flag if available) */
|
|
42
67
|
export declare function callClaudeAgent(claudeAgentName: string, prompt: string, options: ClaudeCallOptions): Promise<AgentResponse>;
|
|
43
68
|
/** Call a Claude Code skill (using /skill command) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/claude/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA6C,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACnJ,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/claude/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA6C,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACnJ,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAU,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKhF,iCAAiC;AACjC,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASzE;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBpD;AAeD,uCAAuC;AACvC,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED,oDAAoD;AACpD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9C,MAAM,CAyBR;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAC/C,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACvB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,iFAAiF;AACjF,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED,sDAAsD;AACtD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CA+BxB"}
|
package/dist/claude/client.js
CHANGED
|
@@ -4,23 +4,23 @@
|
|
|
4
4
|
* Uses the Claude Agent SDK for native TypeScript integration.
|
|
5
5
|
*/
|
|
6
6
|
import { executeClaudeCli } from './process.js';
|
|
7
|
-
import { GENERIC_STATUS_PATTERNS } from '../models/schemas.js';
|
|
8
7
|
import { createLogger } from '../utils/debug.js';
|
|
9
8
|
const log = createLogger('client');
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Detect rule index from numbered tag pattern [STEP_NAME:N].
|
|
11
|
+
* Returns 0-based rule index, or -1 if no match.
|
|
12
|
+
*
|
|
13
|
+
* Example: detectRuleIndex("... [PLAN:2] ...", "plan") → 1
|
|
14
|
+
*/
|
|
15
|
+
export function detectRuleIndex(content, stepName) {
|
|
16
|
+
const tag = stepName.toUpperCase();
|
|
17
|
+
const regex = new RegExp(`\\[${tag}:(\\d+)\\]`, 'i');
|
|
18
|
+
const match = content.match(regex);
|
|
19
|
+
if (match?.[1]) {
|
|
20
|
+
const index = Number.parseInt(match[1], 10) - 1;
|
|
21
|
+
return index >= 0 ? index : -1;
|
|
22
22
|
}
|
|
23
|
-
return
|
|
23
|
+
return -1;
|
|
24
24
|
}
|
|
25
25
|
/** Validate regex pattern for ReDoS safety */
|
|
26
26
|
export function isRegexSafe(pattern) {
|
|
@@ -44,24 +44,15 @@ export function isRegexSafe(pattern) {
|
|
|
44
44
|
}
|
|
45
45
|
return true;
|
|
46
46
|
}
|
|
47
|
-
/** Get status patterns for a built-in agent type */
|
|
48
|
-
export function getBuiltinStatusPatterns(_agentType) {
|
|
49
|
-
// Uses generic patterns that work for any agent
|
|
50
|
-
return GENERIC_STATUS_PATTERNS;
|
|
51
|
-
}
|
|
52
47
|
/** Determine status from result */
|
|
53
|
-
function determineStatus(result
|
|
48
|
+
function determineStatus(result) {
|
|
54
49
|
if (!result.success) {
|
|
55
|
-
// Check if it was an interrupt using the flag (not magic string)
|
|
56
50
|
if (result.interrupted) {
|
|
57
51
|
return 'interrupted';
|
|
58
52
|
}
|
|
59
53
|
return 'blocked';
|
|
60
54
|
}
|
|
61
|
-
|
|
62
|
-
// Fall back to content if fullContent is not available
|
|
63
|
-
const textForStatusDetection = result.fullContent || result.content;
|
|
64
|
-
return detectStatus(textForStatusDetection, patterns);
|
|
55
|
+
return 'done';
|
|
65
56
|
}
|
|
66
57
|
/** Call Claude with an agent prompt */
|
|
67
58
|
export async function callClaude(agentType, prompt, options) {
|
|
@@ -80,8 +71,7 @@ export async function callClaude(agentType, prompt, options) {
|
|
|
80
71
|
bypassPermissions: options.bypassPermissions,
|
|
81
72
|
};
|
|
82
73
|
const result = await executeClaudeCli(prompt, spawnOptions);
|
|
83
|
-
const
|
|
84
|
-
const status = determineStatus(result, patterns);
|
|
74
|
+
const status = determineStatus(result);
|
|
85
75
|
if (!result.success && result.error) {
|
|
86
76
|
log.error('Agent query failed', { agent: agentType, error: result.error });
|
|
87
77
|
}
|
|
@@ -110,9 +100,7 @@ export async function callClaudeCustom(agentName, prompt, systemPrompt, options)
|
|
|
110
100
|
bypassPermissions: options.bypassPermissions,
|
|
111
101
|
};
|
|
112
102
|
const result = await executeClaudeCli(prompt, spawnOptions);
|
|
113
|
-
|
|
114
|
-
const patterns = options.statusPatterns || getBuiltinStatusPatterns(agentName);
|
|
115
|
-
const status = determineStatus(result, patterns);
|
|
103
|
+
const status = determineStatus(result);
|
|
116
104
|
if (!result.success && result.error) {
|
|
117
105
|
log.error('Agent query failed', { agent: agentName, error: result.error });
|
|
118
106
|
}
|
|
@@ -125,6 +113,66 @@ export async function callClaudeCustom(agentName, prompt, systemPrompt, options)
|
|
|
125
113
|
error: result.error,
|
|
126
114
|
};
|
|
127
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Detect judge rule index from [JUDGE:N] tag pattern.
|
|
118
|
+
* Returns 0-based rule index, or -1 if no match.
|
|
119
|
+
*/
|
|
120
|
+
export function detectJudgeIndex(content) {
|
|
121
|
+
const regex = /\[JUDGE:(\d+)\]/i;
|
|
122
|
+
const match = content.match(regex);
|
|
123
|
+
if (match?.[1]) {
|
|
124
|
+
const index = Number.parseInt(match[1], 10) - 1;
|
|
125
|
+
return index >= 0 ? index : -1;
|
|
126
|
+
}
|
|
127
|
+
return -1;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Build the prompt for the AI judge that evaluates agent output against ai() conditions.
|
|
131
|
+
*/
|
|
132
|
+
export function buildJudgePrompt(agentOutput, aiConditions) {
|
|
133
|
+
const conditionList = aiConditions
|
|
134
|
+
.map((c) => `| ${c.index + 1} | ${c.text} |`)
|
|
135
|
+
.join('\n');
|
|
136
|
+
return [
|
|
137
|
+
'# Judge Task',
|
|
138
|
+
'',
|
|
139
|
+
'You are a judge evaluating an agent\'s output against a set of conditions.',
|
|
140
|
+
'Read the agent output below, then determine which condition best matches.',
|
|
141
|
+
'',
|
|
142
|
+
'## Agent Output',
|
|
143
|
+
'```',
|
|
144
|
+
agentOutput,
|
|
145
|
+
'```',
|
|
146
|
+
'',
|
|
147
|
+
'## Conditions',
|
|
148
|
+
'| # | Condition |',
|
|
149
|
+
'|---|-----------|',
|
|
150
|
+
conditionList,
|
|
151
|
+
'',
|
|
152
|
+
'## Instructions',
|
|
153
|
+
'Output ONLY the tag `[JUDGE:N]` where N is the number of the best matching condition.',
|
|
154
|
+
'Do not output anything else.',
|
|
155
|
+
].join('\n');
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Call AI judge to evaluate agent output against ai() conditions.
|
|
159
|
+
* Uses a lightweight model (haiku) for cost efficiency.
|
|
160
|
+
* Returns 0-based index of the matched ai() condition, or -1 if no match.
|
|
161
|
+
*/
|
|
162
|
+
export async function callAiJudge(agentOutput, aiConditions, options) {
|
|
163
|
+
const prompt = buildJudgePrompt(agentOutput, aiConditions);
|
|
164
|
+
const spawnOptions = {
|
|
165
|
+
cwd: options.cwd,
|
|
166
|
+
model: 'haiku',
|
|
167
|
+
maxTurns: 1,
|
|
168
|
+
};
|
|
169
|
+
const result = await executeClaudeCli(prompt, spawnOptions);
|
|
170
|
+
if (!result.success) {
|
|
171
|
+
log.error('AI judge call failed', { error: result.error });
|
|
172
|
+
return -1;
|
|
173
|
+
}
|
|
174
|
+
return detectJudgeIndex(result.content);
|
|
175
|
+
}
|
|
128
176
|
/** Call a Claude Code built-in agent (using claude --agent flag if available) */
|
|
129
177
|
export async function callClaudeAgent(claudeAgentName, prompt, options) {
|
|
130
178
|
// For now, use system prompt approach
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/claude/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAqG,MAAM,cAAc,CAAC;AAGnJ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/claude/client.ts"],"names":[],"mappings":"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"}
|
package/dist/claude/index.d.ts
CHANGED
|
@@ -10,5 +10,5 @@ export { generateQueryId, hasActiveProcess, isQueryActive, getActiveQueryCount,
|
|
|
10
10
|
export type { StreamEvent, StreamCallback, PermissionRequest, PermissionHandler, AskUserQuestionInput, AskUserQuestionHandler, ClaudeResult, ClaudeResultWithQueryId, InitEventData, ToolUseEventData, ToolResultEventData, ToolOutputEventData, TextEventData, ThinkingEventData, ResultEventData, ErrorEventData, } from './types.js';
|
|
11
11
|
export { sdkMessageToStreamEvent } from './stream-converter.js';
|
|
12
12
|
export { createCanUseToolCallback, createAskUserQuestionHooks, } from './options-builder.js';
|
|
13
|
-
export { callClaude, callClaudeCustom, callClaudeAgent, callClaudeSkill,
|
|
13
|
+
export { callClaude, callClaudeCustom, callClaudeAgent, callClaudeSkill, detectRuleIndex, isRegexSafe, type ClaudeCallOptions, } from './client.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/claude/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/claude/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC"}
|
package/dist/claude/index.js
CHANGED
|
@@ -14,5 +14,5 @@ export { sdkMessageToStreamEvent } from './stream-converter.js';
|
|
|
14
14
|
// Options building
|
|
15
15
|
export { createCanUseToolCallback, createAskUserQuestionHooks, } from './options-builder.js';
|
|
16
16
|
// Client functions and types
|
|
17
|
-
export { callClaude, callClaudeCustom, callClaudeAgent, callClaudeSkill,
|
|
17
|
+
export { callClaude, callClaudeCustom, callClaudeAgent, callClaudeSkill, detectRuleIndex, isRegexSafe, } from './client.js';
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
package/dist/claude/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/claude/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6BAA6B;AAC7B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAA2B,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,eAAe,CAAC;AAExE,0EAA0E;AAC1E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAsB5B,oBAAoB;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,mBAAmB;AACnB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,6BAA6B;AAC7B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/claude/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6BAA6B;AAC7B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAA2B,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,eAAe,CAAC;AAExE,0EAA0E;AAC1E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAsB5B,oBAAoB;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,mBAAmB;AACnB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,6BAA6B;AAC7B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,GAEZ,MAAM,aAAa,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
export interface WorktreeConfirmationResult {
|
|
14
14
|
execCwd: string;
|
|
15
15
|
isWorktree: boolean;
|
|
16
|
+
branch?: string;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
|
-
* Ask user whether to create a
|
|
19
|
-
* Returns the execution directory and whether a
|
|
20
|
-
* Task name is summarized to English by AI for use in branch/
|
|
19
|
+
* Ask user whether to create a shared clone, and create one if confirmed.
|
|
20
|
+
* Returns the execution directory and whether a clone was created.
|
|
21
|
+
* Task name is summarized to English by AI for use in branch/clone names.
|
|
21
22
|
*/
|
|
22
23
|
export declare function confirmAndCreateWorktree(cwd: string, task: string): Promise<WorktreeConfirmationResult>;
|
|
23
24
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AA0CH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,0BAA0B,CAAC,CAkBrC"}
|
package/dist/cli.js
CHANGED
|
@@ -10,24 +10,30 @@
|
|
|
10
10
|
* takt /help - Show help
|
|
11
11
|
* takt /config - Select permission mode interactively
|
|
12
12
|
*/
|
|
13
|
+
import { createRequire } from 'node:module';
|
|
13
14
|
import { Command } from 'commander';
|
|
14
15
|
import { resolve } from 'node:path';
|
|
15
16
|
import { initGlobalDirs, initProjectDirs, loadGlobalConfig, getEffectiveDebugConfig, } from './config/index.js';
|
|
16
17
|
import { clearAgentSessions, getCurrentWorkflow, isVerboseMode } from './config/paths.js';
|
|
17
18
|
import { info, error, success, setLogLevel } from './utils/ui.js';
|
|
18
19
|
import { initDebugLogger, createLogger, setVerboseConsole } from './utils/debug.js';
|
|
19
|
-
import { executeTask, runAllTasks, showHelp, switchWorkflow, switchConfig, addTask, refreshBuiltin, watchTasks,
|
|
20
|
+
import { executeTask, runAllTasks, showHelp, switchWorkflow, switchConfig, addTask, refreshBuiltin, ejectBuiltin, watchTasks, listTasks, } from './commands/index.js';
|
|
20
21
|
import { listWorkflows } from './config/workflowLoader.js';
|
|
21
22
|
import { selectOptionWithDefault, confirm } from './prompt/index.js';
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
23
|
+
import { createSharedClone } from './task/clone.js';
|
|
24
|
+
import { autoCommitAndPush } from './task/autoCommit.js';
|
|
24
25
|
import { summarizeTaskName } from './task/summarize.js';
|
|
25
26
|
import { DEFAULT_WORKFLOW_NAME } from './constants.js';
|
|
27
|
+
import { checkForUpdates } from './utils/updateNotifier.js';
|
|
28
|
+
import { resolveIssueTask, isIssueReference } from './github/issue.js';
|
|
29
|
+
const require = createRequire(import.meta.url);
|
|
30
|
+
const { version: cliVersion } = require('../package.json');
|
|
26
31
|
const log = createLogger('cli');
|
|
32
|
+
checkForUpdates();
|
|
27
33
|
/**
|
|
28
|
-
* Ask user whether to create a
|
|
29
|
-
* Returns the execution directory and whether a
|
|
30
|
-
* Task name is summarized to English by AI for use in branch/
|
|
34
|
+
* Ask user whether to create a shared clone, and create one if confirmed.
|
|
35
|
+
* Returns the execution directory and whether a clone was created.
|
|
36
|
+
* Task name is summarized to English by AI for use in branch/clone names.
|
|
31
37
|
*/
|
|
32
38
|
export async function confirmAndCreateWorktree(cwd, task) {
|
|
33
39
|
const useWorktree = await confirm('Create worktree?', false);
|
|
@@ -37,18 +43,18 @@ export async function confirmAndCreateWorktree(cwd, task) {
|
|
|
37
43
|
// Summarize task name to English slug using AI
|
|
38
44
|
info('Generating branch name...');
|
|
39
45
|
const taskSlug = await summarizeTaskName(task, { cwd });
|
|
40
|
-
const result =
|
|
46
|
+
const result = createSharedClone(cwd, {
|
|
41
47
|
worktree: true,
|
|
42
48
|
taskSlug,
|
|
43
49
|
});
|
|
44
|
-
info(`
|
|
45
|
-
return { execCwd: result.path, isWorktree: true };
|
|
50
|
+
info(`Clone created: ${result.path} (branch: ${result.branch})`);
|
|
51
|
+
return { execCwd: result.path, isWorktree: true, branch: result.branch };
|
|
46
52
|
}
|
|
47
53
|
const program = new Command();
|
|
48
54
|
program
|
|
49
55
|
.name('takt')
|
|
50
56
|
.description('TAKT: Task Agent Koordination Tool')
|
|
51
|
-
.version(
|
|
57
|
+
.version(cliVersion);
|
|
52
58
|
program
|
|
53
59
|
.argument('[task]', 'Task to execute or slash command')
|
|
54
60
|
.action(async (task) => {
|
|
@@ -75,7 +81,7 @@ program
|
|
|
75
81
|
setLogLevel(config.logLevel);
|
|
76
82
|
}
|
|
77
83
|
log.info('TAKT CLI starting', {
|
|
78
|
-
version:
|
|
84
|
+
version: cliVersion,
|
|
79
85
|
cwd,
|
|
80
86
|
task: task || null,
|
|
81
87
|
verbose,
|
|
@@ -113,21 +119,36 @@ program
|
|
|
113
119
|
case 'refresh-builtin':
|
|
114
120
|
await refreshBuiltin();
|
|
115
121
|
return;
|
|
122
|
+
case 'eject':
|
|
123
|
+
await ejectBuiltin(args[0]);
|
|
124
|
+
return;
|
|
116
125
|
case 'watch':
|
|
117
126
|
await watchTasks(cwd);
|
|
118
127
|
return;
|
|
119
|
-
case '
|
|
120
|
-
case '
|
|
121
|
-
await
|
|
128
|
+
case 'list-tasks':
|
|
129
|
+
case 'list':
|
|
130
|
+
await listTasks(cwd);
|
|
122
131
|
return;
|
|
123
132
|
default:
|
|
124
133
|
error(`Unknown command: /${command}`);
|
|
125
|
-
info('Available: /run-tasks (/run), /watch, /add-task (/add), /
|
|
134
|
+
info('Available: /run-tasks (/run), /watch, /add-task (/add), /list-tasks (/list), /switch (/sw), /clear, /eject, /help, /config');
|
|
126
135
|
process.exit(1);
|
|
127
136
|
}
|
|
128
137
|
}
|
|
129
138
|
// Task execution
|
|
130
139
|
if (task) {
|
|
140
|
+
// Resolve #N issue references to task text
|
|
141
|
+
let resolvedTask = task;
|
|
142
|
+
if (isIssueReference(task) || task.trim().split(/\s+/).every((t) => isIssueReference(t))) {
|
|
143
|
+
try {
|
|
144
|
+
info('Fetching GitHub Issue...');
|
|
145
|
+
resolvedTask = resolveIssueTask(task);
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
error(e instanceof Error ? e.message : String(e));
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
131
152
|
// Get available workflows and prompt user to select
|
|
132
153
|
const availableWorkflows = listWorkflows();
|
|
133
154
|
const currentWorkflow = getCurrentWorkflow(cwd);
|
|
@@ -161,13 +182,13 @@ program
|
|
|
161
182
|
selectedWorkflow = selected;
|
|
162
183
|
}
|
|
163
184
|
// Ask whether to create a worktree
|
|
164
|
-
const { execCwd, isWorktree } = await confirmAndCreateWorktree(cwd,
|
|
165
|
-
log.info('Starting task execution', { task, workflow: selectedWorkflow, worktree: isWorktree });
|
|
166
|
-
const taskSuccess = await executeTask(
|
|
185
|
+
const { execCwd, isWorktree } = await confirmAndCreateWorktree(cwd, resolvedTask);
|
|
186
|
+
log.info('Starting task execution', { task: resolvedTask, workflow: selectedWorkflow, worktree: isWorktree });
|
|
187
|
+
const taskSuccess = await executeTask(resolvedTask, execCwd, selectedWorkflow, cwd);
|
|
167
188
|
if (taskSuccess && isWorktree) {
|
|
168
|
-
const commitResult =
|
|
189
|
+
const commitResult = autoCommitAndPush(execCwd, resolvedTask, cwd);
|
|
169
190
|
if (commitResult.success && commitResult.commitHash) {
|
|
170
|
-
success(`Auto-committed: ${commitResult.commitHash}`);
|
|
191
|
+
success(`Auto-committed & pushed: ${commitResult.commitHash}`);
|
|
171
192
|
}
|
|
172
193
|
else if (!commitResult.success) {
|
|
173
194
|
error(`Auto-commit failed: ${commitResult.message}`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,OAAO,EACP,cAAc,EACd,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/codex/client.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/codex/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/codex/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAU,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AA0TD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,aAAa,CAAC,CA0JxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,aAAa,CAAC,CAKxB"}
|