trellis-herbivore 0.1.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/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 +174 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/channel/adapters/claude.d.ts +38 -0
- package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
- package/dist/commands/channel/adapters/claude.js +209 -0
- package/dist/commands/channel/adapters/claude.js.map +1 -0
- package/dist/commands/channel/adapters/codex.d.ts +77 -0
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
- package/dist/commands/channel/adapters/codex.js +495 -0
- package/dist/commands/channel/adapters/codex.js.map +1 -0
- package/dist/commands/channel/adapters/index.d.ts +79 -0
- package/dist/commands/channel/adapters/index.d.ts.map +1 -0
- package/dist/commands/channel/adapters/index.js +109 -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 +154 -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 +290 -0
- package/dist/commands/channel/context-loader.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/index.d.ts +3 -0
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +496 -0
- package/dist/commands/channel/index.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 +16 -0
- package/dist/commands/channel/messages.d.ts.map +1 -0
- package/dist/commands/channel/messages.js +237 -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 +31 -0
- package/dist/commands/channel/run.d.ts.map +1 -0
- package/dist/commands/channel/run.js +137 -0
- package/dist/commands/channel/run.js.map +1 -0
- package/dist/commands/channel/send.d.ts +12 -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 +25 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -0
- package/dist/commands/channel/spawn.js +192 -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 +63 -0
- package/dist/commands/channel/store/paths.d.ts.map +1 -0
- package/dist/commands/channel/store/paths.js +246 -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 +130 -0
- package/dist/commands/channel/store/watch.js.map +1 -0
- package/dist/commands/channel/supervisor/inbox.d.ts +25 -0
- package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/inbox.js +99 -0
- package/dist/commands/channel/supervisor/inbox.js.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts +66 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.js +143 -0
- package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
- package/dist/commands/channel/supervisor/stdout.d.ts +49 -0
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/stdout.js +107 -0
- package/dist/commands/channel/supervisor/stdout.js.map +1 -0
- package/dist/commands/channel/supervisor.d.ts +47 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -0
- package/dist/commands/channel/supervisor.js +283 -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 +18 -0
- package/dist/commands/channel/wait.d.ts.map +1 -0
- package/dist/commands/channel/wait.js +76 -0
- package/dist/commands/channel/wait.js.map +1 -0
- package/dist/commands/init.d.ts +57 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1466 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mem.d.ts +234 -0
- package/dist/commands/mem.d.ts.map +1 -0
- package/dist/commands/mem.js +1869 -0
- package/dist/commands/mem.js.map +1 -0
- package/dist/commands/uninstall.d.ts +27 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +339 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +72 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +1926 -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/configurators/antigravity.d.ts +7 -0
- package/dist/configurators/antigravity.d.ts.map +1 -0
- package/dist/configurators/antigravity.js +19 -0
- package/dist/configurators/antigravity.js.map +1 -0
- package/dist/configurators/claude.d.ts +9 -0
- package/dist/configurators/claude.d.ts.map +1 -0
- package/dist/configurators/claude.js +72 -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 +30 -0
- package/dist/configurators/codebuddy.js.map +1 -0
- package/dist/configurators/codex.d.ts +8 -0
- package/dist/configurators/codex.d.ts.map +1 -0
- package/dist/configurators/codex.js +87 -0
- package/dist/configurators/codex.js.map +1 -0
- package/dist/configurators/copilot.d.ts +10 -0
- package/dist/configurators/copilot.d.ts.map +1 -0
- package/dist/configurators/copilot.js +51 -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 +29 -0
- package/dist/configurators/cursor.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 +30 -0
- package/dist/configurators/droid.js.map +1 -0
- package/dist/configurators/gemini.d.ts +16 -0
- package/dist/configurators/gemini.d.ts.map +1 -0
- package/dist/configurators/gemini.js +38 -0
- package/dist/configurators/gemini.js.map +1 -0
- package/dist/configurators/index.d.ts +65 -0
- package/dist/configurators/index.d.ts.map +1 -0
- package/dist/configurators/index.js +367 -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 +19 -0
- package/dist/configurators/kilo.js.map +1 -0
- package/dist/configurators/kiro.d.ts +8 -0
- package/dist/configurators/kiro.d.ts.map +1 -0
- package/dist/configurators/kiro.js +24 -0
- package/dist/configurators/kiro.js.map +1 -0
- package/dist/configurators/opencode.d.ts +14 -0
- package/dist/configurators/opencode.d.ts.map +1 -0
- package/dist/configurators/opencode.js +96 -0
- package/dist/configurators/opencode.js.map +1 -0
- package/dist/configurators/pi.d.ts +3 -0
- package/dist/configurators/pi.d.ts.map +1 -0
- package/dist/configurators/pi.js +45 -0
- package/dist/configurators/pi.js.map +1 -0
- package/dist/configurators/qoder.d.ts +11 -0
- package/dist/configurators/qoder.d.ts.map +1 -0
- package/dist/configurators/qoder.js +31 -0
- package/dist/configurators/qoder.js.map +1 -0
- package/dist/configurators/shared.d.ts +178 -0
- package/dist/configurators/shared.d.ts.map +1 -0
- package/dist/configurators/shared.js +538 -0
- package/dist/configurators/shared.js.map +1 -0
- package/dist/configurators/windsurf.d.ts +7 -0
- package/dist/configurators/windsurf.d.ts.map +1 -0
- package/dist/configurators/windsurf.js +19 -0
- package/dist/configurators/windsurf.js.map +1 -0
- package/dist/configurators/workflow.d.ts +29 -0
- package/dist/configurators/workflow.d.ts.map +1 -0
- package/dist/configurators/workflow.js +163 -0
- package/dist/configurators/workflow.js.map +1 -0
- package/dist/constants/paths.d.ts +70 -0
- package/dist/constants/paths.d.ts.map +1 -0
- package/dist/constants/paths.js +79 -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.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.2.json +9 -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/templates/claude/agents/trellis-check.md +114 -0
- package/dist/templates/claude/agents/trellis-implement.md +113 -0
- package/dist/templates/claude/agents/trellis-research.md +137 -0
- package/dist/templates/claude/index.d.ts +22 -0
- package/dist/templates/claude/index.d.ts.map +1 -0
- package/dist/templates/claude/index.js +46 -0
- package/dist/templates/claude/index.js.map +1 -0
- package/dist/templates/claude/settings.json +73 -0
- package/dist/templates/codebuddy/agents/trellis-check.md +109 -0
- package/dist/templates/codebuddy/agents/trellis-implement.md +110 -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 +59 -0
- package/dist/templates/codex/agents/trellis-check.toml +84 -0
- package/dist/templates/codex/agents/trellis-implement.toml +65 -0
- package/dist/templates/codex/agents/trellis-research.toml +73 -0
- package/dist/templates/codex/config.toml +35 -0
- package/dist/templates/codex/hooks/session-start.py +545 -0
- package/dist/templates/codex/hooks.json +15 -0
- package/dist/templates/codex/index.d.ts +39 -0
- package/dist/templates/codex/index.d.ts.map +1 -0
- package/dist/templates/codex/index.js +85 -0
- package/dist/templates/codex/index.js.map +1 -0
- package/dist/templates/codex/skills/before-dev/SKILL.md +40 -0
- package/dist/templates/codex/skills/brainstorm/SKILL.md +112 -0
- package/dist/templates/codex/skills/break-loop/SKILL.md +130 -0
- package/dist/templates/codex/skills/check/SKILL.md +98 -0
- package/dist/templates/codex/skills/check-cross-layer/SKILL.md +158 -0
- package/dist/templates/codex/skills/create-command/SKILL.md +101 -0
- package/dist/templates/codex/skills/finish-work/SKILL.md +90 -0
- package/dist/templates/codex/skills/improve-ut/SKILL.md +69 -0
- package/dist/templates/codex/skills/integrate-skill/SKILL.md +221 -0
- package/dist/templates/codex/skills/onboard/SKILL.md +363 -0
- package/dist/templates/codex/skills/record-session/SKILL.md +67 -0
- package/dist/templates/codex/skills/start/SKILL.md +64 -0
- package/dist/templates/codex/skills/update-spec/SKILL.md +335 -0
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +73 -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 +54 -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 +78 -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/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/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 +103 -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 +80 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +69 -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 +74 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +83 -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 +35 -0
- package/dist/templates/common/skills/brainstorm.md +112 -0
- package/dist/templates/common/skills/break-loop.md +125 -0
- package/dist/templates/common/skills/check.md +93 -0
- package/dist/templates/common/skills/update-spec.md +351 -0
- package/dist/templates/copilot/hooks/session-start.py +547 -0
- package/dist/templates/copilot/hooks.json +19 -0
- package/dist/templates/copilot/index.d.ts +23 -0
- package/dist/templates/copilot/index.d.ts.map +1 -0
- package/dist/templates/copilot/index.js +54 -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 +111 -0
- package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
- package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +157 -0
- package/dist/templates/copilot/prompts/check.prompt.md +97 -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 +108 -0
- package/dist/templates/cursor/agents/trellis-implement.md +109 -0
- package/dist/templates/cursor/agents/trellis-research.md +136 -0
- package/dist/templates/cursor/hooks.json +30 -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 +101 -0
- package/dist/templates/droid/droids/trellis-implement.md +102 -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 +59 -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 +101 -0
- package/dist/templates/gemini/agents/trellis-implement.md +102 -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 +28 -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/index.d.ts +18 -0
- package/dist/templates/kiro/index.d.ts.map +1 -0
- package/dist/templates/kiro/index.js +18 -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 +259 -0
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +595 -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/opencode/agents/trellis-check.md +116 -0
- package/dist/templates/opencode/agents/trellis-implement.md +118 -0
- package/dist/templates/opencode/agents/trellis-research.md +145 -0
- package/dist/templates/opencode/lib/session-utils.js +521 -0
- package/dist/templates/opencode/lib/trellis-context.js +381 -0
- package/dist/templates/opencode/package.json +5 -0
- package/dist/templates/opencode/plugins/inject-subagent-context.js +513 -0
- package/dist/templates/opencode/plugins/inject-workflow-state.js +159 -0
- package/dist/templates/opencode/plugins/session-start.js +101 -0
- package/dist/templates/pi/agents/trellis-check.md +36 -0
- package/dist/templates/pi/agents/trellis-implement.md +41 -0
- package/dist/templates/pi/agents/trellis-research.md +25 -0
- package/dist/templates/pi/extensions/trellis/index.ts.txt +1174 -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 +21 -0
- package/dist/templates/qoder/agents/trellis-check.md +102 -0
- package/dist/templates/qoder/agents/trellis-implement.md +103 -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 +47 -0
- package/dist/templates/shared-hooks/index.d.ts +50 -0
- package/dist/templates/shared-hooks/index.d.ts.map +1 -0
- package/dist/templates/shared-hooks/index.js +89 -0
- package/dist/templates/shared-hooks/index.js.map +1 -0
- package/dist/templates/shared-hooks/inject-shell-session-context.py +183 -0
- package/dist/templates/shared-hooks/inject-subagent-context.py +771 -0
- package/dist/templates/shared-hooks/inject-workflow-state.py +363 -0
- package/dist/templates/shared-hooks/session-start.py +827 -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 +60 -0
- package/dist/templates/template-utils.js.map +1 -0
- package/dist/templates/trellis/config.yaml +90 -0
- package/dist/templates/trellis/gitignore.txt +32 -0
- package/dist/templates/trellis/index.d.ts +52 -0
- package/dist/templates/trellis/index.d.ts.map +1 -0
- package/dist/templates/trellis/index.js +97 -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 +547 -0
- package/dist/templates/trellis/scripts/common/__init__.py +92 -0
- package/dist/templates/trellis/scripts/common/active_task.py +626 -0
- package/dist/templates/trellis/scripts/common/cli_adapter.py +811 -0
- package/dist/templates/trellis/scripts/common/config.py +445 -0
- package/dist/templates/trellis/scripts/common/developer.py +190 -0
- package/dist/templates/trellis/scripts/common/git.py +31 -0
- package/dist/templates/trellis/scripts/common/git_context.py +106 -0
- package/dist/templates/trellis/scripts/common/io.py +37 -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 +447 -0
- package/dist/templates/trellis/scripts/common/safe_commit.py +285 -0
- package/dist/templates/trellis/scripts/common/session_context.py +821 -0
- package/dist/templates/trellis/scripts/common/task_context.py +223 -0
- package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
- package/dist/templates/trellis/scripts/common/task_store.py +698 -0
- package/dist/templates/trellis/scripts/common/task_utils.py +274 -0
- package/dist/templates/trellis/scripts/common/tasks.py +112 -0
- package/dist/templates/trellis/scripts/common/trellis_config.py +131 -0
- package/dist/templates/trellis/scripts/common/types.py +110 -0
- package/dist/templates/trellis/scripts/common/workflow_phase.py +212 -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 +500 -0
- package/dist/templates/trellis/tasks/.gitkeep +0 -0
- package/dist/templates/trellis/workflow.md +690 -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 +280 -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/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 +203 -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/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 +150 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -0
- package/dist/utils/template-fetcher.js +907 -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 +334 -0
- package/dist/utils/template-hash.js.map +1 -0
- package/dist/utils/uninstall-scrubbers.d.ts +66 -0
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
- package/dist/utils/uninstall-scrubbers.js +342 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.1",
|
|
3
|
+
"description": "First published 0.5 beta — same code as the beta.0 dev cut, bumped at release time",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Release:**\n- First @beta-tagged release of the 0.5 skill-first architecture. Code is identical to the 0.5.0-beta.0 dev cut; the bump happens automatically via `pnpm version prerelease --preid beta` inside `pnpm release:beta`, so beta.0 was never published to npm.\n\nAll migration work (command→skill for 5 skills, safe-file-delete for 6 legacy commands + multi-agent + iFlow + Ralph Loop, breaking-change gate, worktree backup exclusion) is defined in the 0.5.0-beta.0 manifest and applies when upgrading from 0.4.x.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "If upgrading from 0.4.x: run `trellis update --migrate` — the gate in the 0.5.0-beta.0 manifest requires the flag. See the 0.5.0-beta.0 changelog for the full migration story."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.10",
|
|
3
|
+
"description": "Hotfix: three bugs in `trellis update --migrate` / `init-context` (codex/kiro skill `trellis-` prefix, `.agents/` detection, `--platform` threading) + migrationGuide back-fill on 0.5.0-beta.0 / 0.5.0-beta.5 + docs-site changelog pre-release gate.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug fixes (no --migrate required):**\n- fix(cli_adapter): codex/kiro branches of `get_trellis_command_path` now emit the `trellis-` prefix introduced by 0.5.0-beta.0 — previously `init-context` wrote `check.jsonl` paths that 404'd on codex/kiro projects.\n- fix(detect_platform): removed `.agents/` from the config-dir enumeration (it's a shared cross-platform skills layer consumed by Codex / Amp / Cline / Kimi / Warp, not a platform directory). Added a guarded codex fallback so repos whose only signal is `.agents/skills/trellis-*` still identify as codex.\n- feat(init-context): `task.py init-context` accepts `--platform`; skill/command templates thread it end-to-end via `{{CLI_FLAG}}` instead of re-detecting from the filesystem at runtime.\n- fix(migrations): back-filled `migrationGuide` + `aiInstructions` on 0.5.0-beta.0 (0.4→0.5 narrative: skill renames, retired commands, multi-agent-pipeline removal, iFlow drop, task.json schema cleanup) and 0.5.0-beta.5 (sub-agent rename). Both breaking releases previously shipped with no guide, so `update --migrate` PRDs fell back to 0.3/0.4 historical content.\n- feat(release): `create-manifest.js` now rejects `breaking && recommendMigrate && !migrationGuide`; `release:beta` / `release:rc` / `release:promote` pre-flight `check-docs-changelog.js` to catch missing docs-site changelog pages before tagging.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure runtime/tooling bug fix; no user file operations. Upgrading from beta.9: if you ran `trellis update --migrate` before beta.10 on a codex/kiro project, the `check.jsonl` generated then points at pre-prefix skill paths — re-run `task.py init-context <task-dir> <type> --platform <platform>` or recreate the task. If on 0.4.x, the migration task PRD now contains the real 0.4→0.5 guide."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.11",
|
|
3
|
+
"description": "Hotfix: SessionStart hook crashed on PEP 604 annotations when the AI CLI spawned python3 as system 3.9 even though the user's shell had 3.11. Also relaxes declared Python floor from 3.10 to 3.9. Not breaking; no --migrate required.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(hooks): `shared-hooks/session-start.py` and `shared-hooks/inject-subagent-context.py` now declare `from __future__ import annotations`. Without it, PEP 604 union annotations (`str | None`, `dict | None`) were evaluated at function-def time and crashed on `python3` < 3.10 with `TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'`. Observed in the field on macOS where the user's shell `python3` was 3.11 (homebrew) but the AI CLI host resolved the hook subprocess `python3` via a minimal PATH, falling back to `/usr/bin/python3` → system 3.9. `statusline.py` and the copilot/codex copies of session-start already had the future import; the two canonical `shared-hooks/*.py` files were the outliers.\n\n**Improvements:**\n- feat(cli): Python version floor relaxed from 3.10 to 3.9. `packages/cli/src/commands/init.ts` now sets `MIN_MINOR = 9` — matches macOS Ventura/Sonoma/Sequoia system `python3` (3.9.6). Trellis-distributed Python templates were verified via full package-import matrix on CPython 3.8–3.13 (30/30 pass). Python 3.8 is not supported (EOL 2024-10; declaring support would incur CVE backport obligations).\n- docs: `README.md`, `docs-site/quickstart.mdx` (+ zh), `docs-site/start/install-and-first-task.mdx` (+ zh), `docs-site/advanced/multi-platform.mdx` (+ zh), and `docs-site/advanced/appendix-f.mdx` (+ zh) all updated to `Python 3.9+`. New Prerequisites table on the Quickstart page lists Node / Python / git floors up front (previously undocumented on the docs site).",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Existing projects: run `trellis update` to pick up the two patched hook files. Hashes match pristine installs; locally-modified copies land on the standard confirm prompt. If you're on Python 3.9 and saw the `Python ≥ 3.10` warning during past `trellis init` runs, the warning is gone — no action needed."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.12",
|
|
3
|
+
"description": "Phase 1.3 is now agent-curated. `task.py init-context` removed; `task.py create` seeds `implement.jsonl` / `check.jsonl` with a self-describing `_example` line on sub-agent-capable platforms, and the AI fills real spec + research entries per workflow.md Phase 1.3. Session-start READY gate across 4 implementations now requires at least one curated entry, not just file existence. Skill Routing tables split per-platform — sub-agent platforms no longer see `trellis-before-dev`. Fixes `trellis update` backup-phase stack-overflow on repos with nested `.backup-*/.opencode/node_modules`. Release pipeline hardened with manifest-continuity guard + guards against overwriting published manifests. Restored the missing `0.5.0-beta.10.json` manifest. Not breaking; existing tasks keep working.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Behavioral changes:**\n- feat(workflow): Phase 1.3 rewritten from \"run `task.py init-context`\" to \"AI curates jsonl directly\". New rule — `implement.jsonl` / `check.jsonl` hold spec + research paths only, never code paths. `task.py create` seeds each jsonl with one self-describing `{\"_example\": \"...\"}` line on sub-agent-capable platforms (Claude / Cursor / Codex / Kiro / Gemini / OpenCode / Qoder / CodeBuddy / Droid / Copilot). Agent-less platforms (Kilo / Antigravity / Windsurf) skip seeding and load specs via the `trellis-before-dev` skill as before.\n- fix(task.py): `init-context` subcommand removed. Invoking it exits 2 with a deprecation message pointing at workflow.md Phase 1.3 and `task.py add-context` for ergonomic editing. `cmd_init_context`, `get_implement_backend`, `get_implement_frontend`, `get_check_context` deleted from `common/task_context.py`.\n- fix(session-start): READY detection requires at least one jsonl row with a `file` key. Seed-only jsonl now surfaces as `Status: PLANNING (Phase 1.3)` with Next-Action pointing at the curate step. Applied across all four implementations: `shared-hooks/session-start.py` (Claude / Cursor / Kiro / CodeBuddy / Droid / Gemini / Qoder), `codex/hooks/session-start.py`, `copilot/hooks/session-start.py`, `opencode/plugins/session-start.js`.\n- feat(workflow.md): Skill Routing and DO-NOT-skip tables split into `[Claude Code, Cursor, OpenCode, Codex, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid]` and `[Kilo, Antigravity, Windsurf]` variants. Sub-agent platforms no longer surface `trellis-before-dev` in the routing table — the main-thread job on those platforms is to dispatch `trellis-implement`, not load spec skills.\n- feat(shared-hooks): `inject-subagent-context.py:read_jsonl_entries` emits a single stderr warning when the jsonl is missing or contains only seed rows, so Class-1 platforms have a clear debug signal instead of silent empty injection.\n- feat(configurators/shared.ts): Class-2 pull-based prelude (Codex / Copilot / Gemini / Qoder) now teaches sub-agents to skip rows without a `file` field and fall back to prd.md + self-discovered specs when the jsonl has only a seed row.\n\n**Bug fixes:**\n- fix(update): `trellis update` no longer crashes with `Maximum call stack size exceeded` during the backup phase. Root cause: `createFullBackup` descended into old `.trellis/.backup-*/` directories (which could contain nested `.opencode/node_modules` — tens of thousands of files), and `collectAllFiles` combined recursion with `files.push(...largeArray)` spread. Rewritten as iterative stack traversal. Exclude dirs (`node_modules`, `.backup-*`, etc.) are now skipped at scan time instead of copy time. Symlinks and Windows NTFS junctions are skipped to avoid cyclic scans. `BACKUP_EXCLUDE_PATTERNS` matching normalizes backslashes to forward slashes so Windows paths like `.claude\\worktrees\\...` match. `DEBUG=1` / `TRELLIS_DEBUG=1` env now prints full stack traces for easier triage. See `update.ts:683-790`, `cli/index.ts:130`.\n\n**Release tooling:**\n- feat(release): new `packages/cli/scripts/check-manifest-continuity.js` — pre-release gate that queries npm for published versions and fails non-zero if any lacks a local manifest. Hooked into `release` / `release:minor` / `release:major` / `release:beta` / `release:rc` / `release:promote` before `pnpm test`. Historical gaps (0.1.x pre-manifest era, 0.2.1–0.2.11 old monolith, 0.3.10-beta.0 first public prerelease) whitelisted in `KNOWN_GAPS`; the list documents that it should not be extended.\n- feat(create-manifest): `create-manifest.js` now refuses to (re)write a manifest whose version is already on npm — even with `force: true`. Interactive mode also checks npm before the existing local-file overwrite prompt.\n- fix(migrations): restored `packages/cli/src/migrations/manifests/0.5.0-beta.10.json`. Reconstructed from the actual tarball content (three bug fixes + migrationGuide back-fills + docs-site changelog pre-release gate), not the earlier Qoder-split draft that was consolidated into beta.9 before publish. `KNOWN_GAPS` shrinks from 22 to 21.\n\n**Test fixes:**\n- fix(test): `update.integration.test.ts` and `init-joiner.integration.test.ts` `vi.mock(\"node:child_process\")` now conditionally returns `\"Python 3.11.12\"` on `python3 --version` calls instead of blanket `\"\"`. Resolves 36 pre-existing failures caused by `requireSupportedPython` throwing `Python command not found` in vitest child processes. Full suite now 664/664 green.\n- test(update): regression coverage for the backup-phase crash added in `test/commands/update-internals.test.ts` and `test/commands/update.integration.test.ts`.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "**Existing tasks**: keep working. Consumers (hook, prelude, validate, list-context) all skip rows without a `file` key, so old `_example` seed rows are naturally ignored. If your existing `implement.jsonl` / `check.jsonl` were generated by 0.5.0-beta.11-and-earlier `init-context` and point at paths that don't exist in your monorepo spec layout (typical when `package = backend | frontend` instead of `package = business-domain`), re-curate per workflow.md Phase 1.3 — or leave them alone and the sub-agent falls back to prd.md + stderr warning.\n\n**AI instructions (for an agent helping a user through this change)**:\n\n1. Do NOT run `task.py init-context` — it's gone. If you see the deprecation error (exit 2), read `.trellis/workflow.md` Phase 1.3 and curate jsonl directly.\n2. When creating a new task, `task.py create` already seeds empty-but-valid jsonl on sub-agent platforms. Your Phase 1.3 job: open `implement.jsonl` / `check.jsonl`, replace the `_example` line with real `{\"file\": ..., \"reason\": ...}` entries pointing at `.trellis/spec/**/*.md` and `{TASK_DIR}/research/**/*.md` that apply to the task. Never list code files — those are read during Phase 2 implement, not pre-registered.\n3. Run `python3 ./.trellis/scripts/get_context.py --mode packages` to discover which spec layers are available in the current project.\n4. If the session-start breadcrumb shows `Status: PLANNING (Phase 1.3)` right after task.py create, that is correct — it means curation hasn't happened yet. Proceed with Phase 1.3 per workflow.md. The READY status only appears after at least one curated entry is written.\n5. If a user's old task was created under 0.5.0-beta.11 with `init-context` output pointing at `.trellis/spec/<pkg>/backend/index.md` and those paths don't exist on their monorepo, don't try to 'fix' the old script — re-curate the jsonl to the paths that actually exist. Use the `add-context` command or edit the file directly.\n\n**Workaround for users still on a pre-beta.12 published CLI who hit the `Maximum call stack size exceeded` crash during `trellis update`**: `rm -rf .trellis/.backup-*` drops the nested-node_modules source of the overflow, then re-run `trellis update` (still on the old CLI) to complete the upgrade, OR upgrade to beta.12 first via `npm i -g @mindfoldhq/trellis@0.5.0-beta.12` and run update from there."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.13",
|
|
3
|
+
"description": "Patch follow-up to beta.12: `task.py start` now transitions `task.json` status planning → in_progress (previously stuck at planning even after the user explicitly started work). Codex sub-agent instructions for seed-row handling — written into the dogfood root during beta.11's init-context-removal but never backported into `packages/cli/src/templates/codex/agents/` — are now in the packaged templates, so fresh `trellis init` / `trellis update` finally ship Phase 1.3 fallback guidance to Codex users. `.codex/config.toml` documents the `features.codex_hooks` user-level opt-in. No src/ changes; `trellis update` is a straight content refresh.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(task.py): `task.py start <task>` transitions `task.json` status `planning` → `in_progress`. Previously `cmd_start` only wrote `.current-task` and ran `after_start` hooks — user explicitly started work but status stayed at `planning`. Non-`planning` statuses (`in_progress`, `review`, `completed`) are preserved on resume so replays don't clobber progress. See `packages/cli/src/templates/trellis/scripts/task.py:cmd_start`.\n- fix(templates/codex): backport the \"Required: Load Trellis Context First\" preamble into packaged `codex/agents/trellis-check.toml` and `codex/agents/trellis-implement.toml`. The block teaches Codex sub-agents to (1) skip `{\"_example\": ...}` seed rows and (2) fall back to prd-only context plus self-discovered specs via `get_context.py --mode packages` when the jsonl has no curated entries. It was edited into the dogfood root during beta.11 init-context-removal but never propagated into `packages/cli/src/templates/codex/agents/`, so up through beta.12 Codex users on fresh `trellis init` / `trellis update` got agent prompts missing the Phase 1.3 fallback path and the agents blocked on seed-only jsonl instead of proceeding with prd.md + spec judgment.\n\n**Docs:**\n- docs(codex): `.codex/config.toml` documents the `[features] codex_hooks = true` user-level opt-in. Project-scoped config cannot enable `features.*`; without the flag, `hooks.json` is silently ignored and Trellis context injection never runs — previously this looked like a bug. The old `shell_environment_policy` stub (dead config unrelated to Trellis) is removed in favor of the opt-in hint.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure content refresh. Existing tasks and jsonl files keep working untouched. After `trellis update`, `task.py start <existing-task-in-planning>` will now write `in_progress` on the first invocation — no action needed from you. Codex users who manually edited their `.codex/agents/trellis-*.toml` will see the Required-Context preamble added on update; `trellis update` prompts per-file when hashes drift."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.14",
|
|
3
|
+
"description": "Patch follow-up to beta.13: SessionStart hooks now emit a one-shot `<first-reply-notice>` block so the first visible assistant reply announces that Trellis context has been injected (proof-of-load for noisy or summarized hosts). READY-state breadcrumbs across shared/opencode/codex/copilot hooks + `trellis/workflow.md` replace the soft \"Continue with implement or check\" wording with an explicit \"Next required action: dispatch `trellis-implement` … do NOT edit code in the main session\" directive, closing a loophole where agent-capable sessions would still hand-edit code in the main thread. Windows statusline no longer crashes on typed stdout/stderr streams: `sys.stdout.detach() + TextIOWrapper(...)` is replaced with `reconfigure(encoding='utf-8', errors='replace')`. No src/ runtime-code changes outside templates; `trellis update` is a straight content refresh.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(hooks): SessionStart emits a one-shot `<first-reply-notice>` block instructing the model to open its first visible reply with one short Chinese sentence confirming Trellis context has been injected (workflow, task status, developer identity, git status, active tasks, spec index). Applied to `shared-hooks/session-start.py`, `codex/hooks/session-start.py`, `opencode/plugins/session-start.js`. Notice is explicitly one-shot — not repeated on later turns in the same session. Closes the visibility gap on hosts that collapse or summarize hook output.\n- feat(hooks): READY-state breadcrumbs now say \"Next required action: dispatch `trellis-implement` per Phase 2.1. For agent-capable platforms, do NOT edit code in the main session. After implementation, dispatch `trellis-check` per Phase 2.2 before reporting completion.\" Replaces the old \"Next: Continue with implement or check\" wording that let the main thread silently hand-edit code. Applied uniformly across `shared-hooks/session-start.py` + `inject-workflow-state.py`, `opencode/plugins/session-start.js` + `inject-workflow-state.js`, `codex/hooks/session-start.py`, `copilot/hooks/session-start.py`, and the `[workflow-state:in_progress]` block in `trellis/workflow.md`. `<ready>` directive also drops the \"ask whether to continue\" prompt in favor of \"execute its Next required action\".\n\n**Bug Fixes:**\n- fix(statusline): Windows UTF-8 setup replaces `sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')` with `stream.reconfigure(encoding='utf-8', errors='replace')`. The old pattern crashed on hosts that wrap stdout/stderr with typed streams (Copilot / certain Codex environments) because `detach()` is not available on typed wrappers. `reconfigure` is the supported API on Python 3.7+ text streams and is a no-op when unavailable. Fix applied to `shared-hooks/statusline.py`.\n- fix(hooks): Codex and Copilot SessionStart hooks now invoke a shared `configure_project_encoding(project_dir)` helper before emitting JSON, loading `.trellis/scripts/common.configure_encoding()` when present. Prevents stray mojibake in hook stdout on Windows Codex/Copilot runs that haven't already wrapped stdout.\n- docs(copilot): `copilot/hooks/session-start.py` docstring + `systemMessage` text now state plainly that GitHub Copilot currently ignores `sessionStart` hook output. The JSON shape is kept for protocol parity and future host support, but users should rely on `UserPromptSubmit` breadcrumbs and hook logs for Copilot today.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure content refresh. Existing tasks, jsonl files, and `.current-task` are preserved. After `trellis update`, fresh sessions across Claude Code / Codex / Copilot / OpenCode will prepend a one-line Chinese confirmation of SessionStart context on the first assistant reply, and the main thread will no longer be nudged to hand-edit code when a task is READY. Windows statusline stops crashing on Copilot/Codex typed stdout. No action needed beyond `trellis update`."
|
|
9
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.15",
|
|
3
|
+
"description": "Task runtime and platform compatibility update. `task.py start/current/finish` now use `.trellis/.runtime/sessions/<context-key>.json`; `.trellis/.current-task` is no longer the active-task fallback. `workflow.md` and hook breadcrumbs now allow trivial turns and explicit current-turn overrides to skip Trellis task creation or sub-agent dispatch. Claude Code, Codex, Cursor, OpenCode, and Pi handle shell session identity for `task.py`: Codex uses native `CODEX_SESSION_ID` / `CODEX_THREAD_ID`, while the other hosts propagate `TRELLIS_CONTEXT_ID` through host-specific bridges. Cursor matches `Task|Subagent` and parses native custom-agent payloads. Pi resolves context keys from session manager, environment, transcript path, or process fallback. Template registry downloads support private Git-backed registries through local Git credentials. Claude Code statusLine is no longer installed by default for new projects, while existing Claude Code statusLine files and settings are preserved on update. The manifest also includes 10 hash-verified `safe-file-delete` entries for orphan shared hooks.",
|
|
4
|
+
"breaking": true,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Behavior Changes:**\n- feat(task): `task.py start/current/finish` read and write `.trellis/.runtime/sessions/<context-key>.json`. `.trellis/.current-task` is no longer used as the active-task fallback. `task.py start` exits with a clear error when no session identity is available. `task.py finish` deletes the resolved session file. `task.py archive` deletes session files that still point at the archived task before moving it.\n- feat(init): bootstrap and joiner onboarding tasks no longer write `.trellis/.current-task`; generated PRDs tell the AI to start the task from a session that provides Trellis session identity.\n- feat(workflow): `workflow.md` and hook fallback breadcrumbs now treat no-task trigger words as task-creation signals instead of mandatory creation. Task creation is not required for trivial turns when all three hold: zero file writes, one-reply answer, and no research beyond reading 1-2 repo files. Explicit current-turn phrases such as `skip trellis`, `no task`, `just do it`, `跳过 trellis`, `别走流程`, and `先别建任务` skip task creation for that turn.\n- feat(workflow): `in_progress` breadcrumbs keep `trellis-implement` / `trellis-check` as the default, but explicit current-turn requests such as `do it inline`, `main session 写就行`, and `不用 sub-agent` allow main-session implementation.\n\n**Platform Integration:**\n- feat(hooks): Claude Code writes `TRELLIS_CONTEXT_ID` through `CLAUDE_ENV_FILE`; Codex command environments are supported through `CODEX_SESSION_ID` / Codex Desktop `CODEX_THREAD_ID`; Cursor adds `beforeShellExecution` tickets under `.trellis/.runtime/cursor-shell/`; OpenCode prefixes Bash commands with `TRELLIS_CONTEXT_ID`; Pi injects the same value into Bash and nested `pi --mode json` runs.\n- docs(platforms): GitHub Copilot uses a platform-specific SessionStart hook; Gemini/Qoder/CodeBuddy/Droid/Kiro use shared hook input or platform env; Kilo/Antigravity/Windsurf have no hook integration; `.agents/skills` consumers rely on host-provided prelude/env. All groups share `.trellis/.runtime/sessions/`, while beta.15 adds shell-command handling for Claude Code, Codex, Cursor, OpenCode, and Pi.\n- feat(cursor): Cursor `hooks.json` matches `Task|Subagent`. `inject-subagent-context.py` parses native custom-agent payloads including `{ custom: { name } }` and `{ type: { case: \"custom\", value: { name } } }`.\n- feat(pi): Pi Agent resolves context keys from `TRELLIS_CONTEXT_ID`, `sessionManager.getSessionId()`, `PI_SESSION_ID` / `PI_SESSIONID`, transcript path, or process fallback, then reads active tasks from `.trellis/.runtime/sessions/`.\n- feat(workflow): `workflow-state` breadcrumbs use exact agent names (`trellis-implement`, `trellis-check`, `trellis-research`) and document explicit per-turn override phrases.\n\n**Bug Fixes:**\n- fix(registry): Template registry downloads support private Git-backed registries through local Git credentials. Self-hosted GitLab / GitHub Enterprise and SSH registry sources use Git to read `index.json` and copy template directories, and classify auth, missing-ref, missing-path, invalid-json, and network failures separately instead of falling through to direct-download mode.\n- fix(opencode): OpenCode recognizes `OPENCODE_RUN_ID` and strips the `trellis-` prefix before matching sub-agent names, preserving `implement.jsonl` / `check.jsonl` injection for renamed agents.\n- fix(claude): Claude Code statusLine is no longer installed by default for new projects. Existing `.claude/hooks/statusline.py` files are preserved on update, and an existing `.claude/settings.json` `statusLine` entry is carried forward instead of being forced out.\n- fix(cli): `writeSharedHooks` and `collectSharedHooks` use `SHARED_HOOKS_BY_PLATFORM`. The manifest removes 10 orphan shared-hook files through hash-verified `safe-file-delete` entries; locally modified files are preserved.\n\n**Docs:**\n- docs(beta): docs-site beta pages and `v0.5.0-beta.15` changelog document session-scoped task state, workflow policy relaxation, per-platform session identity behavior, Pi Agent, Cursor hook behavior, native Git worktrees, private Git-backed template registries, Claude Code statusLine defaults, existing statusLine preservation, and the current `continue` / `finish-work` command flow.",
|
|
7
|
+
"migrations": [
|
|
8
|
+
{
|
|
9
|
+
"type": "safe-file-delete",
|
|
10
|
+
"from": ".cursor/hooks/statusline.py",
|
|
11
|
+
"description": "Removed: Cursor has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
12
|
+
"allowed_hashes": [
|
|
13
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
14
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
15
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "safe-file-delete",
|
|
20
|
+
"from": ".codex/hooks/statusline.py",
|
|
21
|
+
"description": "Removed: Codex has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
22
|
+
"allowed_hashes": [
|
|
23
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
24
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
25
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "safe-file-delete",
|
|
30
|
+
"from": ".gemini/hooks/statusline.py",
|
|
31
|
+
"description": "Removed: Gemini CLI has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
32
|
+
"allowed_hashes": [
|
|
33
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
34
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
35
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "safe-file-delete",
|
|
40
|
+
"from": ".qoder/hooks/statusline.py",
|
|
41
|
+
"description": "Removed: Qoder has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
42
|
+
"allowed_hashes": [
|
|
43
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
44
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
45
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "safe-file-delete",
|
|
50
|
+
"from": ".github/copilot/hooks/statusline.py",
|
|
51
|
+
"description": "Removed: GitHub Copilot has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
52
|
+
"allowed_hashes": [
|
|
53
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
54
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
55
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "safe-file-delete",
|
|
60
|
+
"from": ".codebuddy/hooks/statusline.py",
|
|
61
|
+
"description": "Removed: CodeBuddy has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
62
|
+
"allowed_hashes": [
|
|
63
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
64
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
65
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "safe-file-delete",
|
|
70
|
+
"from": ".factory/hooks/statusline.py",
|
|
71
|
+
"description": "Removed: Factory Droid has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
72
|
+
"allowed_hashes": [
|
|
73
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
74
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
75
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "safe-file-delete",
|
|
80
|
+
"from": ".kiro/hooks/statusline.py",
|
|
81
|
+
"description": "Removed: Kiro has no statusLine event; shared-hooks/statusline.py was never invoked.",
|
|
82
|
+
"allowed_hashes": [
|
|
83
|
+
"87c01ee786ca9e1f25b591f0ed67564cd430586d57516d5b6fc57c34b6e7a3ec",
|
|
84
|
+
"c92c0020a0c60308437b66f024a244303e708519c97089cf654ceddc144f7435",
|
|
85
|
+
"b9b0a39a486643f2b78ecb3c757459182a6326ea070ba34a49887e23adc40bbb"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"type": "safe-file-delete",
|
|
90
|
+
"from": ".kiro/hooks/session-start.py",
|
|
91
|
+
"description": "Removed: Kiro supports only `agentSpawn`; there is no SessionStart event to trigger this script.",
|
|
92
|
+
"allowed_hashes": [
|
|
93
|
+
"26b52ad72259316aa5adc8068d0df2a002273d5eda659ac3c71f3f5ecd9ebd08",
|
|
94
|
+
"ddd59c6fc5e6fa8c8535d6ac375ecaad60f15b87abc6dfc279007e610c636dd8",
|
|
95
|
+
"597409062bed8f9977750fa6262bb997facce7d8377d3482d4bcb2054e19c491",
|
|
96
|
+
"6cf36cffba3cf4a3caff99606d9fc9dde07fa4f74b7227aeb08d3de00ced7ca2",
|
|
97
|
+
"373f2f41c5506982cef1049f0203ca9e442c8074f54880aa021f037c0b9300b0",
|
|
98
|
+
"bc2026f6b1c195432e1126e1388d11fccec2df7a72010d0daa9fb6af76f683dd",
|
|
99
|
+
"cf355e44ace5e9b7c7d9a416462d4057a6cff9d5905b8db1839e6e4c892cfd13",
|
|
100
|
+
"a1b0db7c264da8e7abeb378a16ba8132b99b9918c9546627137d69427108f4b6",
|
|
101
|
+
"a0256292a2ade20728d71d2ea9a7ce866f6955efe034934eaecbf820244e9ad8"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"type": "safe-file-delete",
|
|
106
|
+
"from": ".kiro/hooks/inject-workflow-state.py",
|
|
107
|
+
"description": "Removed: Kiro supports only `agentSpawn`; there is no UserPromptSubmit event to trigger this script.",
|
|
108
|
+
"allowed_hashes": [
|
|
109
|
+
"281939a51a62467a5dd73947fdec7143d0e936b4b64b5224ce0484186eb5b018",
|
|
110
|
+
"4231e4e0d52c9b05d66a215c870db30a876201a51350e5191953418ca4ec4637",
|
|
111
|
+
"50bd086d40654b9fe8cb902d2f321ce06e39b6d4020a6e9aa49154cc371bdb16"
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"notes": "Behavior change: `.trellis/.current-task` is preserved but ignored by active-task resolution. Existing task directories and jsonl files remain valid. `task.py start` now requires session identity from the host or `TRELLIS_CONTEXT_ID`. Run `trellis update` to refresh hooks and templates. The 10 shared-hook cleanup migrations are hash-verified; locally modified hook files are preserved with a warning. Claude Code statusLine is not installed by default for new projects, and existing Claude Code statusLine files/settings are preserved on update."
|
|
116
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.16",
|
|
3
|
+
"description": "Compatibility patch for template hash portability, task archive inputs, and Claude Code statusLine upgrades. Template hashes now use POSIX keys and LF-normalized content, `task.py archive` accepts the same task directory inputs as the other task commands, and existing Claude Code statusLine installs are preserved during `trellis update`. No migration actions are required.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(cli): Normalize `.trellis/.template-hashes.json` keys to POSIX paths and compute template hashes from LF-normalized content. The hash file now uses a `{ \"__version\": 2, \"hashes\": { ... } }` envelope; legacy flat-format hash files are discarded and regenerated from installed templates.\n- fix(scripts): Align `task.py archive` with other task-directory subcommands. `archive` now accepts a bare task name, `.trellis/tasks/<slug>` relative path, or absolute task path.\n- fix(claude): Preserve existing Claude Code statusLine installs during update. `trellis update` no longer safe-deletes `.claude/hooks/statusline.py`, and if `.claude/settings.json` already has a top-level `statusLine` entry, the updated settings template carries that entry forward.\n\n**Behavior:**\n- New Trellis installs still do not create `.claude/hooks/statusline.py` and do not add `statusLine` to `.claude/settings.json`.\n- Non-Claude orphan `statusline.py` files remain hash-verified safe-delete cleanup targets because those platforms have no `statusLine` event.\n- No `--migrate` gate is required for this patch; the hash file is derived state and is regenerated by normal init/update hashing.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to receive the compatibility fixes. Legacy `.trellis/.template-hashes.json` files are regenerated under schema v2, `task.py archive` accepts task names or task paths, and existing Claude Code statusLine files/settings are preserved. No manual migration is required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.17",
|
|
3
|
+
"description": "Beta.17 installs trellis-meta as a bundled built-in skill, hardens Pi subagent launch/configuration, removes promotional init completion output, and improves subagent context wiring. No migration actions are required.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(cli): Install `trellis-meta` as a bundled multi-file built-in skill under every platform skill root. The shared template pipeline now supports `packages/cli/src/templates/common/bundled-skills/<skill>/` through `getBundledSkillTemplates()`, `resolveBundledSkills()`, `collectSkillTemplates()`, and `writeSkills()`.\n- feat(pi): Harden the Trellis Pi `subagent` launcher. The generated extension resolves `@mariozechner/pi-coding-agent/dist/cli.js` when possible, runs child Pi with `--mode text -p --no-session`, sends delegated prompts through stdin, bounds stdout/stderr buffers, forwards `TRELLIS_CONTEXT_ID`, and wires `AbortSignal` cancellation.\n- feat(pi): Add Pi subagent model/thinking configuration. `.pi/agents/*.md` frontmatter may provide `model`, `thinking`, and `fallbackModels`, while the `subagent` tool accepts per-call `model` and `thinking` overrides and maps them to `--model <model[:thinking]>` or `--thinking <level>`.\n- docs(workflow): Clarify that `task.py create --slug <auto>` receives a slug without a date prefix because the script adds the `MM-DD-` directory prefix automatically.\n\n**Behavior Changes:**\n- chore(init): Remove promotional completion output from `trellis init`; completion output now stays focused on generated files and next actions.\n\n**Bug Fixes:**\n- fix(trellis): Improve subagent context wiring across local platform files. Cursor native custom-agent payloads are parsed from `Task`/`Subagent` tool input, workflow-state breadcrumbs require exact `trellis-implement` / `trellis-check` / `trellis-research` agent names, and Claude/Cursor/Codex hook paths preserve session identity for later shell or subagent context loading.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to receive the bundled `trellis-meta` skill, Pi subagent launcher/config updates, init output cleanup, and subagent context wiring fixes. No `--migrate` flag is required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.18",
|
|
3
|
+
"description": "Beta.18 redesigns the Phase 3 workflow: Phase 3.4 adds an AI-driven batched commit step, and `/trellis:finish-work` becomes a 4-step survey + archive + journal flow that refuses to run on a dirty working tree. Also fixes parent-task progress regression on child archive, hash-tracks AGENTS.md during update, and supports OpenCode PowerShell context injection on Windows. No migration actions are required.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(workflow): Add `Phase 3.4 Commit changes` to `workflow.md`. The AI inspects `git status --porcelain`, learns commit-message style from `git log --oneline -5`, classifies dirty files into AI-edited-this-session vs unrecognized groups, drafts a batched commit plan, and commits per batch only after one-shot user confirmation. Rejecting the plan exits to manual mode without a flag. Wrap-up reminder renumbers from 3.4 to 3.5. The `[workflow-state:completed]` breadcrumb (and the four hook fallbacks in `inject-workflow-state.py`/`.js`) now direct users at `/trellis:finish-work` instead of the legacy `task.py finish` + `task.py archive` sequence.\n- feat(skills): Rewrite `/trellis:finish-work` as a 4-step survey + archive + journal flow. Step 1 runs `get_context.py --mode record` to print active tasks, git status, and recent commits — when other completed-but-unarchived tasks surface, the AI prompts once for one-shot batch cleanup. Step 2 runs `git status --porcelain` (excluding `.trellis/workspace/` and `.trellis/tasks/`) and bails out if anything else is dirty. Step 3 archives the active task plus any cleanup tasks the user confirmed in Step 1. Step 4 records the session journal using hashes from Step 1's recent-commits output. Code commits belong in Phase 3.4, not here. The common skill template uses `{{CMD_REF:finish-work}}` so `cmdRefPrefix` resolves correctly per platform (`/trellis:` for Claude/OpenCode, `$` for Codex, `/trellis-` for Cursor).\n\n**Bug Fixes:**\n- fix(scripts): Stop pruning archived children from a parent task's `children` list. `cmd_archive` previously removed the child name on archive, which made `children_progress` shrink both numerator and denominator (e.g. `[1/6 done]` → `[0/5 done]`, hiding completed work). The list now stays intact; `children_progress` treats children missing from active statuses as completed (cmd_archive sets `status=completed` before moving the dir).\n- fix(update): Hash-track `AGENTS.md` during `trellis update`. Pre-0.5.0-beta.18 projects wrote `AGENTS.md` without recording its template hash, which would surface as a false \"modified by you\" conflict on update. The new `<!-- TRELLIS:START -->` / `<!-- TRELLIS:END -->` managed-block replacement plus a legacy pristine-hash allowlist (`LEGACY_UNTRACKED_AGENTS_MD_BLOCK_HASHES`) lets old untouched projects update cleanly while still preserving any user customizations outside the block.\n- fix(opencode): Support PowerShell context injection in OpenCode on Windows. `inject-subagent-context.js` now emits `$env:TRELLIS_CONTEXT_ID = '...'; ` instead of the POSIX `export` form when the host platform is `win32`, and the explicit-assignment dedup detector matches both POSIX and PowerShell forms.\n\n**Internal:**\n- test: Add `test/setup.ts` registered via `setupFiles` in `vitest.config.ts`. It deletes `process.env.TRELLIS_CONTEXT_ID` and `process.env.OPENCODE_RUN_ID` at vitest process start so the OpenCode resolver tests no longer pick up a Claude/OpenCode host-session env that would hijack the platform-input-derived contextKey.\n- docs(spec): Document the parent-child `children` list invariant in `script-conventions.md` and the host-shell env-leak isolation pattern in `unit-test/conventions.md`.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to receive the Phase 3.4 commit step, the rewritten `/trellis:finish-work` skill, the parent-child progress fix, AGENTS.md hash tracking, and OpenCode PowerShell support. No `--migrate` flag is required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.19",
|
|
3
|
+
"description": "Beta.19 hot-fixes a regression introduced in beta.18: when an AGENTS.md exists without `<!-- TRELLIS:START -->` / `<!-- TRELLIS:END -->` markers (pre-beta.18 projects, or hand-authored files), `trellis update` was clobbering the user's content with the bare Trellis template. The managed block now appends to the existing file instead of overwriting it. No migration actions are required.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(update): Preserve user content in `AGENTS.md` when the file has no `<!-- TRELLIS:START -->` / `<!-- TRELLIS:END -->` markers. Beta.18's managed-block replacement returned the bare template as a fallback when no markers were found, which silently replaced the user's hand-written `AGENTS.md` content during `trellis update`. The fallback now appends the canonical managed block to the existing content instead, so user-authored sections are preserved verbatim. Existing tests cover the legacy-pristine and modified-managed-block cases; the new `#4d preserves user AGENTS.md without TRELLIS markers by appending the managed block` case covers the hand-authored-without-markers path.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to receive the AGENTS.md preservation fix. No `--migrate` flag is required. If beta.18 already overwrote your `AGENTS.md`, restore the file from git history and re-run `trellis update` on beta.19 to merge in the managed block while keeping your content."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.2",
|
|
3
|
+
"description": "Bug fix: [b] Backup-rename in the migration confirm prompt now writes an inline .backup copy instead of silently behaving identically to [r] Rename anyway",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(update): `backup-rename` actually writes inline `.backup` copy (25a3337) — previously `[b] Backup original, then proceed` and `[r] Rename anyway` executed the exact same code path. Both relied on the full project snapshot at `.trellis/.backup-<timestamp>/`, making the prompt's promise of \"keeps a .backup copy\" misleading. Now `backup-rename` writes `<new-path>.backup` (for rename) or `<from>.backup` (for delete) alongside the normal operation so users can diff/merge their customizations against the new template without digging through the full snapshot. Prompt labels updated to state the concrete artifact path.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure CLI-side bug fix — no project file migrations. Run `trellis update` to sync to the new CLI behavior."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.3",
|
|
3
|
+
"description": "Bug fix: update.skip no longer leaves breaking-release upgrades half-migrated — skip is bypassed for safe-file-delete and template writes when manifest is breaking + recommendMigrate + user passed --migrate",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(update): bypass `update.skip` across safe-file-delete + template writes for breaking releases. Previously, projects with paths under `update.skip` in `.trellis/config.yaml` would upgrade inconsistently when crossing a breaking release: `rename` migrations already ignored skip, but `safe-file-delete` and template writes honored it. Result: users ended up half-migrated — old deprecated files persisted under skip-protected paths, new commands like `continue.md` never landed, and every future update re-flagged the same mess.\n\n Now when the current upgrade spans a manifest with `breaking: true + recommendMigrate: true` and the user passed `--migrate`, `update.skip` is bypassed for all three operations: rename / safe-file-delete / template writes. User customizations are still guarded by the per-file `Modified by you` confirm prompt at write time, and the hash check in `allowed_hashes` is still the ultimate safety net for safe-file-delete (user-modified files stay put with a `skip-modified` warning regardless).\n\n Non-breaking updates continue to respect `update.skip` as before — only breaking releases trigger the bypass.\n\n A new yellow `⚠ update.skip BYPASSED` notice appears in the breaking-change warning block so users aren't surprised when skip-protected files get cleaned up during the migration.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure CLI-side bug fix — no project file migrations. If upgrading from 0.4.x with an `update.skip` in config.yaml, this release finally lets the 0.5.0-beta.0 breaking migration complete cleanly: run `trellis update --migrate` to finish any half-migrated state from prior 0.5 beta upgrades."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.4",
|
|
3
|
+
"description": "Critical bug fix: workflow.md is now included in update's template set — previously excluded, causing 0.4.x → 0.5 upgrades to silently leave workflow.md at the old structure that 0.5's get_context.py / hooks can't parse",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(update): include workflow.md in `collectTemplateFiles` — `.trellis/workflow.md` was explicitly excluded from `trellis update`'s template set on the assumption that it's \"user-customizable documentation, written once at init\". That assumption broke in 0.5.0 because workflow.md started carrying **script-parsed structure**: `## Phase Index` (read by `get_context.py --mode phase`), `## Phase 1/2/3` headings (inlined into SessionStart payload), and `[workflow-state:STATUS]` tag blocks (consumed by the per-turn breadcrumb hook). Users upgrading from 0.4.x → 0.5 ended up with `get_context.py` reporting `Phase Index section not found in workflow.md` and the `/continue` command unable to route. workflow.md is now included in the normal update flow — unmodified copies auto-update, user-modified copies go through the existing \"Modified by you\" confirm prompt with diff. `workspace/index.md` stays excluded (it's runtime-appended by `add_session.py`, no script-parsed structure).",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure CLI-side bug fix — no project file migrations. If you upgraded to any 0.5.0-beta.0..beta.3 and see `Phase Index section not found in workflow.md` from `get_context.py`, this release fixes it: run `trellis update --migrate`. Unmodified workflow.md auto-updates; if you customized it, you'll see the \"Modified by you\" confirm prompt with a diff — pick `Overwrite` to get the new 0.5.0 structure, or merge your edits manually into the new template."
|
|
9
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.5",
|
|
3
|
+
"description": "Sub-agent rename + remove model: opus from all agent templates. Prefixes implement/check/research with trellis- to prevent accidental invocation by user's own agents or the main agent's description heuristics. Drops hardcoded model: opus from agent frontmatter across all 10 platforms — this caused Cursor users real cost pain because Cursor mapped opus to Claude Opus (~5x Sonnet pricing).",
|
|
4
|
+
"breaking": true,
|
|
5
|
+
"recommendMigrate": true,
|
|
6
|
+
"changelog": "**Breaking Changes:**\n- rename(agents): `implement` / `check` / `research` sub-agents are now `trellis-implement` / `trellis-check` / `trellis-research` across all 10 platforms (claude, cursor, opencode, codex, kiro, gemini, qoder, codebuddy, copilot, droid). Generic names were colliding with user-defined agents and being matched by the main agent's description heuristics on some platforms. Prefixing with `trellis-` makes them unambiguously Trellis sub-agents. `workflow.md`, copilot start prompt, `shared-hooks/inject-subagent-context.py`, and configurator detection all updated to use the new names.\n\n**Bug Fixes:**\n- fix(agents): drop `model: opus` from all 18 markdown agent frontmatters + the example `Task()` calls in `copilot/prompts/start.prompt.md`. On Claude Code this merely hardcoded Opus for all sub-agent runs (ignoring user preference); on Cursor it actively mapped to Claude Opus billing at ~5x Sonnet cost and surprised users; on Gemini/Droid/Codebuddy/Qoder `opus` isn't even a valid model identifier. Agents now inherit whatever model the user configured for their platform.",
|
|
7
|
+
"migrationGuide": "## Sub-Agent Rename: `implement` / `check` / `research` → `trellis-*`\n\nbeta.5 renames the three core sub-agents to add a `trellis-` prefix across all 10 agent-capable platforms (Claude, Cursor, OpenCode, Codex, Kiro, Gemini, Qoder, CodeBuddy, Copilot, Droid). The generic names (`implement`, `check`, `research`) were colliding with user-defined agents in some setups.\n\n### What changes\n\n| Old name | New name |\n|---|---|\n| `implement` | `trellis-implement` |\n| `check` | `trellis-check` |\n| `research` | `trellis-research` |\n\nPaths per platform:\n\n- **Claude / OpenCode / Cursor / etc.**: `.<platform>/agents/implement.md` → `.<platform>/agents/trellis-implement.md`\n- **Codex**: `.codex/agents/implement.toml` → `.codex/agents/trellis-implement.toml`\n- **Kiro**: `.kiro/agents/implement.json` → `.kiro/agents/trellis-implement.json`\n\n### Side-effect: removed `model: opus` from agent templates\n\nAgent YAML frontmatter no longer hardcodes a model. Falls back to whatever the platform default is. If you pinned opus explicitly for a reason (budget, performance), re-add `model: opus` to your local agent files after migrate.\n\n### How to upgrade\n\n```bash\ntrellis update --migrate\n```\n\n30 rename entries run. Unmodified agent files are renamed silently; customized ones (e.g. you tweaked the agent prompt) land on the standard `Modified by you` confirm prompt — pressing Enter (backup-rename) is safe.\n\n### What to check after migrate\n\n1. **Any code that spawns agents by name** — shell scripts, CI jobs, or other automation calling `Task(subagent_type=\"implement\")` must update to `Task(subagent_type=\"trellis-implement\")`.\n2. **Aliases / hot keys** — if you had a keyboard shortcut or prompt alias that referenced `implement` / `check` / `research`, update it.\n3. **Model pin** — if you customized `model: opus` in agent frontmatter, re-add it. Trellis no longer pins a model by default.",
|
|
8
|
+
"aiInstructions": "When helping a user migrate to 0.5.0-beta.5:\n\n1. **Grep for bare agent names in user code**: look for `Task(subagent_type=\"implement\"|\"check\"|\"research\")` in any .md / .ts / .py / shell files. Rename each to the `trellis-` prefixed version.\n\n2. **Check agent customizations**: diff the user's `.<platform>/agents/{implement,check,research}.*` against the new `trellis-*` templates. If they had custom content, help merge it into the new file.\n\n3. **Model pinning**: if their agent frontmatter had `model: opus` and they still want it pinned, re-add it after migrate. beta.5 removes the default pin in favor of platform-default.\n\n4. **Run migrate**: `trellis update --migrate`. Hash-verified renames — pristine files renamed silently, customized files land on the confirm prompt (Enter = backup-rename is safe).\n\n5. **Verify clean second run**: after migrate, running `trellis update` again should report \"Already up to date!\". Any diff indicates a rename that didn't complete (user chose skip on a modified file).",
|
|
9
|
+
"migrations": [
|
|
10
|
+
{
|
|
11
|
+
"type": "rename",
|
|
12
|
+
"from": ".claude/agents/implement.md",
|
|
13
|
+
"to": ".claude/agents/trellis-implement.md",
|
|
14
|
+
"description": "v0.5.0-beta.5: prefix claude sub-agent with trellis- to prevent accidental invocation",
|
|
15
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"type": "rename",
|
|
19
|
+
"from": ".claude/agents/check.md",
|
|
20
|
+
"to": ".claude/agents/trellis-check.md",
|
|
21
|
+
"description": "v0.5.0-beta.5: prefix claude sub-agent with trellis- to prevent accidental invocation",
|
|
22
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "rename",
|
|
26
|
+
"from": ".claude/agents/research.md",
|
|
27
|
+
"to": ".claude/agents/trellis-research.md",
|
|
28
|
+
"description": "v0.5.0-beta.5: prefix claude sub-agent with trellis- to prevent accidental invocation",
|
|
29
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "rename",
|
|
33
|
+
"from": ".cursor/agents/implement.md",
|
|
34
|
+
"to": ".cursor/agents/trellis-implement.md",
|
|
35
|
+
"description": "v0.5.0-beta.5: prefix cursor sub-agent with trellis- to prevent accidental invocation",
|
|
36
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "rename",
|
|
40
|
+
"from": ".cursor/agents/check.md",
|
|
41
|
+
"to": ".cursor/agents/trellis-check.md",
|
|
42
|
+
"description": "v0.5.0-beta.5: prefix cursor sub-agent with trellis- to prevent accidental invocation",
|
|
43
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"type": "rename",
|
|
47
|
+
"from": ".cursor/agents/research.md",
|
|
48
|
+
"to": ".cursor/agents/trellis-research.md",
|
|
49
|
+
"description": "v0.5.0-beta.5: prefix cursor sub-agent with trellis- to prevent accidental invocation",
|
|
50
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "rename",
|
|
54
|
+
"from": ".opencode/agents/implement.md",
|
|
55
|
+
"to": ".opencode/agents/trellis-implement.md",
|
|
56
|
+
"description": "v0.5.0-beta.5: prefix opencode sub-agent with trellis- to prevent accidental invocation",
|
|
57
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"type": "rename",
|
|
61
|
+
"from": ".opencode/agents/check.md",
|
|
62
|
+
"to": ".opencode/agents/trellis-check.md",
|
|
63
|
+
"description": "v0.5.0-beta.5: prefix opencode sub-agent with trellis- to prevent accidental invocation",
|
|
64
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "rename",
|
|
68
|
+
"from": ".opencode/agents/research.md",
|
|
69
|
+
"to": ".opencode/agents/trellis-research.md",
|
|
70
|
+
"description": "v0.5.0-beta.5: prefix opencode sub-agent with trellis- to prevent accidental invocation",
|
|
71
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"type": "rename",
|
|
75
|
+
"from": ".codex/agents/implement.toml",
|
|
76
|
+
"to": ".codex/agents/trellis-implement.toml",
|
|
77
|
+
"description": "v0.5.0-beta.5: prefix codex sub-agent with trellis- to prevent accidental invocation",
|
|
78
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"type": "rename",
|
|
82
|
+
"from": ".codex/agents/check.toml",
|
|
83
|
+
"to": ".codex/agents/trellis-check.toml",
|
|
84
|
+
"description": "v0.5.0-beta.5: prefix codex sub-agent with trellis- to prevent accidental invocation",
|
|
85
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "rename",
|
|
89
|
+
"from": ".codex/agents/research.toml",
|
|
90
|
+
"to": ".codex/agents/trellis-research.toml",
|
|
91
|
+
"description": "v0.5.0-beta.5: prefix codex sub-agent with trellis- to prevent accidental invocation",
|
|
92
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"type": "rename",
|
|
96
|
+
"from": ".kiro/agents/implement.json",
|
|
97
|
+
"to": ".kiro/agents/trellis-implement.json",
|
|
98
|
+
"description": "v0.5.0-beta.5: prefix kiro sub-agent with trellis- to prevent accidental invocation",
|
|
99
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "rename",
|
|
103
|
+
"from": ".kiro/agents/check.json",
|
|
104
|
+
"to": ".kiro/agents/trellis-check.json",
|
|
105
|
+
"description": "v0.5.0-beta.5: prefix kiro sub-agent with trellis- to prevent accidental invocation",
|
|
106
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"type": "rename",
|
|
110
|
+
"from": ".kiro/agents/research.json",
|
|
111
|
+
"to": ".kiro/agents/trellis-research.json",
|
|
112
|
+
"description": "v0.5.0-beta.5: prefix kiro sub-agent with trellis- to prevent accidental invocation",
|
|
113
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"type": "rename",
|
|
117
|
+
"from": ".gemini/agents/implement.md",
|
|
118
|
+
"to": ".gemini/agents/trellis-implement.md",
|
|
119
|
+
"description": "v0.5.0-beta.5: prefix gemini sub-agent with trellis- to prevent accidental invocation",
|
|
120
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"type": "rename",
|
|
124
|
+
"from": ".gemini/agents/check.md",
|
|
125
|
+
"to": ".gemini/agents/trellis-check.md",
|
|
126
|
+
"description": "v0.5.0-beta.5: prefix gemini sub-agent with trellis- to prevent accidental invocation",
|
|
127
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"type": "rename",
|
|
131
|
+
"from": ".gemini/agents/research.md",
|
|
132
|
+
"to": ".gemini/agents/trellis-research.md",
|
|
133
|
+
"description": "v0.5.0-beta.5: prefix gemini sub-agent with trellis- to prevent accidental invocation",
|
|
134
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"type": "rename",
|
|
138
|
+
"from": ".qoder/agents/implement.md",
|
|
139
|
+
"to": ".qoder/agents/trellis-implement.md",
|
|
140
|
+
"description": "v0.5.0-beta.5: prefix qoder sub-agent with trellis- to prevent accidental invocation",
|
|
141
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"type": "rename",
|
|
145
|
+
"from": ".qoder/agents/check.md",
|
|
146
|
+
"to": ".qoder/agents/trellis-check.md",
|
|
147
|
+
"description": "v0.5.0-beta.5: prefix qoder sub-agent with trellis- to prevent accidental invocation",
|
|
148
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"type": "rename",
|
|
152
|
+
"from": ".qoder/agents/research.md",
|
|
153
|
+
"to": ".qoder/agents/trellis-research.md",
|
|
154
|
+
"description": "v0.5.0-beta.5: prefix qoder sub-agent with trellis- to prevent accidental invocation",
|
|
155
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"type": "rename",
|
|
159
|
+
"from": ".codebuddy/agents/implement.md",
|
|
160
|
+
"to": ".codebuddy/agents/trellis-implement.md",
|
|
161
|
+
"description": "v0.5.0-beta.5: prefix codebuddy sub-agent with trellis- to prevent accidental invocation",
|
|
162
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"type": "rename",
|
|
166
|
+
"from": ".codebuddy/agents/check.md",
|
|
167
|
+
"to": ".codebuddy/agents/trellis-check.md",
|
|
168
|
+
"description": "v0.5.0-beta.5: prefix codebuddy sub-agent with trellis- to prevent accidental invocation",
|
|
169
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"type": "rename",
|
|
173
|
+
"from": ".codebuddy/agents/research.md",
|
|
174
|
+
"to": ".codebuddy/agents/trellis-research.md",
|
|
175
|
+
"description": "v0.5.0-beta.5: prefix codebuddy sub-agent with trellis- to prevent accidental invocation",
|
|
176
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"type": "rename",
|
|
180
|
+
"from": ".github/agents/implement.agent.md",
|
|
181
|
+
"to": ".github/agents/trellis-implement.agent.md",
|
|
182
|
+
"description": "v0.5.0-beta.5: prefix copilot sub-agent with trellis- to prevent accidental invocation",
|
|
183
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"type": "rename",
|
|
187
|
+
"from": ".github/agents/check.agent.md",
|
|
188
|
+
"to": ".github/agents/trellis-check.agent.md",
|
|
189
|
+
"description": "v0.5.0-beta.5: prefix copilot sub-agent with trellis- to prevent accidental invocation",
|
|
190
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"type": "rename",
|
|
194
|
+
"from": ".github/agents/research.agent.md",
|
|
195
|
+
"to": ".github/agents/trellis-research.agent.md",
|
|
196
|
+
"description": "v0.5.0-beta.5: prefix copilot sub-agent with trellis- to prevent accidental invocation",
|
|
197
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"type": "rename",
|
|
201
|
+
"from": ".factory/droids/implement.md",
|
|
202
|
+
"to": ".factory/droids/trellis-implement.md",
|
|
203
|
+
"description": "v0.5.0-beta.5: prefix droid sub-agent with trellis- to prevent accidental invocation",
|
|
204
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"type": "rename",
|
|
208
|
+
"from": ".factory/droids/check.md",
|
|
209
|
+
"to": ".factory/droids/trellis-check.md",
|
|
210
|
+
"description": "v0.5.0-beta.5: prefix droid sub-agent with trellis- to prevent accidental invocation",
|
|
211
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"type": "rename",
|
|
215
|
+
"from": ".factory/droids/research.md",
|
|
216
|
+
"to": ".factory/droids/trellis-research.md",
|
|
217
|
+
"description": "v0.5.0-beta.5: prefix droid sub-agent with trellis- to prevent accidental invocation",
|
|
218
|
+
"reason": "Generic names like 'implement'/'check'/'research' can collide with the user's own agent definitions or get picked up by the main agent's description heuristics. Prefixing with 'trellis-' makes them explicit Trellis agents."
|
|
219
|
+
}
|
|
220
|
+
],
|
|
221
|
+
"notes": "This is a breaking rename for sub-agent invocation. The migration is automatic for unmodified agent files (hash-matched via .trellis/.template-hashes.json). If you customized an agent, you'll see the usual `Modified by you` confirm prompt with diff — pick `[1] Overwrite` to adopt the new name, or `[3] Skip` if you've built your own workflow on the old names (in which case you must update `workflow.md`, any skill prompts, and hook constants yourself).\n\n`update.skip` is BYPASSED for this release (breaking + recommendMigrate both true, invoked with `--migrate`) to prevent a half-migrated state where workflow.md points to `trellis-implement` but your `.claude/agents/` still has `implement.md`.\n\nAction required: run `trellis update --migrate`."
|
|
222
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.6",
|
|
3
|
+
"description": "Fix codex trellis-check agent: change from read-only to workspace-write, rewrite developer_instructions to match other platforms' self-fix behavior per workflow.md contract.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(codex): `trellis-check.toml` was shipped with `sandbox_mode = \"read-only\"` and 'Read-only Trellis reviewer' framing, which directly contradicted `workflow.md` (the check agent is supposed to auto-fix issues it finds — all other platforms' check agents have Write+Edit tools). Codex users running `trellis-check` could report findings but not fix them, forcing a manual roundtrip through the main agent. Changed to `sandbox_mode = \"workspace-write\"` and rewrote developer_instructions to instruct self-fix + re-run lint/type-check until green, matching the behavior contract of every other platform.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure template-content fix for codex users. No path migrations — `trellis update` will flag `.codex/agents/trellis-check.toml` as a template update and either auto-update (if unmodified) or prompt for confirm (if you customized it)."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.7",
|
|
3
|
+
"description": "Fix opencode plugin loader incompatibility with OpenCode 1.2.x. Plugins shipped `export default { id, server: async (...) => hooks }` object shape; OpenCode iterates `Object.entries(mod)` and calls each export as a function (`packages/opencode/src/plugin/index.ts:90 — for ([_, fn] of Object.entries(mod)) await fn(input)`), which crashes with `TypeError: fn is not a function`. Fixed by changing all 3 plugins to the current factory-function shape: `export default async (input) => hooks`.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(opencode): plugins now use the factory-function export shape (`export default async ({ directory, client }) => hooks`) that OpenCode 1.2.x requires. The previous `{ id, server }` object shape crashed OpenCode on startup with `TypeError: fn3 is not a function. (In 'fn3(input)', 'fn3' is an instance of Object)` at `src/plugin/index.ts:90:28`, because OpenCode 1.2.x iterates every module export with `Object.entries(mod)` and calls each one as a function (`for ([_, fn] of Object.entries(mod)) await fn(input)`). The `server:` field was never unwrapped by the runtime. Affects all 3 plugins: `inject-subagent-context.js`, `inject-workflow-state.js`, `session-start.js`.\n Users on any trellis version that configured opencode — including 0.4.x stable — were affected as soon as they updated opencode to 1.2.x. Upgrade to this version to restore opencode startup.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Pure template-content fix for opencode users. No path migrations. `trellis update` auto-updates the 3 plugin files (unmodified copies) or prompts for confirm with diff (if you customized them)."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.0-beta.8",
|
|
3
|
+
"description": "Two Windows/opencode-user bug fixes: (1) add collectTemplates for opencode so `trellis update` actually delivers opencode plugin/agent/lib changes (was the only platform with no update tracking); (2) pin CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1 in .claude/settings.json so Bash tool cwd changes don't leak into hook invocations (fixes Windows ENOENT on hook paths after cd).",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(update): opencode templates now participate in `trellis update` hash tracking. Before this, `packages/cli/src/configurators/index.ts:184` had `opencode: { configure: configureOpenCode }` with no `collectTemplates` — every other configured platform (claude, cursor, codex, kiro, gemini, qoder, codebuddy, copilot, droid) had one. Result: when beta.7 fixed the opencode plugin factory-function shape, upgraders running `trellis update` would see every other platform update but `.opencode/plugins/*.js` remain untouched — still crashing with `TypeError: fn3 is not a function`. Any future opencode-side change had the same fate. Fixed by adding `collectOpenCodeTemplates()` that walks the opencode template directory and enumerates agents, plugins, lib, package.json plus common commands/skills. `configureOpenCode` was refactored to use the same enumeration, guaranteeing init and update produce byte-identical file sets.\n- fix(claude): `.claude/settings.json` now pins `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1` in its `env` block. Without this, a user who runs `cd frontend/` via Bash tool leaves cwd stuck in `frontend/`, and the next UserPromptSubmit hook (which resolves `python .claude/hooks/inject-workflow-state.py` relative to cwd) crashes on Windows with `[Errno 2] No such file or directory` because `.claude/` is at the real project root one level up. The env-var approach is read by Claude Code internally — works identically on Windows / macOS / Linux, doesn't depend on shell variable expansion (the alternative `$CLAUDE_PROJECT_DIR` approach is broken on Windows cmd/PowerShell per CC issue #6023).",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "If you're on any beta < 0.5.0-beta.7 with opencode configured, upgrading auto-updates the 3 plugin files + agents + lib + package.json to current templates (hash-matched). If you customized `.claude/settings.json`, you'll get the standard 'Modified by you' confirm prompt — pick `[1] Overwrite` to adopt the new env block, or `[3] Skip` and manually add `\"env\": { \"CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR\": \"1\" }` to your settings to get the Windows hook-path fix."
|
|
9
|
+
}
|