takt 0.11.1 → 0.12.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 +76 -52
- package/builtins/en/piece-categories.yaml +12 -10
- package/builtins/en/pieces/coding.yaml +1 -1
- package/builtins/en/pieces/compound-eye.yaml +1 -1
- package/builtins/en/pieces/default.yaml +1 -1
- package/builtins/en/pieces/e2e-test.yaml +1 -1
- package/builtins/en/pieces/expert-cqrs.yaml +1 -5
- package/builtins/en/pieces/expert.yaml +1 -5
- package/builtins/en/pieces/frontend.yaml +282 -0
- package/builtins/en/pieces/magi.yaml +1 -1
- package/builtins/en/pieces/minimal.yaml +1 -1
- package/builtins/en/pieces/passthrough.yaml +1 -1
- package/builtins/en/pieces/research.yaml +4 -4
- package/builtins/en/pieces/review-fix-minimal.yaml +1 -1
- package/builtins/en/pieces/review-only.yaml +1 -1
- package/builtins/en/pieces/structural-reform.yaml +5 -5
- package/builtins/en/pieces/unit-test.yaml +1 -1
- package/builtins/ja/INSTRUCTION_STYLE_GUIDE.md +3 -3
- package/builtins/ja/PERSONA_STYLE_GUIDE.md +1 -1
- package/builtins/ja/POLICY_STYLE_GUIDE.md +1 -1
- package/builtins/ja/piece-categories.yaml +12 -10
- package/builtins/ja/pieces/coding.yaml +1 -1
- package/builtins/ja/pieces/compound-eye.yaml +1 -1
- package/builtins/ja/pieces/default.yaml +1 -1
- package/builtins/ja/pieces/e2e-test.yaml +1 -1
- package/builtins/ja/pieces/expert-cqrs.yaml +1 -5
- package/builtins/ja/pieces/expert.yaml +1 -5
- package/builtins/ja/pieces/frontend.yaml +282 -0
- package/builtins/ja/pieces/magi.yaml +1 -1
- package/builtins/ja/pieces/minimal.yaml +1 -1
- package/builtins/ja/pieces/passthrough.yaml +1 -1
- package/builtins/ja/pieces/research.yaml +4 -4
- package/builtins/ja/pieces/review-fix-minimal.yaml +1 -1
- package/builtins/ja/pieces/review-only.yaml +1 -1
- package/builtins/ja/pieces/structural-reform.yaml +5 -5
- package/builtins/ja/pieces/unit-test.yaml +1 -1
- package/builtins/project/dotgitignore +1 -1
- package/builtins/project/tasks/TASK-FORMAT +36 -25
- package/builtins/skill/SKILL.md +11 -3
- package/builtins/skill/references/engine.md +21 -11
- package/builtins/skill/references/yaml-schema.md +2 -2
- package/dist/agents/ai-judge.js +1 -1
- package/dist/agents/ai-judge.js.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/app/cli/commands.js +2 -2
- package/dist/app/cli/commands.js.map +1 -1
- package/dist/app/cli/index.js +4 -0
- package/dist/app/cli/index.js.map +1 -1
- package/dist/app/cli/program.js +1 -1
- package/dist/app/cli/program.js.map +1 -1
- package/dist/app/cli/routing.d.ts.map +1 -1
- package/dist/app/cli/routing.js +30 -11
- package/dist/app/cli/routing.js.map +1 -1
- package/dist/core/models/global-config.d.ts +27 -4
- package/dist/core/models/global-config.d.ts.map +1 -1
- package/dist/core/models/index.d.ts +1 -1
- package/dist/core/models/index.d.ts.map +1 -1
- package/dist/core/models/index.js.map +1 -1
- package/dist/core/models/piece-types.d.ts +38 -2
- package/dist/core/models/piece-types.d.ts.map +1 -1
- package/dist/core/models/schemas.d.ts +93 -1
- package/dist/core/models/schemas.d.ts.map +1 -1
- package/dist/core/models/schemas.js +55 -7
- package/dist/core/models/schemas.js.map +1 -1
- package/dist/core/models/session.d.ts +1 -1
- package/dist/core/models/session.d.ts.map +1 -1
- package/dist/core/models/session.js +1 -1
- package/dist/core/models/session.js.map +1 -1
- package/dist/core/models/types.d.ts +2 -2
- package/dist/core/models/types.d.ts.map +1 -1
- package/dist/core/piece/arpeggio/csv-data-source.d.ts +15 -0
- package/dist/core/piece/arpeggio/csv-data-source.d.ts.map +1 -0
- package/dist/core/piece/arpeggio/csv-data-source.js +119 -0
- package/dist/core/piece/arpeggio/csv-data-source.js.map +1 -0
- package/dist/core/piece/arpeggio/data-source-factory.d.ts +15 -0
- package/dist/core/piece/arpeggio/data-source-factory.d.ts.map +1 -0
- package/dist/core/piece/arpeggio/data-source-factory.js +30 -0
- package/dist/core/piece/arpeggio/data-source-factory.js.map +1 -0
- package/dist/core/piece/arpeggio/merge.d.ts +18 -0
- package/dist/core/piece/arpeggio/merge.d.ts.map +1 -0
- package/dist/core/piece/arpeggio/merge.js +68 -0
- package/dist/core/piece/arpeggio/merge.js.map +1 -0
- package/dist/core/piece/arpeggio/template.d.ts +23 -0
- package/dist/core/piece/arpeggio/template.d.ts.map +1 -0
- package/dist/core/piece/arpeggio/template.js +58 -0
- package/dist/core/piece/arpeggio/template.js.map +1 -0
- package/dist/core/piece/arpeggio/types.d.ts +38 -0
- package/dist/core/piece/arpeggio/types.d.ts.map +1 -0
- package/dist/core/piece/arpeggio/types.js +9 -0
- package/dist/core/piece/arpeggio/types.js.map +1 -0
- package/dist/core/piece/constants.d.ts +1 -1
- package/dist/core/piece/constants.js +1 -1
- package/dist/core/piece/constants.js.map +1 -1
- package/dist/core/piece/engine/ArpeggioRunner.d.ts +41 -0
- package/dist/core/piece/engine/ArpeggioRunner.d.ts.map +1 -0
- package/dist/core/piece/engine/ArpeggioRunner.js +189 -0
- package/dist/core/piece/engine/ArpeggioRunner.js.map +1 -0
- package/dist/core/piece/engine/MovementExecutor.d.ts +9 -2
- package/dist/core/piece/engine/MovementExecutor.d.ts.map +1 -1
- package/dist/core/piece/engine/MovementExecutor.js +60 -8
- package/dist/core/piece/engine/MovementExecutor.js.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.d.ts.map +1 -1
- package/dist/core/piece/engine/OptionsBuilder.js +11 -4
- package/dist/core/piece/engine/OptionsBuilder.js.map +1 -1
- package/dist/core/piece/engine/ParallelRunner.d.ts +1 -1
- package/dist/core/piece/engine/ParallelRunner.d.ts.map +1 -1
- package/dist/core/piece/engine/ParallelRunner.js +6 -5
- package/dist/core/piece/engine/ParallelRunner.js.map +1 -1
- package/dist/core/piece/engine/PieceEngine.d.ts +5 -3
- package/dist/core/piece/engine/PieceEngine.d.ts.map +1 -1
- package/dist/core/piece/engine/PieceEngine.js +62 -25
- package/dist/core/piece/engine/PieceEngine.js.map +1 -1
- package/dist/core/piece/engine/index.d.ts +1 -0
- package/dist/core/piece/engine/index.d.ts.map +1 -1
- package/dist/core/piece/engine/index.js +1 -0
- package/dist/core/piece/engine/index.js.map +1 -1
- package/dist/core/piece/engine/parallel-logger.d.ts +7 -2
- package/dist/core/piece/engine/parallel-logger.d.ts.map +1 -1
- package/dist/core/piece/engine/parallel-logger.js +20 -7
- package/dist/core/piece/engine/parallel-logger.js.map +1 -1
- package/dist/core/piece/engine/state-manager.d.ts.map +1 -1
- package/dist/core/piece/engine/state-manager.js +1 -0
- package/dist/core/piece/engine/state-manager.js.map +1 -1
- package/dist/core/piece/index.d.ts +1 -1
- package/dist/core/piece/index.d.ts.map +1 -1
- package/dist/core/piece/index.js.map +1 -1
- package/dist/core/piece/instruction/InstructionBuilder.d.ts.map +1 -1
- package/dist/core/piece/instruction/InstructionBuilder.js +71 -10
- package/dist/core/piece/instruction/InstructionBuilder.js.map +1 -1
- package/dist/core/piece/instruction/ReportInstructionBuilder.js +1 -1
- package/dist/core/piece/instruction/ReportInstructionBuilder.js.map +1 -1
- package/dist/core/piece/instruction/escape.d.ts.map +1 -1
- package/dist/core/piece/instruction/escape.js +6 -3
- package/dist/core/piece/instruction/escape.js.map +1 -1
- package/dist/core/piece/instruction/instruction-context.d.ts +10 -2
- package/dist/core/piece/instruction/instruction-context.d.ts.map +1 -1
- package/dist/core/piece/instruction/instruction-context.js.map +1 -1
- package/dist/core/piece/judgment/FallbackStrategy.js +1 -1
- package/dist/core/piece/judgment/FallbackStrategy.js.map +1 -1
- package/dist/core/piece/phase-runner.d.ts +7 -2
- package/dist/core/piece/phase-runner.d.ts.map +1 -1
- package/dist/core/piece/phase-runner.js +38 -8
- package/dist/core/piece/phase-runner.js.map +1 -1
- package/dist/core/piece/provider-resolution.d.ts +14 -0
- package/dist/core/piece/provider-resolution.d.ts.map +1 -0
- package/dist/core/piece/provider-resolution.js +9 -0
- package/dist/core/piece/provider-resolution.js.map +1 -0
- package/dist/core/piece/run/run-paths.d.ts +21 -0
- package/dist/core/piece/run/run-paths.d.ts.map +1 -0
- package/dist/core/piece/run/run-paths.js +31 -0
- package/dist/core/piece/run/run-paths.js.map +1 -0
- package/dist/core/piece/types.d.ts +6 -4
- package/dist/core/piece/types.d.ts.map +1 -1
- package/dist/features/interactive/conversationLoop.d.ts.map +1 -1
- package/dist/features/interactive/conversationLoop.js +21 -0
- package/dist/features/interactive/conversationLoop.js.map +1 -1
- package/dist/features/interactive/index.d.ts +1 -0
- package/dist/features/interactive/index.d.ts.map +1 -1
- package/dist/features/interactive/index.js +1 -0
- package/dist/features/interactive/index.js.map +1 -1
- package/dist/features/interactive/interactive.d.ts +1 -1
- package/dist/features/interactive/interactive.d.ts.map +1 -1
- package/dist/features/interactive/interactive.js +3 -2
- package/dist/features/interactive/interactive.js.map +1 -1
- package/dist/features/interactive/sessionSelector.d.ts +15 -0
- package/dist/features/interactive/sessionSelector.d.ts.map +1 -0
- package/dist/features/interactive/sessionSelector.js +86 -0
- package/dist/features/interactive/sessionSelector.js.map +1 -0
- package/dist/features/prompt/preview.js +3 -3
- package/dist/features/prompt/preview.js.map +1 -1
- package/dist/features/tasks/add/index.d.ts +16 -6
- package/dist/features/tasks/add/index.d.ts.map +1 -1
- package/dist/features/tasks/add/index.js +89 -74
- package/dist/features/tasks/add/index.js.map +1 -1
- package/dist/features/tasks/execute/parallelExecution.d.ts +1 -1
- package/dist/features/tasks/execute/parallelExecution.js +1 -1
- package/dist/features/tasks/execute/pieceExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/pieceExecution.js +359 -277
- package/dist/features/tasks/execute/pieceExecution.js.map +1 -1
- package/dist/features/tasks/execute/resolveTask.d.ts +2 -0
- package/dist/features/tasks/execute/resolveTask.d.ts.map +1 -1
- package/dist/features/tasks/execute/resolveTask.js +53 -8
- package/dist/features/tasks/execute/resolveTask.js.map +1 -1
- package/dist/features/tasks/execute/selectAndExecute.d.ts.map +1 -1
- package/dist/features/tasks/execute/selectAndExecute.js +4 -7
- package/dist/features/tasks/execute/selectAndExecute.js.map +1 -1
- package/dist/features/tasks/execute/taskExecution.d.ts +1 -1
- package/dist/features/tasks/execute/taskExecution.d.ts.map +1 -1
- package/dist/features/tasks/execute/taskExecution.js +45 -13
- package/dist/features/tasks/execute/taskExecution.js.map +1 -1
- package/dist/features/tasks/execute/types.d.ts +4 -0
- package/dist/features/tasks/execute/types.d.ts.map +1 -1
- package/dist/features/tasks/index.d.ts +1 -1
- package/dist/features/tasks/index.d.ts.map +1 -1
- package/dist/features/tasks/index.js +1 -1
- package/dist/features/tasks/index.js.map +1 -1
- package/dist/features/tasks/list/index.d.ts +1 -1
- package/dist/features/tasks/list/index.js +1 -1
- package/dist/infra/claude/session-reader.d.ts +31 -0
- package/dist/infra/claude/session-reader.d.ts.map +1 -0
- package/dist/infra/claude/session-reader.js +75 -0
- package/dist/infra/claude/session-reader.js.map +1 -0
- package/dist/infra/config/global/globalConfig.d.ts +6 -1
- package/dist/infra/config/global/globalConfig.d.ts.map +1 -1
- package/dist/infra/config/global/globalConfig.js +68 -3
- package/dist/infra/config/global/globalConfig.js.map +1 -1
- package/dist/infra/config/global/index.d.ts +1 -1
- package/dist/infra/config/global/index.d.ts.map +1 -1
- package/dist/infra/config/global/index.js +1 -1
- package/dist/infra/config/global/index.js.map +1 -1
- package/dist/infra/config/global/initialization.d.ts +1 -1
- package/dist/infra/config/global/initialization.d.ts.map +1 -1
- package/dist/infra/config/global/initialization.js +2 -1
- package/dist/infra/config/global/initialization.js.map +1 -1
- package/dist/infra/config/loaders/pieceParser.d.ts.map +1 -1
- package/dist/infra/config/loaders/pieceParser.js +30 -2
- package/dist/infra/config/loaders/pieceParser.js.map +1 -1
- package/dist/infra/config/types.d.ts +1 -1
- package/dist/infra/config/types.d.ts.map +1 -1
- package/dist/infra/fs/index.d.ts +2 -2
- package/dist/infra/fs/index.d.ts.map +1 -1
- package/dist/infra/fs/index.js +1 -1
- package/dist/infra/fs/index.js.map +1 -1
- package/dist/infra/fs/session.d.ts +8 -11
- package/dist/infra/fs/session.d.ts.map +1 -1
- package/dist/infra/fs/session.js +7 -35
- package/dist/infra/fs/session.js.map +1 -1
- package/dist/infra/opencode/OpenCodeStreamHandler.d.ts +165 -0
- package/dist/infra/opencode/OpenCodeStreamHandler.d.ts.map +1 -0
- package/dist/infra/opencode/OpenCodeStreamHandler.js +116 -0
- package/dist/infra/opencode/OpenCodeStreamHandler.js.map +1 -0
- package/dist/infra/opencode/client.d.ts +26 -0
- package/dist/infra/opencode/client.d.ts.map +1 -0
- package/dist/infra/opencode/client.js +491 -0
- package/dist/infra/opencode/client.js.map +1 -0
- package/dist/infra/opencode/index.d.ts +7 -0
- package/dist/infra/opencode/index.d.ts.map +1 -0
- package/dist/infra/opencode/index.js +6 -0
- package/dist/infra/opencode/index.js.map +1 -0
- package/dist/infra/opencode/types.d.ts +39 -0
- package/dist/infra/opencode/types.d.ts.map +1 -0
- package/dist/infra/opencode/types.js +131 -0
- package/dist/infra/opencode/types.js.map +1 -0
- package/dist/infra/providers/index.d.ts +1 -1
- package/dist/infra/providers/index.d.ts.map +1 -1
- package/dist/infra/providers/index.js +3 -1
- package/dist/infra/providers/index.js.map +1 -1
- package/dist/infra/providers/opencode.d.ts +9 -0
- package/dist/infra/providers/opencode.d.ts.map +1 -0
- package/dist/infra/providers/opencode.js +46 -0
- package/dist/infra/providers/opencode.js.map +1 -0
- package/dist/infra/providers/types.d.ts +3 -1
- package/dist/infra/providers/types.d.ts.map +1 -1
- package/dist/infra/task/mapper.d.ts.map +1 -1
- package/dist/infra/task/mapper.js +26 -0
- package/dist/infra/task/mapper.js.map +1 -1
- package/dist/infra/task/runner.d.ts +4 -1
- package/dist/infra/task/runner.d.ts.map +1 -1
- package/dist/infra/task/runner.js +4 -11
- package/dist/infra/task/runner.js.map +1 -1
- package/dist/infra/task/schema.d.ts +2 -0
- package/dist/infra/task/schema.d.ts.map +1 -1
- package/dist/infra/task/schema.js +21 -4
- package/dist/infra/task/schema.js.map +1 -1
- package/dist/infra/task/summarize.d.ts.map +1 -1
- package/dist/infra/task/summarize.js +3 -2
- package/dist/infra/task/summarize.js.map +1 -1
- package/dist/infra/task/types.d.ts +1 -0
- package/dist/infra/task/types.d.ts.map +1 -1
- package/dist/shared/i18n/labels_en.yaml +12 -1
- package/dist/shared/i18n/labels_ja.yaml +12 -1
- package/dist/shared/prompt/confirm.d.ts.map +1 -1
- package/dist/shared/prompt/confirm.js +12 -0
- package/dist/shared/prompt/confirm.js.map +1 -1
- package/dist/shared/prompts/en/perform_phase1_message.md +2 -0
- package/dist/shared/prompts/en/score_slug_user_prompt.md +12 -0
- package/dist/shared/prompts/ja/perform_phase1_message.md +2 -0
- package/dist/shared/prompts/ja/score_slug_user_prompt.md +12 -0
- package/dist/shared/ui/Progress.d.ts +3 -0
- package/dist/shared/ui/Progress.d.ts.map +1 -0
- package/dist/shared/ui/Progress.js +11 -0
- package/dist/shared/ui/Progress.js.map +1 -0
- package/dist/shared/ui/StreamDisplay.d.ts +3 -3
- package/dist/shared/ui/StreamDisplay.d.ts.map +1 -1
- package/dist/shared/ui/StreamDisplay.js +3 -3
- package/dist/shared/ui/StreamDisplay.js.map +1 -1
- package/dist/shared/ui/TaskPrefixWriter.d.ts +1 -1
- package/dist/shared/ui/TaskPrefixWriter.d.ts.map +1 -1
- package/dist/shared/ui/TaskPrefixWriter.js +2 -2
- package/dist/shared/ui/TaskPrefixWriter.js.map +1 -1
- package/dist/shared/ui/index.d.ts +1 -0
- package/dist/shared/ui/index.d.ts.map +1 -1
- package/dist/shared/ui/index.js +1 -0
- package/dist/shared/ui/index.js.map +1 -1
- package/dist/shared/utils/debug.d.ts.map +1 -1
- package/dist/shared/utils/debug.js +2 -1
- package/dist/shared/utils/debug.js.map +1 -1
- package/dist/shared/utils/index.d.ts +3 -0
- package/dist/shared/utils/index.d.ts.map +1 -1
- package/dist/shared/utils/index.js +3 -0
- package/dist/shared/utils/index.js.map +1 -1
- package/dist/shared/utils/providerEventLogger.d.ts +22 -0
- package/dist/shared/utils/providerEventLogger.d.ts.map +1 -0
- package/dist/shared/utils/providerEventLogger.js +87 -0
- package/dist/shared/utils/providerEventLogger.js.map +1 -0
- package/dist/shared/utils/providerModel.d.ts +10 -0
- package/dist/shared/utils/providerModel.d.ts.map +1 -0
- package/dist/shared/utils/providerModel.js +20 -0
- package/dist/shared/utils/providerModel.js.map +1 -0
- package/dist/shared/utils/slackWebhook.d.ts +19 -0
- package/dist/shared/utils/slackWebhook.d.ts.map +1 -0
- package/dist/shared/utils/slackWebhook.js +39 -0
- package/dist/shared/utils/slackWebhook.js.map +1 -0
- package/dist/shared/utils/taskPaths.d.ts +4 -0
- package/dist/shared/utils/taskPaths.d.ts.map +1 -0
- package/dist/shared/utils/taskPaths.js +17 -0
- package/dist/shared/utils/taskPaths.js.map +1 -0
- package/dist/shared/utils/types.d.ts +0 -11
- package/dist/shared/utils/types.d.ts.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**T**ask **A**gent **K**oordination **T**ool - Define how AI agents coordinate, where humans intervene, and what gets recorded — in YAML
|
|
6
6
|
|
|
7
|
-
TAKT runs multiple AI agents (Claude Code, Codex) through YAML-defined workflows. Each step — who runs, what they see, what's allowed, what happens on failure — is declared in a piece file, not left to the agent.
|
|
7
|
+
TAKT runs multiple AI agents (Claude Code, Codex, OpenCode) through YAML-defined workflows. Each step — who runs, what they see, what's allowed, what happens on failure — is declared in a piece file, not left to the agent.
|
|
8
8
|
|
|
9
9
|
TAKT is built with TAKT itself (dogfooding).
|
|
10
10
|
|
|
@@ -49,14 +49,14 @@ Personas, policies, and knowledge are managed as independent files and freely co
|
|
|
49
49
|
|
|
50
50
|
Choose one:
|
|
51
51
|
|
|
52
|
-
- **Use provider CLIs**: [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
|
53
|
-
- **Use direct API**: **Anthropic API Key** or **
|
|
52
|
+
- **Use provider CLIs**: [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), or [OpenCode](https://opencode.ai) installed
|
|
53
|
+
- **Use direct API**: **Anthropic API Key**, **OpenAI API Key**, or **OpenCode API Key** (no CLI required)
|
|
54
54
|
|
|
55
55
|
Additionally required:
|
|
56
56
|
|
|
57
57
|
- [GitHub CLI](https://cli.github.com/) (`gh`) — Only needed for `takt #N` (GitHub Issue execution)
|
|
58
58
|
|
|
59
|
-
**Pricing Note**: When using API Keys, TAKT directly calls the Claude API (Anthropic) or
|
|
59
|
+
**Pricing Note**: When using API Keys, TAKT directly calls the Claude API (Anthropic), OpenAI API, or OpenCode API. The pricing structure is the same as using the respective CLI tools. Be mindful of costs, especially when running automated tasks in CI/CD environments, as API usage can accumulate.
|
|
60
60
|
|
|
61
61
|
## Installation
|
|
62
62
|
|
|
@@ -186,7 +186,7 @@ takt #6 --auto-pr
|
|
|
186
186
|
|
|
187
187
|
### Task Management (add / run / watch / list)
|
|
188
188
|
|
|
189
|
-
Batch processing using task
|
|
189
|
+
Batch processing using `.takt/tasks.yaml` with task directories under `.takt/tasks/{slug}/`. Useful for accumulating multiple tasks and executing them together later.
|
|
190
190
|
|
|
191
191
|
#### Add Task (`takt add`)
|
|
192
192
|
|
|
@@ -201,14 +201,14 @@ takt add #28
|
|
|
201
201
|
#### Execute Tasks (`takt run`)
|
|
202
202
|
|
|
203
203
|
```bash
|
|
204
|
-
# Execute all pending tasks in .takt/tasks
|
|
204
|
+
# Execute all pending tasks in .takt/tasks.yaml
|
|
205
205
|
takt run
|
|
206
206
|
```
|
|
207
207
|
|
|
208
208
|
#### Watch Tasks (`takt watch`)
|
|
209
209
|
|
|
210
210
|
```bash
|
|
211
|
-
# Monitor .takt/tasks
|
|
211
|
+
# Monitor .takt/tasks.yaml and auto-execute tasks (resident process)
|
|
212
212
|
takt watch
|
|
213
213
|
```
|
|
214
214
|
|
|
@@ -225,6 +225,13 @@ takt list --non-interactive --action delete --branch takt/my-branch --yes
|
|
|
225
225
|
takt list --non-interactive --format json
|
|
226
226
|
```
|
|
227
227
|
|
|
228
|
+
#### Task Directory Workflow (Create / Run / Verify)
|
|
229
|
+
|
|
230
|
+
1. Run `takt add` and confirm a pending record is created in `.takt/tasks.yaml`.
|
|
231
|
+
2. Open the generated `.takt/tasks/{slug}/order.md` and add detailed specifications/references as needed.
|
|
232
|
+
3. Run `takt run` (or `takt watch`) to execute pending tasks from `tasks.yaml`.
|
|
233
|
+
4. Verify outputs in `.takt/runs/{slug}/reports/` using the same slug as `task_dir`.
|
|
234
|
+
|
|
228
235
|
### Pipeline Mode (for CI/Automation)
|
|
229
236
|
|
|
230
237
|
Specifying `--pipeline` enables non-interactive pipeline mode. Automatically creates branch → runs piece → commits & pushes. Suitable for CI/CD automation.
|
|
@@ -315,7 +322,7 @@ takt reset categories
|
|
|
315
322
|
| `--repo <owner/repo>` | Specify repository (for PR creation) |
|
|
316
323
|
| `--create-worktree <yes\|no>` | Skip worktree confirmation prompt |
|
|
317
324
|
| `-q, --quiet` | Minimal output mode: suppress AI output (for CI) |
|
|
318
|
-
| `--provider <name>` | Override agent provider (claude\|codex\|mock) |
|
|
325
|
+
| `--provider <name>` | Override agent provider (claude\|codex\|opencode\|mock) |
|
|
319
326
|
| `--model <name>` | Override agent model |
|
|
320
327
|
|
|
321
328
|
## Pieces
|
|
@@ -328,7 +335,7 @@ TAKT uses YAML-based piece definitions and rule-based routing. Builtin pieces ar
|
|
|
328
335
|
|
|
329
336
|
```yaml
|
|
330
337
|
name: default
|
|
331
|
-
|
|
338
|
+
max_movements: 10
|
|
332
339
|
initial_movement: plan
|
|
333
340
|
|
|
334
341
|
# Section maps — key: file path (relative to this YAML)
|
|
@@ -466,6 +473,7 @@ TAKT includes multiple builtin pieces:
|
|
|
466
473
|
| `structural-reform` | Full project review and structural reform: iterative codebase restructuring with staged file splits. |
|
|
467
474
|
| `unit-test` | Unit test focused piece: test analysis → test implementation → review → fix. |
|
|
468
475
|
| `e2e-test` | E2E test focused piece: E2E analysis → E2E implementation → review → fix (Vitest-based E2E flow). |
|
|
476
|
+
| `frontend` | Frontend-specialized development piece with React/Next.js focused reviews and knowledge injection. |
|
|
469
477
|
|
|
470
478
|
**Per-persona provider overrides:** Use `persona_providers` in config to route specific personas to different providers (e.g., coder on Codex, reviewers on Claude) without duplicating pieces.
|
|
471
479
|
|
|
@@ -532,14 +540,14 @@ The model string is passed to the Codex SDK. If unspecified, defaults to `codex`
|
|
|
532
540
|
|
|
533
541
|
.takt/ # Project-level configuration
|
|
534
542
|
├── config.yaml # Project config (current piece, etc.)
|
|
535
|
-
├── tasks/ #
|
|
536
|
-
├──
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
+
├── tasks/ # Task input directories (.takt/tasks/{slug}/order.md, etc.)
|
|
544
|
+
├── tasks.yaml # Pending tasks metadata (task_dir, piece, worktree, etc.)
|
|
545
|
+
└── runs/ # Run-scoped artifacts
|
|
546
|
+
└── {slug}/
|
|
547
|
+
├── reports/ # Execution reports (auto-generated)
|
|
548
|
+
├── context/ # knowledge/policy/previous_response snapshots
|
|
549
|
+
├── logs/ # NDJSON session logs for this run
|
|
550
|
+
└── meta.json # Run metadata
|
|
543
551
|
```
|
|
544
552
|
|
|
545
553
|
Builtin resources are embedded in the npm package (`builtins/`). User files in `~/.takt/` take priority.
|
|
@@ -553,11 +561,17 @@ Configure default provider and model in `~/.takt/config.yaml`:
|
|
|
553
561
|
language: en
|
|
554
562
|
default_piece: default
|
|
555
563
|
log_level: info
|
|
556
|
-
provider: claude # Default provider: claude or
|
|
564
|
+
provider: claude # Default provider: claude, codex, or opencode
|
|
557
565
|
model: sonnet # Default model (optional)
|
|
558
566
|
branch_name_strategy: romaji # Branch name generation: 'romaji' (fast) or 'ai' (slow)
|
|
559
567
|
prevent_sleep: false # Prevent macOS idle sleep during execution (caffeinate)
|
|
560
568
|
notification_sound: true # Enable/disable notification sounds
|
|
569
|
+
notification_sound_events: # Optional per-event toggles
|
|
570
|
+
iteration_limit: false
|
|
571
|
+
piece_complete: true
|
|
572
|
+
piece_abort: true
|
|
573
|
+
run_complete: true # Enabled by default; set false to disable
|
|
574
|
+
run_abort: true # Enabled by default; set false to disable
|
|
561
575
|
concurrency: 1 # Parallel task count for takt run (1-10, default: 1 = sequential)
|
|
562
576
|
task_poll_interval_ms: 500 # Polling interval for new tasks during takt run (100-5000, default: 500)
|
|
563
577
|
interactive_preview_movements: 3 # Movement previews in interactive mode (0-10, default: 3)
|
|
@@ -569,9 +583,10 @@ interactive_preview_movements: 3 # Movement previews in interactive mode (0-10,
|
|
|
569
583
|
# ai-antipattern-reviewer: claude # Keep reviewers on Claude
|
|
570
584
|
|
|
571
585
|
# API Key configuration (optional)
|
|
572
|
-
# Can be overridden by environment variables TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY
|
|
586
|
+
# Can be overridden by environment variables TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY / TAKT_OPENCODE_API_KEY
|
|
573
587
|
anthropic_api_key: sk-ant-... # For Claude (Anthropic)
|
|
574
588
|
# openai_api_key: sk-... # For Codex (OpenAI)
|
|
589
|
+
# opencode_api_key: ... # For OpenCode
|
|
575
590
|
|
|
576
591
|
# Builtin piece filtering (optional)
|
|
577
592
|
# builtin_pieces_enabled: true # Set false to disable all builtins
|
|
@@ -595,17 +610,17 @@ anthropic_api_key: sk-ant-... # For Claude (Anthropic)
|
|
|
595
610
|
1. **Set via environment variables**:
|
|
596
611
|
```bash
|
|
597
612
|
export TAKT_ANTHROPIC_API_KEY=sk-ant-... # For Claude
|
|
598
|
-
# or
|
|
599
613
|
export TAKT_OPENAI_API_KEY=sk-... # For Codex
|
|
614
|
+
export TAKT_OPENCODE_API_KEY=... # For OpenCode
|
|
600
615
|
```
|
|
601
616
|
|
|
602
617
|
2. **Set in config file**:
|
|
603
|
-
Write `anthropic_api_key` or `
|
|
618
|
+
Write `anthropic_api_key`, `openai_api_key`, or `opencode_api_key` in `~/.takt/config.yaml` as shown above
|
|
604
619
|
|
|
605
620
|
Priority: Environment variables > `config.yaml` settings
|
|
606
621
|
|
|
607
622
|
**Notes:**
|
|
608
|
-
- If you set an API Key, installing Claude Code or
|
|
623
|
+
- If you set an API Key, installing Claude Code, Codex, or OpenCode is not necessary. TAKT directly calls the respective API.
|
|
609
624
|
- **Security**: If you write API Keys in `config.yaml`, be careful not to commit this file to Git. Consider using environment variables or adding `~/.takt/config.yaml` to `.gitignore`.
|
|
610
625
|
|
|
611
626
|
**Pipeline Template Variables:**
|
|
@@ -621,37 +636,44 @@ Priority: Environment variables > `config.yaml` settings
|
|
|
621
636
|
1. Piece movement `model` (highest priority)
|
|
622
637
|
2. Custom agent `model`
|
|
623
638
|
3. Global config `model`
|
|
624
|
-
4. Provider default (Claude: sonnet, Codex: codex)
|
|
639
|
+
4. Provider default (Claude: sonnet, Codex: codex, OpenCode: provider default)
|
|
625
640
|
|
|
626
641
|
## Detailed Guides
|
|
627
642
|
|
|
628
|
-
### Task
|
|
643
|
+
### Task Directory Format
|
|
629
644
|
|
|
630
|
-
TAKT
|
|
645
|
+
TAKT stores task metadata in `.takt/tasks.yaml`, and each task's long specification in `.takt/tasks/{slug}/`.
|
|
631
646
|
|
|
632
|
-
**
|
|
647
|
+
**Recommended layout**:
|
|
633
648
|
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
649
|
+
```text
|
|
650
|
+
.takt/
|
|
651
|
+
tasks/
|
|
652
|
+
20260201-015714-foptng/
|
|
653
|
+
order.md
|
|
654
|
+
schema.sql
|
|
655
|
+
wireframe.png
|
|
656
|
+
tasks.yaml
|
|
657
|
+
runs/
|
|
658
|
+
20260201-015714-foptng/
|
|
659
|
+
reports/
|
|
640
660
|
```
|
|
641
661
|
|
|
642
|
-
**
|
|
643
|
-
|
|
644
|
-
```markdown
|
|
645
|
-
# .takt/tasks/add-login-feature.md
|
|
646
|
-
|
|
647
|
-
Add login feature to the application.
|
|
662
|
+
**tasks.yaml record**:
|
|
648
663
|
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
-
|
|
652
|
-
|
|
664
|
+
```yaml
|
|
665
|
+
tasks:
|
|
666
|
+
- name: add-auth-feature
|
|
667
|
+
status: pending
|
|
668
|
+
task_dir: .takt/tasks/20260201-015714-foptng
|
|
669
|
+
piece: default
|
|
670
|
+
created_at: "2026-02-01T01:57:14.000Z"
|
|
671
|
+
started_at: null
|
|
672
|
+
completed_at: null
|
|
653
673
|
```
|
|
654
674
|
|
|
675
|
+
`takt add` creates `.takt/tasks/{slug}/order.md` automatically and saves `task_dir` to `tasks.yaml`.
|
|
676
|
+
|
|
655
677
|
#### Isolated Execution with Shared Clone
|
|
656
678
|
|
|
657
679
|
Specifying `worktree` in YAML task files executes each task in an isolated clone created with `git clone --shared`, keeping your main working directory clean:
|
|
@@ -667,15 +689,14 @@ Clones are ephemeral. After task completion, they auto-commit + push, then delet
|
|
|
667
689
|
|
|
668
690
|
### Session Logs
|
|
669
691
|
|
|
670
|
-
TAKT writes session logs in NDJSON (`.jsonl`) format to `.takt/logs/`. Each record is atomically appended, so partial logs are preserved even if the process crashes, and you can track in real-time with `tail -f`.
|
|
692
|
+
TAKT writes session logs in NDJSON (`.jsonl`) format to `.takt/runs/{slug}/logs/`. Each record is atomically appended, so partial logs are preserved even if the process crashes, and you can track in real-time with `tail -f`.
|
|
671
693
|
|
|
672
|
-
- `.takt/logs/
|
|
673
|
-
- `.takt/
|
|
674
|
-
- `.takt/logs/{sessionId}.jsonl` - NDJSON session log per piece execution
|
|
694
|
+
- `.takt/runs/{slug}/logs/{sessionId}.jsonl` - NDJSON session log per piece execution
|
|
695
|
+
- `.takt/runs/{slug}/meta.json` - Run metadata (`task`, `piece`, `start/end`, `status`, etc.)
|
|
675
696
|
|
|
676
697
|
Record types: `piece_start`, `step_start`, `step_complete`, `piece_complete`, `piece_abort`
|
|
677
698
|
|
|
678
|
-
|
|
699
|
+
The latest previous response is stored at `.takt/runs/{slug}/context/previous_responses/latest.md` and inherited automatically.
|
|
679
700
|
|
|
680
701
|
### Adding Custom Pieces
|
|
681
702
|
|
|
@@ -690,7 +711,7 @@ takt eject default
|
|
|
690
711
|
# ~/.takt/pieces/my-piece.yaml
|
|
691
712
|
name: my-piece
|
|
692
713
|
description: Custom piece
|
|
693
|
-
|
|
714
|
+
max_movements: 5
|
|
694
715
|
initial_movement: analyze
|
|
695
716
|
|
|
696
717
|
personas:
|
|
@@ -740,11 +761,11 @@ Variables available in `instruction_template`:
|
|
|
740
761
|
|----------|-------------|
|
|
741
762
|
| `{task}` | Original user request (auto-injected if not in template) |
|
|
742
763
|
| `{iteration}` | Piece-wide turn count (total steps executed) |
|
|
743
|
-
| `{
|
|
764
|
+
| `{max_movements}` | Maximum iteration count |
|
|
744
765
|
| `{movement_iteration}` | Per-movement iteration count (times this movement has been executed) |
|
|
745
766
|
| `{previous_response}` | Output from previous movement (auto-injected if not in template) |
|
|
746
767
|
| `{user_inputs}` | Additional user inputs during piece (auto-injected if not in template) |
|
|
747
|
-
| `{report_dir}` | Report directory path (e.g., `.takt/
|
|
768
|
+
| `{report_dir}` | Report directory path (e.g., `.takt/runs/20250126-143052-task-summary/reports`) |
|
|
748
769
|
| `{report:filename}` | Expands to `{report_dir}/filename` (e.g., `{report:00-plan.md}`) |
|
|
749
770
|
|
|
750
771
|
### Piece Design
|
|
@@ -777,7 +798,7 @@ Special `next` values: `COMPLETE` (success), `ABORT` (failure)
|
|
|
777
798
|
| `edit` | - | Whether movement can edit project files (`true`/`false`) |
|
|
778
799
|
| `pass_previous_response` | `true` | Pass previous movement output to `{previous_response}` |
|
|
779
800
|
| `allowed_tools` | - | List of tools agent can use (Read, Glob, Grep, Edit, Write, Bash, etc.) |
|
|
780
|
-
| `provider` | - | Override provider for this movement (`claude` or `
|
|
801
|
+
| `provider` | - | Override provider for this movement (`claude`, `codex`, or `opencode`) |
|
|
781
802
|
| `model` | - | Override model for this movement |
|
|
782
803
|
| `permission_mode` | - | Permission mode: `readonly`, `edit`, `full` (provider-independent) |
|
|
783
804
|
| `output_contracts` | - | Output contract definitions for report files |
|
|
@@ -855,7 +876,7 @@ npm install -g takt
|
|
|
855
876
|
takt --pipeline --task "Fix bug" --auto-pr --repo owner/repo
|
|
856
877
|
```
|
|
857
878
|
|
|
858
|
-
For authentication, set `TAKT_ANTHROPIC_API_KEY` or `
|
|
879
|
+
For authentication, set `TAKT_ANTHROPIC_API_KEY`, `TAKT_OPENAI_API_KEY`, or `TAKT_OPENCODE_API_KEY` environment variables (TAKT-specific prefix).
|
|
859
880
|
|
|
860
881
|
```bash
|
|
861
882
|
# For Claude (Anthropic)
|
|
@@ -863,6 +884,9 @@ export TAKT_ANTHROPIC_API_KEY=sk-ant-...
|
|
|
863
884
|
|
|
864
885
|
# For Codex (OpenAI)
|
|
865
886
|
export TAKT_OPENAI_API_KEY=sk-...
|
|
887
|
+
|
|
888
|
+
# For OpenCode
|
|
889
|
+
export TAKT_OPENCODE_API_KEY=...
|
|
866
890
|
```
|
|
867
891
|
|
|
868
892
|
## Documentation
|
|
@@ -6,6 +6,18 @@ piece_categories:
|
|
|
6
6
|
- coding
|
|
7
7
|
- minimal
|
|
8
8
|
- compound-eye
|
|
9
|
+
🎨 Frontend:
|
|
10
|
+
pieces:
|
|
11
|
+
- frontend
|
|
12
|
+
⚙️ Backend: {}
|
|
13
|
+
🔧 Expert:
|
|
14
|
+
Full Stack:
|
|
15
|
+
pieces:
|
|
16
|
+
- expert
|
|
17
|
+
- expert-cqrs
|
|
18
|
+
🛠️ Refactoring:
|
|
19
|
+
pieces:
|
|
20
|
+
- structural-reform
|
|
9
21
|
🔍 Review:
|
|
10
22
|
pieces:
|
|
11
23
|
- review-fix-minimal
|
|
@@ -14,16 +26,6 @@ piece_categories:
|
|
|
14
26
|
pieces:
|
|
15
27
|
- unit-test
|
|
16
28
|
- e2e-test
|
|
17
|
-
🎨 Frontend: {}
|
|
18
|
-
⚙️ Backend: {}
|
|
19
|
-
🔧 Expert:
|
|
20
|
-
Full Stack:
|
|
21
|
-
pieces:
|
|
22
|
-
- expert
|
|
23
|
-
- expert-cqrs
|
|
24
|
-
Refactoring:
|
|
25
|
-
pieces:
|
|
26
|
-
- structural-reform
|
|
27
29
|
Others:
|
|
28
30
|
pieces:
|
|
29
31
|
- research
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: expert-cqrs
|
|
2
2
|
description: CQRS+ES, Frontend, Security, QA Expert Review
|
|
3
|
-
|
|
3
|
+
max_movements: 30
|
|
4
4
|
initial_movement: plan
|
|
5
5
|
movements:
|
|
6
6
|
- name: plan
|
|
@@ -26,7 +26,6 @@ movements:
|
|
|
26
26
|
- name: implement
|
|
27
27
|
edit: true
|
|
28
28
|
persona: coder
|
|
29
|
-
pass_previous_response: false
|
|
30
29
|
policy:
|
|
31
30
|
- coding
|
|
32
31
|
- testing
|
|
@@ -87,7 +86,6 @@ movements:
|
|
|
87
86
|
- name: ai_fix
|
|
88
87
|
edit: true
|
|
89
88
|
persona: coder
|
|
90
|
-
pass_previous_response: false
|
|
91
89
|
policy:
|
|
92
90
|
- coding
|
|
93
91
|
- testing
|
|
@@ -218,7 +216,6 @@ movements:
|
|
|
218
216
|
- name: fix
|
|
219
217
|
edit: true
|
|
220
218
|
persona: coder
|
|
221
|
-
pass_previous_response: false
|
|
222
219
|
policy:
|
|
223
220
|
- coding
|
|
224
221
|
- testing
|
|
@@ -267,7 +264,6 @@ movements:
|
|
|
267
264
|
- name: fix_supervisor
|
|
268
265
|
edit: true
|
|
269
266
|
persona: coder
|
|
270
|
-
pass_previous_response: false
|
|
271
267
|
policy:
|
|
272
268
|
- coding
|
|
273
269
|
- testing
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: expert
|
|
2
2
|
description: Architecture, Frontend, Security, QA Expert Review
|
|
3
|
-
|
|
3
|
+
max_movements: 30
|
|
4
4
|
initial_movement: plan
|
|
5
5
|
movements:
|
|
6
6
|
- name: plan
|
|
@@ -26,7 +26,6 @@ movements:
|
|
|
26
26
|
- name: implement
|
|
27
27
|
edit: true
|
|
28
28
|
persona: coder
|
|
29
|
-
pass_previous_response: false
|
|
30
29
|
policy:
|
|
31
30
|
- coding
|
|
32
31
|
- testing
|
|
@@ -86,7 +85,6 @@ movements:
|
|
|
86
85
|
- name: ai_fix
|
|
87
86
|
edit: true
|
|
88
87
|
persona: coder
|
|
89
|
-
pass_previous_response: false
|
|
90
88
|
policy:
|
|
91
89
|
- coding
|
|
92
90
|
- testing
|
|
@@ -216,7 +214,6 @@ movements:
|
|
|
216
214
|
- name: fix
|
|
217
215
|
edit: true
|
|
218
216
|
persona: coder
|
|
219
|
-
pass_previous_response: false
|
|
220
217
|
policy:
|
|
221
218
|
- coding
|
|
222
219
|
- testing
|
|
@@ -264,7 +261,6 @@ movements:
|
|
|
264
261
|
- name: fix_supervisor
|
|
265
262
|
edit: true
|
|
266
263
|
persona: coder
|
|
267
|
-
pass_previous_response: false
|
|
268
264
|
policy:
|
|
269
265
|
- coding
|
|
270
266
|
- testing
|