@blulotus/trellis 0.7.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/LICENSE +235 -0
- package/README.md +149 -0
- package/bin/trellis.js +3 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +276 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/channel/adapters/claude.d.ts +29 -0
- package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
- package/dist/commands/channel/adapters/claude.js +203 -0
- package/dist/commands/channel/adapters/claude.js.map +1 -0
- package/dist/commands/channel/adapters/codex.d.ts +93 -0
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
- package/dist/commands/channel/adapters/codex.js +573 -0
- package/dist/commands/channel/adapters/codex.js.map +1 -0
- package/dist/commands/channel/adapters/index.d.ts +86 -0
- package/dist/commands/channel/adapters/index.d.ts.map +1 -0
- package/dist/commands/channel/adapters/index.js +115 -0
- package/dist/commands/channel/adapters/index.js.map +1 -0
- package/dist/commands/channel/adapters/types.d.ts +33 -0
- package/dist/commands/channel/adapters/types.d.ts.map +1 -0
- package/dist/commands/channel/adapters/types.js +2 -0
- package/dist/commands/channel/adapters/types.js.map +1 -0
- package/dist/commands/channel/agent-loader.d.ts +32 -0
- package/dist/commands/channel/agent-loader.d.ts.map +1 -0
- package/dist/commands/channel/agent-loader.js +158 -0
- package/dist/commands/channel/agent-loader.js.map +1 -0
- package/dist/commands/channel/context-loader.d.ts +26 -0
- package/dist/commands/channel/context-loader.d.ts.map +1 -0
- package/dist/commands/channel/context-loader.js +311 -0
- package/dist/commands/channel/context-loader.js.map +1 -0
- package/dist/commands/channel/context-trust.d.ts +31 -0
- package/dist/commands/channel/context-trust.d.ts.map +1 -0
- package/dist/commands/channel/context-trust.js +139 -0
- package/dist/commands/channel/context-trust.js.map +1 -0
- package/dist/commands/channel/context.d.ts +16 -0
- package/dist/commands/channel/context.d.ts.map +1 -0
- package/dist/commands/channel/context.js +83 -0
- package/dist/commands/channel/context.js.map +1 -0
- package/dist/commands/channel/create.d.ts +27 -0
- package/dist/commands/channel/create.d.ts.map +1 -0
- package/dist/commands/channel/create.js +39 -0
- package/dist/commands/channel/create.js.map +1 -0
- package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
- package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
- package/dist/commands/channel/dev-parse-trace.js +70 -0
- package/dist/commands/channel/dev-parse-trace.js.map +1 -0
- package/dist/commands/channel/guard.d.ts +150 -0
- package/dist/commands/channel/guard.d.ts.map +1 -0
- package/dist/commands/channel/guard.js +479 -0
- package/dist/commands/channel/guard.js.map +1 -0
- package/dist/commands/channel/index.d.ts +3 -0
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +535 -0
- package/dist/commands/channel/index.js.map +1 -0
- package/dist/commands/channel/interrupt.d.ts +10 -0
- package/dist/commands/channel/interrupt.d.ts.map +1 -0
- package/dist/commands/channel/interrupt.js +22 -0
- package/dist/commands/channel/interrupt.js.map +1 -0
- package/dist/commands/channel/kill.d.ts +7 -0
- package/dist/commands/channel/kill.d.ts.map +1 -0
- package/dist/commands/channel/kill.js +121 -0
- package/dist/commands/channel/kill.js.map +1 -0
- package/dist/commands/channel/list.d.ts +17 -0
- package/dist/commands/channel/list.d.ts.map +1 -0
- package/dist/commands/channel/list.js +233 -0
- package/dist/commands/channel/list.js.map +1 -0
- package/dist/commands/channel/messages.d.ts +15 -0
- package/dist/commands/channel/messages.d.ts.map +1 -0
- package/dist/commands/channel/messages.js +245 -0
- package/dist/commands/channel/messages.js.map +1 -0
- package/dist/commands/channel/rm.d.ts +27 -0
- package/dist/commands/channel/rm.d.ts.map +1 -0
- package/dist/commands/channel/rm.js +216 -0
- package/dist/commands/channel/rm.js.map +1 -0
- package/dist/commands/channel/run.d.ts +30 -0
- package/dist/commands/channel/run.d.ts.map +1 -0
- package/dist/commands/channel/run.js +130 -0
- package/dist/commands/channel/run.js.map +1 -0
- package/dist/commands/channel/send.d.ts +11 -0
- package/dist/commands/channel/send.d.ts.map +1 -0
- package/dist/commands/channel/send.js +24 -0
- package/dist/commands/channel/send.js.map +1 -0
- package/dist/commands/channel/spawn.d.ts +43 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -0
- package/dist/commands/channel/spawn.js +247 -0
- package/dist/commands/channel/spawn.js.map +1 -0
- package/dist/commands/channel/store/events.d.ts +39 -0
- package/dist/commands/channel/store/events.d.ts.map +1 -0
- package/dist/commands/channel/store/events.js +87 -0
- package/dist/commands/channel/store/events.js.map +1 -0
- package/dist/commands/channel/store/filter.d.ts +3 -0
- package/dist/commands/channel/store/filter.d.ts.map +1 -0
- package/dist/commands/channel/store/filter.js +2 -0
- package/dist/commands/channel/store/filter.js.map +1 -0
- package/dist/commands/channel/store/lock.d.ts +23 -0
- package/dist/commands/channel/store/lock.d.ts.map +1 -0
- package/dist/commands/channel/store/lock.js +99 -0
- package/dist/commands/channel/store/lock.js.map +1 -0
- package/dist/commands/channel/store/paths.d.ts +77 -0
- package/dist/commands/channel/store/paths.d.ts.map +1 -0
- package/dist/commands/channel/store/paths.js +272 -0
- package/dist/commands/channel/store/paths.js.map +1 -0
- package/dist/commands/channel/store/schema.d.ts +27 -0
- package/dist/commands/channel/store/schema.d.ts.map +1 -0
- package/dist/commands/channel/store/schema.js +34 -0
- package/dist/commands/channel/store/schema.js.map +1 -0
- package/dist/commands/channel/store/thread-state.d.ts +5 -0
- package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
- package/dist/commands/channel/store/thread-state.js +16 -0
- package/dist/commands/channel/store/thread-state.js.map +1 -0
- package/dist/commands/channel/store/watch.d.ts +19 -0
- package/dist/commands/channel/store/watch.d.ts.map +1 -0
- package/dist/commands/channel/store/watch.js +146 -0
- package/dist/commands/channel/store/watch.js.map +1 -0
- package/dist/commands/channel/supervisor/idle.d.ts +45 -0
- package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/idle.js +70 -0
- package/dist/commands/channel/supervisor/idle.js.map +1 -0
- package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
- package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/inbox.js +160 -0
- package/dist/commands/channel/supervisor/inbox.js.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.js +146 -0
- package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
- package/dist/commands/channel/supervisor/stdout.d.ts +53 -0
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/stdout.js +168 -0
- package/dist/commands/channel/supervisor/stdout.js.map +1 -0
- package/dist/commands/channel/supervisor/turns.d.ts +31 -0
- package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/turns.js +45 -0
- package/dist/commands/channel/supervisor/turns.js.map +1 -0
- package/dist/commands/channel/supervisor/warning.d.ts +48 -0
- package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/warning.js +77 -0
- package/dist/commands/channel/supervisor/warning.js.map +1 -0
- package/dist/commands/channel/supervisor.d.ts +75 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -0
- package/dist/commands/channel/supervisor.js +397 -0
- package/dist/commands/channel/supervisor.js.map +1 -0
- package/dist/commands/channel/text-body.d.ts +13 -0
- package/dist/commands/channel/text-body.d.ts.map +1 -0
- package/dist/commands/channel/text-body.js +47 -0
- package/dist/commands/channel/text-body.js.map +1 -0
- package/dist/commands/channel/threads.d.ts +39 -0
- package/dist/commands/channel/threads.d.ts.map +1 -0
- package/dist/commands/channel/threads.js +106 -0
- package/dist/commands/channel/threads.js.map +1 -0
- package/dist/commands/channel/title.d.ts +12 -0
- package/dist/commands/channel/title.d.ts.map +1 -0
- package/dist/commands/channel/title.js +24 -0
- package/dist/commands/channel/title.js.map +1 -0
- package/dist/commands/channel/wait.d.ts +17 -0
- package/dist/commands/channel/wait.d.ts.map +1 -0
- package/dist/commands/channel/wait.js +75 -0
- package/dist/commands/channel/wait.js.map +1 -0
- package/dist/commands/init.d.ts +71 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1603 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mem.d.ts +30 -0
- package/dist/commands/mem.d.ts.map +1 -0
- package/dist/commands/mem.js +447 -0
- package/dist/commands/mem.js.map +1 -0
- package/dist/commands/uninstall.d.ts +36 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +410 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +111 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +2152 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/upgrade.d.ts +28 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +84 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/workflow.d.ts +52 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +454 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/configurators/antigravity.d.ts +7 -0
- package/dist/configurators/antigravity.d.ts.map +1 -0
- package/dist/configurators/antigravity.js +11 -0
- package/dist/configurators/antigravity.js.map +1 -0
- package/dist/configurators/claude.d.ts +23 -0
- package/dist/configurators/claude.d.ts.map +1 -0
- package/dist/configurators/claude.js +123 -0
- package/dist/configurators/claude.js.map +1 -0
- package/dist/configurators/codebuddy.d.ts +10 -0
- package/dist/configurators/codebuddy.d.ts.map +1 -0
- package/dist/configurators/codebuddy.js +24 -0
- package/dist/configurators/codebuddy.js.map +1 -0
- package/dist/configurators/codex.d.ts +57 -0
- package/dist/configurators/codex.d.ts.map +1 -0
- package/dist/configurators/codex.js +170 -0
- package/dist/configurators/codex.js.map +1 -0
- package/dist/configurators/copilot.d.ts +14 -0
- package/dist/configurators/copilot.d.ts.map +1 -0
- package/dist/configurators/copilot.js +46 -0
- package/dist/configurators/copilot.js.map +1 -0
- package/dist/configurators/cursor.d.ts +10 -0
- package/dist/configurators/cursor.d.ts.map +1 -0
- package/dist/configurators/cursor.js +23 -0
- package/dist/configurators/cursor.js.map +1 -0
- package/dist/configurators/devin.d.ts +8 -0
- package/dist/configurators/devin.d.ts.map +1 -0
- package/dist/configurators/devin.js +12 -0
- package/dist/configurators/devin.js.map +1 -0
- package/dist/configurators/droid.d.ts +10 -0
- package/dist/configurators/droid.d.ts.map +1 -0
- package/dist/configurators/droid.js +24 -0
- package/dist/configurators/droid.js.map +1 -0
- package/dist/configurators/dsh.d.ts +26 -0
- package/dist/configurators/dsh.d.ts.map +1 -0
- package/dist/configurators/dsh.js +76 -0
- package/dist/configurators/dsh.js.map +1 -0
- package/dist/configurators/gemini.d.ts +18 -0
- package/dist/configurators/gemini.d.ts.map +1 -0
- package/dist/configurators/gemini.js +39 -0
- package/dist/configurators/gemini.js.map +1 -0
- package/dist/configurators/grok.d.ts +17 -0
- package/dist/configurators/grok.d.ts.map +1 -0
- package/dist/configurators/grok.js +38 -0
- package/dist/configurators/grok.js.map +1 -0
- package/dist/configurators/index.d.ts +68 -0
- package/dist/configurators/index.d.ts.map +1 -0
- package/dist/configurators/index.js +191 -0
- package/dist/configurators/index.js.map +1 -0
- package/dist/configurators/kilo.d.ts +7 -0
- package/dist/configurators/kilo.d.ts.map +1 -0
- package/dist/configurators/kilo.js +11 -0
- package/dist/configurators/kilo.js.map +1 -0
- package/dist/configurators/kimi.d.ts +26 -0
- package/dist/configurators/kimi.d.ts.map +1 -0
- package/dist/configurators/kimi.js +74 -0
- package/dist/configurators/kimi.js.map +1 -0
- package/dist/configurators/kiro.d.ts +11 -0
- package/dist/configurators/kiro.d.ts.map +1 -0
- package/dist/configurators/kiro.js +30 -0
- package/dist/configurators/kiro.js.map +1 -0
- package/dist/configurators/omp.d.ts +6 -0
- package/dist/configurators/omp.d.ts.map +1 -0
- package/dist/configurators/omp.js +28 -0
- package/dist/configurators/omp.js.map +1 -0
- package/dist/configurators/opencode.d.ts +5 -0
- package/dist/configurators/opencode.d.ts.map +1 -0
- package/dist/configurators/opencode.js +84 -0
- package/dist/configurators/opencode.js.map +1 -0
- package/dist/configurators/pi.d.ts +5 -0
- package/dist/configurators/pi.d.ts.map +1 -0
- package/dist/configurators/pi.js +39 -0
- package/dist/configurators/pi.js.map +1 -0
- package/dist/configurators/qoder.d.ts +12 -0
- package/dist/configurators/qoder.d.ts.map +1 -0
- package/dist/configurators/qoder.js +30 -0
- package/dist/configurators/qoder.js.map +1 -0
- package/dist/configurators/reasonix.d.ts +17 -0
- package/dist/configurators/reasonix.d.ts.map +1 -0
- package/dist/configurators/reasonix.js +37 -0
- package/dist/configurators/reasonix.js.map +1 -0
- package/dist/configurators/shared.d.ts +187 -0
- package/dist/configurators/shared.d.ts.map +1 -0
- package/dist/configurators/shared.js +590 -0
- package/dist/configurators/shared.js.map +1 -0
- package/dist/configurators/snow.d.ts +25 -0
- package/dist/configurators/snow.d.ts.map +1 -0
- package/dist/configurators/snow.js +69 -0
- package/dist/configurators/snow.js.map +1 -0
- package/dist/configurators/trae.d.ts +16 -0
- package/dist/configurators/trae.d.ts.map +1 -0
- package/dist/configurators/trae.js +34 -0
- package/dist/configurators/trae.js.map +1 -0
- package/dist/configurators/workflow.d.ts +51 -0
- package/dist/configurators/workflow.d.ts.map +1 -0
- package/dist/configurators/workflow.js +210 -0
- package/dist/configurators/workflow.js.map +1 -0
- package/dist/configurators/zcode.d.ts +23 -0
- package/dist/configurators/zcode.d.ts.map +1 -0
- package/dist/configurators/zcode.js +63 -0
- package/dist/configurators/zcode.js.map +1 -0
- package/dist/constants/paths.d.ts +74 -0
- package/dist/constants/paths.d.ts.map +1 -0
- package/dist/constants/paths.js +83 -0
- package/dist/constants/paths.js.map +1 -0
- package/dist/constants/version.d.ts +9 -0
- package/dist/constants/version.d.ts.map +1 -0
- package/dist/constants/version.js +15 -0
- package/dist/constants/version.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/index.d.ts +62 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +187 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifests/0.1.9.json +30 -0
- package/dist/migrations/manifests/0.2.0.json +49 -0
- package/dist/migrations/manifests/0.2.12.json +9 -0
- package/dist/migrations/manifests/0.2.13.json +9 -0
- package/dist/migrations/manifests/0.2.14.json +175 -0
- package/dist/migrations/manifests/0.2.15.json +33 -0
- package/dist/migrations/manifests/0.3.0-beta.0.json +297 -0
- package/dist/migrations/manifests/0.3.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.15.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.7.json +11 -0
- package/dist/migrations/manifests/0.3.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.1.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.2.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.3.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.4.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.5.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.6.json +9 -0
- package/dist/migrations/manifests/0.3.0.json +11 -0
- package/dist/migrations/manifests/0.3.1.json +9 -0
- package/dist/migrations/manifests/0.3.10.json +9 -0
- package/dist/migrations/manifests/0.3.2.json +9 -0
- package/dist/migrations/manifests/0.3.3.json +9 -0
- package/dist/migrations/manifests/0.3.4.json +21 -0
- package/dist/migrations/manifests/0.3.5.json +9 -0
- package/dist/migrations/manifests/0.3.6.json +9 -0
- package/dist/migrations/manifests/0.3.7.json +9 -0
- package/dist/migrations/manifests/0.3.8.json +9 -0
- package/dist/migrations/manifests/0.3.9.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.1.json +228 -0
- package/dist/migrations/manifests/0.4.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.8.json +34 -0
- package/dist/migrations/manifests/0.4.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.4.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.4.0-rc.1.json +9 -0
- package/dist/migrations/manifests/0.4.0.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
- package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.15.json +116 -0
- package/dist/migrations/manifests/0.5.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.17.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.18.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.19.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
- package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
- package/dist/migrations/manifests/0.5.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.1.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.2.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.3.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.4.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.5.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.6.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.7.json +9 -0
- package/dist/migrations/manifests/0.5.0.json +9 -0
- package/dist/migrations/manifests/0.5.1.json +9 -0
- package/dist/migrations/manifests/0.5.10.json +9 -0
- package/dist/migrations/manifests/0.5.11.json +16 -0
- package/dist/migrations/manifests/0.5.12.json +9 -0
- package/dist/migrations/manifests/0.5.13.json +9 -0
- package/dist/migrations/manifests/0.5.14.json +9 -0
- package/dist/migrations/manifests/0.5.15.json +9 -0
- package/dist/migrations/manifests/0.5.16.json +9 -0
- package/dist/migrations/manifests/0.5.17.json +9 -0
- package/dist/migrations/manifests/0.5.18.json +9 -0
- package/dist/migrations/manifests/0.5.19.json +9 -0
- package/dist/migrations/manifests/0.5.2.json +9 -0
- package/dist/migrations/manifests/0.5.3.json +9 -0
- package/dist/migrations/manifests/0.5.4.json +9 -0
- package/dist/migrations/manifests/0.5.5.json +9 -0
- package/dist/migrations/manifests/0.5.6.json +9 -0
- package/dist/migrations/manifests/0.5.7.json +16 -0
- package/dist/migrations/manifests/0.5.8.json +9 -0
- package/dist/migrations/manifests/0.5.9.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.0.json +16 -0
- package/dist/migrations/manifests/0.6.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.15.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.17.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.18.json +16 -0
- package/dist/migrations/manifests/0.6.0-beta.19.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.20.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.21.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.22.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.23.json +88 -0
- package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.6.json +16 -0
- package/dist/migrations/manifests/0.6.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.6.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.6.0.json +1 -0
- package/dist/migrations/manifests/0.6.1.json +9 -0
- package/dist/migrations/manifests/0.6.10.json +9 -0
- package/dist/migrations/manifests/0.6.11.json +9 -0
- package/dist/migrations/manifests/0.6.12.json +9 -0
- package/dist/migrations/manifests/0.6.13.json +9 -0
- package/dist/migrations/manifests/0.6.14.json +9 -0
- package/dist/migrations/manifests/0.6.2.json +9 -0
- package/dist/migrations/manifests/0.6.3.json +24 -0
- package/dist/migrations/manifests/0.6.4.json +9 -0
- package/dist/migrations/manifests/0.6.5.json +9 -0
- package/dist/migrations/manifests/0.6.6.json +17 -0
- package/dist/migrations/manifests/0.6.7.json +9 -0
- package/dist/migrations/manifests/0.6.8.json +17 -0
- package/dist/migrations/manifests/0.6.9.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.0.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.3.json +9 -0
- package/dist/templates/claude/agents/trellis-check.md +115 -0
- package/dist/templates/claude/agents/trellis-implement.md +115 -0
- package/dist/templates/claude/agents/trellis-research.md +137 -0
- package/dist/templates/claude/hooks/statusline.py +332 -0
- package/dist/templates/claude/index.d.ts +31 -0
- package/dist/templates/claude/index.d.ts.map +1 -0
- package/dist/templates/claude/index.js +57 -0
- package/dist/templates/claude/index.js.map +1 -0
- package/dist/templates/claude/settings.json +95 -0
- package/dist/templates/codebuddy/agents/trellis-check.md +115 -0
- package/dist/templates/codebuddy/agents/trellis-implement.md +115 -0
- package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
- package/dist/templates/codebuddy/index.d.ts +15 -0
- package/dist/templates/codebuddy/index.d.ts.map +1 -0
- package/dist/templates/codebuddy/index.js +15 -0
- package/dist/templates/codebuddy/index.js.map +1 -0
- package/dist/templates/codebuddy/settings.json +69 -0
- package/dist/templates/codex/agents/trellis-check.toml +56 -0
- package/dist/templates/codex/agents/trellis-implement.toml +37 -0
- package/dist/templates/codex/agents/trellis-research.toml +78 -0
- package/dist/templates/codex/config.toml +39 -0
- package/dist/templates/codex/hooks/session-start.py +568 -0
- package/dist/templates/codex/hooks.json +52 -0
- package/dist/templates/codex/index.d.ts +35 -0
- package/dist/templates/codex/index.d.ts.map +1 -0
- package/dist/templates/codex/index.js +67 -0
- package/dist/templates/codex/index.js.map +1 -0
- package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +67 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +480 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +233 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +226 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +276 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +128 -0
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +85 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +56 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +123 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +90 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/bundled-skills.md +159 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-channel.md +69 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +130 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +84 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +73 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +59 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +113 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +87 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +81 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +65 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +93 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/SKILL.md +41 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/mcp-setup.md +90 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/repository-analysis.md +59 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-task-planning.md +61 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-writing.md +70 -0
- package/dist/templates/common/commands/continue.md +56 -0
- package/dist/templates/common/commands/finish-work.md +66 -0
- package/dist/templates/common/commands/start.md +59 -0
- package/dist/templates/common/index.d.ts +48 -0
- package/dist/templates/common/index.d.ts.map +1 -0
- package/dist/templates/common/index.js +104 -0
- package/dist/templates/common/index.js.map +1 -0
- package/dist/templates/common/skills/before-dev.md +46 -0
- package/dist/templates/common/skills/brainstorm.md +212 -0
- package/dist/templates/common/skills/break-loop.md +184 -0
- package/dist/templates/common/skills/check.md +106 -0
- package/dist/templates/common/skills/tdd.md +142 -0
- package/dist/templates/common/skills/update-spec.md +351 -0
- package/dist/templates/copilot/copilot-instructions.md +11 -0
- package/dist/templates/copilot/hooks/session-start.py +564 -0
- package/dist/templates/copilot/hooks.json +19 -0
- package/dist/templates/copilot/index.d.ts +28 -0
- package/dist/templates/copilot/index.d.ts.map +1 -0
- package/dist/templates/copilot/index.js +61 -0
- package/dist/templates/copilot/index.js.map +1 -0
- package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +173 -0
- package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
- package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +170 -0
- package/dist/templates/copilot/prompts/check.prompt.md +110 -0
- package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
- package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
- package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
- package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
- package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
- package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
- package/dist/templates/copilot/prompts/start.prompt.md +63 -0
- package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
- package/dist/templates/cursor/agents/trellis-check.md +114 -0
- package/dist/templates/cursor/agents/trellis-implement.md +114 -0
- package/dist/templates/cursor/agents/trellis-research.md +136 -0
- package/dist/templates/cursor/hooks.json +24 -0
- package/dist/templates/cursor/index.d.ts +13 -0
- package/dist/templates/cursor/index.d.ts.map +1 -0
- package/dist/templates/cursor/index.js +13 -0
- package/dist/templates/cursor/index.js.map +1 -0
- package/dist/templates/droid/droids/trellis-check.md +107 -0
- package/dist/templates/droid/droids/trellis-implement.md +107 -0
- package/dist/templates/droid/droids/trellis-research.md +137 -0
- package/dist/templates/droid/index.d.ts +15 -0
- package/dist/templates/droid/index.d.ts.map +1 -0
- package/dist/templates/droid/index.js +15 -0
- package/dist/templates/droid/index.js.map +1 -0
- package/dist/templates/droid/settings.json +69 -0
- package/dist/templates/dsh/DSH.md +80 -0
- package/dist/templates/dsh/agents/trellis-check.md +99 -0
- package/dist/templates/dsh/agents/trellis-implement.md +106 -0
- package/dist/templates/dsh/agents/trellis-research.md +134 -0
- package/dist/templates/dsh/index.d.ts +22 -0
- package/dist/templates/dsh/index.d.ts.map +1 -0
- package/dist/templates/dsh/index.js +27 -0
- package/dist/templates/dsh/index.js.map +1 -0
- package/dist/templates/extract.d.ts +40 -0
- package/dist/templates/extract.d.ts.map +1 -0
- package/dist/templates/extract.js +106 -0
- package/dist/templates/extract.js.map +1 -0
- package/dist/templates/gemini/agents/trellis-check.md +107 -0
- package/dist/templates/gemini/agents/trellis-implement.md +107 -0
- package/dist/templates/gemini/agents/trellis-research.md +136 -0
- package/dist/templates/gemini/index.d.ts +13 -0
- package/dist/templates/gemini/index.d.ts.map +1 -0
- package/dist/templates/gemini/index.js +13 -0
- package/dist/templates/gemini/index.js.map +1 -0
- package/dist/templates/gemini/settings.json +40 -0
- package/dist/templates/grok/agents/trellis-check.md +106 -0
- package/dist/templates/grok/agents/trellis-implement.md +121 -0
- package/dist/templates/grok/agents/trellis-research.md +146 -0
- package/dist/templates/grok/index.d.ts +16 -0
- package/dist/templates/grok/index.d.ts.map +1 -0
- package/dist/templates/grok/index.js +19 -0
- package/dist/templates/grok/index.js.map +1 -0
- package/dist/templates/kimi/agents/trellis-check.md +104 -0
- package/dist/templates/kimi/agents/trellis-implement.md +120 -0
- package/dist/templates/kimi/agents/trellis-research.md +144 -0
- package/dist/templates/kimi/index.d.ts +20 -0
- package/dist/templates/kimi/index.d.ts.map +1 -0
- package/dist/templates/kimi/index.js +23 -0
- package/dist/templates/kimi/index.js.map +1 -0
- package/dist/templates/kiro/agents/trellis-check.json +26 -0
- package/dist/templates/kiro/agents/trellis-implement.json +26 -0
- package/dist/templates/kiro/agents/trellis-research.json +30 -0
- package/dist/templates/kiro/agents/trellis.json +34 -0
- package/dist/templates/kiro/hooks/trellis-workflow-state.kiro.hook +14 -0
- package/dist/templates/kiro/index.d.ts +32 -0
- package/dist/templates/kiro/index.d.ts.map +1 -0
- package/dist/templates/kiro/index.js +28 -0
- package/dist/templates/kiro/index.js.map +1 -0
- package/dist/templates/markdown/agents.md +21 -0
- package/dist/templates/markdown/gitignore.txt +15 -0
- package/dist/templates/markdown/index.d.ts +27 -0
- package/dist/templates/markdown/index.d.ts.map +1 -0
- package/dist/templates/markdown/index.js +52 -0
- package/dist/templates/markdown/index.js.map +1 -0
- package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
- package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
- package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
- package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +327 -0
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +633 -0
- package/dist/templates/markdown/spec/guides/index.md.txt +97 -0
- package/dist/templates/markdown/workspace-index.md +125 -0
- package/dist/templates/markdown/worktree.yaml.txt +58 -0
- package/dist/templates/omp/agents/trellis-check.md +41 -0
- package/dist/templates/omp/agents/trellis-implement.md +55 -0
- package/dist/templates/omp/agents/trellis-research.md +30 -0
- package/dist/templates/omp/extensions/trellis/index.ts.txt +592 -0
- package/dist/templates/omp/index.d.ts +4 -0
- package/dist/templates/omp/index.d.ts.map +1 -0
- package/dist/templates/omp/index.js +9 -0
- package/dist/templates/omp/index.js.map +1 -0
- package/dist/templates/opencode/agents/trellis-check.md +122 -0
- package/dist/templates/opencode/agents/trellis-implement.md +123 -0
- package/dist/templates/opencode/agents/trellis-research.md +145 -0
- package/dist/templates/opencode/lib/context-visibility.js +86 -0
- package/dist/templates/opencode/lib/session-utils.js +526 -0
- package/dist/templates/opencode/lib/trellis-context.js +627 -0
- package/dist/templates/opencode/package.json +5 -0
- package/dist/templates/opencode/plugins/inject-spec-context.js +121 -0
- package/dist/templates/opencode/plugins/inject-subagent-context.js +569 -0
- package/dist/templates/opencode/plugins/inject-workflow-state.js +340 -0
- package/dist/templates/opencode/plugins/session-start.js +74 -0
- package/dist/templates/pi/agents/trellis-check.md +37 -0
- package/dist/templates/pi/agents/trellis-implement.md +52 -0
- package/dist/templates/pi/agents/trellis-research.md +25 -0
- package/dist/templates/pi/extensions/trellis/index.ts.txt +2033 -0
- package/dist/templates/pi/index.d.ts +5 -0
- package/dist/templates/pi/index.d.ts.map +1 -0
- package/dist/templates/pi/index.js +12 -0
- package/dist/templates/pi/index.js.map +1 -0
- package/dist/templates/pi/settings.json +9 -0
- package/dist/templates/qoder/agents/trellis-check.md +108 -0
- package/dist/templates/qoder/agents/trellis-implement.md +108 -0
- package/dist/templates/qoder/agents/trellis-research.md +137 -0
- package/dist/templates/qoder/index.d.ts +15 -0
- package/dist/templates/qoder/index.d.ts.map +1 -0
- package/dist/templates/qoder/index.js +15 -0
- package/dist/templates/qoder/index.js.map +1 -0
- package/dist/templates/qoder/settings.json +59 -0
- package/dist/templates/reasonix/agents/trellis-check.md +36 -0
- package/dist/templates/reasonix/agents/trellis-implement.md +51 -0
- package/dist/templates/reasonix/index.d.ts +13 -0
- package/dist/templates/reasonix/index.d.ts.map +1 -0
- package/dist/templates/reasonix/index.js +16 -0
- package/dist/templates/reasonix/index.js.map +1 -0
- package/dist/templates/shared-hooks/index.d.ts +83 -0
- package/dist/templates/shared-hooks/index.d.ts.map +1 -0
- package/dist/templates/shared-hooks/index.js +152 -0
- package/dist/templates/shared-hooks/index.js.map +1 -0
- package/dist/templates/shared-hooks/inject-shell-session-context.py +292 -0
- package/dist/templates/shared-hooks/inject-spec-context.py +844 -0
- package/dist/templates/shared-hooks/inject-subagent-context.py +1175 -0
- package/dist/templates/shared-hooks/inject-workflow-state.py +501 -0
- package/dist/templates/shared-hooks/session-start.py +969 -0
- package/dist/templates/snow/SNOW.md +86 -0
- package/dist/templates/snow/agents/trellis-check.md +136 -0
- package/dist/templates/snow/agents/trellis-implement.md +158 -0
- package/dist/templates/snow/agents/trellis-research.md +114 -0
- package/dist/templates/snow/hooks/beforeSubAgentStart.json +15 -0
- package/dist/templates/snow/hooks/onSessionStart.json +15 -0
- package/dist/templates/snow/hooks/onUserMessage.json +15 -0
- package/dist/templates/snow/hooks/write-trellis-context.py +644 -0
- package/dist/templates/snow/index.d.ts +26 -0
- package/dist/templates/snow/index.d.ts.map +1 -0
- package/dist/templates/snow/index.js +36 -0
- package/dist/templates/snow/index.js.map +1 -0
- package/dist/templates/template-utils.d.ts +26 -0
- package/dist/templates/template-utils.d.ts.map +1 -0
- package/dist/templates/template-utils.js +64 -0
- package/dist/templates/template-utils.js.map +1 -0
- package/dist/templates/trae/agents/trellis-check.md +108 -0
- package/dist/templates/trae/agents/trellis-implement.md +108 -0
- package/dist/templates/trae/agents/trellis-research.md +137 -0
- package/dist/templates/trae/hooks.json +39 -0
- package/dist/templates/trae/index.d.ts +15 -0
- package/dist/templates/trae/index.d.ts.map +1 -0
- package/dist/templates/trae/index.js +15 -0
- package/dist/templates/trae/index.js.map +1 -0
- package/dist/templates/trellis/agents/check.md +70 -0
- package/dist/templates/trellis/agents/implement.md +81 -0
- package/dist/templates/trellis/config.yaml +205 -0
- package/dist/templates/trellis/gitattributes.txt +9 -0
- package/dist/templates/trellis/gitignore.txt +32 -0
- package/dist/templates/trellis/index.d.ts +70 -0
- package/dist/templates/trellis/index.d.ts.map +1 -0
- package/dist/templates/trellis/index.js +127 -0
- package/dist/templates/trellis/index.js.map +1 -0
- package/dist/templates/trellis/scripts/__init__.py +5 -0
- package/dist/templates/trellis/scripts/add_session.py +681 -0
- package/dist/templates/trellis/scripts/common/__init__.py +92 -0
- package/dist/templates/trellis/scripts/common/active_task.py +787 -0
- package/dist/templates/trellis/scripts/common/cli_adapter.py +982 -0
- package/dist/templates/trellis/scripts/common/config.py +587 -0
- package/dist/templates/trellis/scripts/common/developer.py +190 -0
- package/dist/templates/trellis/scripts/common/git.py +74 -0
- package/dist/templates/trellis/scripts/common/git_context.py +138 -0
- package/dist/templates/trellis/scripts/common/io.py +61 -0
- package/dist/templates/trellis/scripts/common/log.py +45 -0
- package/dist/templates/trellis/scripts/common/packages_context.py +238 -0
- package/dist/templates/trellis/scripts/common/paths.py +508 -0
- package/dist/templates/trellis/scripts/common/safe_commit.py +315 -0
- package/dist/templates/trellis/scripts/common/session_context.py +892 -0
- package/dist/templates/trellis/scripts/common/spec_inject.py +439 -0
- package/dist/templates/trellis/scripts/common/spec_match.py +395 -0
- package/dist/templates/trellis/scripts/common/task_context.py +372 -0
- package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
- package/dist/templates/trellis/scripts/common/task_store.py +1016 -0
- package/dist/templates/trellis/scripts/common/task_utils.py +309 -0
- package/dist/templates/trellis/scripts/common/tasks.py +112 -0
- package/dist/templates/trellis/scripts/common/trellis_config.py +132 -0
- package/dist/templates/trellis/scripts/common/types.py +110 -0
- package/dist/templates/trellis/scripts/common/workflow_phase.py +243 -0
- package/dist/templates/trellis/scripts/common/workflow_selection.py +177 -0
- package/dist/templates/trellis/scripts/get_context.py +16 -0
- package/dist/templates/trellis/scripts/get_developer.py +26 -0
- package/dist/templates/trellis/scripts/hooks/linear_sync.py +243 -0
- package/dist/templates/trellis/scripts/init_developer.py +51 -0
- package/dist/templates/trellis/scripts/task.py +694 -0
- package/dist/templates/trellis/tasks/.gitkeep +0 -0
- package/dist/templates/trellis/workflow.md +777 -0
- package/dist/templates/zcode/agents/trellis-check.md +110 -0
- package/dist/templates/zcode/agents/trellis-implement.md +116 -0
- package/dist/templates/zcode/agents/trellis-research.md +133 -0
- package/dist/templates/zcode/config.json +52 -0
- package/dist/templates/zcode/index.d.ts +25 -0
- package/dist/templates/zcode/index.d.ts.map +1 -0
- package/dist/templates/zcode/index.js +29 -0
- package/dist/templates/zcode/index.js.map +1 -0
- package/dist/types/ai-tools.d.ts +95 -0
- package/dist/types/ai-tools.d.ts.map +1 -0
- package/dist/types/ai-tools.js +509 -0
- package/dist/types/ai-tools.js.map +1 -0
- package/dist/types/migration.d.ts +125 -0
- package/dist/types/migration.d.ts.map +1 -0
- package/dist/types/migration.js +8 -0
- package/dist/types/migration.js.map +1 -0
- package/dist/utils/agent-refs.d.ts +31 -0
- package/dist/utils/agent-refs.d.ts.map +1 -0
- package/dist/utils/agent-refs.js +63 -0
- package/dist/utils/agent-refs.js.map +1 -0
- package/dist/utils/atomic-write.d.ts +12 -0
- package/dist/utils/atomic-write.d.ts.map +1 -0
- package/dist/utils/atomic-write.js +30 -0
- package/dist/utils/atomic-write.js.map +1 -0
- package/dist/utils/compare-versions.d.ts +12 -0
- package/dist/utils/compare-versions.d.ts.map +1 -0
- package/dist/utils/compare-versions.js +86 -0
- package/dist/utils/compare-versions.js.map +1 -0
- package/dist/utils/cwd-guard.d.ts +38 -0
- package/dist/utils/cwd-guard.d.ts.map +1 -0
- package/dist/utils/cwd-guard.js +62 -0
- package/dist/utils/cwd-guard.js.map +1 -0
- package/dist/utils/file-writer.d.ts +36 -0
- package/dist/utils/file-writer.d.ts.map +1 -0
- package/dist/utils/file-writer.js +204 -0
- package/dist/utils/file-writer.js.map +1 -0
- package/dist/utils/manifest-prune.d.ts +61 -0
- package/dist/utils/manifest-prune.d.ts.map +1 -0
- package/dist/utils/manifest-prune.js +136 -0
- package/dist/utils/manifest-prune.js.map +1 -0
- package/dist/utils/posix.d.ts +13 -0
- package/dist/utils/posix.d.ts.map +1 -0
- package/dist/utils/posix.js +15 -0
- package/dist/utils/posix.js.map +1 -0
- package/dist/utils/project-detector.d.ts +46 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +666 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/dist/utils/proxy.d.ts +25 -0
- package/dist/utils/proxy.d.ts.map +1 -0
- package/dist/utils/proxy.js +60 -0
- package/dist/utils/proxy.js.map +1 -0
- package/dist/utils/registry-config.d.ts +7 -0
- package/dist/utils/registry-config.d.ts.map +1 -0
- package/dist/utils/registry-config.js +172 -0
- package/dist/utils/registry-config.js.map +1 -0
- package/dist/utils/task-json.d.ts +13 -0
- package/dist/utils/task-json.d.ts.map +1 -0
- package/dist/utils/task-json.js +12 -0
- package/dist/utils/task-json.js.map +1 -0
- package/dist/utils/template-fetcher.d.ts +161 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -0
- package/dist/utils/template-fetcher.js +994 -0
- package/dist/utils/template-fetcher.js.map +1 -0
- package/dist/utils/template-hash.d.ts +123 -0
- package/dist/utils/template-hash.d.ts.map +1 -0
- package/dist/utils/template-hash.js +335 -0
- package/dist/utils/template-hash.js.map +1 -0
- package/dist/utils/uninstall-scrubbers.d.ts +67 -0
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
- package/dist/utils/uninstall-scrubbers.js +361 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -0
- package/dist/utils/workflow-resolver.d.ts +86 -0
- package/dist/utils/workflow-resolver.d.ts.map +1 -0
- package/dist/utils/workflow-resolver.js +265 -0
- package/dist/utils/workflow-resolver.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,694 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Task Management Script.
|
|
5
|
+
|
|
6
|
+
Usage:
|
|
7
|
+
python3 task.py create "<title>" [--slug <name>] [--assignee <dev>] [--priority P0|P1|P2|P3] [--parent <dir>] [--package <pkg>] [--no-start]
|
|
8
|
+
python3 task.py add-context <dir> <file> <path> [reason] # Add jsonl entry
|
|
9
|
+
python3 task.py validate <dir> # Validate jsonl files
|
|
10
|
+
python3 task.py list-context <dir> # List jsonl entries
|
|
11
|
+
python3 task.py start <dir> # Set active task
|
|
12
|
+
python3 task.py current [--source] [--json] # Show active task
|
|
13
|
+
python3 task.py finish # Clear active task
|
|
14
|
+
python3 task.py workflow <id>|--clear # Set/clear per-task workflow selection
|
|
15
|
+
python3 task.py set-branch <dir> <branch> # Set git branch
|
|
16
|
+
python3 task.py set-base-branch <dir> <branch> # Set PR target branch
|
|
17
|
+
python3 task.py set-scope <dir> <scope> # Set scope for PR title
|
|
18
|
+
python3 task.py set-meta <dir> <key> <value> # Set a task metadata key
|
|
19
|
+
python3 task.py archive <task-dir> # Archive completed task
|
|
20
|
+
python3 task.py list # List active tasks
|
|
21
|
+
python3 task.py list-archive [month] # List archived tasks
|
|
22
|
+
python3 task.py add-subtask <parent-dir> <child-dir> # Link child to parent
|
|
23
|
+
python3 task.py remove-subtask <parent-dir> <child-dir> # Unlink child from parent
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
28
|
+
import argparse
|
|
29
|
+
import json
|
|
30
|
+
import sys
|
|
31
|
+
|
|
32
|
+
from common.log import Colors, colored
|
|
33
|
+
from common.paths import (
|
|
34
|
+
DIR_WORKFLOW,
|
|
35
|
+
DIR_TASKS,
|
|
36
|
+
FILE_TASK_JSON,
|
|
37
|
+
get_repo_root,
|
|
38
|
+
get_developer,
|
|
39
|
+
get_tasks_dir,
|
|
40
|
+
get_current_task,
|
|
41
|
+
)
|
|
42
|
+
from common.active_task import (
|
|
43
|
+
clear_active_task,
|
|
44
|
+
resolve_active_task,
|
|
45
|
+
resolve_context_key,
|
|
46
|
+
set_active_task,
|
|
47
|
+
)
|
|
48
|
+
from common.io import read_json, write_json
|
|
49
|
+
from common.task_utils import resolve_task_dir, run_task_hooks
|
|
50
|
+
from common.tasks import iter_active_tasks, children_progress
|
|
51
|
+
from common.workflow_selection import WORKFLOW_ID_RE, workflow_md_for_task
|
|
52
|
+
|
|
53
|
+
# Import command handlers from split modules (also re-exports for plan.py compatibility)
|
|
54
|
+
from common.task_store import (
|
|
55
|
+
cmd_create,
|
|
56
|
+
cmd_archive,
|
|
57
|
+
cmd_set_branch,
|
|
58
|
+
cmd_set_base_branch,
|
|
59
|
+
cmd_set_scope,
|
|
60
|
+
cmd_set_meta,
|
|
61
|
+
cmd_add_subtask,
|
|
62
|
+
cmd_remove_subtask,
|
|
63
|
+
)
|
|
64
|
+
from common.task_context import (
|
|
65
|
+
cmd_add_context,
|
|
66
|
+
cmd_validate,
|
|
67
|
+
cmd_list_context,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
# =============================================================================
|
|
72
|
+
# Command: start / finish
|
|
73
|
+
# =============================================================================
|
|
74
|
+
|
|
75
|
+
def cmd_start(args: argparse.Namespace) -> int:
|
|
76
|
+
"""Set active task."""
|
|
77
|
+
repo_root = get_repo_root()
|
|
78
|
+
task_input = args.dir
|
|
79
|
+
|
|
80
|
+
if not task_input:
|
|
81
|
+
print(colored("Error: task directory or name required", Colors.RED))
|
|
82
|
+
return 1
|
|
83
|
+
|
|
84
|
+
# Resolve task directory (supports task name, relative path, or absolute path)
|
|
85
|
+
full_path = resolve_task_dir(task_input, repo_root)
|
|
86
|
+
|
|
87
|
+
if not full_path or not full_path.is_dir():
|
|
88
|
+
print(colored(f"Error: Task not found: {task_input}", Colors.RED))
|
|
89
|
+
print("Hint: Use task name (e.g., 'my-task') or full path (e.g., '.trellis/tasks/01-31-my-task')")
|
|
90
|
+
return 1
|
|
91
|
+
|
|
92
|
+
# Convert to relative path for storage. repo_root is resolved because
|
|
93
|
+
# full_path already is (resolve_task_dir only returns paths inside the
|
|
94
|
+
# resolved root), so an unresolved repo_root would mismatch under a
|
|
95
|
+
# symlink (e.g. /tmp on macOS) and reject a perfectly normal task.
|
|
96
|
+
try:
|
|
97
|
+
task_dir = full_path.relative_to(repo_root.resolve()).as_posix()
|
|
98
|
+
except ValueError:
|
|
99
|
+
# resolve_task_dir already refused everything outside the repo, so
|
|
100
|
+
# this is unreachable in practice. Refuse rather than fall back to
|
|
101
|
+
# str(full_path) — that fallback (a lexical relative_to() paired with
|
|
102
|
+
# an absolute-path fallback) is exactly the pattern that let a `..`
|
|
103
|
+
# ref escape into storage before this fix.
|
|
104
|
+
print(colored(f"Error: Task not found: {task_input}", Colors.RED))
|
|
105
|
+
print("Hint: Use task name (e.g., 'my-task') or full path (e.g., '.trellis/tasks/01-31-my-task')")
|
|
106
|
+
return 1
|
|
107
|
+
|
|
108
|
+
task_json_path = full_path / FILE_TASK_JSON
|
|
109
|
+
|
|
110
|
+
if not resolve_context_key():
|
|
111
|
+
# Degraded mode: no session identity available.
|
|
112
|
+
# Hook didn't inject TRELLIS_CONTEXT_ID (common on Windows + Claude Code,
|
|
113
|
+
# --continue resume path, fork distribution, hooks disabled, etc.). Skip
|
|
114
|
+
# per-session pointer write; AI continues based on conversation context.
|
|
115
|
+
print(colored(
|
|
116
|
+
"ℹ Session identity not available; active-task pointer not persisted "
|
|
117
|
+
"this session (degraded mode). AI continues based on conversation context.",
|
|
118
|
+
Colors.YELLOW,
|
|
119
|
+
))
|
|
120
|
+
print(colored(
|
|
121
|
+
"Hint: run inside an AI IDE/session that exposes session identity, "
|
|
122
|
+
"or set TRELLIS_CONTEXT_ID before running task.py start.",
|
|
123
|
+
Colors.YELLOW,
|
|
124
|
+
))
|
|
125
|
+
|
|
126
|
+
# Still flip task.json status: planning → in_progress so downstream phases proceed.
|
|
127
|
+
if task_json_path.is_file():
|
|
128
|
+
data = read_json(task_json_path)
|
|
129
|
+
if data and data.get("status") == "planning":
|
|
130
|
+
data["status"] = "in_progress"
|
|
131
|
+
if write_json(task_json_path, data):
|
|
132
|
+
print(colored("✓ Status: planning → in_progress (degraded)", Colors.GREEN))
|
|
133
|
+
run_task_hooks("after_start", task_json_path, repo_root)
|
|
134
|
+
return 0
|
|
135
|
+
|
|
136
|
+
active = set_active_task(task_dir, repo_root)
|
|
137
|
+
if active:
|
|
138
|
+
print(colored(f"✓ Current task set to: {task_dir}", Colors.GREEN))
|
|
139
|
+
print(f"Source: {active.source}")
|
|
140
|
+
|
|
141
|
+
if task_json_path.is_file():
|
|
142
|
+
data = read_json(task_json_path)
|
|
143
|
+
if data and data.get("status") == "planning":
|
|
144
|
+
data["status"] = "in_progress"
|
|
145
|
+
if write_json(task_json_path, data):
|
|
146
|
+
print(colored("✓ Status: planning → in_progress", Colors.GREEN))
|
|
147
|
+
|
|
148
|
+
print()
|
|
149
|
+
print(colored("The hook will now inject context from this task's jsonl files.", Colors.BLUE))
|
|
150
|
+
|
|
151
|
+
run_task_hooks("after_start", task_json_path, repo_root)
|
|
152
|
+
return 0
|
|
153
|
+
else:
|
|
154
|
+
print(colored("Error: Failed to set current task", Colors.RED))
|
|
155
|
+
return 1
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def cmd_finish(args: argparse.Namespace) -> int:
|
|
159
|
+
"""Clear active task."""
|
|
160
|
+
repo_root = get_repo_root()
|
|
161
|
+
active = clear_active_task(repo_root)
|
|
162
|
+
current = active.task_path
|
|
163
|
+
|
|
164
|
+
if not current:
|
|
165
|
+
print(colored("No current task set", Colors.YELLOW))
|
|
166
|
+
return 0
|
|
167
|
+
|
|
168
|
+
# Resolve task.json path before clearing
|
|
169
|
+
task_json_path = repo_root / current / FILE_TASK_JSON
|
|
170
|
+
|
|
171
|
+
print(colored(f"✓ Cleared current task (was: {current})", Colors.GREEN))
|
|
172
|
+
print(f"Source: {active.source}")
|
|
173
|
+
|
|
174
|
+
if task_json_path.is_file():
|
|
175
|
+
run_task_hooks("after_finish", task_json_path, repo_root)
|
|
176
|
+
return 0
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def cmd_current(args: argparse.Namespace) -> int:
|
|
180
|
+
"""Show active task."""
|
|
181
|
+
repo_root = get_repo_root()
|
|
182
|
+
active = resolve_active_task(repo_root)
|
|
183
|
+
|
|
184
|
+
if getattr(args, "json", False):
|
|
185
|
+
task_obj = None
|
|
186
|
+
if active.task_path:
|
|
187
|
+
data = read_json(repo_root / active.task_path / FILE_TASK_JSON) or {}
|
|
188
|
+
task_obj = {
|
|
189
|
+
"dir": active.task_path,
|
|
190
|
+
"id": data.get("id") or data.get("name"),
|
|
191
|
+
"title": data.get("title"),
|
|
192
|
+
"status": data.get("status"),
|
|
193
|
+
"parent": data.get("parent"),
|
|
194
|
+
"children": data.get("children", []),
|
|
195
|
+
"branch": data.get("branch"),
|
|
196
|
+
"base_branch": data.get("base_branch"),
|
|
197
|
+
}
|
|
198
|
+
print(json.dumps({
|
|
199
|
+
"current_task": task_obj,
|
|
200
|
+
"source": active.source,
|
|
201
|
+
"stale": active.stale,
|
|
202
|
+
}, ensure_ascii=False))
|
|
203
|
+
return 0 if active.task_path else 1
|
|
204
|
+
|
|
205
|
+
if args.source:
|
|
206
|
+
print(f"Current task: {active.task_path or '(none)'}")
|
|
207
|
+
print(f"Source: {active.source}")
|
|
208
|
+
if active.stale:
|
|
209
|
+
print("State: stale")
|
|
210
|
+
return 0 if active.task_path else 1
|
|
211
|
+
|
|
212
|
+
if active.task_path:
|
|
213
|
+
print(active.task_path)
|
|
214
|
+
return 0
|
|
215
|
+
|
|
216
|
+
return 1
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
# =============================================================================
|
|
220
|
+
# Command: workflow
|
|
221
|
+
# =============================================================================
|
|
222
|
+
|
|
223
|
+
def cmd_workflow(args: argparse.Namespace) -> int:
|
|
224
|
+
"""Set or clear the workflow selection on the current session's active task."""
|
|
225
|
+
repo_root = get_repo_root()
|
|
226
|
+
|
|
227
|
+
if args.clear and args.id:
|
|
228
|
+
print(colored("Error: pass either <id> or --clear, not both", Colors.RED))
|
|
229
|
+
return 1
|
|
230
|
+
if not args.clear and not args.id:
|
|
231
|
+
print(colored("Error: workflow id required (or --clear)", Colors.RED))
|
|
232
|
+
print("Usage: python3 task.py workflow <id> | --clear")
|
|
233
|
+
return 1
|
|
234
|
+
|
|
235
|
+
active = resolve_active_task(repo_root)
|
|
236
|
+
if not active.task_path:
|
|
237
|
+
print(colored("Error: No current task set", Colors.RED))
|
|
238
|
+
print("Hint: run task.py start <dir> first")
|
|
239
|
+
return 1
|
|
240
|
+
|
|
241
|
+
task_dir = repo_root / active.task_path
|
|
242
|
+
task_json_path = task_dir / FILE_TASK_JSON
|
|
243
|
+
if not task_json_path.is_file():
|
|
244
|
+
print(colored(f"Error: task.json not found at {task_dir}", Colors.RED))
|
|
245
|
+
return 1
|
|
246
|
+
|
|
247
|
+
data = read_json(task_json_path)
|
|
248
|
+
if not data:
|
|
249
|
+
print(colored(f"Error: failed to read {task_json_path}", Colors.RED))
|
|
250
|
+
return 1
|
|
251
|
+
|
|
252
|
+
if args.clear:
|
|
253
|
+
if data.pop("workflow", None) is None:
|
|
254
|
+
print(colored("No workflow selection set on this task", Colors.YELLOW))
|
|
255
|
+
else:
|
|
256
|
+
if not write_json(task_json_path, data):
|
|
257
|
+
print(colored("Error: failed to update task.json", Colors.RED))
|
|
258
|
+
return 1
|
|
259
|
+
print(colored("✓ Workflow selection cleared", Colors.GREEN))
|
|
260
|
+
else:
|
|
261
|
+
workflow_id = args.id
|
|
262
|
+
if not WORKFLOW_ID_RE.match(workflow_id):
|
|
263
|
+
print(colored(
|
|
264
|
+
f"Error: invalid workflow id '{workflow_id}' (allowed: letters, digits, '-', '_')",
|
|
265
|
+
Colors.RED,
|
|
266
|
+
))
|
|
267
|
+
return 1
|
|
268
|
+
data["workflow"] = workflow_id
|
|
269
|
+
if not write_json(task_json_path, data):
|
|
270
|
+
print(colored("Error: failed to update task.json", Colors.RED))
|
|
271
|
+
return 1
|
|
272
|
+
print(colored(f"✓ Workflow set to: {workflow_id}", Colors.GREEN))
|
|
273
|
+
|
|
274
|
+
# workflow_md_for_task warns on stderr itself when the selected variant
|
|
275
|
+
# file is missing (it can be saved later via `trellis workflow --save`).
|
|
276
|
+
effective = workflow_md_for_task(repo_root, task_dir)
|
|
277
|
+
try:
|
|
278
|
+
effective_display = effective.relative_to(repo_root).as_posix()
|
|
279
|
+
except ValueError:
|
|
280
|
+
effective_display = str(effective)
|
|
281
|
+
print(f"Effective workflow: {effective_display}")
|
|
282
|
+
return 0
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
# =============================================================================
|
|
286
|
+
# Command: list
|
|
287
|
+
# =============================================================================
|
|
288
|
+
|
|
289
|
+
def _display_status(t, all_statuses: dict) -> str:
|
|
290
|
+
"""Return the status label to show for a task in `list` output.
|
|
291
|
+
|
|
292
|
+
A parent task's stored status stays "planning" until someone runs
|
|
293
|
+
`task.py start` on the parent directly, even while its children are
|
|
294
|
+
actively being worked — a misleading label for anyone scanning the
|
|
295
|
+
list (#399 item 3). Show "active" instead when at least one child is
|
|
296
|
+
past planning; the stored status.json value is left untouched.
|
|
297
|
+
"""
|
|
298
|
+
if t.status == "planning" and t.children:
|
|
299
|
+
child_in_flight = any(
|
|
300
|
+
all_statuses.get(c) not in (None, "planning") for c in t.children
|
|
301
|
+
)
|
|
302
|
+
if child_in_flight:
|
|
303
|
+
return "active"
|
|
304
|
+
return t.status
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
def cmd_list(args: argparse.Namespace) -> int:
|
|
308
|
+
"""List active tasks."""
|
|
309
|
+
repo_root = get_repo_root()
|
|
310
|
+
tasks_dir = get_tasks_dir(repo_root)
|
|
311
|
+
current_task = get_current_task(repo_root)
|
|
312
|
+
developer = get_developer(repo_root)
|
|
313
|
+
filter_mine = args.mine
|
|
314
|
+
filter_status = args.status
|
|
315
|
+
as_json = getattr(args, "json", False)
|
|
316
|
+
|
|
317
|
+
# Single pass: collect all tasks via shared iterator
|
|
318
|
+
all_tasks = {t.dir_name: t for t in iter_active_tasks(tasks_dir)}
|
|
319
|
+
all_statuses = {name: t.status for name, t in all_tasks.items()}
|
|
320
|
+
|
|
321
|
+
if as_json:
|
|
322
|
+
if filter_mine and not developer:
|
|
323
|
+
print(json.dumps({"error": "No developer set"}), file=sys.stderr)
|
|
324
|
+
return 1
|
|
325
|
+
|
|
326
|
+
items = []
|
|
327
|
+
for dir_name in sorted(all_tasks.keys()):
|
|
328
|
+
t = all_tasks[dir_name]
|
|
329
|
+
if filter_mine and (t.assignee or "-") != developer:
|
|
330
|
+
continue
|
|
331
|
+
if filter_status and t.status != filter_status:
|
|
332
|
+
continue
|
|
333
|
+
items.append({
|
|
334
|
+
"dir": f"{DIR_WORKFLOW}/{DIR_TASKS}/{dir_name}",
|
|
335
|
+
"id": t.raw.get("id") or dir_name,
|
|
336
|
+
"title": t.title,
|
|
337
|
+
"status": t.status,
|
|
338
|
+
"display_status": _display_status(t, all_statuses),
|
|
339
|
+
"priority": t.priority,
|
|
340
|
+
"assignee": t.assignee or None,
|
|
341
|
+
"parent": t.parent,
|
|
342
|
+
"children": list(t.children),
|
|
343
|
+
"package": t.package,
|
|
344
|
+
})
|
|
345
|
+
print(json.dumps({"tasks": items}, ensure_ascii=False))
|
|
346
|
+
return 0
|
|
347
|
+
|
|
348
|
+
if filter_mine:
|
|
349
|
+
if not developer:
|
|
350
|
+
print(colored("Error: No developer set. Run init_developer.py first", Colors.RED), file=sys.stderr)
|
|
351
|
+
return 1
|
|
352
|
+
print(colored(f"My tasks (assignee: {developer}):", Colors.BLUE))
|
|
353
|
+
else:
|
|
354
|
+
print(colored("All active tasks:", Colors.BLUE))
|
|
355
|
+
print()
|
|
356
|
+
|
|
357
|
+
# Display tasks hierarchically
|
|
358
|
+
count = 0
|
|
359
|
+
|
|
360
|
+
def _print_task(dir_name: str, indent: int = 0) -> None:
|
|
361
|
+
nonlocal count
|
|
362
|
+
t = all_tasks[dir_name]
|
|
363
|
+
|
|
364
|
+
# Apply --mine filter
|
|
365
|
+
if filter_mine and (t.assignee or "-") != developer:
|
|
366
|
+
return
|
|
367
|
+
|
|
368
|
+
# Apply --status filter
|
|
369
|
+
if filter_status and t.status != filter_status:
|
|
370
|
+
return
|
|
371
|
+
|
|
372
|
+
relative_path = f"{DIR_WORKFLOW}/{DIR_TASKS}/{dir_name}"
|
|
373
|
+
marker = ""
|
|
374
|
+
if relative_path == current_task:
|
|
375
|
+
marker = f" {colored('<- current', Colors.GREEN)}"
|
|
376
|
+
|
|
377
|
+
# Children progress
|
|
378
|
+
progress = children_progress(t.children, all_statuses)
|
|
379
|
+
status_label = _display_status(t, all_statuses)
|
|
380
|
+
|
|
381
|
+
# Package tag
|
|
382
|
+
pkg_tag = f" @{t.package}" if t.package else ""
|
|
383
|
+
|
|
384
|
+
prefix = " " * indent + " - "
|
|
385
|
+
|
|
386
|
+
if filter_mine:
|
|
387
|
+
print(f"{prefix}{dir_name}/ ({status_label}){pkg_tag}{progress}{marker}")
|
|
388
|
+
else:
|
|
389
|
+
print(f"{prefix}{dir_name}/ ({status_label}){pkg_tag}{progress} [{colored(t.assignee or '-', Colors.CYAN)}]{marker}")
|
|
390
|
+
count += 1
|
|
391
|
+
|
|
392
|
+
# Print children indented
|
|
393
|
+
for child_name in t.children:
|
|
394
|
+
if child_name in all_tasks:
|
|
395
|
+
_print_task(child_name, indent + 1)
|
|
396
|
+
|
|
397
|
+
# Display only top-level tasks: those without a parent, plus orphans
|
|
398
|
+
# whose recorded parent is not (or no longer) in the active set — a
|
|
399
|
+
# dangling parent ref must still render flat instead of disappearing.
|
|
400
|
+
for dir_name in sorted(all_tasks.keys()):
|
|
401
|
+
parent = all_tasks[dir_name].parent
|
|
402
|
+
if not parent or parent not in all_tasks:
|
|
403
|
+
_print_task(dir_name)
|
|
404
|
+
|
|
405
|
+
if count == 0:
|
|
406
|
+
if filter_mine:
|
|
407
|
+
print(" (no tasks assigned to you)")
|
|
408
|
+
else:
|
|
409
|
+
print(" (no active tasks)")
|
|
410
|
+
|
|
411
|
+
print()
|
|
412
|
+
print(f"Total: {count} task(s)")
|
|
413
|
+
return 0
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
# =============================================================================
|
|
417
|
+
# Command: list-archive
|
|
418
|
+
# =============================================================================
|
|
419
|
+
|
|
420
|
+
def cmd_list_archive(args: argparse.Namespace) -> int:
|
|
421
|
+
"""List archived tasks."""
|
|
422
|
+
repo_root = get_repo_root()
|
|
423
|
+
tasks_dir = get_tasks_dir(repo_root)
|
|
424
|
+
archive_dir = tasks_dir / "archive"
|
|
425
|
+
month = args.month
|
|
426
|
+
|
|
427
|
+
print(colored("Archived tasks:", Colors.BLUE))
|
|
428
|
+
print()
|
|
429
|
+
|
|
430
|
+
if month:
|
|
431
|
+
month_dir = archive_dir / month
|
|
432
|
+
if month_dir.is_dir():
|
|
433
|
+
print(f"[{month}]")
|
|
434
|
+
for d in sorted(month_dir.iterdir()):
|
|
435
|
+
if d.is_dir():
|
|
436
|
+
print(f" - {d.name}/")
|
|
437
|
+
else:
|
|
438
|
+
print(f" No archives for {month}")
|
|
439
|
+
else:
|
|
440
|
+
if archive_dir.is_dir():
|
|
441
|
+
for month_dir in sorted(archive_dir.iterdir()):
|
|
442
|
+
if month_dir.is_dir():
|
|
443
|
+
month_name = month_dir.name
|
|
444
|
+
count = sum(1 for d in month_dir.iterdir() if d.is_dir())
|
|
445
|
+
print(f"[{month_name}] - {count} task(s)")
|
|
446
|
+
|
|
447
|
+
return 0
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
# =============================================================================
|
|
451
|
+
# Help
|
|
452
|
+
# =============================================================================
|
|
453
|
+
|
|
454
|
+
def show_usage() -> None:
|
|
455
|
+
"""Show usage help."""
|
|
456
|
+
print("""Task Management Script
|
|
457
|
+
|
|
458
|
+
Usage:
|
|
459
|
+
python3 task.py create <title> Create new task directory
|
|
460
|
+
python3 task.py create <title> --package <pkg> Create task for a specific package
|
|
461
|
+
python3 task.py create <title> --parent <dir> Create task as child of parent
|
|
462
|
+
python3 task.py create <title> --no-start Create without making it active in this session
|
|
463
|
+
python3 task.py create <title> --workflow <id> Create task pinned to a workflow variant
|
|
464
|
+
python3 task.py add-context <dir> <jsonl> <path> [reason] Add entry to jsonl
|
|
465
|
+
python3 task.py validate <dir> Validate jsonl files
|
|
466
|
+
python3 task.py list-context <dir> List jsonl entries
|
|
467
|
+
python3 task.py start <dir> Set active task
|
|
468
|
+
python3 task.py current [--source] Show active task
|
|
469
|
+
python3 task.py finish Clear active task
|
|
470
|
+
python3 task.py workflow <id> Select workflow variant for active task
|
|
471
|
+
python3 task.py workflow --clear Clear selection (use default resolution)
|
|
472
|
+
python3 task.py set-branch <dir> <branch> Set git branch
|
|
473
|
+
python3 task.py set-base-branch <dir> <branch> Set PR target branch
|
|
474
|
+
python3 task.py set-scope <dir> <scope> Set scope for PR title
|
|
475
|
+
python3 task.py set-meta <dir> <key> <value> Set/overwrite a task metadata key
|
|
476
|
+
python3 task.py archive <task-dir> Archive completed task
|
|
477
|
+
python3 task.py add-subtask <parent> <child> Link child task to parent
|
|
478
|
+
python3 task.py remove-subtask <parent> <child> Unlink child from parent
|
|
479
|
+
python3 task.py list [--mine] [--status <status>] [--json] List tasks
|
|
480
|
+
python3 task.py list-archive [YYYY-MM] List archived tasks
|
|
481
|
+
|
|
482
|
+
Monorepo options:
|
|
483
|
+
--package <pkg> Package name (validated against config.yaml packages)
|
|
484
|
+
|
|
485
|
+
List options:
|
|
486
|
+
--mine, -m Show only tasks assigned to current developer
|
|
487
|
+
--status, -s <s> Filter by status (planning, in_progress, review, completed)
|
|
488
|
+
--json Output machine-readable JSON (also available on `current`)
|
|
489
|
+
|
|
490
|
+
Examples:
|
|
491
|
+
python3 task.py create "Add login feature" --slug add-login
|
|
492
|
+
python3 task.py create "Add login feature" --slug add-login --package cli
|
|
493
|
+
python3 task.py create "Add login feature" --meta linear=ENG-123 --meta epic=auth
|
|
494
|
+
python3 task.py create "Child task" --slug child --parent .trellis/tasks/01-21-parent
|
|
495
|
+
python3 task.py add-context <dir> implement .trellis/spec/cli/backend/auth.md "Auth guidelines"
|
|
496
|
+
python3 task.py set-branch <dir> task/add-login
|
|
497
|
+
python3 task.py start .trellis/tasks/01-21-add-login
|
|
498
|
+
python3 task.py current --source
|
|
499
|
+
python3 task.py finish
|
|
500
|
+
python3 task.py archive add-login
|
|
501
|
+
python3 task.py add-subtask parent-task child-task # Link existing tasks
|
|
502
|
+
python3 task.py remove-subtask parent-task child-task
|
|
503
|
+
python3 task.py list # List all active tasks
|
|
504
|
+
python3 task.py list --mine # List my tasks only
|
|
505
|
+
python3 task.py list --mine --status in_progress # List my in-progress tasks
|
|
506
|
+
""")
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
# =============================================================================
|
|
510
|
+
# Main Entry
|
|
511
|
+
# =============================================================================
|
|
512
|
+
|
|
513
|
+
def main() -> int:
|
|
514
|
+
"""CLI entry point."""
|
|
515
|
+
# Deprecation guard: `init-context` was removed in v0.5.0-beta.12.
|
|
516
|
+
# Detect early so argparse doesn't mask the real reason with a generic
|
|
517
|
+
# "invalid choice" error.
|
|
518
|
+
if len(sys.argv) >= 2 and sys.argv[1] == "init-context":
|
|
519
|
+
print(
|
|
520
|
+
colored(
|
|
521
|
+
"Error: `task.py init-context` was removed in v0.5.0-beta.12.",
|
|
522
|
+
Colors.RED,
|
|
523
|
+
),
|
|
524
|
+
file=sys.stderr,
|
|
525
|
+
)
|
|
526
|
+
print(
|
|
527
|
+
"implement.jsonl / check.jsonl are now seeded on `task.py create` for",
|
|
528
|
+
file=sys.stderr,
|
|
529
|
+
)
|
|
530
|
+
print(
|
|
531
|
+
"sub-agent-capable platforms and curated by the AI during planning when needed.",
|
|
532
|
+
file=sys.stderr,
|
|
533
|
+
)
|
|
534
|
+
print("See .trellis/workflow.md planning artifact guidance or run:", file=sys.stderr)
|
|
535
|
+
print(
|
|
536
|
+
" python3 ./.trellis/scripts/get_context.py --mode phase --step 1",
|
|
537
|
+
file=sys.stderr,
|
|
538
|
+
)
|
|
539
|
+
print(
|
|
540
|
+
"Use `task.py add-context <dir> implement|check <path> <reason>` to append entries.",
|
|
541
|
+
file=sys.stderr,
|
|
542
|
+
)
|
|
543
|
+
return 2
|
|
544
|
+
|
|
545
|
+
parser = argparse.ArgumentParser(
|
|
546
|
+
description="Task Management Script",
|
|
547
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
548
|
+
)
|
|
549
|
+
subparsers = parser.add_subparsers(dest="command", help="Commands")
|
|
550
|
+
|
|
551
|
+
# create
|
|
552
|
+
p_create = subparsers.add_parser("create", help="Create new task")
|
|
553
|
+
p_create.add_argument("title", help="Task title")
|
|
554
|
+
p_create.add_argument("--slug", "-s", help="Task slug without the MM-DD date prefix")
|
|
555
|
+
p_create.add_argument("--assignee", "-a", help="Assignee developer")
|
|
556
|
+
p_create.add_argument("--priority", "-p", default="P2", help="Priority (P0-P3)")
|
|
557
|
+
p_create.add_argument("--description", "-d", help="Task description")
|
|
558
|
+
p_create.add_argument("--parent", help="Parent task directory (establishes subtask link)")
|
|
559
|
+
p_create.add_argument("--package", help="Package name for monorepo projects")
|
|
560
|
+
p_create.add_argument(
|
|
561
|
+
"--base-branch",
|
|
562
|
+
help="PR target branch (overrides origin/HEAD detection and the checked-out-branch fallback)",
|
|
563
|
+
)
|
|
564
|
+
p_create.add_argument(
|
|
565
|
+
"--meta",
|
|
566
|
+
action="append",
|
|
567
|
+
help="Task metadata key=value (repeatable)",
|
|
568
|
+
)
|
|
569
|
+
p_create.add_argument(
|
|
570
|
+
"--no-start",
|
|
571
|
+
action="store_true",
|
|
572
|
+
help="Create the task without making it active in this session",
|
|
573
|
+
)
|
|
574
|
+
p_create.add_argument(
|
|
575
|
+
"--workflow",
|
|
576
|
+
help="Workflow variant id for this task (.trellis/workflows/<id>.md)",
|
|
577
|
+
)
|
|
578
|
+
|
|
579
|
+
# add-context
|
|
580
|
+
p_add = subparsers.add_parser("add-context", help="Add context entry")
|
|
581
|
+
p_add.add_argument("dir", help="Task directory")
|
|
582
|
+
p_add.add_argument("file", help="JSONL file (implement|check)")
|
|
583
|
+
p_add.add_argument("path", help="File path to add")
|
|
584
|
+
p_add.add_argument("reason", nargs="?", help="Reason for adding")
|
|
585
|
+
|
|
586
|
+
# validate
|
|
587
|
+
p_validate = subparsers.add_parser("validate", help="Validate context files")
|
|
588
|
+
p_validate.add_argument("dir", help="Task directory")
|
|
589
|
+
|
|
590
|
+
# list-context
|
|
591
|
+
p_listctx = subparsers.add_parser("list-context", help="List context entries")
|
|
592
|
+
p_listctx.add_argument("dir", help="Task directory")
|
|
593
|
+
|
|
594
|
+
# start
|
|
595
|
+
p_start = subparsers.add_parser("start", help="Set active task")
|
|
596
|
+
p_start.add_argument("dir", help="Task directory")
|
|
597
|
+
|
|
598
|
+
# current
|
|
599
|
+
p_current = subparsers.add_parser("current", help="Show active task")
|
|
600
|
+
p_current.add_argument("--source", action="store_true",
|
|
601
|
+
help="Show active task source")
|
|
602
|
+
p_current.add_argument("--json", action="store_true",
|
|
603
|
+
help="Output machine-readable JSON")
|
|
604
|
+
|
|
605
|
+
# finish
|
|
606
|
+
subparsers.add_parser("finish", help="Clear active task")
|
|
607
|
+
|
|
608
|
+
# workflow
|
|
609
|
+
p_workflow = subparsers.add_parser("workflow", help="Set/clear per-task workflow selection")
|
|
610
|
+
p_workflow.add_argument("id", nargs="?", help="Workflow id (.trellis/workflows/<id>.md)")
|
|
611
|
+
p_workflow.add_argument("--clear", action="store_true",
|
|
612
|
+
help="Remove the workflow selection (use default resolution)")
|
|
613
|
+
|
|
614
|
+
# set-branch
|
|
615
|
+
p_branch = subparsers.add_parser("set-branch", help="Set git branch")
|
|
616
|
+
p_branch.add_argument("dir", help="Task directory")
|
|
617
|
+
p_branch.add_argument("branch", help="Branch name")
|
|
618
|
+
|
|
619
|
+
# set-base-branch
|
|
620
|
+
p_base = subparsers.add_parser("set-base-branch", help="Set PR target branch")
|
|
621
|
+
p_base.add_argument("dir", help="Task directory")
|
|
622
|
+
p_base.add_argument("base_branch", help="Base branch name (PR target)")
|
|
623
|
+
|
|
624
|
+
# set-scope
|
|
625
|
+
p_scope = subparsers.add_parser("set-scope", help="Set scope")
|
|
626
|
+
p_scope.add_argument("dir", help="Task directory")
|
|
627
|
+
p_scope.add_argument("scope", help="Scope name")
|
|
628
|
+
|
|
629
|
+
# set-meta
|
|
630
|
+
p_setmeta = subparsers.add_parser("set-meta", help="Set/overwrite a task metadata key")
|
|
631
|
+
p_setmeta.add_argument("dir", help="Task directory")
|
|
632
|
+
p_setmeta.add_argument("key", help="Metadata key")
|
|
633
|
+
p_setmeta.add_argument("value", help="Metadata value")
|
|
634
|
+
|
|
635
|
+
# archive
|
|
636
|
+
p_archive = subparsers.add_parser("archive", help="Archive task")
|
|
637
|
+
p_archive.add_argument("name", help="Task directory or name")
|
|
638
|
+
p_archive.add_argument("--no-commit", action="store_true", help="Skip auto git commit after archive")
|
|
639
|
+
|
|
640
|
+
# list
|
|
641
|
+
p_list = subparsers.add_parser("list", help="List tasks")
|
|
642
|
+
p_list.add_argument("--mine", "-m", action="store_true", help="My tasks only")
|
|
643
|
+
p_list.add_argument("--status", "-s", help="Filter by status")
|
|
644
|
+
p_list.add_argument("--json", action="store_true", help="Output machine-readable JSON")
|
|
645
|
+
|
|
646
|
+
# add-subtask
|
|
647
|
+
p_addsub = subparsers.add_parser("add-subtask", help="Link child task to parent")
|
|
648
|
+
p_addsub.add_argument("parent_dir", help="Parent task directory")
|
|
649
|
+
p_addsub.add_argument("child_dir", help="Child task directory")
|
|
650
|
+
|
|
651
|
+
# remove-subtask
|
|
652
|
+
p_rmsub = subparsers.add_parser("remove-subtask", help="Unlink child task from parent")
|
|
653
|
+
p_rmsub.add_argument("parent_dir", help="Parent task directory")
|
|
654
|
+
p_rmsub.add_argument("child_dir", help="Child task directory")
|
|
655
|
+
|
|
656
|
+
# list-archive
|
|
657
|
+
p_listarch = subparsers.add_parser("list-archive", help="List archived tasks")
|
|
658
|
+
p_listarch.add_argument("month", nargs="?", help="Month (YYYY-MM)")
|
|
659
|
+
|
|
660
|
+
args = parser.parse_args()
|
|
661
|
+
|
|
662
|
+
if not args.command:
|
|
663
|
+
show_usage()
|
|
664
|
+
return 1
|
|
665
|
+
|
|
666
|
+
commands = {
|
|
667
|
+
"create": cmd_create,
|
|
668
|
+
"add-context": cmd_add_context,
|
|
669
|
+
"validate": cmd_validate,
|
|
670
|
+
"list-context": cmd_list_context,
|
|
671
|
+
"start": cmd_start,
|
|
672
|
+
"current": cmd_current,
|
|
673
|
+
"finish": cmd_finish,
|
|
674
|
+
"workflow": cmd_workflow,
|
|
675
|
+
"set-branch": cmd_set_branch,
|
|
676
|
+
"set-base-branch": cmd_set_base_branch,
|
|
677
|
+
"set-scope": cmd_set_scope,
|
|
678
|
+
"set-meta": cmd_set_meta,
|
|
679
|
+
"archive": cmd_archive,
|
|
680
|
+
"add-subtask": cmd_add_subtask,
|
|
681
|
+
"remove-subtask": cmd_remove_subtask,
|
|
682
|
+
"list": cmd_list,
|
|
683
|
+
"list-archive": cmd_list_archive,
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
if args.command in commands:
|
|
687
|
+
return commands[args.command](args)
|
|
688
|
+
else:
|
|
689
|
+
show_usage()
|
|
690
|
+
return 1
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
if __name__ == "__main__":
|
|
694
|
+
sys.exit(main())
|
|
File without changes
|