@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,121 @@
|
|
|
1
|
+
/* global process */
|
|
2
|
+
/**
|
|
3
|
+
* Trellis Dynamic Spec Injection Plugin
|
|
4
|
+
*
|
|
5
|
+
* OpenCode tool hooks cannot add context to the current model turn. A FULL
|
|
6
|
+
* spec emission therefore blocks the write once with a model-visible error;
|
|
7
|
+
* the shared Python engine records the emission, so the model's retry proceeds.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { execFileSync } from "child_process";
|
|
11
|
+
import { existsSync } from "fs";
|
|
12
|
+
import { join } from "path";
|
|
13
|
+
import { debugLog } from "../lib/trellis-context.js";
|
|
14
|
+
|
|
15
|
+
const PYTHON_CMD = process.platform === "win32" ? "python" : "python3";
|
|
16
|
+
|
|
17
|
+
function runSpecHook(directory, payload) {
|
|
18
|
+
const hookPath = join(
|
|
19
|
+
directory,
|
|
20
|
+
".opencode",
|
|
21
|
+
"hooks",
|
|
22
|
+
"inject-spec-context.py",
|
|
23
|
+
);
|
|
24
|
+
if (!existsSync(hookPath)) return null;
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
const stdout = execFileSync(PYTHON_CMD, [hookPath], {
|
|
28
|
+
cwd: directory,
|
|
29
|
+
encoding: "utf-8",
|
|
30
|
+
input: JSON.stringify(payload),
|
|
31
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
32
|
+
timeout: 15000,
|
|
33
|
+
});
|
|
34
|
+
if (!stdout.trim()) return null;
|
|
35
|
+
const parsed = JSON.parse(stdout);
|
|
36
|
+
return parsed?.hookSpecificOutput ?? null;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
debugLog(
|
|
39
|
+
"spec",
|
|
40
|
+
"Spec hook failed open:",
|
|
41
|
+
error instanceof Error ? error.message : String(error),
|
|
42
|
+
);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function buildToolPayload(directory, input, output) {
|
|
48
|
+
const tool = input?.tool?.toLowerCase();
|
|
49
|
+
const args = output?.args;
|
|
50
|
+
if (!args) return null;
|
|
51
|
+
|
|
52
|
+
if (tool === "edit" || tool === "write") {
|
|
53
|
+
if (typeof args.filePath !== "string" || !args.filePath.trim()) return null;
|
|
54
|
+
return {
|
|
55
|
+
hook_event_name: "PreToolUse",
|
|
56
|
+
session_id: input?.sessionID,
|
|
57
|
+
cwd: directory,
|
|
58
|
+
tool_name: tool === "edit" ? "Edit" : "Write",
|
|
59
|
+
tool_input: { file_path: args.filePath },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (tool === "apply_patch") {
|
|
64
|
+
if (typeof args.patchText !== "string" || !args.patchText.trim())
|
|
65
|
+
return null;
|
|
66
|
+
return {
|
|
67
|
+
hook_event_name: "PreToolUse",
|
|
68
|
+
session_id: input?.sessionID,
|
|
69
|
+
cwd: directory,
|
|
70
|
+
tool_name: "apply_patch",
|
|
71
|
+
tool_input: { command: args.patchText },
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default async ({ directory }) => ({
|
|
79
|
+
event: async ({ event }) => {
|
|
80
|
+
if (
|
|
81
|
+
process.env.TRELLIS_HOOKS === "0" ||
|
|
82
|
+
process.env.TRELLIS_DISABLE_HOOKS === "1"
|
|
83
|
+
) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (event?.type !== "session.compacted" || !event?.properties?.sessionID) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
runSpecHook(directory, {
|
|
91
|
+
hook_event_name: "SessionStart",
|
|
92
|
+
session_id: event.properties.sessionID,
|
|
93
|
+
source: "compact",
|
|
94
|
+
cwd: directory,
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
"tool.execute.before": async (input, output) => {
|
|
99
|
+
if (
|
|
100
|
+
process.env.TRELLIS_HOOKS === "0" ||
|
|
101
|
+
process.env.TRELLIS_DISABLE_HOOKS === "1"
|
|
102
|
+
) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const payload = buildToolPayload(directory, input, output);
|
|
107
|
+
if (!payload) return;
|
|
108
|
+
|
|
109
|
+
const result = runSpecHook(directory, payload);
|
|
110
|
+
const context = result?.additionalContext;
|
|
111
|
+
if (result?.permissionDecision !== "deny" || typeof context !== "string") {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
throw new Error(
|
|
116
|
+
"Trellis loaded governing specs before this tool call. " +
|
|
117
|
+
"Follow them, then retry the same tool call.\n\n" +
|
|
118
|
+
context,
|
|
119
|
+
);
|
|
120
|
+
},
|
|
121
|
+
});
|
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
/* global process */
|
|
2
|
+
/**
|
|
3
|
+
* Trellis Context Injection Plugin
|
|
4
|
+
*
|
|
5
|
+
* Injects context when Task tool is called with supported subagent types.
|
|
6
|
+
* Uses OpenCode's tool.execute.before hook.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { existsSync, readdirSync } from "fs"
|
|
10
|
+
import { join } from "path"
|
|
11
|
+
import {
|
|
12
|
+
TrellisContext,
|
|
13
|
+
debugLog,
|
|
14
|
+
readContextInjectionLimits,
|
|
15
|
+
ContextBudget,
|
|
16
|
+
materializeArtifact,
|
|
17
|
+
} from "../lib/trellis-context.js"
|
|
18
|
+
|
|
19
|
+
// Supported subagent types
|
|
20
|
+
const AGENTS_ALL = ["implement", "check", "research"]
|
|
21
|
+
const AGENTS_REQUIRE_TASK = ["implement", "check"]
|
|
22
|
+
|
|
23
|
+
// Match `Active task: <path>` on the first non-empty line of the dispatch
|
|
24
|
+
// prompt. Mirrors the contract in workflow.md's [workflow-state:in_progress]
|
|
25
|
+
// breadcrumb so multi-window users can disambiguate which task is targeted.
|
|
26
|
+
const ACTIVE_TASK_HINT_RE = /^\s*Active task:\s*(\S+)\s*$/m
|
|
27
|
+
|
|
28
|
+
function extractActiveTaskHint(prompt) {
|
|
29
|
+
if (typeof prompt !== "string" || !prompt) return null
|
|
30
|
+
const match = prompt.match(ACTIVE_TASK_HINT_RE)
|
|
31
|
+
return match ? match[1].trim() : null
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get context for implement agent. `taskDir` may be relative
|
|
36
|
+
* (`.trellis/tasks/foo`) or absolute; both are resolved via
|
|
37
|
+
* `ctx.resolveTaskDir`.
|
|
38
|
+
*
|
|
39
|
+
* Read order (mirrors Python `get_implement_context`):
|
|
40
|
+
* 1. All files in implement.jsonl (spec/research manifests)
|
|
41
|
+
* 2. prd.md (requirements)
|
|
42
|
+
* 3. design.md if present (technical design)
|
|
43
|
+
* 4. implement.md if present (execution plan)
|
|
44
|
+
* All blocks share one total budget (issue #441).
|
|
45
|
+
*/
|
|
46
|
+
function getImplementContext(ctx, taskDir) {
|
|
47
|
+
const parts = []
|
|
48
|
+
const taskDirFull = ctx.resolveTaskDir(taskDir)
|
|
49
|
+
if (!taskDirFull) return ""
|
|
50
|
+
|
|
51
|
+
const limits = readContextInjectionLimits(ctx.directory)
|
|
52
|
+
const budget = new ContextBudget(limits.max_total_bytes)
|
|
53
|
+
|
|
54
|
+
// 1. Read implement.jsonl
|
|
55
|
+
const jsonlPath = join(taskDirFull, "implement.jsonl")
|
|
56
|
+
const blocks = ctx.readJsonlWithFiles(jsonlPath, limits, budget)
|
|
57
|
+
if (blocks.length > 0) {
|
|
58
|
+
parts.push(ctx.buildContextFromEntries(blocks))
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// 2. Requirements document
|
|
62
|
+
const prdBlock = materializeArtifact(
|
|
63
|
+
ctx.directory,
|
|
64
|
+
`${taskDir}/prd.md`,
|
|
65
|
+
`${taskDir}/prd.md (Requirements)`,
|
|
66
|
+
"Requirements document",
|
|
67
|
+
limits,
|
|
68
|
+
budget,
|
|
69
|
+
)
|
|
70
|
+
if (prdBlock) parts.push(prdBlock)
|
|
71
|
+
|
|
72
|
+
// 3. Technical design for complex tasks
|
|
73
|
+
const designBlock = materializeArtifact(
|
|
74
|
+
ctx.directory,
|
|
75
|
+
`${taskDir}/design.md`,
|
|
76
|
+
`${taskDir}/design.md (Technical Design)`,
|
|
77
|
+
"Technical design document",
|
|
78
|
+
limits,
|
|
79
|
+
budget,
|
|
80
|
+
)
|
|
81
|
+
if (designBlock) parts.push(designBlock)
|
|
82
|
+
|
|
83
|
+
// 4. Execution plan for complex tasks
|
|
84
|
+
const implementPlanBlock = materializeArtifact(
|
|
85
|
+
ctx.directory,
|
|
86
|
+
`${taskDir}/implement.md`,
|
|
87
|
+
`${taskDir}/implement.md (Execution Plan)`,
|
|
88
|
+
"Execution plan document",
|
|
89
|
+
limits,
|
|
90
|
+
budget,
|
|
91
|
+
)
|
|
92
|
+
if (implementPlanBlock) parts.push(implementPlanBlock)
|
|
93
|
+
|
|
94
|
+
return parts.join("\n\n")
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Get context for check agent. `taskDir` may be relative or absolute.
|
|
99
|
+
* Same read order and shared budget as the implement context.
|
|
100
|
+
*/
|
|
101
|
+
function getCheckContext(ctx, taskDir) {
|
|
102
|
+
const parts = []
|
|
103
|
+
const taskDirFull = ctx.resolveTaskDir(taskDir)
|
|
104
|
+
if (!taskDirFull) return ""
|
|
105
|
+
|
|
106
|
+
const limits = readContextInjectionLimits(ctx.directory)
|
|
107
|
+
const budget = new ContextBudget(limits.max_total_bytes)
|
|
108
|
+
|
|
109
|
+
const jsonlPath = join(taskDirFull, "check.jsonl")
|
|
110
|
+
const blocks = ctx.readJsonlWithFiles(jsonlPath, limits, budget)
|
|
111
|
+
if (blocks.length > 0) {
|
|
112
|
+
parts.push(ctx.buildContextFromEntries(blocks))
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const prdBlock = materializeArtifact(
|
|
116
|
+
ctx.directory,
|
|
117
|
+
`${taskDir}/prd.md`,
|
|
118
|
+
`${taskDir}/prd.md (Requirements)`,
|
|
119
|
+
"Requirements document",
|
|
120
|
+
limits,
|
|
121
|
+
budget,
|
|
122
|
+
)
|
|
123
|
+
if (prdBlock) parts.push(prdBlock)
|
|
124
|
+
|
|
125
|
+
const designBlock = materializeArtifact(
|
|
126
|
+
ctx.directory,
|
|
127
|
+
`${taskDir}/design.md`,
|
|
128
|
+
`${taskDir}/design.md (Technical Design)`,
|
|
129
|
+
"Technical design document",
|
|
130
|
+
limits,
|
|
131
|
+
budget,
|
|
132
|
+
)
|
|
133
|
+
if (designBlock) parts.push(designBlock)
|
|
134
|
+
|
|
135
|
+
const implementPlanBlock = materializeArtifact(
|
|
136
|
+
ctx.directory,
|
|
137
|
+
`${taskDir}/implement.md`,
|
|
138
|
+
`${taskDir}/implement.md (Execution Plan)`,
|
|
139
|
+
"Execution plan document",
|
|
140
|
+
limits,
|
|
141
|
+
budget,
|
|
142
|
+
)
|
|
143
|
+
if (implementPlanBlock) parts.push(implementPlanBlock)
|
|
144
|
+
|
|
145
|
+
return parts.join("\n\n")
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Get context for finish phase (final check before PR)
|
|
150
|
+
*/
|
|
151
|
+
function getFinishContext(ctx, taskDir) {
|
|
152
|
+
// Finish reuses check context (same JSONL source)
|
|
153
|
+
return getCheckContext(ctx, taskDir)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Get context for research agent
|
|
159
|
+
*/
|
|
160
|
+
function getResearchContext(ctx) {
|
|
161
|
+
const parts = []
|
|
162
|
+
|
|
163
|
+
// Dynamic project structure (scan actual spec directory)
|
|
164
|
+
const specPath = ".trellis/spec"
|
|
165
|
+
const specFull = join(ctx.directory, specPath)
|
|
166
|
+
|
|
167
|
+
const structureLines = [`## Project Spec Directory Structure\n\n\`\`\`\n${specPath}/`]
|
|
168
|
+
if (existsSync(specFull)) {
|
|
169
|
+
try {
|
|
170
|
+
const entries = readdirSync(specFull, { withFileTypes: true })
|
|
171
|
+
.filter(d => d.isDirectory() && !d.name.startsWith("."))
|
|
172
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
173
|
+
|
|
174
|
+
for (const entry of entries) {
|
|
175
|
+
const entryPath = join(specFull, entry.name)
|
|
176
|
+
if (existsSync(join(entryPath, "index.md"))) {
|
|
177
|
+
structureLines.push(`├── ${entry.name}/`)
|
|
178
|
+
} else {
|
|
179
|
+
try {
|
|
180
|
+
const nested = readdirSync(entryPath, { withFileTypes: true })
|
|
181
|
+
.filter(d => d.isDirectory() && existsSync(join(entryPath, d.name, "index.md")))
|
|
182
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
183
|
+
if (nested.length > 0) {
|
|
184
|
+
structureLines.push(`├── ${entry.name}/`)
|
|
185
|
+
for (const n of nested) {
|
|
186
|
+
structureLines.push(`│ ├── ${n.name}/`)
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
} catch {
|
|
190
|
+
// Ignore nested read errors
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
} catch {
|
|
195
|
+
// Ignore read errors
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
structureLines.push("```")
|
|
199
|
+
|
|
200
|
+
parts.push(structureLines.join("\n") + `
|
|
201
|
+
|
|
202
|
+
## Search Tips
|
|
203
|
+
|
|
204
|
+
- Spec files: \`.trellis/spec/**/*.md\`
|
|
205
|
+
- Known issues: \`.trellis/big-question/\`
|
|
206
|
+
- Code search: Use Glob and Grep tools
|
|
207
|
+
- Tech solutions: Use mcp__exa__web_search_exa or mcp__exa__get_code_context_exa`)
|
|
208
|
+
|
|
209
|
+
return parts.join("\n\n")
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Build enhanced prompt with context
|
|
214
|
+
*/
|
|
215
|
+
function buildPrompt(agentType, originalPrompt, context, isFinish = false) {
|
|
216
|
+
const templates = {
|
|
217
|
+
implement: `<!-- trellis-hook-injected -->
|
|
218
|
+
# Implement Agent Task
|
|
219
|
+
|
|
220
|
+
You are the Implement Agent in the Multi-Agent Pipeline.
|
|
221
|
+
|
|
222
|
+
## Your Context
|
|
223
|
+
|
|
224
|
+
${context}
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Your Task
|
|
229
|
+
|
|
230
|
+
${originalPrompt}
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Workflow
|
|
235
|
+
|
|
236
|
+
1. **Understand specs** - All dev specs are injected above
|
|
237
|
+
2. **Understand task artifacts** - Read requirements, technical design if present, and execution plan if present
|
|
238
|
+
3. **Implement feature** - Follow specs and task artifacts
|
|
239
|
+
4. **Self-check** - Ensure code quality
|
|
240
|
+
|
|
241
|
+
## Important Constraints
|
|
242
|
+
|
|
243
|
+
- Do NOT execute git commit
|
|
244
|
+
- Follow all dev specs injected above
|
|
245
|
+
- Report list of modified/created files when done`,
|
|
246
|
+
|
|
247
|
+
check: isFinish ? `<!-- trellis-hook-injected -->
|
|
248
|
+
# Finish Agent Task
|
|
249
|
+
|
|
250
|
+
You are performing the final check before creating a PR.
|
|
251
|
+
|
|
252
|
+
## Your Context
|
|
253
|
+
|
|
254
|
+
${context}
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Your Task
|
|
259
|
+
|
|
260
|
+
${originalPrompt}
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Workflow
|
|
265
|
+
|
|
266
|
+
1. **Review changes** - Run \`git diff --name-only\` to see all changed files
|
|
267
|
+
2. **Verify task artifacts** - Check prd.md and, when present, design.md / implement.md
|
|
268
|
+
3. **Spec sync** - Analyze whether changes introduce new patterns, contracts, or conventions
|
|
269
|
+
- If new pattern/convention found: read target spec file → update it → update index.md if needed
|
|
270
|
+
- If infra/cross-layer change: follow the 7-section mandatory template from update-spec.md
|
|
271
|
+
- If pure code fix with no new patterns: skip this step
|
|
272
|
+
4. **Run final checks** - Execute lint and typecheck
|
|
273
|
+
5. **Confirm ready** - Ensure code is ready for PR
|
|
274
|
+
|
|
275
|
+
## Important Constraints
|
|
276
|
+
|
|
277
|
+
- You MAY update spec files when gaps are detected (use update-spec.md as guide)
|
|
278
|
+
- MUST read the target spec file BEFORE editing (avoid duplicating existing content)
|
|
279
|
+
- Do NOT update specs for trivial changes (typos, formatting, obvious fixes)
|
|
280
|
+
- If critical CODE issues found, report them clearly (fix specs, not code)
|
|
281
|
+
- Verify all acceptance criteria in prd.md are met
|
|
282
|
+
- Verify design.md and implement.md constraints when those files are present` :
|
|
283
|
+
`<!-- trellis-hook-injected -->
|
|
284
|
+
# Check Agent Task
|
|
285
|
+
|
|
286
|
+
You are the Check Agent in the Multi-Agent Pipeline.
|
|
287
|
+
|
|
288
|
+
## Your Context
|
|
289
|
+
|
|
290
|
+
${context}
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Your Task
|
|
295
|
+
|
|
296
|
+
${originalPrompt}
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Workflow
|
|
301
|
+
|
|
302
|
+
1. **Get changes** - Run \`git diff --name-only\` and \`git diff\`
|
|
303
|
+
2. **Check against specs** - Check item by item
|
|
304
|
+
3. **Self-fix** - Fix issues directly, don't just report
|
|
305
|
+
4. **Run verification** - Run lint and typecheck
|
|
306
|
+
|
|
307
|
+
## Important Constraints
|
|
308
|
+
|
|
309
|
+
- Fix issues yourself, don't just report
|
|
310
|
+
- Must execute complete checklist`,
|
|
311
|
+
|
|
312
|
+
research: `<!-- trellis-hook-injected -->
|
|
313
|
+
# Research Agent Task
|
|
314
|
+
|
|
315
|
+
You are the Research Agent in the Multi-Agent Pipeline.
|
|
316
|
+
|
|
317
|
+
## Core Principle
|
|
318
|
+
|
|
319
|
+
**You do one thing: find and explain information.**
|
|
320
|
+
|
|
321
|
+
## Project Info
|
|
322
|
+
|
|
323
|
+
${context}
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Your Task
|
|
328
|
+
|
|
329
|
+
${originalPrompt}
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Workflow
|
|
334
|
+
|
|
335
|
+
1. **Understand query** - Determine search type and scope
|
|
336
|
+
2. **Plan search** - List search steps
|
|
337
|
+
3. **Execute search** - Run multiple searches in parallel
|
|
338
|
+
4. **Organize results** - Output structured report
|
|
339
|
+
|
|
340
|
+
## Strict Boundaries
|
|
341
|
+
|
|
342
|
+
**Only allowed**: Describe what exists, where it is, how it works
|
|
343
|
+
|
|
344
|
+
**Forbidden**: Suggest improvements, criticize implementation, modify files`
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
return templates[agentType] || originalPrompt
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
function shellQuote(value) {
|
|
351
|
+
return `'${String(value).replace(/'/g, "'\\''")}'`
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
function powershellQuote(value) {
|
|
355
|
+
return `'${String(value).replace(/'/g, "''")}'`
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
function envValue(env, key) {
|
|
359
|
+
const value = env?.[key]
|
|
360
|
+
return typeof value === "string" && value.trim() ? value.trim() : null
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
function shellBasename(value) {
|
|
364
|
+
return value.replace(/\\/g, "/").split("/").pop()?.toLowerCase() || ""
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
function isWindowsPosixShell(env = process.env) {
|
|
368
|
+
if (envValue(env, "MSYSTEM")) return true
|
|
369
|
+
if (envValue(env, "MINGW_PREFIX")) return true
|
|
370
|
+
if (envValue(env, "OPENCODE_GIT_BASH_PATH")) return true
|
|
371
|
+
|
|
372
|
+
const ostype = envValue(env, "OSTYPE")?.toLowerCase() || ""
|
|
373
|
+
if (/(msys|mingw|cygwin)/.test(ostype)) return true
|
|
374
|
+
|
|
375
|
+
const shell = shellBasename(envValue(env, "SHELL") || "")
|
|
376
|
+
return /^(bash|sh|zsh)(\.exe)?$/.test(shell)
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function buildTrellisContextPrefix(contextKey, hostPlatform = process.platform, env = process.env) {
|
|
380
|
+
if (hostPlatform === "win32" && !isWindowsPosixShell(env)) {
|
|
381
|
+
return `$env:TRELLIS_CONTEXT_ID = ${powershellQuote(contextKey)}; `
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
return `export TRELLIS_CONTEXT_ID=${shellQuote(contextKey)}; `
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function getBashCommandKey(args) {
|
|
388
|
+
if (!args || typeof args !== "object") return null
|
|
389
|
+
if (typeof args.command === "string") return "command"
|
|
390
|
+
if (typeof args.cmd === "string") return "cmd"
|
|
391
|
+
return null
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
function commandStartsWithTrellisContext(command) {
|
|
395
|
+
const firstCommand = command.trimStart().split(/[;&|]/, 1)[0].trimStart()
|
|
396
|
+
return (
|
|
397
|
+
/^TRELLIS_CONTEXT_ID\s*=/.test(firstCommand) ||
|
|
398
|
+
/^export\s+TRELLIS_CONTEXT_ID\s*=/.test(firstCommand) ||
|
|
399
|
+
/^env\s+(?:(?:-\S+|[A-Za-z_][A-Za-z0-9_]*=\S*)\s+)*TRELLIS_CONTEXT_ID\s*=/.test(firstCommand) ||
|
|
400
|
+
/^\$env:TRELLIS_CONTEXT_ID\s*=/i.test(firstCommand)
|
|
401
|
+
)
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* OpenCode exposes no session identity to Bash at all — it sets no session env
|
|
406
|
+
* var in any process. The plugin hook does receive it, so inject it into Bash
|
|
407
|
+
* commands before execution; that prefix is the only channel by which an
|
|
408
|
+
* AI-run `task.py` sees the OpenCode session.
|
|
409
|
+
*/
|
|
410
|
+
function injectTrellisContextIntoBash(ctx, input, output, hostPlatform, env) {
|
|
411
|
+
const args = output?.args
|
|
412
|
+
const commandKey = getBashCommandKey(args)
|
|
413
|
+
if (!commandKey) return false
|
|
414
|
+
|
|
415
|
+
const command = args[commandKey]
|
|
416
|
+
if (!command.trim()) return false
|
|
417
|
+
if (commandStartsWithTrellisContext(command)) return false
|
|
418
|
+
|
|
419
|
+
const contextKey = ctx.getContextKey(input)
|
|
420
|
+
if (!contextKey) return false
|
|
421
|
+
|
|
422
|
+
args[commandKey] = `${buildTrellisContextPrefix(contextKey, hostPlatform, env)}${command}`
|
|
423
|
+
return true
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
// OpenCode plugin factory: `export default async (input) => hooks`.
|
|
427
|
+
// OpenCode 1.2.x iterates every module export and invokes it as a function
|
|
428
|
+
// (packages/opencode/src/plugin/index.ts — `for ([_, fn] of Object.entries(mod)) await fn(input)`);
|
|
429
|
+
// the previous `{ id, server }` object shape failed with
|
|
430
|
+
// `TypeError: fn is not a function` in 1.2.x.
|
|
431
|
+
export default async ({ directory, platform: hostPlatform = process.platform, env = process.env }) => {
|
|
432
|
+
const ctx = new TrellisContext(directory)
|
|
433
|
+
debugLog("inject", "Plugin loaded, directory:", directory)
|
|
434
|
+
|
|
435
|
+
return {
|
|
436
|
+
"tool.execute.before": async (input, output) => {
|
|
437
|
+
try {
|
|
438
|
+
if (process.env.TRELLIS_HOOKS === "0" || process.env.TRELLIS_DISABLE_HOOKS === "1") {
|
|
439
|
+
return
|
|
440
|
+
}
|
|
441
|
+
debugLog("inject", "tool.execute.before called, tool:", input?.tool)
|
|
442
|
+
|
|
443
|
+
const toolName = input?.tool?.toLowerCase()
|
|
444
|
+
if (toolName === "bash") {
|
|
445
|
+
if (injectTrellisContextIntoBash(ctx, input, output, hostPlatform, env)) {
|
|
446
|
+
debugLog("inject", "Injected TRELLIS_CONTEXT_ID into Bash command")
|
|
447
|
+
}
|
|
448
|
+
return
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
if (toolName !== "task") {
|
|
452
|
+
return
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
const args = output?.args
|
|
456
|
+
if (!args) return
|
|
457
|
+
|
|
458
|
+
const rawSubagentType = args.subagent_type
|
|
459
|
+
// Strip "trellis-" prefix added by v0.5.0-beta.5 agent rename migration
|
|
460
|
+
const subagentType = (rawSubagentType || "").replace(/^trellis-/, "")
|
|
461
|
+
const originalPrompt = args.prompt || ""
|
|
462
|
+
|
|
463
|
+
debugLog("inject", "Task tool called, subagent_type:", rawSubagentType)
|
|
464
|
+
|
|
465
|
+
if (!AGENTS_ALL.includes(subagentType)) {
|
|
466
|
+
debugLog("inject", "Skipping - unsupported subagent_type")
|
|
467
|
+
return
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// Resolve active task in this priority order (only later steps
|
|
471
|
+
// run when earlier ones miss):
|
|
472
|
+
// 1. Exact session runtime context lookup for input.sessionID
|
|
473
|
+
// 2. `Active task: <path>` hint in the dispatch prompt
|
|
474
|
+
// (explicit per-dispatch override — beats single-session
|
|
475
|
+
// inference so multi-window users can disambiguate)
|
|
476
|
+
// 3. Single-session fallback — only when exactly 1 session
|
|
477
|
+
// runtime file exists locally
|
|
478
|
+
let taskDir = null
|
|
479
|
+
let taskSource = null
|
|
480
|
+
|
|
481
|
+
const contextKey = ctx.getContextKey(input)
|
|
482
|
+
if (contextKey) {
|
|
483
|
+
const context = ctx.readContext(contextKey)
|
|
484
|
+
const exactRef = ctx.normalizeTaskRef(context?.current_task || "")
|
|
485
|
+
if (exactRef) {
|
|
486
|
+
taskDir = exactRef
|
|
487
|
+
taskSource = `session:${contextKey}`
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
if (!taskDir) {
|
|
492
|
+
const hintRef = extractActiveTaskHint(originalPrompt)
|
|
493
|
+
if (hintRef) {
|
|
494
|
+
const hintNormalized = ctx.normalizeTaskRef(hintRef)
|
|
495
|
+
if (hintNormalized) {
|
|
496
|
+
const hintDir = ctx.resolveTaskDir(hintNormalized)
|
|
497
|
+
if (hintDir && existsSync(hintDir)) {
|
|
498
|
+
taskDir = hintNormalized
|
|
499
|
+
taskSource = "prompt-hint"
|
|
500
|
+
debugLog("inject", "Resolved task from Active task: hint:", hintNormalized)
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
if (!taskDir) {
|
|
507
|
+
const fallback = ctx._resolveSingleSessionFallback()
|
|
508
|
+
if (fallback?.taskPath) {
|
|
509
|
+
const fallbackDir = ctx.resolveTaskDir(fallback.taskPath)
|
|
510
|
+
if (fallbackDir && existsSync(fallbackDir)) {
|
|
511
|
+
taskDir = fallback.taskPath
|
|
512
|
+
taskSource = fallback.source
|
|
513
|
+
debugLog("inject", "Resolved task via single-session fallback:", taskDir, "source:", taskSource)
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
// Agents requiring task directory
|
|
519
|
+
if (AGENTS_REQUIRE_TASK.includes(subagentType)) {
|
|
520
|
+
// subagentType is already stripped of "trellis-" prefix above
|
|
521
|
+
if (!taskDir) {
|
|
522
|
+
debugLog("inject", "Skipping - no current task")
|
|
523
|
+
return
|
|
524
|
+
}
|
|
525
|
+
const taskDirFull = ctx.resolveTaskDir(taskDir)
|
|
526
|
+
if (!taskDirFull || !existsSync(taskDirFull)) {
|
|
527
|
+
debugLog("inject", "Skipping - task directory not found")
|
|
528
|
+
return
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// Check for [finish] marker
|
|
533
|
+
const isFinish = originalPrompt.toLowerCase().includes("[finish]")
|
|
534
|
+
|
|
535
|
+
// Get context based on agent type
|
|
536
|
+
let context = ""
|
|
537
|
+
switch (subagentType) {
|
|
538
|
+
case "implement":
|
|
539
|
+
context = getImplementContext(ctx, taskDir)
|
|
540
|
+
break
|
|
541
|
+
case "check":
|
|
542
|
+
context = isFinish
|
|
543
|
+
? getFinishContext(ctx, taskDir)
|
|
544
|
+
: getCheckContext(ctx, taskDir)
|
|
545
|
+
break
|
|
546
|
+
case "research":
|
|
547
|
+
context = getResearchContext(ctx, taskDir)
|
|
548
|
+
break
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
if (!context) {
|
|
552
|
+
debugLog("inject", "No context to inject")
|
|
553
|
+
return
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
const newPrompt = buildPrompt(subagentType, originalPrompt, context, isFinish)
|
|
557
|
+
|
|
558
|
+
// Mutate args in-place — whole-object replacement does NOT work for the task tool
|
|
559
|
+
// because the runtime holds a local reference to the same args object.
|
|
560
|
+
args.prompt = newPrompt
|
|
561
|
+
|
|
562
|
+
debugLog("inject", "Injected context for", subagentType, "prompt length:", newPrompt.length)
|
|
563
|
+
|
|
564
|
+
} catch (error) {
|
|
565
|
+
debugLog("inject", "Error in tool.execute.before:", error.message, error.stack)
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|