trellis-hgl 0.6.0-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +235 -0
- package/README.md +149 -0
- package/bin/trellis.js +3 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +207 -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 +81 -0
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
- package/dist/commands/channel/adapters/codex.js +512 -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 +503 -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 +249 -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 +13 -0
- package/dist/commands/channel/send.d.ts.map +1 -0
- package/dist/commands/channel/send.js +26 -0
- package/dist/commands/channel/send.js.map +1 -0
- package/dist/commands/channel/spawn.d.ts +30 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -0
- package/dist/commands/channel/spawn.js +194 -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 +146 -0
- package/dist/commands/channel/store/watch.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 +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 +51 -0
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/stdout.js +121 -0
- package/dist/commands/channel/supervisor/stdout.js.map +1 -0
- package/dist/commands/channel/supervisor/turns.d.ts +20 -0
- package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/turns.js +28 -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 +53 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -0
- package/dist/commands/channel/supervisor.js +304 -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 +59 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1459 -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 +424 -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/commands/workflow.d.ts +35 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +219 -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 +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 +541 -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 +37 -0
- package/dist/configurators/workflow.d.ts.map +1 -0
- package/dist/configurators/workflow.js +164 -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.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.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 +123 -0
- package/dist/templates/claude/agents/trellis-code-architecture-review.md +71 -0
- package/dist/templates/claude/agents/trellis-code-review.md +71 -0
- package/dist/templates/claude/agents/trellis-implement.md +118 -0
- package/dist/templates/claude/agents/trellis-merge-review.md +72 -0
- package/dist/templates/claude/agents/trellis-research.md +137 -0
- package/dist/templates/claude/agents/trellis-spec-review.md +71 -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 +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 +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 +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 +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 +41 -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/grill-me.md +49 -0
- package/dist/templates/common/skills/improve-codebase-architecture.md +38 -0
- package/dist/templates/common/skills/tdd.md +34 -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 +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 +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 +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 +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 +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/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 +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 +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 +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 +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 +88 -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 +832 -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 +750 -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/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 +90 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supervisor pre-timeout warning scheduler.
|
|
3
|
+
*
|
|
4
|
+
* Emits a one-shot `supervisor_warning` channel event when the worker
|
|
5
|
+
* is approaching its lifetime timeout, so observers (dispatchers /
|
|
6
|
+
* `trellis channel messages`) can see the impending kill without
|
|
7
|
+
* having to poll. The event is observability-only — it never replaces
|
|
8
|
+
* the eventual `killed` / `done` / `error` terminal event, and is
|
|
9
|
+
* not part of the meaningful-event set so plain `wait` does not wake
|
|
10
|
+
* on it unless `--kind supervisor_warning` is explicit.
|
|
11
|
+
*
|
|
12
|
+
* Scheduling lives outside `createShutdown()` because the warning is a
|
|
13
|
+
* pre-terminal observability event, not a terminal one — the shutdown
|
|
14
|
+
* funnel deliberately only owns kill ladder + `killed` append.
|
|
15
|
+
*/
|
|
16
|
+
/** Default lead time before the supervisor timeout (ms) to fire the warning. */
|
|
17
|
+
export declare const SUPERVISOR_TIMEOUT_WARNING_REMAINING_MS: number;
|
|
18
|
+
export interface SupervisorShutdownProbe {
|
|
19
|
+
isShuttingDown(): boolean;
|
|
20
|
+
hasTerminalEvent(): boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface ScheduleSupervisorTimeoutWarningArgs {
|
|
23
|
+
channelName: string;
|
|
24
|
+
workerName: string;
|
|
25
|
+
timeoutMs: number;
|
|
26
|
+
/** Warning lead time in ms. `<= 0` disables the pre-timeout warning. */
|
|
27
|
+
warnBeforeMs?: number;
|
|
28
|
+
shutdown: SupervisorShutdownProbe;
|
|
29
|
+
/** Returns true once the child process has exited (exitCode/signalCode set). */
|
|
30
|
+
isChildExited: () => boolean;
|
|
31
|
+
log: {
|
|
32
|
+
write: (data: string) => void;
|
|
33
|
+
};
|
|
34
|
+
project?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Schedule a single `supervisor_warning` append at `timeoutMs - warnBeforeMs`
|
|
38
|
+
* (clamped at 0 when the warning lead time is greater than the timeout).
|
|
39
|
+
* Guarded so the warning is emitted at most once, never after shutdown
|
|
40
|
+
* has been requested, never after a terminal event has been emitted,
|
|
41
|
+
* and never after the worker child has exited.
|
|
42
|
+
*
|
|
43
|
+
* Returns a cancel handle that callers can invoke to drop the pending
|
|
44
|
+
* timer (e.g. on supervisor teardown). Append failures are logged via
|
|
45
|
+
* `log.write` only and do not affect worker lifecycle.
|
|
46
|
+
*/
|
|
47
|
+
export declare function scheduleSupervisorTimeoutWarning(args: ScheduleSupervisorTimeoutWarningArgs): () => void;
|
|
48
|
+
//# sourceMappingURL=warning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warning.d.ts","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/warning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,gFAAgF;AAChF,eAAO,MAAM,uCAAuC,QAAa,CAAC;AAElE,MAAM,WAAW,uBAAuB;IACtC,cAAc,IAAI,OAAO,CAAC;IAC1B,gBAAgB,IAAI,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,gFAAgF;IAChF,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,GAAG,EAAE;QAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,oCAAoC,GACzC,MAAM,IAAI,CAuDZ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supervisor pre-timeout warning scheduler.
|
|
3
|
+
*
|
|
4
|
+
* Emits a one-shot `supervisor_warning` channel event when the worker
|
|
5
|
+
* is approaching its lifetime timeout, so observers (dispatchers /
|
|
6
|
+
* `trellis channel messages`) can see the impending kill without
|
|
7
|
+
* having to poll. The event is observability-only — it never replaces
|
|
8
|
+
* the eventual `killed` / `done` / `error` terminal event, and is
|
|
9
|
+
* not part of the meaningful-event set so plain `wait` does not wake
|
|
10
|
+
* on it unless `--kind supervisor_warning` is explicit.
|
|
11
|
+
*
|
|
12
|
+
* Scheduling lives outside `createShutdown()` because the warning is a
|
|
13
|
+
* pre-terminal observability event, not a terminal one — the shutdown
|
|
14
|
+
* funnel deliberately only owns kill ladder + `killed` append.
|
|
15
|
+
*/
|
|
16
|
+
import { appendEvent } from "../store/events.js";
|
|
17
|
+
/** Default lead time before the supervisor timeout (ms) to fire the warning. */
|
|
18
|
+
export const SUPERVISOR_TIMEOUT_WARNING_REMAINING_MS = 5 * 60_000;
|
|
19
|
+
/**
|
|
20
|
+
* Schedule a single `supervisor_warning` append at `timeoutMs - warnBeforeMs`
|
|
21
|
+
* (clamped at 0 when the warning lead time is greater than the timeout).
|
|
22
|
+
* Guarded so the warning is emitted at most once, never after shutdown
|
|
23
|
+
* has been requested, never after a terminal event has been emitted,
|
|
24
|
+
* and never after the worker child has exited.
|
|
25
|
+
*
|
|
26
|
+
* Returns a cancel handle that callers can invoke to drop the pending
|
|
27
|
+
* timer (e.g. on supervisor teardown). Append failures are logged via
|
|
28
|
+
* `log.write` only and do not affect worker lifecycle.
|
|
29
|
+
*/
|
|
30
|
+
export function scheduleSupervisorTimeoutWarning(args) {
|
|
31
|
+
const { channelName, workerName, timeoutMs, shutdown, isChildExited, log } = args;
|
|
32
|
+
if (timeoutMs <= 0)
|
|
33
|
+
return () => undefined;
|
|
34
|
+
const warnBeforeMs = args.warnBeforeMs ?? SUPERVISOR_TIMEOUT_WARNING_REMAINING_MS;
|
|
35
|
+
if (warnBeforeMs <= 0)
|
|
36
|
+
return () => undefined;
|
|
37
|
+
const remaining = Math.min(timeoutMs, warnBeforeMs);
|
|
38
|
+
const delay = Math.max(0, timeoutMs - remaining);
|
|
39
|
+
let warningEmitted = false;
|
|
40
|
+
let cancelled = false;
|
|
41
|
+
const fire = () => {
|
|
42
|
+
if (cancelled || warningEmitted)
|
|
43
|
+
return;
|
|
44
|
+
if (shutdown.isShuttingDown() ||
|
|
45
|
+
shutdown.hasTerminalEvent() ||
|
|
46
|
+
isChildExited()) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Claim the slot synchronously so a re-entrant fire (or future
|
|
50
|
+
// caller wiring) cannot race two appends.
|
|
51
|
+
warningEmitted = true;
|
|
52
|
+
void (async () => {
|
|
53
|
+
try {
|
|
54
|
+
await appendEvent(channelName, {
|
|
55
|
+
kind: "supervisor_warning",
|
|
56
|
+
by: `supervisor:${workerName}`,
|
|
57
|
+
worker: workerName,
|
|
58
|
+
reason: "approaching_timeout",
|
|
59
|
+
timeout_ms: timeoutMs,
|
|
60
|
+
remaining_ms: remaining,
|
|
61
|
+
}, args.project);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
65
|
+
log.write(`[supervisor] warning append failed: ${msg}\n`);
|
|
66
|
+
}
|
|
67
|
+
})();
|
|
68
|
+
};
|
|
69
|
+
const timer = setTimeout(fire, delay);
|
|
70
|
+
// Don't keep the supervisor alive solely for the warning timer.
|
|
71
|
+
timer.unref?.();
|
|
72
|
+
return () => {
|
|
73
|
+
cancelled = true;
|
|
74
|
+
clearTimeout(timer);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=warning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warning.js","sourceRoot":"","sources":["../../../../src/commands/channel/supervisor/warning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,gFAAgF;AAChF,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,GAAG,MAAM,CAAC;AAoBlE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAA0C;IAE1C,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,GACxE,IAAI,CAAC;IACP,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3C,MAAM,YAAY,GAChB,IAAI,CAAC,YAAY,IAAI,uCAAuC,CAAC;IAC/D,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAEjD,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,IAAI,SAAS,IAAI,cAAc;YAAE,OAAO;QACxC,IACE,QAAQ,CAAC,cAAc,EAAE;YACzB,QAAQ,CAAC,gBAAgB,EAAE;YAC3B,aAAa,EAAE,EACf,CAAC;YACD,OAAO;QACT,CAAC;QACD,+DAA+D;QAC/D,0CAA0C;QAC1C,cAAc,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,WAAW,CACf,WAAW,EACX;oBACE,IAAI,EAAE,oBAAoB;oBAC1B,EAAE,EAAE,cAAc,UAAU,EAAE;oBAC9B,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,qBAAqB;oBAC7B,UAAU,EAAE,SAAS;oBACrB,YAAY,EAAE,SAAS;iBACxB,EACD,IAAI,CAAC,OAAO,CACb,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,GAAG,CAAC,KAAK,CAAC,uCAAuC,GAAG,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,gEAAgE;IAChE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAEhB,OAAO,GAAG,EAAE;QACV,SAAS,GAAG,IAAI,CAAC;QACjB,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supervisor process: owns a single worker (claude or codex) and bridges
|
|
3
|
+
* worker ↔ channel events.jsonl.
|
|
4
|
+
*
|
|
5
|
+
* Run as: `trellis channel __supervisor <channel> <worker> <config-path>`
|
|
6
|
+
*
|
|
7
|
+
* Three concurrent loops:
|
|
8
|
+
* 1. stdout reader — parse worker stdout → adapter → append events
|
|
9
|
+
* 2. inbox watcher — read events.jsonl for `to=<worker>` say events,
|
|
10
|
+
* translate via adapter.encodeUserMessage → worker stdin
|
|
11
|
+
* 3. signal handler — SIGTERM → close worker stdin → 3s → SIGTERM → 3s → SIGKILL
|
|
12
|
+
* → write `killed` event → exit
|
|
13
|
+
*/
|
|
14
|
+
import { type InboxPolicy } from "trellis-hgl-core/channel";
|
|
15
|
+
import { type Provider } from "./adapters/index.js";
|
|
16
|
+
export interface SupervisorConfig {
|
|
17
|
+
provider: Provider;
|
|
18
|
+
cwd: string;
|
|
19
|
+
/** Combined worker system prompt: channel protocol prefix + agent body.
|
|
20
|
+
* Injected via Claude `--append-system-prompt` or Codex `developerInstructions`.
|
|
21
|
+
* No "initial user prompt" — the worker stays idle until the first
|
|
22
|
+
* inbox `send --to <worker>` arrives. */
|
|
23
|
+
systemPrompt: string;
|
|
24
|
+
/** Extra env vars (TRELLIS_HOOKS=0 etc. are added automatically). */
|
|
25
|
+
env?: Record<string, string>;
|
|
26
|
+
/** Optional model override. */
|
|
27
|
+
model?: string;
|
|
28
|
+
/** Resume an existing session/thread if id is provided. */
|
|
29
|
+
resume?: string;
|
|
30
|
+
/** Auto-kill worker after this many ms (anti-zombie). */
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
/** Emit supervisor_warning this many ms before timeout. `<=0` disables it. */
|
|
33
|
+
warnBeforeMs?: number;
|
|
34
|
+
/** Caller identity recorded on the `spawned` event (default "main"). */
|
|
35
|
+
spawnedBy?: string;
|
|
36
|
+
/** Agent definition name loaded for this worker, if any (recorded on `spawned`). */
|
|
37
|
+
agent?: string;
|
|
38
|
+
/** Relative paths injected via --file / --jsonl (recorded on `spawned`). */
|
|
39
|
+
contextFiles?: string[];
|
|
40
|
+
/** Relative paths of every `--jsonl` manifest processed, even if empty
|
|
41
|
+
* (recorded on `spawned` for observability — "I passed --jsonl X but
|
|
42
|
+
* X contained no real entries"). */
|
|
43
|
+
contextManifests?: string[];
|
|
44
|
+
/** Worker inbox delivery policy (recorded on `spawned`; default
|
|
45
|
+
* `explicitOnly`). */
|
|
46
|
+
inboxPolicy?: InboxPolicy;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Entry point invoked by `trellis channel __supervisor <channel> <worker> <config>`.
|
|
50
|
+
*/
|
|
51
|
+
export declare function runSupervisor(channelName: string, workerName: string, configPath: string): Promise<void>;
|
|
52
|
+
export declare function writeSupervisorConfig(channelName: string, workerName: string, config: SupervisorConfig, project?: string): string;
|
|
53
|
+
//# sourceMappingURL=supervisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/supervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAShE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ;;;8CAG0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;yCAEqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;2BACuB;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA4Rf;AA+BD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAKR"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supervisor process: owns a single worker (claude or codex) and bridges
|
|
3
|
+
* worker ↔ channel events.jsonl.
|
|
4
|
+
*
|
|
5
|
+
* Run as: `trellis channel __supervisor <channel> <worker> <config-path>`
|
|
6
|
+
*
|
|
7
|
+
* Three concurrent loops:
|
|
8
|
+
* 1. stdout reader — parse worker stdout → adapter → append events
|
|
9
|
+
* 2. inbox watcher — read events.jsonl for `to=<worker>` say events,
|
|
10
|
+
* translate via adapter.encodeUserMessage → worker stdin
|
|
11
|
+
* 3. signal handler — SIGTERM → close worker stdin → 3s → SIGTERM → 3s → SIGKILL
|
|
12
|
+
* → write `killed` event → exit
|
|
13
|
+
*/
|
|
14
|
+
import { spawn } from "node:child_process";
|
|
15
|
+
import fs from "node:fs";
|
|
16
|
+
import path from "node:path";
|
|
17
|
+
import { DEFAULT_INBOX_POLICY, } from "trellis-hgl-core/channel";
|
|
18
|
+
import { getAdapter } from "./adapters/index.js";
|
|
19
|
+
import { appendEvent } from "./store/events.js";
|
|
20
|
+
import { workerFile } from "./store/paths.js";
|
|
21
|
+
import { runInboxWatcher } from "./supervisor/inbox.js";
|
|
22
|
+
import { createShutdown } from "./supervisor/shutdown.js";
|
|
23
|
+
import { startStdoutPump } from "./supervisor/stdout.js";
|
|
24
|
+
import { TurnTracker } from "./supervisor/turns.js";
|
|
25
|
+
import { scheduleSupervisorTimeoutWarning } from "./supervisor/warning.js";
|
|
26
|
+
const SHUTDOWN_GRACE_MS = 3000;
|
|
27
|
+
/**
|
|
28
|
+
* Entry point invoked by `trellis channel __supervisor <channel> <worker> <config>`.
|
|
29
|
+
*/
|
|
30
|
+
export async function runSupervisor(channelName, workerName, configPath) {
|
|
31
|
+
const config = readConfig(configPath);
|
|
32
|
+
// Self-pid file lets `trellis channel kill` find us.
|
|
33
|
+
const project = process.env.TRELLIS_CHANNEL_PROJECT;
|
|
34
|
+
fs.writeFileSync(workerFile(channelName, workerName, "pid", project), String(process.pid));
|
|
35
|
+
// ── adapter selection ──
|
|
36
|
+
const adapter = getAdapter(config.provider);
|
|
37
|
+
const adapterCtx = adapter.createCtx();
|
|
38
|
+
const view = {
|
|
39
|
+
resume: config.resume,
|
|
40
|
+
model: config.model,
|
|
41
|
+
systemPrompt: config.systemPrompt,
|
|
42
|
+
cwd: config.cwd,
|
|
43
|
+
};
|
|
44
|
+
const args = adapter.buildArgs(view);
|
|
45
|
+
const env = {
|
|
46
|
+
...process.env,
|
|
47
|
+
...config.env,
|
|
48
|
+
TRELLIS_HOOKS: "0",
|
|
49
|
+
TRELLIS_CHANNEL: channelName,
|
|
50
|
+
TRELLIS_CHANNEL_AS: workerName,
|
|
51
|
+
};
|
|
52
|
+
const logPath = workerFile(channelName, workerName, "log", project);
|
|
53
|
+
const log = fs.createWriteStream(logPath);
|
|
54
|
+
log.write(`[supervisor] starting ${adapter.provider} ${args.join(" ")}\n`);
|
|
55
|
+
const child = spawn(adapter.provider, args, {
|
|
56
|
+
cwd: config.cwd,
|
|
57
|
+
env,
|
|
58
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
59
|
+
});
|
|
60
|
+
// ── shutdown controller declared before listener attachment ──
|
|
61
|
+
// Node fires `error` on next tick when spawn fails (ENOENT / EACCES);
|
|
62
|
+
// create the controller and attach listeners synchronously, with no
|
|
63
|
+
// await between spawn() and child.on("error").
|
|
64
|
+
const shutdown = createShutdown({
|
|
65
|
+
channelName,
|
|
66
|
+
workerName,
|
|
67
|
+
log,
|
|
68
|
+
getChild: () => child,
|
|
69
|
+
graceMs: SHUTDOWN_GRACE_MS,
|
|
70
|
+
timeoutMs: config.timeoutMs,
|
|
71
|
+
});
|
|
72
|
+
// Gate the `spawned` event behind whichever child lifecycle event fires
|
|
73
|
+
// first: `spawn` (success) or `error` (launch failure, e.g. ENOENT).
|
|
74
|
+
// Without this gate the post-spawn path writes `spawned` even when the
|
|
75
|
+
// process never actually started — and the racing error append makes
|
|
76
|
+
// `spawned` vs `error` ordering non-deterministic. Both rounds of CR
|
|
77
|
+
// converged on this.
|
|
78
|
+
let spawnFailed = false;
|
|
79
|
+
let settleSpawn = () => undefined;
|
|
80
|
+
const spawnSettled = new Promise((resolve) => {
|
|
81
|
+
settleSpawn = resolve;
|
|
82
|
+
});
|
|
83
|
+
// Attach listeners SYNCHRONOUSLY — no awaits between spawn() and these
|
|
84
|
+
// lines. Node fires `error` on next tick when spawn fails (ENOENT etc.),
|
|
85
|
+
// and if no listener is attached by then the supervisor dies with an
|
|
86
|
+
// unhandled error and leaves a stale .pid behind.
|
|
87
|
+
child.stderr.on("data", (b) => log.write(b));
|
|
88
|
+
child.once("spawn", () => {
|
|
89
|
+
settleSpawn();
|
|
90
|
+
});
|
|
91
|
+
child.on("error", (err) => {
|
|
92
|
+
// L1 fix: guard against double-fire of `error` (Node can re-emit it
|
|
93
|
+
// during pipe teardown). The startup-failed path runs an IIFE that
|
|
94
|
+
// owns process.exit; subsequent fires must be no-ops or we'd queue
|
|
95
|
+
// duplicate error events.
|
|
96
|
+
if (spawnFailed)
|
|
97
|
+
return;
|
|
98
|
+
log.write(`[supervisor] worker error: ${err.message}\n`);
|
|
99
|
+
if (!child.pid) {
|
|
100
|
+
// Pre-spawn failure (ENOENT / EACCES): emit ONE `error` event,
|
|
101
|
+
// skip the misleading `spawned{pid:undefined}`, clean up, and exit
|
|
102
|
+
// so the supervisor doesn't linger as a zombie waiting for an
|
|
103
|
+
// `exit` event that Node won't deliver.
|
|
104
|
+
spawnFailed = true;
|
|
105
|
+
settleSpawn();
|
|
106
|
+
void (async () => {
|
|
107
|
+
try {
|
|
108
|
+
await appendEvent(channelName, {
|
|
109
|
+
kind: "error",
|
|
110
|
+
by: `supervisor:${workerName}`,
|
|
111
|
+
message: `worker spawn failed: ${err.message}`,
|
|
112
|
+
provider: config.provider,
|
|
113
|
+
}, project);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// ignore — we're exiting anyway
|
|
117
|
+
}
|
|
118
|
+
await cleanup(channelName, workerName).catch(() => undefined);
|
|
119
|
+
process.exit(1);
|
|
120
|
+
})();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Post-spawn error (worker already running). Claude M2 fix: await
|
|
124
|
+
// the `error` append BEFORE requesting shutdown so `killed` can't
|
|
125
|
+
// land first in events.jsonl.
|
|
126
|
+
//
|
|
127
|
+
// Sync-claim the shutdown reason FIRST so other code paths (e.g.
|
|
128
|
+
// the `await spawnSettled` re-check, future inbox-handler probes)
|
|
129
|
+
// observe `isShuttingDown=true` immediately, before the IIFE
|
|
130
|
+
// suspends on its first await.
|
|
131
|
+
shutdown.claim("crash");
|
|
132
|
+
void (async () => {
|
|
133
|
+
try {
|
|
134
|
+
await appendEvent(channelName, {
|
|
135
|
+
kind: "error",
|
|
136
|
+
by: `supervisor:${workerName}`,
|
|
137
|
+
message: `worker process error: ${err.message}`,
|
|
138
|
+
provider: config.provider,
|
|
139
|
+
}, project);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// ignore
|
|
143
|
+
}
|
|
144
|
+
await shutdown.request("SIGTERM", "crash");
|
|
145
|
+
})();
|
|
146
|
+
});
|
|
147
|
+
child.on("exit", (code, sig) => {
|
|
148
|
+
// Codex #1 + #2 fix: synthesise a fallback terminal event when the
|
|
149
|
+
// adapter never produced one (otherwise `wait --kind done` hangs),
|
|
150
|
+
// and await any in-flight `killed` append from a concurrent shutdown
|
|
151
|
+
// before exiting so the event doesn't race the process death.
|
|
152
|
+
void (async () => {
|
|
153
|
+
await shutdown.finalizeOnExit(code, sig).catch(() => undefined);
|
|
154
|
+
await cleanup(channelName, workerName).catch(() => undefined);
|
|
155
|
+
process.exit(0);
|
|
156
|
+
})();
|
|
157
|
+
});
|
|
158
|
+
// Signal handlers MUST be registered before any await so a SIGTERM
|
|
159
|
+
// arriving during the spawn-settle / spawned-append window funnels
|
|
160
|
+
// into `shutdown.request` instead of using Node's default behaviour
|
|
161
|
+
// (which would orphan the child and skip the `killed` event).
|
|
162
|
+
process.on("SIGTERM", () => void shutdown.request("SIGTERM", "explicit-kill"));
|
|
163
|
+
process.on("SIGINT", () => void shutdown.request("SIGINT", "explicit-kill"));
|
|
164
|
+
// SIGHUP arrives when the parent terminal closes — without this
|
|
165
|
+
// handler Node's default behaviour exits the supervisor before the
|
|
166
|
+
// killed-append lands.
|
|
167
|
+
process.on("SIGHUP", () => void shutdown.request("SIGHUP", "explicit-kill"));
|
|
168
|
+
// Wait until either `spawn` or pre-spawn `error` fires before writing
|
|
169
|
+
// the `spawned` event. The error handler exits the process directly,
|
|
170
|
+
// so reaching this point with `spawnFailed=true` means we already kicked
|
|
171
|
+
// off cleanup and can bail cleanly.
|
|
172
|
+
await spawnSettled;
|
|
173
|
+
if (spawnFailed)
|
|
174
|
+
return;
|
|
175
|
+
// Codex #3 fix: if a signal/timeout requested shutdown while we were
|
|
176
|
+
// waiting for spawn-settled, don't write a misleading `spawned` event;
|
|
177
|
+
// let the in-flight `killed` append complete and bail.
|
|
178
|
+
if (shutdown.isShuttingDown()) {
|
|
179
|
+
await shutdown.awaitFinalize();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
fs.writeFileSync(workerFile(channelName, workerName, "worker-pid", project), String(child.pid));
|
|
183
|
+
const turnTracker = new TurnTracker();
|
|
184
|
+
await appendEvent(channelName, {
|
|
185
|
+
kind: "spawned",
|
|
186
|
+
by: config.spawnedBy ?? "main",
|
|
187
|
+
as: workerName,
|
|
188
|
+
provider: config.provider,
|
|
189
|
+
pid: child.pid,
|
|
190
|
+
inboxPolicy: config.inboxPolicy ?? DEFAULT_INBOX_POLICY,
|
|
191
|
+
...(config.agent ? { agent: config.agent } : {}),
|
|
192
|
+
...(config.contextFiles && config.contextFiles.length > 0
|
|
193
|
+
? { files: config.contextFiles }
|
|
194
|
+
: {}),
|
|
195
|
+
...(config.contextManifests && config.contextManifests.length > 0
|
|
196
|
+
? { manifests: config.contextManifests }
|
|
197
|
+
: {}),
|
|
198
|
+
}, project);
|
|
199
|
+
// ── 1. stdout reader ──
|
|
200
|
+
startStdoutPump({
|
|
201
|
+
channelName,
|
|
202
|
+
workerName,
|
|
203
|
+
child,
|
|
204
|
+
adapter,
|
|
205
|
+
adapterCtx,
|
|
206
|
+
log,
|
|
207
|
+
shutdown,
|
|
208
|
+
turnTracker,
|
|
209
|
+
});
|
|
210
|
+
// ── timeout guard (anti-zombie) ──
|
|
211
|
+
if (config.timeoutMs && config.timeoutMs > 0) {
|
|
212
|
+
setTimeout(() => {
|
|
213
|
+
log.write(`[supervisor] timeout ${config.timeoutMs}ms reached, killing worker\n`);
|
|
214
|
+
// shutdown.request emits a single `killed{reason:"timeout"}` event;
|
|
215
|
+
// no need to emit a separate one here.
|
|
216
|
+
void shutdown.request("SIGTERM", "timeout");
|
|
217
|
+
}, config.timeoutMs).unref();
|
|
218
|
+
// Fire-and-forget pre-timeout observability warning. One-shot, guarded
|
|
219
|
+
// by shutdown/terminal/exit state so it stays quiet once the worker is
|
|
220
|
+
// already on its way out.
|
|
221
|
+
scheduleSupervisorTimeoutWarning({
|
|
222
|
+
channelName,
|
|
223
|
+
workerName,
|
|
224
|
+
timeoutMs: config.timeoutMs,
|
|
225
|
+
warnBeforeMs: config.warnBeforeMs,
|
|
226
|
+
shutdown,
|
|
227
|
+
isChildExited: () => child.exitCode !== null || child.signalCode !== null,
|
|
228
|
+
log,
|
|
229
|
+
project,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// ── 3. inbox watcher ──
|
|
233
|
+
// Start BEFORE adapter.handshake() so messages arriving during the
|
|
234
|
+
// handshake window are captured. The adapter's `isReady()` is checked
|
|
235
|
+
// inside runInboxWatcher; codex blocks there until thread/start lands.
|
|
236
|
+
const abort = new AbortController();
|
|
237
|
+
process.on("exit", () => abort.abort());
|
|
238
|
+
void runInboxWatcher({
|
|
239
|
+
channelName,
|
|
240
|
+
workerName,
|
|
241
|
+
adapter,
|
|
242
|
+
ctx: adapterCtx,
|
|
243
|
+
child,
|
|
244
|
+
signal: abort.signal,
|
|
245
|
+
inboxPolicy: config.inboxPolicy ?? DEFAULT_INBOX_POLICY,
|
|
246
|
+
turnTracker,
|
|
247
|
+
});
|
|
248
|
+
// ── adapter handshake (no initial user prompt) ──
|
|
249
|
+
if (adapter.handshake) {
|
|
250
|
+
try {
|
|
251
|
+
await adapter.handshake({ child, ctx: adapterCtx, view });
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
255
|
+
log.write(`[supervisor] adapter handshake failed: ${msg}\n`);
|
|
256
|
+
// Codex #4 fix: emit an `error` event with the handshake message
|
|
257
|
+
// BEFORE requesting shutdown — otherwise the channel only sees a
|
|
258
|
+
// `killed{reason:"crash"}` with no detail on what went wrong.
|
|
259
|
+
void (async () => {
|
|
260
|
+
try {
|
|
261
|
+
await appendEvent(channelName, {
|
|
262
|
+
kind: "error",
|
|
263
|
+
by: `supervisor:${workerName}`,
|
|
264
|
+
message: `handshake failed: ${msg}`,
|
|
265
|
+
provider: config.provider,
|
|
266
|
+
detail: { source: "handshake" },
|
|
267
|
+
}, project);
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
// ignore
|
|
271
|
+
}
|
|
272
|
+
await shutdown.request("SIGTERM", "crash");
|
|
273
|
+
})();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async function cleanup(channelName, workerName) {
|
|
278
|
+
// Remove ephemeral runtime files. Keep `log` (forensic), `session-id` /
|
|
279
|
+
// `thread-id` (future resume). The .spawnlock should already be gone
|
|
280
|
+
// because `withLock` released it; we delete it defensively in case the
|
|
281
|
+
// CLI crashed mid-spawn and left a stale one.
|
|
282
|
+
// Keep `log` (forensic), `session-id` / `thread-id` (future resume).
|
|
283
|
+
// `inbox-cursor` is kept so a respawn (same worker name without
|
|
284
|
+
// killing the channel) doesn't replay messages.
|
|
285
|
+
for (const suffix of ["pid", "worker-pid", "config", "spawnlock"]) {
|
|
286
|
+
try {
|
|
287
|
+
fs.unlinkSync(workerFile(channelName, workerName, suffix, process.env.TRELLIS_CHANNEL_PROJECT));
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
// already gone
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function readConfig(p) {
|
|
295
|
+
return JSON.parse(fs.readFileSync(p, "utf-8"));
|
|
296
|
+
}
|
|
297
|
+
// Helper to write a fresh config file before forking the supervisor.
|
|
298
|
+
export function writeSupervisorConfig(channelName, workerName, config, project) {
|
|
299
|
+
const p = workerFile(channelName, workerName, "config", project);
|
|
300
|
+
fs.mkdirSync(path.dirname(p), { recursive: true });
|
|
301
|
+
fs.writeFileSync(p, JSON.stringify(config, null, 2), "utf-8");
|
|
302
|
+
return p;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=supervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/commands/channel/supervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ChannelTextBodyOptions {
|
|
2
|
+
text?: string;
|
|
3
|
+
stdin?: boolean;
|
|
4
|
+
textFile?: string;
|
|
5
|
+
}
|
|
6
|
+
interface ResolveChannelTextBodyOptions {
|
|
7
|
+
required: boolean;
|
|
8
|
+
missingMessage: string;
|
|
9
|
+
emptyMessage: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function resolveChannelTextBody(opts: ChannelTextBodyOptions, resolveOpts: ResolveChannelTextBodyOptions): Promise<string | undefined>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=text-body.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-body.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/text-body.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,6BAA6B;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,sBAAsB,EAC5B,WAAW,EAAE,6BAA6B,GACzC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
export async function resolveChannelTextBody(opts, resolveOpts) {
|
|
3
|
+
const raw = await readChannelTextBody(opts);
|
|
4
|
+
if (raw === undefined) {
|
|
5
|
+
if (resolveOpts.required)
|
|
6
|
+
throw new Error(resolveOpts.missingMessage);
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const text = raw.trimEnd();
|
|
10
|
+
if (!text)
|
|
11
|
+
throw new Error(resolveOpts.emptyMessage);
|
|
12
|
+
return text;
|
|
13
|
+
}
|
|
14
|
+
async function readChannelTextBody(opts) {
|
|
15
|
+
if (opts.text !== undefined && opts.text !== "")
|
|
16
|
+
return opts.text;
|
|
17
|
+
if (opts.textFile)
|
|
18
|
+
return fs.readFileSync(opts.textFile, "utf-8");
|
|
19
|
+
if (opts.stdin)
|
|
20
|
+
return await readStdin();
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
async function readStdin() {
|
|
24
|
+
return await new Promise((resolve, reject) => {
|
|
25
|
+
let buf = "";
|
|
26
|
+
const onData = (chunk) => {
|
|
27
|
+
buf += chunk.toString("utf-8");
|
|
28
|
+
};
|
|
29
|
+
const cleanup = () => {
|
|
30
|
+
process.stdin.off("data", onData);
|
|
31
|
+
process.stdin.off("end", onEnd);
|
|
32
|
+
process.stdin.off("error", onError);
|
|
33
|
+
};
|
|
34
|
+
const onEnd = () => {
|
|
35
|
+
cleanup();
|
|
36
|
+
resolve(buf);
|
|
37
|
+
};
|
|
38
|
+
const onError = (err) => {
|
|
39
|
+
cleanup();
|
|
40
|
+
reject(err);
|
|
41
|
+
};
|
|
42
|
+
process.stdin.on("data", onData);
|
|
43
|
+
process.stdin.once("end", onEnd);
|
|
44
|
+
process.stdin.once("error", onError);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=text-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-body.js","sourceRoot":"","sources":["../../../src/commands/channel/text-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAczB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAA4B,EAC5B,WAA0C;IAE1C,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,WAAW,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAA4B;IAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClE,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,SAAS,EAAE,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,CAAC,KAAa,EAAQ,EAAE;YACrC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAS,EAAE;YACvB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,CAAC,GAAU,EAAQ,EAAE;YACnC,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface ThreadPostOptions {
|
|
2
|
+
as: string;
|
|
3
|
+
action: string;
|
|
4
|
+
thread?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
text?: string;
|
|
7
|
+
stdin?: boolean;
|
|
8
|
+
textFile?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
status?: string;
|
|
11
|
+
labels?: string;
|
|
12
|
+
assignees?: string;
|
|
13
|
+
summary?: string;
|
|
14
|
+
scope?: string;
|
|
15
|
+
/** New canonical flag list. */
|
|
16
|
+
contextFile?: string[];
|
|
17
|
+
contextRaw?: string[];
|
|
18
|
+
/** Legacy aliases accepted while users migrate scripts. */
|
|
19
|
+
linkedContextFile?: string[];
|
|
20
|
+
linkedContextRaw?: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface ForumOptions {
|
|
23
|
+
scope?: string;
|
|
24
|
+
status?: string;
|
|
25
|
+
raw?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface ThreadShowOptions {
|
|
28
|
+
scope?: string;
|
|
29
|
+
raw?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface ThreadRenameOptions {
|
|
32
|
+
as: string;
|
|
33
|
+
scope?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function channelThreadPost(channelName: string, opts: ThreadPostOptions): Promise<void>;
|
|
36
|
+
export declare function channelForumList(channelName: string, opts: ForumOptions): Promise<void>;
|
|
37
|
+
export declare function channelThreadShow(channelName: string, threadKey: string, opts: ThreadShowOptions): Promise<void>;
|
|
38
|
+
export declare function channelThreadRename(channelName: string, oldThread: string, newThread: string, opts: ThreadRenameOptions): Promise<void>;
|
|
39
|
+
//# sourceMappingURL=threads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/threads.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|