takt 0.2.0 → 0.2.2
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 +55 -15
- package/dist/agents/runner.d.ts +3 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +15 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/claude/client.d.ts +3 -1
- package/dist/claude/client.d.ts.map +1 -1
- package/dist/claude/client.js +17 -0
- package/dist/claude/client.js.map +1 -1
- package/dist/cli.d.ts +10 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +69 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +27 -9
- package/dist/commands/addTask.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +5 -3
- 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/reviewTasks.d.ts +43 -0
- package/dist/commands/reviewTasks.d.ts.map +1 -0
- package/dist/commands/reviewTasks.js +333 -0
- package/dist/commands/reviewTasks.js.map +1 -0
- package/dist/commands/taskExecution.d.ts +16 -2
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +77 -39
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/watchTasks.d.ts.map +1 -1
- package/dist/commands/watchTasks.js +6 -36
- package/dist/commands/watchTasks.js.map +1 -1
- package/dist/commands/workflowExecution.d.ts +5 -1
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +36 -12
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/initialization.d.ts +2 -0
- package/dist/config/initialization.d.ts.map +1 -1
- package/dist/config/initialization.js +12 -2
- package/dist/config/initialization.js.map +1 -1
- package/dist/config/paths.d.ts +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +3 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/sessionStore.d.ts +15 -0
- package/dist/config/sessionStore.d.ts.map +1 -1
- package/dist/config/sessionStore.js +55 -1
- package/dist/config/sessionStore.js.map +1 -1
- package/dist/config/workflowLoader.d.ts.map +1 -1
- package/dist/config/workflowLoader.js +1 -0
- package/dist/config/workflowLoader.js.map +1 -1
- package/dist/models/schemas.d.ts +22 -0
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +8 -0
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +8 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/prompt/index.d.ts +60 -11
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +246 -72
- package/dist/prompt/index.js.map +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +2 -0
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/index.d.ts +3 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/task/autoCommit.d.ts +28 -0
- package/dist/task/autoCommit.d.ts.map +1 -0
- package/dist/task/autoCommit.js +68 -0
- package/dist/task/autoCommit.js.map +1 -0
- package/dist/task/index.d.ts +2 -1
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +2 -1
- package/dist/task/index.js.map +1 -1
- package/dist/task/runner.d.ts +14 -0
- package/dist/task/runner.d.ts.map +1 -1
- package/dist/task/runner.js +30 -7
- package/dist/task/runner.js.map +1 -1
- package/dist/task/summarize.d.ts +20 -0
- package/dist/task/summarize.d.ts.map +1 -0
- package/dist/task/summarize.js +50 -0
- package/dist/task/summarize.js.map +1 -0
- package/dist/task/worktree.d.ts +39 -0
- package/dist/task/worktree.d.ts.map +1 -1
- package/dist/task/worktree.js +111 -2
- package/dist/task/worktree.js.map +1 -1
- package/dist/utils/debug.d.ts +6 -1
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +30 -24
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/session.d.ts +20 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +32 -3
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/text.d.ts +22 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +54 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/workflow/engine.d.ts +5 -6
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +32 -12
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -2
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -2
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +32 -2
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +90 -3
- package/dist/workflow/instruction-builder.js.map +1 -1
- package/dist/workflow/transitions.d.ts.map +1 -1
- package/dist/workflow/transitions.js +1 -0
- package/dist/workflow/transitions.js.map +1 -1
- package/dist/workflow/types.d.ts +5 -1
- package/dist/workflow/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/resources/global/en/workflows/default.yaml +22 -51
- package/resources/global/en/workflows/{expert-review.yaml → expert-cqrs.yaml} +6 -48
- package/resources/global/en/workflows/expert.yaml +1099 -0
- package/resources/global/en/workflows/magi.yaml +0 -9
- package/resources/global/en/workflows/research.yaml +0 -9
- package/resources/global/en/workflows/simple.yaml +18 -26
- package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
- package/resources/global/ja/agents/default/architect.md +37 -4
- package/resources/global/ja/agents/default/coder.md +1 -0
- package/resources/global/ja/workflows/default.yaml +27 -52
- package/resources/global/ja/workflows/{expert-review.yaml → expert-cqrs.yaml} +169 -58
- package/resources/global/ja/workflows/expert.yaml +1099 -0
- package/resources/global/ja/workflows/magi.yaml +0 -9
- package/resources/global/ja/workflows/research.yaml +0 -9
- package/resources/global/ja/workflows/simple.yaml +18 -26
- /package/resources/global/en/agents/{expert-review → expert}/frontend-reviewer.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert}/qa-reviewer.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert}/security-reviewer.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert}/supervisor.md +0 -0
- /package/resources/global/en/agents/{expert-review → expert-cqrs}/cqrs-es-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/frontend-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/qa-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/security-reviewer.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert}/supervisor.md +0 -0
- /package/resources/global/ja/agents/{expert-review → expert-cqrs}/cqrs-es-reviewer.md +0 -0
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ npm install -g takt
|
|
|
23
23
|
## Quick Start
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
# Run a task (will prompt for workflow selection)
|
|
26
|
+
# Run a task (will prompt for workflow selection and optional worktree creation)
|
|
27
27
|
takt "Add a login feature"
|
|
28
28
|
|
|
29
29
|
# Add a task to the queue
|
|
@@ -35,24 +35,28 @@ takt /run-tasks
|
|
|
35
35
|
# Watch for tasks and auto-execute
|
|
36
36
|
takt /watch
|
|
37
37
|
|
|
38
|
+
# Review worktree results (merge or delete)
|
|
39
|
+
takt /review-tasks
|
|
40
|
+
|
|
38
41
|
# Switch workflow
|
|
39
42
|
takt /switch
|
|
40
43
|
```
|
|
41
44
|
|
|
42
45
|
## Commands
|
|
43
46
|
|
|
44
|
-
| Command | Description |
|
|
45
|
-
|
|
46
|
-
| `takt "task"` | Execute task with current workflow (continues session) |
|
|
47
|
-
| `takt -r "task"` | Execute task, resuming previous session |
|
|
48
|
-
| `takt /run-tasks` | Run all pending tasks from `.takt/tasks/` |
|
|
49
|
-
| `takt /watch` | Watch `.takt/tasks/` and auto-execute tasks (stays resident) |
|
|
50
|
-
| `takt /add-task` | Add a new task interactively (YAML format) |
|
|
51
|
-
| `takt /
|
|
52
|
-
| `takt /
|
|
53
|
-
| `takt /
|
|
54
|
-
| `takt /
|
|
55
|
-
| `takt /
|
|
47
|
+
| Command | Alias | Description |
|
|
48
|
+
|---------|-------|-------------|
|
|
49
|
+
| `takt "task"` | | Execute task with current workflow (continues session) |
|
|
50
|
+
| `takt -r "task"` | | Execute task, resuming previous session |
|
|
51
|
+
| `takt /run-tasks` | `/run` | Run all pending tasks from `.takt/tasks/` |
|
|
52
|
+
| `takt /watch` | | Watch `.takt/tasks/` and auto-execute tasks (stays resident) |
|
|
53
|
+
| `takt /add-task` | `/add` | Add a new task interactively (YAML format, multiline supported) |
|
|
54
|
+
| `takt /review-tasks` | `/review` | Review worktree task results (try merge, merge & cleanup, or delete) |
|
|
55
|
+
| `takt /switch` | | Switch workflow interactively |
|
|
56
|
+
| `takt /clear` | | Clear agent conversation sessions |
|
|
57
|
+
| `takt /refresh-builtin` | | Update builtin agents/workflows to latest version |
|
|
58
|
+
| `takt /config` | | Display current configuration |
|
|
59
|
+
| `takt /help` | | Show help |
|
|
56
60
|
|
|
57
61
|
## Workflows
|
|
58
62
|
|
|
@@ -183,7 +187,10 @@ Available Codex models:
|
|
|
183
187
|
├── completed/ # Completed tasks with reports
|
|
184
188
|
├── worktrees/ # Git worktrees for isolated task execution
|
|
185
189
|
├── reports/ # Execution reports (auto-generated)
|
|
186
|
-
└── logs/ # Session logs
|
|
190
|
+
└── logs/ # Session logs (incremental)
|
|
191
|
+
├── latest.json # Pointer to current/latest session
|
|
192
|
+
├── previous.json # Pointer to previous session
|
|
193
|
+
└── {sessionId}.json # Full session log per workflow run
|
|
187
194
|
```
|
|
188
195
|
|
|
189
196
|
### Global Configuration
|
|
@@ -224,6 +231,15 @@ takt -r "The bug occurs when the password contains special characters"
|
|
|
224
231
|
|
|
225
232
|
The `-r` flag preserves the agent's conversation history, allowing for natural back-and-forth interaction.
|
|
226
233
|
|
|
234
|
+
### Interactive Workflow
|
|
235
|
+
|
|
236
|
+
When running `takt "task"`, you are prompted to:
|
|
237
|
+
|
|
238
|
+
1. **Select a workflow** - Choose from available workflows (arrow keys, ESC to cancel)
|
|
239
|
+
2. **Create a worktree** (optional) - Optionally run the task in an isolated git worktree
|
|
240
|
+
|
|
241
|
+
This interactive flow ensures each task runs with the right workflow and isolation level.
|
|
242
|
+
|
|
227
243
|
### Adding Custom Workflows
|
|
228
244
|
|
|
229
245
|
Create your own workflow by adding YAML files to `~/.takt/workflows/`:
|
|
@@ -335,6 +351,8 @@ YAML task files can specify `worktree` to run each task in an isolated git workt
|
|
|
335
351
|
- `branch: "feat/xxx"` - Use specified branch (auto-generated as `takt/{timestamp}-{slug}` if omitted)
|
|
336
352
|
- Omit `worktree` - Run in current working directory (default)
|
|
337
353
|
|
|
354
|
+
When a worktree task completes successfully, TAKT automatically commits all changes (`auto-commit`). Use `takt /review-tasks` to review, try-merge, or delete completed worktree branches.
|
|
355
|
+
|
|
338
356
|
#### Running Tasks with `/run-tasks`
|
|
339
357
|
|
|
340
358
|
```bash
|
|
@@ -356,6 +374,27 @@ Watch mode polls `.takt/tasks/` for new task files and auto-executes them as the
|
|
|
356
374
|
- Automated workflows where tasks are added by external processes
|
|
357
375
|
- Long-running development sessions where tasks are queued over time
|
|
358
376
|
|
|
377
|
+
#### Reviewing Worktree Results with `/review-tasks`
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
takt /review-tasks
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
Lists all `takt/`-prefixed worktree branches with file change counts. For each branch you can:
|
|
384
|
+
- **Try merge** - Attempt merge into main (dry-run check, then actual merge)
|
|
385
|
+
- **Merge & cleanup** - Merge and remove the worktree
|
|
386
|
+
- **Delete** - Remove the worktree and branch without merging
|
|
387
|
+
|
|
388
|
+
### Session Logs
|
|
389
|
+
|
|
390
|
+
TAKT writes session logs incrementally to `.takt/logs/`. Logs are saved at workflow start, after each step, and at workflow end — so even if the process crashes mid-execution, partial logs are preserved.
|
|
391
|
+
|
|
392
|
+
- `.takt/logs/latest.json` - Pointer to the current (or most recent) session
|
|
393
|
+
- `.takt/logs/previous.json` - Pointer to the previous session
|
|
394
|
+
- `.takt/logs/{sessionId}.json` - Full session log with step history
|
|
395
|
+
|
|
396
|
+
Agents can read `previous.json` to pick up context from a prior run (e.g., when resuming with `takt "続けて"`).
|
|
397
|
+
|
|
359
398
|
### Workflow Variables
|
|
360
399
|
|
|
361
400
|
Available variables in `instruction_template`:
|
|
@@ -401,7 +440,7 @@ transitions:
|
|
|
401
440
|
next_step: ABORT # End workflow with failure
|
|
402
441
|
```
|
|
403
442
|
|
|
404
|
-
Available transition conditions: `done`, `blocked`, `approved`, `rejected`, `improve`, `always`.
|
|
443
|
+
Available transition conditions: `done`, `blocked`, `approved`, `rejected`, `improve`, `answer`, `always`.
|
|
405
444
|
Special next_step values: `COMPLETE` (success), `ABORT` (failure).
|
|
406
445
|
|
|
407
446
|
**Step options:**
|
|
@@ -413,6 +452,7 @@ Special next_step values: `COMPLETE` (success), `ABORT` (failure).
|
|
|
413
452
|
| `allowed_tools` | - | List of tools the agent can use (Read, Glob, Grep, Edit, Write, Bash, etc.) |
|
|
414
453
|
| `provider` | - | Override provider for this step (`claude` or `codex`) |
|
|
415
454
|
| `model` | - | Override model for this step |
|
|
455
|
+
| `permission_mode` | `default` | Permission mode: `default`, `acceptEdits`, or `bypassPermissions` |
|
|
416
456
|
|
|
417
457
|
## API Usage
|
|
418
458
|
|
package/dist/agents/runner.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Agent execution runners
|
|
3
3
|
*/
|
|
4
4
|
import { type StreamCallback, type PermissionHandler, type AskUserQuestionHandler } from '../claude/process.js';
|
|
5
|
-
import type { AgentResponse, CustomAgentConfig } from '../models/types.js';
|
|
5
|
+
import type { AgentResponse, CustomAgentConfig, PermissionMode } from '../models/types.js';
|
|
6
6
|
export type { StreamCallback };
|
|
7
7
|
/** Common options for running agents */
|
|
8
8
|
export interface RunAgentOptions {
|
|
@@ -16,6 +16,8 @@ export interface RunAgentOptions {
|
|
|
16
16
|
allowedTools?: string[];
|
|
17
17
|
/** Status output rules to inject into system prompt */
|
|
18
18
|
statusRulesPrompt?: string;
|
|
19
|
+
/** Permission mode for tool execution (from workflow step) */
|
|
20
|
+
permissionMode?: PermissionMode;
|
|
19
21
|
onStream?: StreamCallback;
|
|
20
22
|
onPermissionRequest?: PermissionHandler;
|
|
21
23
|
onAskUserQuestion?: AskUserQuestionHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAKhH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAKhH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAK3F,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AA6BD,sCAAsC;AACtC,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoB9C;AAED,yBAAyB;AACzB,wBAAsB,cAAc,CAClC,WAAW,EAAE,iBAAiB,EAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CA4DxB;AAqCD,mCAAmC;AACnC,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,aAAa,CAAC,CAoDxB"}
|
package/dist/agents/runner.js
CHANGED
|
@@ -9,6 +9,8 @@ import { loadCustomAgents, loadAgentPrompt } from '../config/loader.js';
|
|
|
9
9
|
import { loadGlobalConfig } from '../config/globalConfig.js';
|
|
10
10
|
import { loadProjectConfig } from '../config/projectConfig.js';
|
|
11
11
|
import { getProvider } from '../providers/index.js';
|
|
12
|
+
import { createLogger } from '../utils/debug.js';
|
|
13
|
+
const log = createLogger('runner');
|
|
12
14
|
function resolveProvider(cwd, options, agentConfig) {
|
|
13
15
|
// Mock provider must be explicitly specified (no fallback)
|
|
14
16
|
if (options?.provider)
|
|
@@ -76,6 +78,7 @@ export async function runCustomAgent(agentConfig, task, options) {
|
|
|
76
78
|
sessionId: options.sessionId,
|
|
77
79
|
allowedTools,
|
|
78
80
|
model: resolveModel(options.cwd, options, agentConfig),
|
|
81
|
+
permissionMode: options.permissionMode,
|
|
79
82
|
onStream: options.onStream,
|
|
80
83
|
onPermissionRequest: options.onPermissionRequest,
|
|
81
84
|
onAskUserQuestion: options.onAskUserQuestion,
|
|
@@ -90,6 +93,7 @@ export async function runCustomAgent(agentConfig, task, options) {
|
|
|
90
93
|
sessionId: options.sessionId,
|
|
91
94
|
allowedTools,
|
|
92
95
|
model: resolveModel(options.cwd, options, agentConfig),
|
|
96
|
+
permissionMode: options.permissionMode,
|
|
93
97
|
onStream: options.onStream,
|
|
94
98
|
onPermissionRequest: options.onPermissionRequest,
|
|
95
99
|
onAskUserQuestion: options.onAskUserQuestion,
|
|
@@ -111,6 +115,7 @@ export async function runCustomAgent(agentConfig, task, options) {
|
|
|
111
115
|
allowedTools,
|
|
112
116
|
model: resolveModel(options.cwd, options, agentConfig),
|
|
113
117
|
statusPatterns: agentConfig.statusPatterns,
|
|
118
|
+
permissionMode: options.permissionMode,
|
|
114
119
|
onStream: options.onStream,
|
|
115
120
|
onPermissionRequest: options.onPermissionRequest,
|
|
116
121
|
onAskUserQuestion: options.onAskUserQuestion,
|
|
@@ -151,6 +156,15 @@ function extractAgentName(agentSpec) {
|
|
|
151
156
|
/** Run an agent by name or path */
|
|
152
157
|
export async function runAgent(agentSpec, task, options) {
|
|
153
158
|
const agentName = extractAgentName(agentSpec);
|
|
159
|
+
log.debug('Running agent', {
|
|
160
|
+
agentSpec,
|
|
161
|
+
agentName,
|
|
162
|
+
provider: options.provider,
|
|
163
|
+
model: options.model,
|
|
164
|
+
hasAgentPath: !!options.agentPath,
|
|
165
|
+
hasSession: !!options.sessionId,
|
|
166
|
+
permissionMode: options.permissionMode,
|
|
167
|
+
});
|
|
154
168
|
// If agentPath is provided (from workflow), use it to load prompt
|
|
155
169
|
if (options.agentPath) {
|
|
156
170
|
if (!existsSync(options.agentPath)) {
|
|
@@ -169,6 +183,7 @@ export async function runAgent(agentSpec, task, options) {
|
|
|
169
183
|
allowedTools: options.allowedTools,
|
|
170
184
|
model: resolveModel(options.cwd, options),
|
|
171
185
|
systemPrompt,
|
|
186
|
+
permissionMode: options.permissionMode,
|
|
172
187
|
onStream: options.onStream,
|
|
173
188
|
onPermissionRequest: options.onPermissionRequest,
|
|
174
189
|
onAskUserQuestion: options.onAskUserQuestion,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,eAAe,EACf,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAA+C,MAAM,uBAAuB,CAAC;
|
|
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, Status } from '../models/types.js';
|
|
8
|
+
import type { AgentResponse, Status, PermissionMode } from '../models/types.js';
|
|
9
9
|
/** Options for calling Claude */
|
|
10
10
|
export interface ClaudeCallOptions {
|
|
11
11
|
cwd: string;
|
|
@@ -17,6 +17,8 @@ export interface ClaudeCallOptions {
|
|
|
17
17
|
statusPatterns?: Record<string, string>;
|
|
18
18
|
/** SDK agents to register for sub-agent execution */
|
|
19
19
|
agents?: Record<string, AgentDefinition>;
|
|
20
|
+
/** Permission mode for tool execution (from workflow step) */
|
|
21
|
+
permissionMode?: PermissionMode;
|
|
20
22
|
/** Enable streaming mode with callback for real-time output */
|
|
21
23
|
onStream?: StreamCallback;
|
|
22
24
|
/** Custom permission handler for interactive permission prompts */
|
|
@@ -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,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
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,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMhF,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,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,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,8CAA8C;AAC9C,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAYR;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBpD;AAED,oDAAoD;AACpD,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGnF;AAoBD,uCAAuC;AACvC,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,aAAa,CAAC,CAgCxB;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,CAgCxB;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
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { executeClaudeCli } from './process.js';
|
|
7
7
|
import { GENERIC_STATUS_PATTERNS } from '../models/schemas.js';
|
|
8
|
+
import { createLogger } from '../utils/debug.js';
|
|
9
|
+
const log = createLogger('client');
|
|
8
10
|
/** Detect status from agent output content */
|
|
9
11
|
export function detectStatus(content, patterns) {
|
|
10
12
|
for (const [status, pattern] of Object.entries(patterns)) {
|
|
@@ -71,6 +73,7 @@ export async function callClaude(agentType, prompt, options) {
|
|
|
71
73
|
maxTurns: options.maxTurns,
|
|
72
74
|
systemPrompt: options.systemPrompt,
|
|
73
75
|
agents: options.agents,
|
|
76
|
+
permissionMode: options.permissionMode,
|
|
74
77
|
onStream: options.onStream,
|
|
75
78
|
onPermissionRequest: options.onPermissionRequest,
|
|
76
79
|
onAskUserQuestion: options.onAskUserQuestion,
|
|
@@ -79,12 +82,16 @@ export async function callClaude(agentType, prompt, options) {
|
|
|
79
82
|
const result = await executeClaudeCli(prompt, spawnOptions);
|
|
80
83
|
const patterns = options.statusPatterns || getBuiltinStatusPatterns(agentType);
|
|
81
84
|
const status = determineStatus(result, patterns);
|
|
85
|
+
if (!result.success && result.error) {
|
|
86
|
+
log.error('Agent query failed', { agent: agentType, error: result.error });
|
|
87
|
+
}
|
|
82
88
|
return {
|
|
83
89
|
agent: agentType,
|
|
84
90
|
status,
|
|
85
91
|
content: result.content,
|
|
86
92
|
timestamp: new Date(),
|
|
87
93
|
sessionId: result.sessionId,
|
|
94
|
+
error: result.error,
|
|
88
95
|
};
|
|
89
96
|
}
|
|
90
97
|
/** Call Claude with a custom agent configuration */
|
|
@@ -96,6 +103,7 @@ export async function callClaudeCustom(agentName, prompt, systemPrompt, options)
|
|
|
96
103
|
model: options.model,
|
|
97
104
|
maxTurns: options.maxTurns,
|
|
98
105
|
systemPrompt,
|
|
106
|
+
permissionMode: options.permissionMode,
|
|
99
107
|
onStream: options.onStream,
|
|
100
108
|
onPermissionRequest: options.onPermissionRequest,
|
|
101
109
|
onAskUserQuestion: options.onAskUserQuestion,
|
|
@@ -105,12 +113,16 @@ export async function callClaudeCustom(agentName, prompt, systemPrompt, options)
|
|
|
105
113
|
// Use provided patterns, or fall back to built-in patterns for known agents
|
|
106
114
|
const patterns = options.statusPatterns || getBuiltinStatusPatterns(agentName);
|
|
107
115
|
const status = determineStatus(result, patterns);
|
|
116
|
+
if (!result.success && result.error) {
|
|
117
|
+
log.error('Agent query failed', { agent: agentName, error: result.error });
|
|
118
|
+
}
|
|
108
119
|
return {
|
|
109
120
|
agent: agentName,
|
|
110
121
|
status,
|
|
111
122
|
content: result.content,
|
|
112
123
|
timestamp: new Date(),
|
|
113
124
|
sessionId: result.sessionId,
|
|
125
|
+
error: result.error,
|
|
114
126
|
};
|
|
115
127
|
}
|
|
116
128
|
/** Call a Claude Code built-in agent (using claude --agent flag if available) */
|
|
@@ -130,18 +142,23 @@ export async function callClaudeSkill(skillName, prompt, options) {
|
|
|
130
142
|
allowedTools: options.allowedTools,
|
|
131
143
|
model: options.model,
|
|
132
144
|
maxTurns: options.maxTurns,
|
|
145
|
+
permissionMode: options.permissionMode,
|
|
133
146
|
onStream: options.onStream,
|
|
134
147
|
onPermissionRequest: options.onPermissionRequest,
|
|
135
148
|
onAskUserQuestion: options.onAskUserQuestion,
|
|
136
149
|
bypassPermissions: options.bypassPermissions,
|
|
137
150
|
};
|
|
138
151
|
const result = await executeClaudeCli(fullPrompt, spawnOptions);
|
|
152
|
+
if (!result.success && result.error) {
|
|
153
|
+
log.error('Skill query failed', { skill: skillName, error: result.error });
|
|
154
|
+
}
|
|
139
155
|
return {
|
|
140
156
|
agent: `skill:${skillName}`,
|
|
141
157
|
status: result.success ? 'done' : 'blocked',
|
|
142
158
|
content: result.content,
|
|
143
159
|
timestamp: new Date(),
|
|
144
160
|
sessionId: result.sessionId,
|
|
161
|
+
error: result.error,
|
|
145
162
|
};
|
|
146
163
|
}
|
|
147
164
|
//# sourceMappingURL=client.js.map
|
|
@@ -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,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/claude/client.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -10,5 +10,14 @@
|
|
|
10
10
|
* takt /help - Show help
|
|
11
11
|
* takt /config - Select permission mode interactively
|
|
12
12
|
*/
|
|
13
|
-
export {
|
|
13
|
+
export interface WorktreeConfirmationResult {
|
|
14
|
+
execCwd: string;
|
|
15
|
+
isWorktree: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Ask user whether to create a worktree, and create one if confirmed.
|
|
19
|
+
* Returns the execution directory and whether a worktree was created.
|
|
20
|
+
* Task name is summarized to English by AI for use in branch/worktree names.
|
|
21
|
+
*/
|
|
22
|
+
export declare function confirmAndCreateWorktree(cwd: string, task: string): Promise<WorktreeConfirmationResult>;
|
|
14
23
|
//# 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;AAiCH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,0BAA0B,CAAC,CAkBrC"}
|
package/dist/cli.js
CHANGED
|
@@ -15,12 +15,35 @@ import { resolve } from 'node:path';
|
|
|
15
15
|
import { initGlobalDirs, initProjectDirs, loadGlobalConfig, getEffectiveDebugConfig, } from './config/index.js';
|
|
16
16
|
import { clearAgentSessions, getCurrentWorkflow, isVerboseMode } from './config/paths.js';
|
|
17
17
|
import { info, error, success, setLogLevel } from './utils/ui.js';
|
|
18
|
-
import { initDebugLogger, createLogger } from './utils/debug.js';
|
|
19
|
-
import { executeTask, runAllTasks, showHelp, switchWorkflow, switchConfig, addTask, refreshBuiltin, watchTasks, } from './commands/index.js';
|
|
18
|
+
import { initDebugLogger, createLogger, setVerboseConsole } from './utils/debug.js';
|
|
19
|
+
import { executeTask, runAllTasks, showHelp, switchWorkflow, switchConfig, addTask, refreshBuiltin, watchTasks, reviewTasks, } from './commands/index.js';
|
|
20
20
|
import { listWorkflows } from './config/workflowLoader.js';
|
|
21
|
-
import { selectOptionWithDefault } from './prompt/index.js';
|
|
21
|
+
import { selectOptionWithDefault, confirm } from './prompt/index.js';
|
|
22
|
+
import { createWorktree } from './task/worktree.js';
|
|
23
|
+
import { autoCommitWorktree } from './task/autoCommit.js';
|
|
24
|
+
import { summarizeTaskName } from './task/summarize.js';
|
|
22
25
|
import { DEFAULT_WORKFLOW_NAME } from './constants.js';
|
|
23
26
|
const log = createLogger('cli');
|
|
27
|
+
/**
|
|
28
|
+
* Ask user whether to create a worktree, and create one if confirmed.
|
|
29
|
+
* Returns the execution directory and whether a worktree was created.
|
|
30
|
+
* Task name is summarized to English by AI for use in branch/worktree names.
|
|
31
|
+
*/
|
|
32
|
+
export async function confirmAndCreateWorktree(cwd, task) {
|
|
33
|
+
const useWorktree = await confirm('Create worktree?', false);
|
|
34
|
+
if (!useWorktree) {
|
|
35
|
+
return { execCwd: cwd, isWorktree: false };
|
|
36
|
+
}
|
|
37
|
+
// Summarize task name to English slug using AI
|
|
38
|
+
info('Generating branch name...');
|
|
39
|
+
const taskSlug = await summarizeTaskName(task, { cwd });
|
|
40
|
+
const result = createWorktree(cwd, {
|
|
41
|
+
worktree: true,
|
|
42
|
+
taskSlug,
|
|
43
|
+
});
|
|
44
|
+
info(`Worktree created: ${result.path} (branch: ${result.branch})`);
|
|
45
|
+
return { execCwd: result.path, isWorktree: true };
|
|
46
|
+
}
|
|
24
47
|
const program = new Command();
|
|
25
48
|
program
|
|
26
49
|
.name('takt')
|
|
@@ -34,30 +57,37 @@ program
|
|
|
34
57
|
await initGlobalDirs();
|
|
35
58
|
// Initialize project directories (.takt/)
|
|
36
59
|
initProjectDirs(cwd);
|
|
37
|
-
//
|
|
38
|
-
const
|
|
60
|
+
// Determine verbose mode and initialize logging
|
|
61
|
+
const verbose = isVerboseMode(cwd);
|
|
62
|
+
let debugConfig = getEffectiveDebugConfig(cwd);
|
|
63
|
+
// verbose=true enables file logging automatically
|
|
64
|
+
if (verbose && (!debugConfig || !debugConfig.enabled)) {
|
|
65
|
+
debugConfig = { enabled: true };
|
|
66
|
+
}
|
|
39
67
|
initDebugLogger(debugConfig, cwd);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
task: task || null,
|
|
44
|
-
});
|
|
45
|
-
// Set log level from config
|
|
46
|
-
if (isVerboseMode(cwd)) {
|
|
68
|
+
// Enable verbose console output (stderr) for debug logs
|
|
69
|
+
if (verbose) {
|
|
70
|
+
setVerboseConsole(true);
|
|
47
71
|
setLogLevel('debug');
|
|
48
|
-
log.debug('Verbose mode enabled (from config)');
|
|
49
72
|
}
|
|
50
73
|
else {
|
|
51
74
|
const config = loadGlobalConfig();
|
|
52
75
|
setLogLevel(config.logLevel);
|
|
53
76
|
}
|
|
77
|
+
log.info('TAKT CLI starting', {
|
|
78
|
+
version: '0.1.0',
|
|
79
|
+
cwd,
|
|
80
|
+
task: task || null,
|
|
81
|
+
verbose,
|
|
82
|
+
});
|
|
54
83
|
// Handle slash commands
|
|
55
84
|
if (task?.startsWith('/')) {
|
|
56
85
|
const parts = task.slice(1).split(/\s+/);
|
|
57
86
|
const command = parts[0]?.toLowerCase() || '';
|
|
58
87
|
const args = parts.slice(1);
|
|
59
88
|
switch (command) {
|
|
60
|
-
case 'run-tasks':
|
|
89
|
+
case 'run-tasks':
|
|
90
|
+
case 'run': {
|
|
61
91
|
const workflow = getCurrentWorkflow(cwd);
|
|
62
92
|
await runAllTasks(cwd, workflow);
|
|
63
93
|
return;
|
|
@@ -77,6 +107,7 @@ program
|
|
|
77
107
|
await switchConfig(cwd, args[0]);
|
|
78
108
|
return;
|
|
79
109
|
case 'add-task':
|
|
110
|
+
case 'add':
|
|
80
111
|
await addTask(cwd, args);
|
|
81
112
|
return;
|
|
82
113
|
case 'refresh-builtin':
|
|
@@ -85,9 +116,13 @@ program
|
|
|
85
116
|
case 'watch':
|
|
86
117
|
await watchTasks(cwd);
|
|
87
118
|
return;
|
|
119
|
+
case 'review-tasks':
|
|
120
|
+
case 'review':
|
|
121
|
+
await reviewTasks(cwd);
|
|
122
|
+
return;
|
|
88
123
|
default:
|
|
89
124
|
error(`Unknown command: /${command}`);
|
|
90
|
-
info('Available: /run-tasks, /watch, /add-task, /switch, /clear, /refresh-builtin, /help, /config');
|
|
125
|
+
info('Available: /run-tasks (/run), /watch, /add-task (/add), /review-tasks (/review), /switch (/sw), /clear, /refresh-builtin, /help, /config');
|
|
91
126
|
process.exit(1);
|
|
92
127
|
}
|
|
93
128
|
}
|
|
@@ -118,10 +153,26 @@ program
|
|
|
118
153
|
: (availableWorkflows.includes(DEFAULT_WORKFLOW_NAME)
|
|
119
154
|
? DEFAULT_WORKFLOW_NAME
|
|
120
155
|
: availableWorkflows[0] || DEFAULT_WORKFLOW_NAME);
|
|
121
|
-
|
|
156
|
+
const selected = await selectOptionWithDefault('Select workflow:', options, defaultWorkflow);
|
|
157
|
+
if (selected === null) {
|
|
158
|
+
info('Cancelled');
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
selectedWorkflow = selected;
|
|
162
|
+
}
|
|
163
|
+
// Ask whether to create a worktree
|
|
164
|
+
const { execCwd, isWorktree } = await confirmAndCreateWorktree(cwd, task);
|
|
165
|
+
log.info('Starting task execution', { task, workflow: selectedWorkflow, worktree: isWorktree });
|
|
166
|
+
const taskSuccess = await executeTask(task, execCwd, selectedWorkflow, cwd);
|
|
167
|
+
if (taskSuccess && isWorktree) {
|
|
168
|
+
const commitResult = autoCommitWorktree(execCwd, task);
|
|
169
|
+
if (commitResult.success && commitResult.commitHash) {
|
|
170
|
+
success(`Auto-committed: ${commitResult.commitHash}`);
|
|
171
|
+
}
|
|
172
|
+
else if (!commitResult.success) {
|
|
173
|
+
error(`Auto-commit failed: ${commitResult.message}`);
|
|
174
|
+
}
|
|
122
175
|
}
|
|
123
|
-
log.info('Starting task execution', { task, workflow: selectedWorkflow });
|
|
124
|
-
const taskSuccess = await executeTask(task, cwd, selectedWorkflow);
|
|
125
176
|
if (!taskSuccess) {
|
|
126
177
|
process.exit(1);
|
|
127
178
|
}
|
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,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTask.d.ts","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"addTask.d.ts","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFxE"}
|
package/dist/commands/addTask.js
CHANGED
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
import * as fs from 'node:fs';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import { stringify as stringifyYaml } from 'yaml';
|
|
10
|
-
import { promptInput, confirm } from '../prompt/index.js';
|
|
10
|
+
import { promptInput, promptMultilineInput, confirm, selectOption } from '../prompt/index.js';
|
|
11
11
|
import { success, info } from '../utils/ui.js';
|
|
12
12
|
import { slugify } from '../utils/slug.js';
|
|
13
13
|
import { createLogger } from '../utils/debug.js';
|
|
14
|
+
import { listWorkflows } from '../config/workflowLoader.js';
|
|
15
|
+
import { getCurrentWorkflow } from '../config/paths.js';
|
|
14
16
|
const log = createLogger('add-task');
|
|
15
17
|
/**
|
|
16
18
|
* Generate a unique task filename
|
|
@@ -45,8 +47,8 @@ export async function addTask(cwd, args) {
|
|
|
45
47
|
taskContent = args.join(' ');
|
|
46
48
|
}
|
|
47
49
|
else {
|
|
48
|
-
// Interactive mode
|
|
49
|
-
const input = await
|
|
50
|
+
// Interactive mode (multiline: empty line to finish)
|
|
51
|
+
const input = await promptMultilineInput('Task content');
|
|
50
52
|
if (!input) {
|
|
51
53
|
info('Cancelled.');
|
|
52
54
|
return;
|
|
@@ -64,10 +66,25 @@ export async function addTask(cwd, args) {
|
|
|
64
66
|
branch = customBranch;
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
|
-
// Ask about workflow
|
|
68
|
-
const
|
|
69
|
-
if (
|
|
70
|
-
|
|
69
|
+
// Ask about workflow using interactive selector
|
|
70
|
+
const availableWorkflows = listWorkflows();
|
|
71
|
+
if (availableWorkflows.length > 0) {
|
|
72
|
+
const currentWorkflow = getCurrentWorkflow(cwd);
|
|
73
|
+
const defaultWorkflow = availableWorkflows.includes(currentWorkflow)
|
|
74
|
+
? currentWorkflow
|
|
75
|
+
: availableWorkflows[0];
|
|
76
|
+
const options = availableWorkflows.map((name) => ({
|
|
77
|
+
label: name === currentWorkflow ? `${name} (current)` : name,
|
|
78
|
+
value: name,
|
|
79
|
+
}));
|
|
80
|
+
const selected = await selectOption('Select workflow:', options);
|
|
81
|
+
if (selected === null) {
|
|
82
|
+
info('Cancelled.');
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (selected !== defaultWorkflow) {
|
|
86
|
+
workflow = selected;
|
|
87
|
+
}
|
|
71
88
|
}
|
|
72
89
|
// Build task data
|
|
73
90
|
const taskData = { task: taskContent };
|
|
@@ -80,8 +97,9 @@ export async function addTask(cwd, args) {
|
|
|
80
97
|
if (workflow) {
|
|
81
98
|
taskData.workflow = workflow;
|
|
82
99
|
}
|
|
83
|
-
// Write YAML
|
|
84
|
-
const
|
|
100
|
+
// Write YAML file (use first line for filename to keep it short)
|
|
101
|
+
const firstLine = taskContent.split('\n')[0] || taskContent;
|
|
102
|
+
const filename = generateFilename(tasksDir, firstLine);
|
|
85
103
|
const filePath = path.join(tasksDir, filename);
|
|
86
104
|
const yamlContent = stringifyYaml(taskData);
|
|
87
105
|
fs.writeFileSync(filePath, yamlContent, 'utf-8');
|