@pennixrv/trellis 0.6.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +235 -0
- package/README.md +168 -0
- package/bin/trellis.js +3 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +299 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/ablate.d.ts +14 -0
- package/dist/commands/ablate.d.ts.map +1 -0
- package/dist/commands/ablate.js +307 -0
- package/dist/commands/ablate.js.map +1 -0
- package/dist/commands/channel/adapters/claude.d.ts +53 -0
- package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
- package/dist/commands/channel/adapters/claude.js +225 -0
- package/dist/commands/channel/adapters/claude.js.map +1 -0
- package/dist/commands/channel/adapters/codex.d.ts +93 -0
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
- package/dist/commands/channel/adapters/codex.js +573 -0
- package/dist/commands/channel/adapters/codex.js.map +1 -0
- package/dist/commands/channel/adapters/index.d.ts +94 -0
- package/dist/commands/channel/adapters/index.d.ts.map +1 -0
- package/dist/commands/channel/adapters/index.js +116 -0
- package/dist/commands/channel/adapters/index.js.map +1 -0
- package/dist/commands/channel/adapters/types.d.ts +33 -0
- package/dist/commands/channel/adapters/types.d.ts.map +1 -0
- package/dist/commands/channel/adapters/types.js +2 -0
- package/dist/commands/channel/adapters/types.js.map +1 -0
- package/dist/commands/channel/agent-loader.d.ts +32 -0
- package/dist/commands/channel/agent-loader.d.ts.map +1 -0
- package/dist/commands/channel/agent-loader.js +158 -0
- package/dist/commands/channel/agent-loader.js.map +1 -0
- package/dist/commands/channel/context-loader.d.ts +26 -0
- package/dist/commands/channel/context-loader.d.ts.map +1 -0
- package/dist/commands/channel/context-loader.js +311 -0
- package/dist/commands/channel/context-loader.js.map +1 -0
- package/dist/commands/channel/context-trust.d.ts +31 -0
- package/dist/commands/channel/context-trust.d.ts.map +1 -0
- package/dist/commands/channel/context-trust.js +139 -0
- package/dist/commands/channel/context-trust.js.map +1 -0
- package/dist/commands/channel/context.d.ts +16 -0
- package/dist/commands/channel/context.d.ts.map +1 -0
- package/dist/commands/channel/context.js +83 -0
- package/dist/commands/channel/context.js.map +1 -0
- package/dist/commands/channel/create.d.ts +27 -0
- package/dist/commands/channel/create.d.ts.map +1 -0
- package/dist/commands/channel/create.js +39 -0
- package/dist/commands/channel/create.js.map +1 -0
- package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
- package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
- package/dist/commands/channel/dev-parse-trace.js +70 -0
- package/dist/commands/channel/dev-parse-trace.js.map +1 -0
- package/dist/commands/channel/guard.d.ts +150 -0
- package/dist/commands/channel/guard.d.ts.map +1 -0
- package/dist/commands/channel/guard.js +479 -0
- package/dist/commands/channel/guard.js.map +1 -0
- package/dist/commands/channel/index.d.ts +3 -0
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +535 -0
- package/dist/commands/channel/index.js.map +1 -0
- package/dist/commands/channel/interrupt.d.ts +10 -0
- package/dist/commands/channel/interrupt.d.ts.map +1 -0
- package/dist/commands/channel/interrupt.js +22 -0
- package/dist/commands/channel/interrupt.js.map +1 -0
- package/dist/commands/channel/kill.d.ts +7 -0
- package/dist/commands/channel/kill.d.ts.map +1 -0
- package/dist/commands/channel/kill.js +130 -0
- package/dist/commands/channel/kill.js.map +1 -0
- package/dist/commands/channel/list.d.ts +17 -0
- package/dist/commands/channel/list.d.ts.map +1 -0
- package/dist/commands/channel/list.js +233 -0
- package/dist/commands/channel/list.js.map +1 -0
- package/dist/commands/channel/messages.d.ts +15 -0
- package/dist/commands/channel/messages.d.ts.map +1 -0
- package/dist/commands/channel/messages.js +245 -0
- package/dist/commands/channel/messages.js.map +1 -0
- package/dist/commands/channel/rm.d.ts +27 -0
- package/dist/commands/channel/rm.d.ts.map +1 -0
- package/dist/commands/channel/rm.js +216 -0
- package/dist/commands/channel/rm.js.map +1 -0
- package/dist/commands/channel/run.d.ts +30 -0
- package/dist/commands/channel/run.d.ts.map +1 -0
- package/dist/commands/channel/run.js +134 -0
- package/dist/commands/channel/run.js.map +1 -0
- package/dist/commands/channel/send.d.ts +11 -0
- package/dist/commands/channel/send.d.ts.map +1 -0
- package/dist/commands/channel/send.js +24 -0
- package/dist/commands/channel/send.js.map +1 -0
- package/dist/commands/channel/spawn.d.ts +43 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -0
- package/dist/commands/channel/spawn.js +247 -0
- package/dist/commands/channel/spawn.js.map +1 -0
- package/dist/commands/channel/store/events.d.ts +22 -0
- package/dist/commands/channel/store/events.d.ts.map +1 -0
- package/dist/commands/channel/store/events.js +43 -0
- package/dist/commands/channel/store/events.js.map +1 -0
- package/dist/commands/channel/store/filter.d.ts +3 -0
- package/dist/commands/channel/store/filter.d.ts.map +1 -0
- package/dist/commands/channel/store/filter.js +2 -0
- package/dist/commands/channel/store/filter.js.map +1 -0
- package/dist/commands/channel/store/lock.d.ts +23 -0
- package/dist/commands/channel/store/lock.d.ts.map +1 -0
- package/dist/commands/channel/store/lock.js +99 -0
- package/dist/commands/channel/store/lock.js.map +1 -0
- package/dist/commands/channel/store/paths.d.ts +77 -0
- package/dist/commands/channel/store/paths.d.ts.map +1 -0
- package/dist/commands/channel/store/paths.js +272 -0
- package/dist/commands/channel/store/paths.js.map +1 -0
- package/dist/commands/channel/store/schema.d.ts +27 -0
- package/dist/commands/channel/store/schema.d.ts.map +1 -0
- package/dist/commands/channel/store/schema.js +34 -0
- package/dist/commands/channel/store/schema.js.map +1 -0
- package/dist/commands/channel/store/thread-state.d.ts +5 -0
- package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
- package/dist/commands/channel/store/thread-state.js +16 -0
- package/dist/commands/channel/store/thread-state.js.map +1 -0
- package/dist/commands/channel/store/watch.d.ts +19 -0
- package/dist/commands/channel/store/watch.d.ts.map +1 -0
- package/dist/commands/channel/store/watch.js +153 -0
- package/dist/commands/channel/store/watch.js.map +1 -0
- package/dist/commands/channel/supervisor/idle.d.ts +45 -0
- package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/idle.js +70 -0
- package/dist/commands/channel/supervisor/idle.js.map +1 -0
- package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
- package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/inbox.js +160 -0
- package/dist/commands/channel/supervisor/inbox.js.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.js +146 -0
- package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
- package/dist/commands/channel/supervisor/stdout.d.ts +71 -0
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/stdout.js +229 -0
- package/dist/commands/channel/supervisor/stdout.js.map +1 -0
- package/dist/commands/channel/supervisor/turns.d.ts +31 -0
- package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/turns.js +45 -0
- package/dist/commands/channel/supervisor/turns.js.map +1 -0
- package/dist/commands/channel/supervisor/warning.d.ts +48 -0
- package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/warning.js +77 -0
- package/dist/commands/channel/supervisor/warning.js.map +1 -0
- package/dist/commands/channel/supervisor.d.ts +91 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -0
- package/dist/commands/channel/supervisor.js +463 -0
- package/dist/commands/channel/supervisor.js.map +1 -0
- package/dist/commands/channel/text-body.d.ts +13 -0
- package/dist/commands/channel/text-body.d.ts.map +1 -0
- package/dist/commands/channel/text-body.js +47 -0
- package/dist/commands/channel/text-body.js.map +1 -0
- package/dist/commands/channel/threads.d.ts +39 -0
- package/dist/commands/channel/threads.d.ts.map +1 -0
- package/dist/commands/channel/threads.js +106 -0
- package/dist/commands/channel/threads.js.map +1 -0
- package/dist/commands/channel/title.d.ts +12 -0
- package/dist/commands/channel/title.d.ts.map +1 -0
- package/dist/commands/channel/title.js +24 -0
- package/dist/commands/channel/title.js.map +1 -0
- package/dist/commands/channel/wait.d.ts +17 -0
- package/dist/commands/channel/wait.d.ts.map +1 -0
- package/dist/commands/channel/wait.js +81 -0
- package/dist/commands/channel/wait.js.map +1 -0
- package/dist/commands/init.d.ts +71 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1603 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mem.d.ts +30 -0
- package/dist/commands/mem.d.ts.map +1 -0
- package/dist/commands/mem.js +423 -0
- package/dist/commands/mem.js.map +1 -0
- package/dist/commands/uninstall.d.ts +36 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +205 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +104 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +2163 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/upgrade.d.ts +28 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +84 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/workflow.d.ts +35 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +232 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/configurators/antigravity.d.ts +7 -0
- package/dist/configurators/antigravity.d.ts.map +1 -0
- package/dist/configurators/antigravity.js +11 -0
- package/dist/configurators/antigravity.js.map +1 -0
- package/dist/configurators/claude.d.ts +23 -0
- package/dist/configurators/claude.d.ts.map +1 -0
- package/dist/configurators/claude.js +123 -0
- package/dist/configurators/claude.js.map +1 -0
- package/dist/configurators/codebuddy.d.ts +10 -0
- package/dist/configurators/codebuddy.d.ts.map +1 -0
- package/dist/configurators/codebuddy.js +24 -0
- package/dist/configurators/codebuddy.js.map +1 -0
- package/dist/configurators/codex.d.ts +57 -0
- package/dist/configurators/codex.d.ts.map +1 -0
- package/dist/configurators/codex.js +170 -0
- package/dist/configurators/codex.js.map +1 -0
- package/dist/configurators/copilot.d.ts +14 -0
- package/dist/configurators/copilot.d.ts.map +1 -0
- package/dist/configurators/copilot.js +46 -0
- package/dist/configurators/copilot.js.map +1 -0
- package/dist/configurators/cursor.d.ts +10 -0
- package/dist/configurators/cursor.d.ts.map +1 -0
- package/dist/configurators/cursor.js +23 -0
- package/dist/configurators/cursor.js.map +1 -0
- package/dist/configurators/devin.d.ts +8 -0
- package/dist/configurators/devin.d.ts.map +1 -0
- package/dist/configurators/devin.js +12 -0
- package/dist/configurators/devin.js.map +1 -0
- package/dist/configurators/droid.d.ts +10 -0
- package/dist/configurators/droid.d.ts.map +1 -0
- package/dist/configurators/droid.js +24 -0
- package/dist/configurators/droid.js.map +1 -0
- package/dist/configurators/dsh.d.ts +29 -0
- package/dist/configurators/dsh.d.ts.map +1 -0
- package/dist/configurators/dsh.js +64 -0
- package/dist/configurators/dsh.js.map +1 -0
- package/dist/configurators/gemini.d.ts +18 -0
- package/dist/configurators/gemini.d.ts.map +1 -0
- package/dist/configurators/gemini.js +39 -0
- package/dist/configurators/gemini.js.map +1 -0
- package/dist/configurators/grok.d.ts +17 -0
- package/dist/configurators/grok.d.ts.map +1 -0
- package/dist/configurators/grok.js +38 -0
- package/dist/configurators/grok.js.map +1 -0
- package/dist/configurators/index.d.ts +68 -0
- package/dist/configurators/index.d.ts.map +1 -0
- package/dist/configurators/index.js +191 -0
- package/dist/configurators/index.js.map +1 -0
- package/dist/configurators/kilo.d.ts +7 -0
- package/dist/configurators/kilo.d.ts.map +1 -0
- package/dist/configurators/kilo.js +11 -0
- package/dist/configurators/kilo.js.map +1 -0
- package/dist/configurators/kimi.d.ts +26 -0
- package/dist/configurators/kimi.d.ts.map +1 -0
- package/dist/configurators/kimi.js +74 -0
- package/dist/configurators/kimi.js.map +1 -0
- package/dist/configurators/kiro.d.ts +11 -0
- package/dist/configurators/kiro.d.ts.map +1 -0
- package/dist/configurators/kiro.js +30 -0
- package/dist/configurators/kiro.js.map +1 -0
- package/dist/configurators/omp.d.ts +6 -0
- package/dist/configurators/omp.d.ts.map +1 -0
- package/dist/configurators/omp.js +28 -0
- package/dist/configurators/omp.js.map +1 -0
- package/dist/configurators/opencode.d.ts +5 -0
- package/dist/configurators/opencode.d.ts.map +1 -0
- package/dist/configurators/opencode.js +80 -0
- package/dist/configurators/opencode.js.map +1 -0
- package/dist/configurators/pi.d.ts +5 -0
- package/dist/configurators/pi.d.ts.map +1 -0
- package/dist/configurators/pi.js +39 -0
- package/dist/configurators/pi.js.map +1 -0
- package/dist/configurators/qoder.d.ts +12 -0
- package/dist/configurators/qoder.d.ts.map +1 -0
- package/dist/configurators/qoder.js +30 -0
- package/dist/configurators/qoder.js.map +1 -0
- package/dist/configurators/reasonix.d.ts +17 -0
- package/dist/configurators/reasonix.d.ts.map +1 -0
- package/dist/configurators/reasonix.js +37 -0
- package/dist/configurators/reasonix.js.map +1 -0
- package/dist/configurators/shared.d.ts +187 -0
- package/dist/configurators/shared.d.ts.map +1 -0
- package/dist/configurators/shared.js +589 -0
- package/dist/configurators/shared.js.map +1 -0
- package/dist/configurators/snow.d.ts +25 -0
- package/dist/configurators/snow.d.ts.map +1 -0
- package/dist/configurators/snow.js +69 -0
- package/dist/configurators/snow.js.map +1 -0
- package/dist/configurators/trae.d.ts +16 -0
- package/dist/configurators/trae.d.ts.map +1 -0
- package/dist/configurators/trae.js +34 -0
- package/dist/configurators/trae.js.map +1 -0
- package/dist/configurators/workflow.d.ts +51 -0
- package/dist/configurators/workflow.d.ts.map +1 -0
- package/dist/configurators/workflow.js +210 -0
- package/dist/configurators/workflow.js.map +1 -0
- package/dist/configurators/zcode.d.ts +25 -0
- package/dist/configurators/zcode.d.ts.map +1 -0
- package/dist/configurators/zcode.js +67 -0
- package/dist/configurators/zcode.js.map +1 -0
- package/dist/constants/paths.d.ts +74 -0
- package/dist/constants/paths.d.ts.map +1 -0
- package/dist/constants/paths.js +83 -0
- package/dist/constants/paths.js.map +1 -0
- package/dist/constants/version.d.ts +9 -0
- package/dist/constants/version.d.ts.map +1 -0
- package/dist/constants/version.js +15 -0
- package/dist/constants/version.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/index.d.ts +62 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +187 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifests/0.1.9.json +30 -0
- package/dist/migrations/manifests/0.2.0.json +49 -0
- package/dist/migrations/manifests/0.2.12.json +9 -0
- package/dist/migrations/manifests/0.2.13.json +9 -0
- package/dist/migrations/manifests/0.2.14.json +175 -0
- package/dist/migrations/manifests/0.2.15.json +33 -0
- package/dist/migrations/manifests/0.3.0-beta.0.json +297 -0
- package/dist/migrations/manifests/0.3.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.15.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.7.json +11 -0
- package/dist/migrations/manifests/0.3.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.3.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.1.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.2.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.3.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.4.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.5.json +9 -0
- package/dist/migrations/manifests/0.3.0-rc.6.json +9 -0
- package/dist/migrations/manifests/0.3.0.json +11 -0
- package/dist/migrations/manifests/0.3.1.json +9 -0
- package/dist/migrations/manifests/0.3.10.json +9 -0
- package/dist/migrations/manifests/0.3.2.json +9 -0
- package/dist/migrations/manifests/0.3.3.json +9 -0
- package/dist/migrations/manifests/0.3.4.json +21 -0
- package/dist/migrations/manifests/0.3.5.json +9 -0
- package/dist/migrations/manifests/0.3.6.json +9 -0
- package/dist/migrations/manifests/0.3.7.json +9 -0
- package/dist/migrations/manifests/0.3.8.json +9 -0
- package/dist/migrations/manifests/0.3.9.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.1.json +228 -0
- package/dist/migrations/manifests/0.4.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.8.json +34 -0
- package/dist/migrations/manifests/0.4.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.4.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.4.0-rc.1.json +9 -0
- package/dist/migrations/manifests/0.4.0.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
- package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.15.json +116 -0
- package/dist/migrations/manifests/0.5.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.17.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.18.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.19.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
- package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
- package/dist/migrations/manifests/0.5.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.1.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.2.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.3.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.4.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.5.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.6.json +9 -0
- package/dist/migrations/manifests/0.5.0-rc.7.json +9 -0
- package/dist/migrations/manifests/0.5.0.json +9 -0
- package/dist/migrations/manifests/0.5.1.json +9 -0
- package/dist/migrations/manifests/0.5.10.json +9 -0
- package/dist/migrations/manifests/0.5.11.json +16 -0
- package/dist/migrations/manifests/0.5.12.json +9 -0
- package/dist/migrations/manifests/0.5.13.json +9 -0
- package/dist/migrations/manifests/0.5.14.json +9 -0
- package/dist/migrations/manifests/0.5.15.json +9 -0
- package/dist/migrations/manifests/0.5.16.json +9 -0
- package/dist/migrations/manifests/0.5.17.json +9 -0
- package/dist/migrations/manifests/0.5.18.json +9 -0
- package/dist/migrations/manifests/0.5.19.json +9 -0
- package/dist/migrations/manifests/0.5.2.json +9 -0
- package/dist/migrations/manifests/0.5.3.json +9 -0
- package/dist/migrations/manifests/0.5.4.json +9 -0
- package/dist/migrations/manifests/0.5.5.json +9 -0
- package/dist/migrations/manifests/0.5.6.json +9 -0
- package/dist/migrations/manifests/0.5.7.json +16 -0
- package/dist/migrations/manifests/0.5.8.json +9 -0
- package/dist/migrations/manifests/0.5.9.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.0.json +16 -0
- package/dist/migrations/manifests/0.6.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.15.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.17.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.18.json +16 -0
- package/dist/migrations/manifests/0.6.0-beta.19.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.20.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.21.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.22.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.23.json +88 -0
- package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.6.json +16 -0
- package/dist/migrations/manifests/0.6.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.6.0-rc.0.json +9 -0
- package/dist/migrations/manifests/0.6.0.json +1 -0
- package/dist/migrations/manifests/0.6.1.json +9 -0
- package/dist/migrations/manifests/0.6.10.json +9 -0
- package/dist/migrations/manifests/0.6.11.json +9 -0
- package/dist/migrations/manifests/0.6.12.json +9 -0
- package/dist/migrations/manifests/0.6.13.json +9 -0
- package/dist/migrations/manifests/0.6.14.json +9 -0
- package/dist/migrations/manifests/0.6.15.json +9 -0
- package/dist/migrations/manifests/0.6.16.json +9 -0
- package/dist/migrations/manifests/0.6.17.json +9 -0
- package/dist/migrations/manifests/0.6.2.json +9 -0
- package/dist/migrations/manifests/0.6.3.json +24 -0
- package/dist/migrations/manifests/0.6.4.json +9 -0
- package/dist/migrations/manifests/0.6.5.json +9 -0
- package/dist/migrations/manifests/0.6.6.json +17 -0
- package/dist/migrations/manifests/0.6.7.json +9 -0
- package/dist/migrations/manifests/0.6.8.json +17 -0
- package/dist/migrations/manifests/0.6.9.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.0.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.3.json +9 -0
- package/dist/templates/claude/agents/trellis-check.md +115 -0
- package/dist/templates/claude/agents/trellis-implement.md +110 -0
- package/dist/templates/claude/agents/trellis-research.md +137 -0
- package/dist/templates/claude/hooks/statusline.py +332 -0
- package/dist/templates/claude/index.d.ts +31 -0
- package/dist/templates/claude/index.d.ts.map +1 -0
- package/dist/templates/claude/index.js +57 -0
- package/dist/templates/claude/index.js.map +1 -0
- package/dist/templates/claude/settings.json +73 -0
- package/dist/templates/codebuddy/agents/trellis-check.md +115 -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 +69 -0
- package/dist/templates/codex/agents/trellis-check.toml +56 -0
- package/dist/templates/codex/agents/trellis-implement.toml +37 -0
- package/dist/templates/codex/agents/trellis-research.toml +78 -0
- package/dist/templates/codex/config.toml +39 -0
- package/dist/templates/codex/hooks/session-start.py +552 -0
- package/dist/templates/codex/hooks.json +27 -0
- package/dist/templates/codex/index.d.ts +35 -0
- package/dist/templates/codex/index.d.ts.map +1 -0
- package/dist/templates/codex/index.js +67 -0
- package/dist/templates/codex/index.js.map +1 -0
- package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +67 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +480 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +233 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +226 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +276 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +128 -0
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +85 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +56 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +123 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +90 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/bundled-skills.md +159 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-channel.md +69 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +130 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +72 -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 +112 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +86 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +81 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +65 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +93 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/SKILL.md +41 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/mcp-setup.md +90 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/repository-analysis.md +59 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-task-planning.md +61 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-writing.md +70 -0
- package/dist/templates/common/commands/continue.md +56 -0
- package/dist/templates/common/commands/finish-work.md +66 -0
- package/dist/templates/common/commands/start.md +59 -0
- package/dist/templates/common/index.d.ts +48 -0
- package/dist/templates/common/index.d.ts.map +1 -0
- package/dist/templates/common/index.js +104 -0
- package/dist/templates/common/index.js.map +1 -0
- package/dist/templates/common/skills/before-dev.md +46 -0
- package/dist/templates/common/skills/brainstorm.md +195 -0
- package/dist/templates/common/skills/break-loop.md +184 -0
- package/dist/templates/common/skills/check.md +106 -0
- package/dist/templates/common/skills/update-spec.md +351 -0
- package/dist/templates/copilot/copilot-instructions.md +11 -0
- package/dist/templates/copilot/hooks/session-start.py +548 -0
- package/dist/templates/copilot/hooks.json +19 -0
- package/dist/templates/copilot/index.d.ts +28 -0
- package/dist/templates/copilot/index.d.ts.map +1 -0
- package/dist/templates/copilot/index.js +61 -0
- package/dist/templates/copilot/index.js.map +1 -0
- package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +156 -0
- package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
- package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +170 -0
- package/dist/templates/copilot/prompts/check.prompt.md +110 -0
- package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
- package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
- package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
- package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
- package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
- package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
- package/dist/templates/copilot/prompts/start.prompt.md +63 -0
- package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
- package/dist/templates/cursor/agents/trellis-check.md +114 -0
- package/dist/templates/cursor/agents/trellis-implement.md +109 -0
- package/dist/templates/cursor/agents/trellis-research.md +136 -0
- package/dist/templates/cursor/hooks.json +24 -0
- package/dist/templates/cursor/index.d.ts +13 -0
- package/dist/templates/cursor/index.d.ts.map +1 -0
- package/dist/templates/cursor/index.js +13 -0
- package/dist/templates/cursor/index.js.map +1 -0
- package/dist/templates/droid/droids/trellis-check.md +107 -0
- package/dist/templates/droid/droids/trellis-implement.md +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 +69 -0
- package/dist/templates/dsh/DSH.md +56 -0
- package/dist/templates/dsh/index.d.ts +21 -0
- package/dist/templates/dsh/index.d.ts.map +1 -0
- package/dist/templates/dsh/index.js +25 -0
- package/dist/templates/dsh/index.js.map +1 -0
- package/dist/templates/extract.d.ts +40 -0
- package/dist/templates/extract.d.ts.map +1 -0
- package/dist/templates/extract.js +106 -0
- package/dist/templates/extract.js.map +1 -0
- package/dist/templates/gemini/agents/trellis-check.md +107 -0
- package/dist/templates/gemini/agents/trellis-implement.md +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 +40 -0
- package/dist/templates/grok/agents/trellis-check.md +105 -0
- package/dist/templates/grok/agents/trellis-implement.md +116 -0
- package/dist/templates/grok/agents/trellis-research.md +146 -0
- package/dist/templates/grok/index.d.ts +16 -0
- package/dist/templates/grok/index.d.ts.map +1 -0
- package/dist/templates/grok/index.js +19 -0
- package/dist/templates/grok/index.js.map +1 -0
- package/dist/templates/kimi/agents/trellis-check.md +103 -0
- package/dist/templates/kimi/agents/trellis-implement.md +115 -0
- package/dist/templates/kimi/agents/trellis-research.md +144 -0
- package/dist/templates/kimi/index.d.ts +20 -0
- package/dist/templates/kimi/index.d.ts.map +1 -0
- package/dist/templates/kimi/index.js +23 -0
- package/dist/templates/kimi/index.js.map +1 -0
- package/dist/templates/kiro/agents/trellis-check.json +26 -0
- package/dist/templates/kiro/agents/trellis-implement.json +26 -0
- package/dist/templates/kiro/agents/trellis-research.json +30 -0
- package/dist/templates/kiro/agents/trellis.json +34 -0
- package/dist/templates/kiro/hooks/trellis-workflow-state.kiro.hook +14 -0
- package/dist/templates/kiro/index.d.ts +32 -0
- package/dist/templates/kiro/index.d.ts.map +1 -0
- package/dist/templates/kiro/index.js +28 -0
- package/dist/templates/kiro/index.js.map +1 -0
- package/dist/templates/markdown/agents.md +21 -0
- package/dist/templates/markdown/gitignore.txt +15 -0
- package/dist/templates/markdown/index.d.ts +27 -0
- package/dist/templates/markdown/index.d.ts.map +1 -0
- package/dist/templates/markdown/index.js +52 -0
- package/dist/templates/markdown/index.js.map +1 -0
- package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
- package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
- package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
- package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +327 -0
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +633 -0
- package/dist/templates/markdown/spec/guides/index.md.txt +97 -0
- package/dist/templates/markdown/workspace-index.md +125 -0
- package/dist/templates/markdown/worktree.yaml.txt +58 -0
- package/dist/templates/omp/agents/trellis-check.md +41 -0
- package/dist/templates/omp/agents/trellis-implement.md +45 -0
- package/dist/templates/omp/agents/trellis-research.md +30 -0
- package/dist/templates/omp/extensions/trellis/index.ts.txt +1105 -0
- package/dist/templates/omp/index.d.ts +4 -0
- package/dist/templates/omp/index.d.ts.map +1 -0
- package/dist/templates/omp/index.js +9 -0
- package/dist/templates/omp/index.js.map +1 -0
- package/dist/templates/opencode/agents/trellis-check.md +122 -0
- package/dist/templates/opencode/agents/trellis-implement.md +118 -0
- package/dist/templates/opencode/agents/trellis-research.md +145 -0
- package/dist/templates/opencode/lib/context-visibility.js +148 -0
- package/dist/templates/opencode/lib/session-utils.js +527 -0
- package/dist/templates/opencode/lib/trellis-context.js +627 -0
- package/dist/templates/opencode/package.json +5 -0
- package/dist/templates/opencode/plugins/inject-subagent-context.js +569 -0
- package/dist/templates/opencode/plugins/inject-workflow-state.js +240 -0
- package/dist/templates/opencode/plugins/session-start.js +65 -0
- package/dist/templates/pi/agents/trellis-check.md +37 -0
- package/dist/templates/pi/agents/trellis-implement.md +42 -0
- package/dist/templates/pi/agents/trellis-research.md +25 -0
- package/dist/templates/pi/extensions/trellis/index.ts.txt +2027 -0
- package/dist/templates/pi/index.d.ts +5 -0
- package/dist/templates/pi/index.d.ts.map +1 -0
- package/dist/templates/pi/index.js +12 -0
- package/dist/templates/pi/index.js.map +1 -0
- package/dist/templates/pi/settings.json +9 -0
- package/dist/templates/qoder/agents/trellis-check.md +108 -0
- package/dist/templates/qoder/agents/trellis-implement.md +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 +59 -0
- package/dist/templates/reasonix/agents/trellis-check.md +36 -0
- package/dist/templates/reasonix/agents/trellis-implement.md +41 -0
- package/dist/templates/reasonix/index.d.ts +13 -0
- package/dist/templates/reasonix/index.d.ts.map +1 -0
- package/dist/templates/reasonix/index.js +16 -0
- package/dist/templates/reasonix/index.js.map +1 -0
- package/dist/templates/shared-hooks/index.d.ts +77 -0
- package/dist/templates/shared-hooks/index.d.ts.map +1 -0
- package/dist/templates/shared-hooks/index.js +140 -0
- package/dist/templates/shared-hooks/index.js.map +1 -0
- package/dist/templates/shared-hooks/inject-shell-session-context.py +292 -0
- package/dist/templates/shared-hooks/inject-subagent-context.py +1212 -0
- package/dist/templates/shared-hooks/inject-workflow-state.py +488 -0
- package/dist/templates/shared-hooks/session-start.py +949 -0
- package/dist/templates/snow/SNOW.md +86 -0
- package/dist/templates/snow/agents/trellis-check.md +135 -0
- package/dist/templates/snow/agents/trellis-implement.md +153 -0
- package/dist/templates/snow/agents/trellis-research.md +114 -0
- package/dist/templates/snow/hooks/beforeSubAgentStart.json +15 -0
- package/dist/templates/snow/hooks/onSessionStart.json +15 -0
- package/dist/templates/snow/hooks/onUserMessage.json +15 -0
- package/dist/templates/snow/hooks/write-trellis-context.py +644 -0
- package/dist/templates/snow/index.d.ts +26 -0
- package/dist/templates/snow/index.d.ts.map +1 -0
- package/dist/templates/snow/index.js +36 -0
- package/dist/templates/snow/index.js.map +1 -0
- package/dist/templates/template-utils.d.ts +26 -0
- package/dist/templates/template-utils.d.ts.map +1 -0
- package/dist/templates/template-utils.js +64 -0
- package/dist/templates/template-utils.js.map +1 -0
- package/dist/templates/trae/agents/trellis-check.md +108 -0
- package/dist/templates/trae/agents/trellis-implement.md +103 -0
- package/dist/templates/trae/agents/trellis-research.md +137 -0
- package/dist/templates/trae/hooks.json +39 -0
- package/dist/templates/trae/index.d.ts +15 -0
- package/dist/templates/trae/index.d.ts.map +1 -0
- package/dist/templates/trae/index.js +15 -0
- package/dist/templates/trae/index.js.map +1 -0
- package/dist/templates/trellis/agents/check.md +70 -0
- package/dist/templates/trellis/agents/implement.md +71 -0
- package/dist/templates/trellis/config.yaml +158 -0
- package/dist/templates/trellis/gitattributes.txt +9 -0
- package/dist/templates/trellis/gitignore.txt +32 -0
- package/dist/templates/trellis/index.d.ts +67 -0
- package/dist/templates/trellis/index.d.ts.map +1 -0
- package/dist/templates/trellis/index.js +121 -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 +1545 -0
- package/dist/templates/trellis/scripts/common/__init__.py +94 -0
- package/dist/templates/trellis/scripts/common/active_task.py +857 -0
- package/dist/templates/trellis/scripts/common/cli_adapter.py +950 -0
- package/dist/templates/trellis/scripts/common/config.py +482 -0
- package/dist/templates/trellis/scripts/common/developer.py +192 -0
- package/dist/templates/trellis/scripts/common/git.py +203 -0
- package/dist/templates/trellis/scripts/common/git_context.py +106 -0
- package/dist/templates/trellis/scripts/common/io.py +160 -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 +543 -0
- package/dist/templates/trellis/scripts/common/safe_commit.py +322 -0
- package/dist/templates/trellis/scripts/common/session_context.py +892 -0
- package/dist/templates/trellis/scripts/common/task_context.py +470 -0
- package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
- package/dist/templates/trellis/scripts/common/task_store.py +1874 -0
- package/dist/templates/trellis/scripts/common/task_utils.py +498 -0
- package/dist/templates/trellis/scripts/common/tasks.py +122 -0
- package/dist/templates/trellis/scripts/common/trellis_config.py +239 -0
- package/dist/templates/trellis/scripts/common/types.py +110 -0
- package/dist/templates/trellis/scripts/common/workflow_phase.py +242 -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 +801 -0
- package/dist/templates/trellis/tasks/.gitkeep +0 -0
- package/dist/templates/trellis/workflow.md +721 -0
- package/dist/templates/zcode/agents/trellis-check.md +109 -0
- package/dist/templates/zcode/agents/trellis-implement.md +111 -0
- package/dist/templates/zcode/agents/trellis-research.md +133 -0
- package/dist/templates/zcode/config.json +52 -0
- package/dist/templates/zcode/index.d.ts +25 -0
- package/dist/templates/zcode/index.d.ts.map +1 -0
- package/dist/templates/zcode/index.js +29 -0
- package/dist/templates/zcode/index.js.map +1 -0
- package/dist/types/ai-tools.d.ts +105 -0
- package/dist/types/ai-tools.d.ts.map +1 -0
- package/dist/types/ai-tools.js +502 -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/ablation-store.d.ts +123 -0
- package/dist/utils/ablation-store.d.ts.map +1 -0
- package/dist/utils/ablation-store.js +749 -0
- package/dist/utils/ablation-store.js.map +1 -0
- package/dist/utils/agent-refs.d.ts +31 -0
- package/dist/utils/agent-refs.d.ts.map +1 -0
- package/dist/utils/agent-refs.js +63 -0
- package/dist/utils/agent-refs.js.map +1 -0
- package/dist/utils/atomic-write.d.ts +12 -0
- package/dist/utils/atomic-write.d.ts.map +1 -0
- package/dist/utils/atomic-write.js +30 -0
- package/dist/utils/atomic-write.js.map +1 -0
- package/dist/utils/compare-versions.d.ts +12 -0
- package/dist/utils/compare-versions.d.ts.map +1 -0
- package/dist/utils/compare-versions.js +86 -0
- package/dist/utils/compare-versions.js.map +1 -0
- package/dist/utils/cwd-guard.d.ts +38 -0
- package/dist/utils/cwd-guard.d.ts.map +1 -0
- package/dist/utils/cwd-guard.js +62 -0
- package/dist/utils/cwd-guard.js.map +1 -0
- package/dist/utils/file-writer.d.ts +36 -0
- package/dist/utils/file-writer.d.ts.map +1 -0
- package/dist/utils/file-writer.js +204 -0
- package/dist/utils/file-writer.js.map +1 -0
- package/dist/utils/managed-paths.d.ts +5 -0
- package/dist/utils/managed-paths.d.ts.map +1 -0
- package/dist/utils/managed-paths.js +51 -0
- package/dist/utils/managed-paths.js.map +1 -0
- package/dist/utils/managed-removal.d.ts +74 -0
- package/dist/utils/managed-removal.d.ts.map +1 -0
- package/dist/utils/managed-removal.js +270 -0
- package/dist/utils/managed-removal.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 +135 -0
- package/dist/utils/manifest-prune.js.map +1 -0
- package/dist/utils/posix.d.ts +13 -0
- package/dist/utils/posix.d.ts.map +1 -0
- package/dist/utils/posix.js +15 -0
- package/dist/utils/posix.js.map +1 -0
- package/dist/utils/project-detector.d.ts +46 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +666 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/dist/utils/proxy.d.ts +25 -0
- package/dist/utils/proxy.d.ts.map +1 -0
- package/dist/utils/proxy.js +60 -0
- package/dist/utils/proxy.js.map +1 -0
- package/dist/utils/registry-config.d.ts +7 -0
- package/dist/utils/registry-config.d.ts.map +1 -0
- package/dist/utils/registry-config.js +172 -0
- package/dist/utils/registry-config.js.map +1 -0
- package/dist/utils/task-json.d.ts +13 -0
- package/dist/utils/task-json.d.ts.map +1 -0
- package/dist/utils/task-json.js +12 -0
- package/dist/utils/task-json.js.map +1 -0
- package/dist/utils/template-fetcher.d.ts +161 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -0
- package/dist/utils/template-fetcher.js +994 -0
- package/dist/utils/template-fetcher.js.map +1 -0
- package/dist/utils/template-hash.d.ts +127 -0
- package/dist/utils/template-hash.d.ts.map +1 -0
- package/dist/utils/template-hash.js +335 -0
- package/dist/utils/template-hash.js.map +1 -0
- package/dist/utils/uninstall-scrubbers.d.ts +66 -0
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
- package/dist/utils/uninstall-scrubbers.js +417 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -0
- package/dist/utils/workflow-resolver.d.ts +86 -0
- package/dist/utils/workflow-resolver.d.ts.map +1 -0
- package/dist/utils/workflow-resolver.js +265 -0
- package/dist/utils/workflow-resolver.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Standalone reader for .trellis/config.yaml.
|
|
4
|
+
|
|
5
|
+
Owns the minimal YAML parser used across Trellis. ``common.config`` imports
|
|
6
|
+
``parse_simple_yaml`` from here rather than keeping its own copy: this module
|
|
7
|
+
imports nothing from the package, so hooks can load it as a single file, and
|
|
8
|
+
one parser cannot drift from another. Returns an empty dict on
|
|
9
|
+
missing/malformed files so callers stay simple.
|
|
10
|
+
|
|
11
|
+
Supported subset: ``key: value`` scalars (everything is a string), nested
|
|
12
|
+
mappings by indentation, ``- `` lists of scalars, ``#`` comments (whole-line
|
|
13
|
+
and inline outside quotes), and one layer of matching surrounding quotes.
|
|
14
|
+
Constructs outside that subset — block scalars, anchors, aliases, merge keys,
|
|
15
|
+
flow collections, and mappings nested inside a list — are reported on stderr
|
|
16
|
+
and skipped rather than parsed into a plausible-looking wrong value.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
from __future__ import annotations
|
|
20
|
+
|
|
21
|
+
import sys
|
|
22
|
+
from pathlib import Path
|
|
23
|
+
from typing import Optional
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
CONFIG_REL_PATH = ".trellis/config.yaml"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _unquote(value: str) -> str:
|
|
30
|
+
if len(value) >= 2 and value[0] == value[-1] and value[0] in ('"', "'"):
|
|
31
|
+
return value[1:-1]
|
|
32
|
+
return value
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _strip_inline_comment(value: str) -> str:
|
|
36
|
+
"""Strip ` # …` inline comments while preserving `#` inside quoted strings.
|
|
37
|
+
|
|
38
|
+
YAML treats ` #` (space-hash) as a comment opener; bare `#` inside a token
|
|
39
|
+
is part of the value. Quoted strings are immune.
|
|
40
|
+
"""
|
|
41
|
+
in_quote: str | None = None
|
|
42
|
+
for idx, ch in enumerate(value):
|
|
43
|
+
if in_quote:
|
|
44
|
+
if ch == in_quote:
|
|
45
|
+
in_quote = None
|
|
46
|
+
continue
|
|
47
|
+
if ch in ('"', "'"):
|
|
48
|
+
in_quote = ch
|
|
49
|
+
continue
|
|
50
|
+
if ch == "#" and (idx == 0 or value[idx - 1].isspace()):
|
|
51
|
+
return value[:idx]
|
|
52
|
+
return value
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _next_content_line(lines: list[str], start: int) -> tuple[int, str]:
|
|
56
|
+
i = start
|
|
57
|
+
while i < len(lines):
|
|
58
|
+
stripped = lines[i].strip()
|
|
59
|
+
if stripped and not stripped.startswith("#"):
|
|
60
|
+
return i, lines[i]
|
|
61
|
+
i += 1
|
|
62
|
+
return i, ""
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _warn_unsupported(source: str, lineno: int, line: str, reason: str) -> None:
|
|
66
|
+
"""Report a YAML construct this parser cannot represent, and move on."""
|
|
67
|
+
print(
|
|
68
|
+
f"[WARN] {source}:{lineno}: {reason}; ignoring: {line.strip()}",
|
|
69
|
+
file=sys.stderr,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _is_block_scalar(value: str) -> bool:
|
|
74
|
+
"""True for ``|``, ``>`` and their chomping/indent indicators (``|-``, ``>2``)."""
|
|
75
|
+
if not value or value[0] not in ("|", ">"):
|
|
76
|
+
return False
|
|
77
|
+
return all(ch in "+-0123456789" for ch in value[1:])
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _unsupported_value(key: str, value: str) -> str | None:
|
|
81
|
+
"""Name the unsupported construct in an unquoted scalar value, else None.
|
|
82
|
+
|
|
83
|
+
Only unquoted values are inspected: ``cmd: "[a] | b"`` is a string the user
|
|
84
|
+
wrote deliberately, while a bare ``notes: |`` or ``base: *anchor`` would
|
|
85
|
+
otherwise be stored as the literal marker with the real content dropped.
|
|
86
|
+
"""
|
|
87
|
+
if key == "<<":
|
|
88
|
+
return "YAML merge keys are not supported"
|
|
89
|
+
if _is_block_scalar(value):
|
|
90
|
+
return "block scalars are not supported"
|
|
91
|
+
if value.startswith("&"):
|
|
92
|
+
return "YAML anchors are not supported"
|
|
93
|
+
if value.startswith("*"):
|
|
94
|
+
return "YAML aliases are not supported"
|
|
95
|
+
if value.startswith("["):
|
|
96
|
+
return "flow sequences are not supported (use `- ` list items)"
|
|
97
|
+
if value.startswith("{"):
|
|
98
|
+
return "flow mappings are not supported (use an indented mapping)"
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _skip_indented_body(lines: list[str], start: int, indent: int) -> int:
|
|
103
|
+
"""Skip the continuation lines of a rejected key (block scalar body etc.)."""
|
|
104
|
+
i = start
|
|
105
|
+
while i < len(lines):
|
|
106
|
+
stripped = lines[i].strip()
|
|
107
|
+
if stripped and len(lines[i]) - len(lines[i].lstrip()) <= indent:
|
|
108
|
+
break
|
|
109
|
+
i += 1
|
|
110
|
+
return i
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def _parse_yaml_block(
|
|
114
|
+
lines: list[str], start: int, min_indent: int, target: dict, source: str
|
|
115
|
+
) -> int:
|
|
116
|
+
i = start
|
|
117
|
+
current_list: list | None = None
|
|
118
|
+
# Indent of the key that opened current_list, so a deeper `key: value`
|
|
119
|
+
# can be recognized as a mapping inside that list.
|
|
120
|
+
list_owner_indent = 0
|
|
121
|
+
|
|
122
|
+
while i < len(lines):
|
|
123
|
+
line = lines[i]
|
|
124
|
+
stripped = line.strip()
|
|
125
|
+
|
|
126
|
+
if not stripped or stripped.startswith("#"):
|
|
127
|
+
i += 1
|
|
128
|
+
continue
|
|
129
|
+
|
|
130
|
+
indent = len(line) - len(line.lstrip())
|
|
131
|
+
if indent < min_indent:
|
|
132
|
+
break
|
|
133
|
+
|
|
134
|
+
if stripped.startswith("- "):
|
|
135
|
+
if current_list is not None:
|
|
136
|
+
current_list.append(_unquote(stripped[2:].strip()))
|
|
137
|
+
i += 1
|
|
138
|
+
elif ":" in stripped:
|
|
139
|
+
if current_list is not None and indent > list_owner_indent:
|
|
140
|
+
# `- name: cli` / ` path: x`: the second key belongs to a
|
|
141
|
+
# mapping inside the list. Storing it would hoist it into the
|
|
142
|
+
# parent dict as a sibling of the list — a nested key silently
|
|
143
|
+
# becoming a root key.
|
|
144
|
+
_warn_unsupported(
|
|
145
|
+
source,
|
|
146
|
+
i + 1,
|
|
147
|
+
line,
|
|
148
|
+
"mappings inside a list are not supported",
|
|
149
|
+
)
|
|
150
|
+
i += 1
|
|
151
|
+
continue
|
|
152
|
+
|
|
153
|
+
key, _, value = stripped.partition(":")
|
|
154
|
+
key = key.strip()
|
|
155
|
+
value = _strip_inline_comment(value).strip()
|
|
156
|
+
was_quoted = len(value) >= 2 and value[0] == value[-1] and value[0] in ('"', "'")
|
|
157
|
+
|
|
158
|
+
if not was_quoted:
|
|
159
|
+
reason = _unsupported_value(key, value)
|
|
160
|
+
if reason is not None:
|
|
161
|
+
_warn_unsupported(source, i + 1, line, reason)
|
|
162
|
+
current_list = None
|
|
163
|
+
i = _skip_indented_body(lines, i + 1, indent)
|
|
164
|
+
continue
|
|
165
|
+
|
|
166
|
+
value = _unquote(value)
|
|
167
|
+
current_list = None
|
|
168
|
+
|
|
169
|
+
if value or was_quoted:
|
|
170
|
+
target[key] = value
|
|
171
|
+
i += 1
|
|
172
|
+
else:
|
|
173
|
+
next_i, next_line = _next_content_line(lines, i + 1)
|
|
174
|
+
if next_i >= len(lines):
|
|
175
|
+
target[key] = {}
|
|
176
|
+
i = next_i
|
|
177
|
+
elif next_line.strip().startswith("- "):
|
|
178
|
+
current_list = []
|
|
179
|
+
list_owner_indent = indent
|
|
180
|
+
target[key] = current_list
|
|
181
|
+
i += 1
|
|
182
|
+
else:
|
|
183
|
+
next_indent = len(next_line) - len(next_line.lstrip())
|
|
184
|
+
if next_indent > indent:
|
|
185
|
+
nested: dict = {}
|
|
186
|
+
target[key] = nested
|
|
187
|
+
i = _parse_yaml_block(lines, i + 1, next_indent, nested, source)
|
|
188
|
+
else:
|
|
189
|
+
target[key] = {}
|
|
190
|
+
i += 1
|
|
191
|
+
else:
|
|
192
|
+
i += 1
|
|
193
|
+
|
|
194
|
+
return i
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def parse_simple_yaml(content: str, source: str = "config.yaml") -> dict:
|
|
198
|
+
"""Parse simple YAML with nested dict support (no dependencies).
|
|
199
|
+
|
|
200
|
+
Supports:
|
|
201
|
+
- key: value (string)
|
|
202
|
+
- key: (followed by list items)
|
|
203
|
+
- item1
|
|
204
|
+
- item2
|
|
205
|
+
- key: (followed by nested dict)
|
|
206
|
+
nested_key: value
|
|
207
|
+
nested_key2:
|
|
208
|
+
- item
|
|
209
|
+
|
|
210
|
+
Uses indentation to detect nesting (2+ spaces deeper = child). Every value
|
|
211
|
+
is a string; consumers coerce. Unsupported constructs are reported on
|
|
212
|
+
stderr against ``source`` and skipped — see the module docstring.
|
|
213
|
+
|
|
214
|
+
Args:
|
|
215
|
+
content: YAML content string.
|
|
216
|
+
source: Label used in warnings, normally the config file path.
|
|
217
|
+
|
|
218
|
+
Returns:
|
|
219
|
+
Parsed dict (values can be str, list[str], or dict).
|
|
220
|
+
"""
|
|
221
|
+
lines = content.splitlines()
|
|
222
|
+
result: dict = {}
|
|
223
|
+
_parse_yaml_block(lines, 0, 0, result, source)
|
|
224
|
+
return result
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def read_trellis_config(repo_root: Optional[Path] = None) -> dict:
|
|
228
|
+
"""Read .trellis/config.yaml. Returns {} on missing or malformed file."""
|
|
229
|
+
root = repo_root or Path.cwd()
|
|
230
|
+
config_file = root / CONFIG_REL_PATH
|
|
231
|
+
try:
|
|
232
|
+
content = config_file.read_text(encoding="utf-8")
|
|
233
|
+
except (FileNotFoundError, OSError):
|
|
234
|
+
return {}
|
|
235
|
+
try:
|
|
236
|
+
parsed = parse_simple_yaml(content, source=str(config_file))
|
|
237
|
+
except Exception:
|
|
238
|
+
return {}
|
|
239
|
+
return parsed if isinstance(parsed, dict) else {}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Core type definitions for Trellis task data.
|
|
3
|
+
|
|
4
|
+
Provides:
|
|
5
|
+
TaskData — TypedDict for task.json shape (read-path type hints only)
|
|
6
|
+
TaskInfo — Frozen dataclass for loaded task (the public API type)
|
|
7
|
+
AgentRecord — TypedDict for registry.json agent entries
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import TypedDict
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# =============================================================================
|
|
18
|
+
# task.json shape (TypedDict — used only for read-path type hints)
|
|
19
|
+
# =============================================================================
|
|
20
|
+
|
|
21
|
+
class TaskData(TypedDict, total=False):
|
|
22
|
+
"""Shape of task.json on disk.
|
|
23
|
+
|
|
24
|
+
Used only for type annotations when reading task.json.
|
|
25
|
+
Writes must use the original dict to avoid losing unknown fields.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
id: str
|
|
29
|
+
name: str
|
|
30
|
+
title: str
|
|
31
|
+
description: str
|
|
32
|
+
status: str
|
|
33
|
+
dev_type: str
|
|
34
|
+
scope: str | None
|
|
35
|
+
package: str | None
|
|
36
|
+
priority: str
|
|
37
|
+
creator: str
|
|
38
|
+
assignee: str
|
|
39
|
+
createdAt: str
|
|
40
|
+
completedAt: str | None
|
|
41
|
+
branch: str | None
|
|
42
|
+
base_branch: str | None
|
|
43
|
+
worktree_path: str | None
|
|
44
|
+
commit: str | None
|
|
45
|
+
pr_url: str | None
|
|
46
|
+
subtasks: list[str]
|
|
47
|
+
children: list[str]
|
|
48
|
+
parent: str | None
|
|
49
|
+
relatedFiles: list[str]
|
|
50
|
+
notes: str
|
|
51
|
+
meta: dict
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# =============================================================================
|
|
55
|
+
# Loaded task object (frozen dataclass — the public API type)
|
|
56
|
+
# =============================================================================
|
|
57
|
+
|
|
58
|
+
@dataclass(frozen=True)
|
|
59
|
+
class TaskInfo:
|
|
60
|
+
"""Immutable view of a loaded task.
|
|
61
|
+
|
|
62
|
+
Created by load_task() / iter_active_tasks().
|
|
63
|
+
Contains the commonly accessed fields; the original dict
|
|
64
|
+
is preserved in `raw` for write-back and uncommon field access.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
dir_name: str
|
|
68
|
+
directory: Path
|
|
69
|
+
title: str
|
|
70
|
+
status: str
|
|
71
|
+
assignee: str
|
|
72
|
+
priority: str
|
|
73
|
+
children: tuple[str, ...]
|
|
74
|
+
parent: str | None
|
|
75
|
+
package: str | None
|
|
76
|
+
raw: dict # original dict — use for writes and uncommon fields
|
|
77
|
+
|
|
78
|
+
@property
|
|
79
|
+
def name(self) -> str:
|
|
80
|
+
"""Task name (id or name field)."""
|
|
81
|
+
return self.raw.get("name") or self.raw.get("id") or self.dir_name
|
|
82
|
+
|
|
83
|
+
@property
|
|
84
|
+
def description(self) -> str:
|
|
85
|
+
return self.raw.get("description", "")
|
|
86
|
+
|
|
87
|
+
@property
|
|
88
|
+
def branch(self) -> str | None:
|
|
89
|
+
return self.raw.get("branch")
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def meta(self) -> dict:
|
|
93
|
+
return self.raw.get("meta", {})
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
# =============================================================================
|
|
97
|
+
# registry.json agent entry
|
|
98
|
+
# =============================================================================
|
|
99
|
+
|
|
100
|
+
class AgentRecord(TypedDict, total=False):
|
|
101
|
+
"""Shape of an agent entry in registry.json."""
|
|
102
|
+
|
|
103
|
+
id: str
|
|
104
|
+
pid: int
|
|
105
|
+
task_dir: str
|
|
106
|
+
worktree_path: str
|
|
107
|
+
branch: str
|
|
108
|
+
platform: str
|
|
109
|
+
started_at: str
|
|
110
|
+
status: str
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Workflow Phase Extraction.
|
|
5
|
+
|
|
6
|
+
Extracts step-level content from .trellis/workflow.md and optionally filters
|
|
7
|
+
platform-specific blocks.
|
|
8
|
+
|
|
9
|
+
Platform marker syntax in workflow.md:
|
|
10
|
+
|
|
11
|
+
[Claude Code, Cursor, ...]
|
|
12
|
+
agent-capable content
|
|
13
|
+
[/Claude Code, Cursor, ...]
|
|
14
|
+
|
|
15
|
+
Provides:
|
|
16
|
+
get_phase_index - Extract the Phase Index section (no --step)
|
|
17
|
+
get_step - Extract a single step (#### X.X) section
|
|
18
|
+
filter_platform - Strip platform blocks that don't include the given name
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import re
|
|
24
|
+
|
|
25
|
+
from .paths import DIR_WORKFLOW, get_repo_root
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _workflow_md_path():
|
|
29
|
+
return get_repo_root() / DIR_WORKFLOW / "workflow.md"
|
|
30
|
+
|
|
31
|
+
# Match a line that *is* a platform marker: "[A, B, C]" or "[/A, B, C]"
|
|
32
|
+
_MARKER_RE = re.compile(r"^\[(/?)([A-Za-z][^\[\]]*)\]\s*$")
|
|
33
|
+
|
|
34
|
+
# Step heading: "#### 1.0 Title" or "#### 1.0 ..."
|
|
35
|
+
_STEP_HEADING_RE = re.compile(r"^####\s+(\d+\.\d+)\b.*$")
|
|
36
|
+
|
|
37
|
+
# Phase Index starts here; Phase 1/2/3 step bodies follow; ends at Breadcrumbs.
|
|
38
|
+
_PHASE_INDEX_HEADING = "## Phase Index"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _read_workflow() -> str:
|
|
42
|
+
path = _workflow_md_path()
|
|
43
|
+
if not path.exists():
|
|
44
|
+
raise FileNotFoundError(f"workflow.md not found: {path}")
|
|
45
|
+
return path.read_text(encoding="utf-8")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _parse_marker(line: str) -> tuple[bool, list[str]] | None:
|
|
49
|
+
"""Parse a platform marker line.
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
(is_closing, [platform_names]) if line is a marker, else None.
|
|
53
|
+
"""
|
|
54
|
+
m = _MARKER_RE.match(line)
|
|
55
|
+
if not m:
|
|
56
|
+
return None
|
|
57
|
+
is_closing = m.group(1) == "/"
|
|
58
|
+
names = [p.strip() for p in m.group(2).split(",") if p.strip()]
|
|
59
|
+
return is_closing, names
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def get_phase_index() -> str:
|
|
63
|
+
"""Return the compact Phase Index summary from workflow.md.
|
|
64
|
+
|
|
65
|
+
SessionStart and no-step phase context use this small summary as their
|
|
66
|
+
orientation payload. Detailed Phase 1/2/3 instructions are loaded with
|
|
67
|
+
``get_step`` on demand. ``[workflow-state:STATUS]`` tag blocks are
|
|
68
|
+
consumed by the per-turn hook, so they're stripped from this output.
|
|
69
|
+
"""
|
|
70
|
+
text = _read_workflow()
|
|
71
|
+
lines = text.splitlines()
|
|
72
|
+
|
|
73
|
+
start: int | None = None
|
|
74
|
+
end: int | None = None
|
|
75
|
+
for i, line in enumerate(lines):
|
|
76
|
+
stripped = line.strip()
|
|
77
|
+
if start is None and stripped == _PHASE_INDEX_HEADING:
|
|
78
|
+
start = i
|
|
79
|
+
continue
|
|
80
|
+
if start is not None and stripped == "## Phase 1: Plan":
|
|
81
|
+
end = i
|
|
82
|
+
break
|
|
83
|
+
|
|
84
|
+
if start is None:
|
|
85
|
+
return ""
|
|
86
|
+
if end is None:
|
|
87
|
+
end = len(lines)
|
|
88
|
+
|
|
89
|
+
section = "\n".join(lines[start:end]).rstrip()
|
|
90
|
+
# Strip [workflow-state:STATUS]...[/workflow-state:STATUS] blocks since
|
|
91
|
+
# they're injected separately by inject-workflow-state.py per-turn.
|
|
92
|
+
import re as _re
|
|
93
|
+
tag_re = _re.compile(
|
|
94
|
+
r"\[workflow-state:([A-Za-z0-9_-]+)\]\s*\n.*?\n\s*\[/workflow-state:\1\]\n?",
|
|
95
|
+
_re.DOTALL,
|
|
96
|
+
)
|
|
97
|
+
return tag_re.sub("", section).rstrip() + "\n"
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def get_step(step_id: str) -> str:
|
|
101
|
+
"""Return the `#### X.X` section matching step_id (header + body).
|
|
102
|
+
|
|
103
|
+
Body ends at the next `####` or `---` or `##` heading (whichever comes first).
|
|
104
|
+
"""
|
|
105
|
+
text = _read_workflow()
|
|
106
|
+
lines = text.splitlines()
|
|
107
|
+
|
|
108
|
+
start: int | None = None
|
|
109
|
+
for i, line in enumerate(lines):
|
|
110
|
+
m = _STEP_HEADING_RE.match(line)
|
|
111
|
+
if m and m.group(1) == step_id:
|
|
112
|
+
start = i
|
|
113
|
+
break
|
|
114
|
+
if start is None:
|
|
115
|
+
return ""
|
|
116
|
+
|
|
117
|
+
end: int = len(lines)
|
|
118
|
+
for j in range(start + 1, len(lines)):
|
|
119
|
+
line = lines[j]
|
|
120
|
+
if line.startswith("#### "):
|
|
121
|
+
end = j
|
|
122
|
+
break
|
|
123
|
+
if line.startswith("## "):
|
|
124
|
+
end = j
|
|
125
|
+
break
|
|
126
|
+
# Horizontal rule at column 0
|
|
127
|
+
if line.strip() == "---":
|
|
128
|
+
end = j
|
|
129
|
+
break
|
|
130
|
+
|
|
131
|
+
return "\n".join(lines[start:end]).rstrip() + "\n"
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _platform_matches(platform: str, block_names: list[str]) -> bool:
|
|
135
|
+
"""Case-insensitive fuzzy match: accept 'cursor', 'Cursor', 'claude-code', 'Claude Code'."""
|
|
136
|
+
needle = platform.lower().replace("-", "").replace("_", "").replace(" ", "")
|
|
137
|
+
for name in block_names:
|
|
138
|
+
hay = name.lower().replace("-", "").replace("_", "").replace(" ", "")
|
|
139
|
+
if needle == hay:
|
|
140
|
+
return True
|
|
141
|
+
return False
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
_PLATFORM_MARKER_LABELS: dict[str, str] = {
|
|
145
|
+
# workflow.md marker blocks label platforms with their product names, but
|
|
146
|
+
# every caller passes the stable id instead (`--platform {{CLI_FLAG}}` in
|
|
147
|
+
# the start / continue commands). `_platform_matches` only strips
|
|
148
|
+
# punctuation, so an id that is not its label-minus-spaces never matches and
|
|
149
|
+
# `filter_platform` drops the block WITHOUT error — the section just comes
|
|
150
|
+
# back empty. Four platforms shipped that way before this table existed.
|
|
151
|
+
#
|
|
152
|
+
# Add an entry whenever a platform's id is not its marker label with the
|
|
153
|
+
# separators removed. `test/registry-invariants.test.ts` asserts every
|
|
154
|
+
# registry id keeps a non-empty routing section, so a missing entry fails
|
|
155
|
+
# there rather than silently blanking that platform's routing.
|
|
156
|
+
"claude": "Claude Code",
|
|
157
|
+
"kimi": "Kimi Code",
|
|
158
|
+
"omp": "Oh My Pi",
|
|
159
|
+
"dsh": "DeepSeek Harness",
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def resolve_effective_platform(platform: str, config: dict) -> str:
|
|
164
|
+
"""Map ``codex`` to a dispatch-mode-namespaced virtual platform name.
|
|
165
|
+
|
|
166
|
+
When ``--platform codex`` is passed, return ``"codex-sub-agent"`` by
|
|
167
|
+
default or ``"codex-inline"`` when explicitly configured in
|
|
168
|
+
``.trellis/config.yaml``. ``sub-agent`` remains an alias for ``auto``.
|
|
169
|
+
``filter_platform`` then surfaces blocks whose marker lists include the
|
|
170
|
+
namespaced name (e.g. ``[codex-sub-agent, ...]`` or ``[codex-inline, Kilo,
|
|
171
|
+
Antigravity, Devin]``).
|
|
172
|
+
|
|
173
|
+
Native Codex context injection supports the ``auto`` default. Invalid
|
|
174
|
+
explicit values fall back to ``inline`` safely; this renderer deliberately
|
|
175
|
+
does not warn because it can run in normal CLI output flows.
|
|
176
|
+
|
|
177
|
+
Platforms whose marker label differs from their id resolve through
|
|
178
|
+
``_PLATFORM_MARKER_LABELS``. Everything else is returned unchanged.
|
|
179
|
+
"""
|
|
180
|
+
label = _PLATFORM_MARKER_LABELS.get(platform.strip().lower())
|
|
181
|
+
if label:
|
|
182
|
+
return label
|
|
183
|
+
if platform == "codex":
|
|
184
|
+
mode = "auto"
|
|
185
|
+
codex_cfg = config.get("codex") if isinstance(config, dict) else None
|
|
186
|
+
if codex_cfg is not None:
|
|
187
|
+
if not isinstance(codex_cfg, dict):
|
|
188
|
+
mode = "inline"
|
|
189
|
+
else:
|
|
190
|
+
cfg_mode = str(codex_cfg.get("dispatch_mode", mode)).strip().lower()
|
|
191
|
+
if cfg_mode == "inline":
|
|
192
|
+
mode = "inline"
|
|
193
|
+
elif cfg_mode in ("auto", "sub-agent"):
|
|
194
|
+
mode = "auto"
|
|
195
|
+
else:
|
|
196
|
+
mode = "inline"
|
|
197
|
+
return "codex-sub-agent" if mode == "auto" else "codex-inline"
|
|
198
|
+
return platform
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def filter_platform(content: str, platform: str) -> str:
|
|
202
|
+
"""Keep lines outside any `[...]` block + lines inside blocks that include platform.
|
|
203
|
+
|
|
204
|
+
Marker lines themselves are dropped from the output.
|
|
205
|
+
"""
|
|
206
|
+
lines = content.splitlines()
|
|
207
|
+
out: list[str] = []
|
|
208
|
+
|
|
209
|
+
in_block = False
|
|
210
|
+
keep_block = False
|
|
211
|
+
|
|
212
|
+
for line in lines:
|
|
213
|
+
marker = _parse_marker(line)
|
|
214
|
+
if marker is not None:
|
|
215
|
+
is_closing, names = marker
|
|
216
|
+
if not is_closing:
|
|
217
|
+
in_block = True
|
|
218
|
+
keep_block = _platform_matches(platform, names)
|
|
219
|
+
else:
|
|
220
|
+
in_block = False
|
|
221
|
+
keep_block = False
|
|
222
|
+
continue # drop the marker line itself
|
|
223
|
+
|
|
224
|
+
if in_block:
|
|
225
|
+
if keep_block:
|
|
226
|
+
out.append(line)
|
|
227
|
+
continue
|
|
228
|
+
out.append(line)
|
|
229
|
+
|
|
230
|
+
# Collapse runs of 3+ blank lines that may arise from dropped markers
|
|
231
|
+
collapsed: list[str] = []
|
|
232
|
+
blank_run = 0
|
|
233
|
+
for line in out:
|
|
234
|
+
if line.strip() == "":
|
|
235
|
+
blank_run += 1
|
|
236
|
+
if blank_run <= 2:
|
|
237
|
+
collapsed.append(line)
|
|
238
|
+
else:
|
|
239
|
+
blank_run = 0
|
|
240
|
+
collapsed.append(line)
|
|
241
|
+
|
|
242
|
+
return "\n".join(collapsed).rstrip() + "\n"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Get Session Context for AI Agent.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
python3 get_context.py Output context in text format
|
|
7
|
+
python3 get_context.py --json Output context in JSON format
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from common.git_context import main
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
if __name__ == "__main__":
|
|
16
|
+
main()
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Get current developer name.
|
|
4
|
+
|
|
5
|
+
This is a wrapper that uses common/paths.py
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
from common.paths import get_developer
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def main() -> None:
|
|
16
|
+
"""CLI entry point."""
|
|
17
|
+
developer = get_developer()
|
|
18
|
+
if developer:
|
|
19
|
+
print(developer)
|
|
20
|
+
else:
|
|
21
|
+
print("Developer not initialized", file=sys.stderr)
|
|
22
|
+
sys.exit(1)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
if __name__ == "__main__":
|
|
26
|
+
main()
|