@pennixrv/trellis 0.7.0-beta.9 → 0.7.1

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.
Files changed (483) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +14 -26
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/commands/ablate.js +1 -1
  6. package/dist/commands/ablate.js.map +1 -1
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +30 -56
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/task-progress.d.ts +2 -0
  11. package/dist/commands/task-progress.d.ts.map +1 -1
  12. package/dist/commands/task-progress.js +37 -30
  13. package/dist/commands/task-progress.js.map +1 -1
  14. package/dist/commands/{channel → teamwork}/adapters/claude.d.ts +3 -3
  15. package/dist/commands/teamwork/adapters/claude.d.ts.map +1 -0
  16. package/dist/commands/{channel → teamwork}/adapters/claude.js +3 -3
  17. package/dist/commands/teamwork/adapters/claude.js.map +1 -0
  18. package/dist/commands/{channel → teamwork}/adapters/codex.d.ts +1 -15
  19. package/dist/commands/teamwork/adapters/codex.d.ts.map +1 -0
  20. package/dist/commands/{channel → teamwork}/adapters/codex.js +5 -42
  21. package/dist/commands/teamwork/adapters/codex.js.map +1 -0
  22. package/dist/commands/{channel → teamwork}/adapters/index.d.ts +6 -6
  23. package/dist/commands/teamwork/adapters/index.d.ts.map +1 -0
  24. package/dist/commands/{channel → teamwork}/adapters/index.js +16 -52
  25. package/dist/commands/teamwork/adapters/index.js.map +1 -0
  26. package/dist/commands/{channel → teamwork}/adapters/types.d.ts +2 -2
  27. package/dist/commands/teamwork/adapters/types.d.ts.map +1 -0
  28. package/dist/commands/teamwork/adapters/types.js.map +1 -0
  29. package/dist/commands/{channel → teamwork}/agent-loader.d.ts +2 -4
  30. package/dist/commands/teamwork/agent-loader.d.ts.map +1 -0
  31. package/dist/commands/{channel → teamwork}/agent-loader.js +4 -35
  32. package/dist/commands/teamwork/agent-loader.js.map +1 -0
  33. package/dist/commands/teamwork/artifact.d.ts +177 -0
  34. package/dist/commands/teamwork/artifact.d.ts.map +1 -0
  35. package/dist/commands/teamwork/artifact.js +908 -0
  36. package/dist/commands/teamwork/artifact.js.map +1 -0
  37. package/dist/commands/{channel → teamwork}/context-loader.d.ts +1 -1
  38. package/dist/commands/teamwork/context-loader.d.ts.map +1 -0
  39. package/dist/commands/{channel → teamwork}/context-loader.js +12 -12
  40. package/dist/commands/teamwork/context-loader.js.map +1 -0
  41. package/dist/commands/{channel → teamwork}/context-trust.d.ts +6 -6
  42. package/dist/commands/teamwork/context-trust.d.ts.map +1 -0
  43. package/dist/commands/{channel → teamwork}/context-trust.js +16 -16
  44. package/dist/commands/teamwork/context-trust.js.map +1 -0
  45. package/dist/commands/teamwork/context.d.ts +16 -0
  46. package/dist/commands/teamwork/context.d.ts.map +1 -0
  47. package/dist/commands/{channel → teamwork}/context.js +17 -17
  48. package/dist/commands/teamwork/context.js.map +1 -0
  49. package/dist/commands/teamwork/coordinator.d.ts +89 -0
  50. package/dist/commands/teamwork/coordinator.d.ts.map +1 -0
  51. package/dist/commands/teamwork/coordinator.js +1198 -0
  52. package/dist/commands/teamwork/coordinator.js.map +1 -0
  53. package/dist/commands/teamwork/create.d.ts +23 -0
  54. package/dist/commands/teamwork/create.d.ts.map +1 -0
  55. package/dist/commands/teamwork/create.js +39 -0
  56. package/dist/commands/teamwork/create.js.map +1 -0
  57. package/dist/commands/{channel → teamwork}/dev-parse-trace.d.ts +1 -1
  58. package/dist/commands/teamwork/dev-parse-trace.d.ts.map +1 -0
  59. package/dist/commands/{channel → teamwork}/dev-parse-trace.js +1 -1
  60. package/dist/commands/teamwork/dev-parse-trace.js.map +1 -0
  61. package/dist/commands/{channel → teamwork}/guard.d.ts +27 -46
  62. package/dist/commands/teamwork/guard.d.ts.map +1 -0
  63. package/dist/commands/{channel → teamwork}/guard.js +54 -156
  64. package/dist/commands/teamwork/guard.js.map +1 -0
  65. package/dist/commands/teamwork/index.d.ts +3 -0
  66. package/dist/commands/teamwork/index.d.ts.map +1 -0
  67. package/dist/commands/{channel → teamwork}/index.js +135 -165
  68. package/dist/commands/teamwork/index.js.map +1 -0
  69. package/dist/commands/{channel → teamwork}/interrupt.d.ts +1 -1
  70. package/dist/commands/teamwork/interrupt.d.ts.map +1 -0
  71. package/dist/commands/teamwork/interrupt.js +22 -0
  72. package/dist/commands/teamwork/interrupt.js.map +1 -0
  73. package/dist/commands/teamwork/kill.d.ts +7 -0
  74. package/dist/commands/teamwork/kill.d.ts.map +1 -0
  75. package/dist/commands/{channel → teamwork}/kill.js +21 -21
  76. package/dist/commands/teamwork/kill.js.map +1 -0
  77. package/dist/commands/teamwork/list.d.ts +17 -0
  78. package/dist/commands/teamwork/list.d.ts.map +1 -0
  79. package/dist/commands/{channel → teamwork}/list.js +18 -27
  80. package/dist/commands/teamwork/list.js.map +1 -0
  81. package/dist/commands/{channel → teamwork}/messages.d.ts +1 -1
  82. package/dist/commands/teamwork/messages.d.ts.map +1 -0
  83. package/dist/commands/{channel → teamwork}/messages.js +18 -18
  84. package/dist/commands/teamwork/messages.js.map +1 -0
  85. package/dist/commands/teamwork/profiles.d.ts +25 -0
  86. package/dist/commands/teamwork/profiles.d.ts.map +1 -0
  87. package/dist/commands/teamwork/profiles.js +125 -0
  88. package/dist/commands/teamwork/profiles.js.map +1 -0
  89. package/dist/commands/teamwork/rm.d.ts +27 -0
  90. package/dist/commands/teamwork/rm.d.ts.map +1 -0
  91. package/dist/commands/{channel → teamwork}/rm.js +21 -22
  92. package/dist/commands/teamwork/rm.js.map +1 -0
  93. package/dist/commands/teamwork/run.d.ts +29 -0
  94. package/dist/commands/{channel → teamwork}/run.d.ts.map +1 -1
  95. package/dist/commands/teamwork/run.js +129 -0
  96. package/dist/commands/teamwork/run.js.map +1 -0
  97. package/dist/commands/{channel → teamwork}/send.d.ts +1 -1
  98. package/dist/commands/teamwork/send.d.ts.map +1 -0
  99. package/dist/commands/{channel → teamwork}/send.js +7 -7
  100. package/dist/commands/teamwork/send.js.map +1 -0
  101. package/dist/commands/{channel → teamwork}/spawn.d.ts +8 -12
  102. package/dist/commands/teamwork/spawn.d.ts.map +1 -0
  103. package/dist/commands/{channel → teamwork}/spawn.js +51 -112
  104. package/dist/commands/teamwork/spawn.js.map +1 -0
  105. package/dist/commands/teamwork/store/events.d.ts +22 -0
  106. package/dist/commands/teamwork/store/events.d.ts.map +1 -0
  107. package/dist/commands/{channel → teamwork}/store/events.js +8 -8
  108. package/dist/commands/teamwork/store/events.js.map +1 -0
  109. package/dist/commands/teamwork/store/filter.d.ts +3 -0
  110. package/dist/commands/teamwork/store/filter.d.ts.map +1 -0
  111. package/dist/commands/teamwork/store/filter.js +2 -0
  112. package/dist/commands/teamwork/store/filter.js.map +1 -0
  113. package/dist/commands/{channel → teamwork}/store/lock.d.ts +1 -1
  114. package/dist/commands/teamwork/store/lock.d.ts.map +1 -0
  115. package/dist/commands/{channel → teamwork}/store/lock.js +2 -2
  116. package/dist/commands/teamwork/store/lock.js.map +1 -0
  117. package/dist/commands/{channel → teamwork}/store/paths.d.ts +18 -32
  118. package/dist/commands/teamwork/store/paths.d.ts.map +1 -0
  119. package/dist/commands/{channel → teamwork}/store/paths.js +42 -109
  120. package/dist/commands/teamwork/store/paths.js.map +1 -0
  121. package/dist/commands/teamwork/store/schema.d.ts +18 -0
  122. package/dist/commands/teamwork/store/schema.d.ts.map +1 -0
  123. package/dist/commands/teamwork/store/schema.js +23 -0
  124. package/dist/commands/teamwork/store/schema.js.map +1 -0
  125. package/dist/commands/{channel → teamwork}/store/thread-state.d.ts +3 -3
  126. package/dist/commands/teamwork/store/thread-state.d.ts.map +1 -0
  127. package/dist/commands/{channel → teamwork}/store/thread-state.js +1 -1
  128. package/dist/commands/teamwork/store/thread-state.js.map +1 -0
  129. package/dist/commands/teamwork/store/watch.d.ts +19 -0
  130. package/dist/commands/teamwork/store/watch.d.ts.map +1 -0
  131. package/dist/commands/{channel → teamwork}/store/watch.js +8 -8
  132. package/dist/commands/teamwork/store/watch.js.map +1 -0
  133. package/dist/commands/teamwork/supervisor/idle.d.ts.map +1 -0
  134. package/dist/commands/teamwork/supervisor/idle.js.map +1 -0
  135. package/dist/commands/{channel → teamwork}/supervisor/inbox.d.ts +2 -2
  136. package/dist/commands/teamwork/supervisor/inbox.d.ts.map +1 -0
  137. package/dist/commands/{channel → teamwork}/supervisor/inbox.js +14 -14
  138. package/dist/commands/teamwork/supervisor/inbox.js.map +1 -0
  139. package/dist/commands/{channel → teamwork}/supervisor/shutdown.d.ts +3 -6
  140. package/dist/commands/teamwork/supervisor/shutdown.d.ts.map +1 -0
  141. package/dist/commands/{channel → teamwork}/supervisor/shutdown.js +7 -17
  142. package/dist/commands/teamwork/supervisor/shutdown.js.map +1 -0
  143. package/dist/commands/{channel → teamwork}/supervisor/stdout.d.ts +3 -5
  144. package/dist/commands/teamwork/supervisor/stdout.d.ts.map +1 -0
  145. package/dist/commands/{channel → teamwork}/supervisor/stdout.js +12 -23
  146. package/dist/commands/teamwork/supervisor/stdout.js.map +1 -0
  147. package/dist/commands/teamwork/supervisor/turns.d.ts.map +1 -0
  148. package/dist/commands/teamwork/supervisor/turns.js.map +1 -0
  149. package/dist/commands/{channel → teamwork}/supervisor/warning.d.ts +5 -5
  150. package/dist/commands/teamwork/supervisor/warning.d.ts.map +1 -0
  151. package/dist/commands/{channel → teamwork}/supervisor/warning.js +6 -6
  152. package/dist/commands/teamwork/supervisor/warning.js.map +1 -0
  153. package/dist/commands/{channel → teamwork}/supervisor.d.ts +21 -21
  154. package/dist/commands/teamwork/supervisor.d.ts.map +1 -0
  155. package/dist/commands/{channel → teamwork}/supervisor.js +53 -63
  156. package/dist/commands/teamwork/supervisor.js.map +1 -0
  157. package/dist/commands/teamwork/teammate-adapters.d.ts +31 -0
  158. package/dist/commands/teamwork/teammate-adapters.d.ts.map +1 -0
  159. package/dist/commands/teamwork/teammate-adapters.js +96 -0
  160. package/dist/commands/teamwork/teammate-adapters.js.map +1 -0
  161. package/dist/commands/teamwork/teammate-config.d.ts +19 -0
  162. package/dist/commands/teamwork/teammate-config.d.ts.map +1 -0
  163. package/dist/commands/teamwork/teammate-config.js +97 -0
  164. package/dist/commands/teamwork/teammate-config.js.map +1 -0
  165. package/dist/commands/teamwork/teammate-launch.d.ts +58 -0
  166. package/dist/commands/teamwork/teammate-launch.d.ts.map +1 -0
  167. package/dist/commands/teamwork/teammate-launch.js +125 -0
  168. package/dist/commands/teamwork/teammate-launch.js.map +1 -0
  169. package/dist/commands/teamwork/text-body.d.ts +13 -0
  170. package/dist/commands/teamwork/text-body.d.ts.map +1 -0
  171. package/dist/commands/{channel → teamwork}/text-body.js +3 -3
  172. package/dist/commands/teamwork/text-body.js.map +1 -0
  173. package/dist/commands/teamwork/threads.d.ts +35 -0
  174. package/dist/commands/teamwork/threads.d.ts.map +1 -0
  175. package/dist/commands/{channel → teamwork}/threads.js +19 -19
  176. package/dist/commands/teamwork/threads.js.map +1 -0
  177. package/dist/commands/teamwork/title.d.ts +12 -0
  178. package/dist/commands/teamwork/title.d.ts.map +1 -0
  179. package/dist/commands/teamwork/title.js +24 -0
  180. package/dist/commands/teamwork/title.js.map +1 -0
  181. package/dist/commands/{channel → teamwork}/wait.d.ts +1 -5
  182. package/dist/commands/teamwork/wait.d.ts.map +1 -0
  183. package/dist/commands/{channel → teamwork}/wait.js +8 -21
  184. package/dist/commands/teamwork/wait.js.map +1 -0
  185. package/dist/commands/update.d.ts.map +1 -1
  186. package/dist/commands/update.js +48 -89
  187. package/dist/commands/update.js.map +1 -1
  188. package/dist/commands/workflow.d.ts +1 -1
  189. package/dist/commands/workflow.d.ts.map +1 -1
  190. package/dist/commands/workflow.js +9 -10
  191. package/dist/commands/workflow.js.map +1 -1
  192. package/dist/configurators/claude.d.ts +0 -17
  193. package/dist/configurators/claude.d.ts.map +1 -1
  194. package/dist/configurators/claude.js +2 -61
  195. package/dist/configurators/claude.js.map +1 -1
  196. package/dist/configurators/shared.d.ts.map +1 -1
  197. package/dist/configurators/shared.js +2 -2
  198. package/dist/configurators/shared.js.map +1 -1
  199. package/dist/configurators/snow.js +1 -1
  200. package/dist/configurators/snow.js.map +1 -1
  201. package/dist/configurators/workflow.d.ts +1 -1
  202. package/dist/configurators/workflow.js +5 -5
  203. package/dist/configurators/workflow.js.map +1 -1
  204. package/dist/constants/paths.d.ts +1 -1
  205. package/dist/constants/paths.d.ts.map +1 -1
  206. package/dist/constants/paths.js +1 -1
  207. package/dist/constants/paths.js.map +1 -1
  208. package/dist/migrations/manifests/0.7.0-beta.10.json +9 -0
  209. package/dist/migrations/manifests/0.7.0-beta.11.json +9 -0
  210. package/dist/migrations/manifests/0.7.0-beta.12.json +9 -0
  211. package/dist/migrations/manifests/0.7.0-beta.13.json +9 -0
  212. package/dist/migrations/manifests/0.7.0-beta.14.json +9 -0
  213. package/dist/migrations/manifests/0.7.0-beta.15.json +9 -0
  214. package/dist/migrations/manifests/0.7.0-beta.16.json +9 -0
  215. package/dist/migrations/manifests/0.7.0-beta.17.json +9 -0
  216. package/dist/migrations/manifests/0.7.0-beta.18.json +9 -0
  217. package/dist/migrations/manifests/0.7.0-beta.19.json +9 -0
  218. package/dist/migrations/manifests/0.7.0-beta.20.json +9 -0
  219. package/dist/migrations/manifests/0.7.0-beta.21.json +17 -0
  220. package/dist/migrations/manifests/0.7.0-beta.22.json +9 -0
  221. package/dist/migrations/manifests/0.7.0-beta.23.json +9 -0
  222. package/dist/migrations/manifests/0.7.0-beta.24.json +9 -0
  223. package/dist/migrations/manifests/0.7.0-beta.25.json +9 -0
  224. package/dist/migrations/manifests/0.7.0-beta.26.json +9 -0
  225. package/dist/migrations/manifests/0.7.0-beta.27.json +9 -0
  226. package/dist/migrations/manifests/0.7.0-beta.28.json +9 -0
  227. package/dist/migrations/manifests/0.7.0-beta.29.json +9 -0
  228. package/dist/migrations/manifests/0.7.0-beta.30.json +9 -0
  229. package/dist/migrations/manifests/0.7.0-beta.31.json +9 -0
  230. package/dist/migrations/manifests/0.7.0-beta.32.json +9 -0
  231. package/dist/migrations/manifests/0.7.0-beta.33.json +9 -0
  232. package/dist/migrations/manifests/0.7.0-beta.34.json +9 -0
  233. package/dist/migrations/manifests/0.7.0-beta.35.json +9 -0
  234. package/dist/migrations/manifests/0.7.0-beta.36.json +9 -0
  235. package/dist/migrations/manifests/0.7.0-beta.37.json +9 -0
  236. package/dist/migrations/manifests/0.7.0-beta.38.json +9 -0
  237. package/dist/migrations/manifests/0.7.0-beta.39.json +9 -0
  238. package/dist/migrations/manifests/0.7.0-beta.40.json +9 -0
  239. package/dist/migrations/manifests/0.7.0-beta.41.json +9 -0
  240. package/dist/migrations/manifests/0.7.0-beta.42.json +9 -0
  241. package/dist/migrations/manifests/0.7.0-beta.43.json +9 -0
  242. package/dist/migrations/manifests/0.7.0-beta.44.json +9 -0
  243. package/dist/migrations/manifests/0.7.0-beta.45.json +9 -0
  244. package/dist/migrations/manifests/0.7.0-beta.46.json +9 -0
  245. package/dist/migrations/manifests/0.7.0-beta.47.json +9 -0
  246. package/dist/migrations/manifests/0.7.0-beta.48.json +9 -0
  247. package/dist/migrations/manifests/0.7.0-beta.49.json +13 -0
  248. package/dist/migrations/manifests/0.7.0-beta.50.json +12 -0
  249. package/dist/migrations/manifests/0.7.0-beta.51.json +9 -0
  250. package/dist/migrations/manifests/0.7.0-beta.52.json +9 -0
  251. package/dist/migrations/manifests/0.7.0-beta.53.json +27 -0
  252. package/dist/migrations/manifests/0.7.0-beta.54.json +8 -0
  253. package/dist/migrations/manifests/0.7.1.json +9 -0
  254. package/dist/templates/claude/hooks/statusline.py +0 -7
  255. package/dist/templates/codex/hooks/session-start.py +31 -38
  256. package/dist/templates/common/bundled-skills/trellis-decision-space-construction-and-merging/SKILL.md +10 -0
  257. package/dist/templates/common/bundled-skills/trellis-decision-space-construction-and-merging/workflow.md +40 -0
  258. package/dist/templates/common/bundled-skills/trellis-delivery-review-and-closeout/SKILL.md +10 -0
  259. package/dist/templates/common/bundled-skills/trellis-delivery-review-and-closeout/workflow.md +55 -0
  260. package/dist/templates/common/bundled-skills/trellis-goal-exploration-and-requirements/SKILL.md +10 -0
  261. package/dist/templates/common/bundled-skills/trellis-goal-exploration-and-requirements/workflow.md +33 -0
  262. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +25 -25
  263. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +1 -1
  264. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +13 -19
  265. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +1 -1
  266. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +27 -75
  267. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +17 -56
  268. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +1 -1
  269. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/bundled-skills.md +14 -11
  270. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +0 -33
  271. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-teamwork.md +32 -0
  272. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +1 -1
  273. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +25 -111
  274. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +19 -60
  275. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +1 -1
  276. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +1 -1
  277. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +1 -1
  278. package/dist/templates/common/bundled-skills/trellis-solution-design-and-convergence/SKILL.md +10 -0
  279. package/dist/templates/common/bundled-skills/trellis-solution-design-and-convergence/workflow.md +36 -0
  280. package/dist/templates/common/bundled-skills/trellis-task-implementation/SKILL.md +10 -0
  281. package/dist/templates/common/bundled-skills/trellis-task-implementation/workflow.md +29 -0
  282. package/dist/templates/common/bundled-skills/trellis-teamwork/SKILL.md +73 -0
  283. package/dist/templates/common/bundled-skills/trellis-teamwork/references/coordination-modes.md +29 -0
  284. package/dist/templates/common/bundled-skills/trellis-teamwork/references/teammate-configuration-matrix.md +31 -0
  285. package/dist/templates/common/bundled-skills/trellis-teamwork/references/teammate-processes.md +37 -0
  286. package/dist/templates/common/bundled-skills/trellis-teamwork/references/teamwork-plan-construction.md +78 -0
  287. package/dist/templates/common/commands/continue.md +9 -49
  288. package/dist/templates/common/commands/finish-work.md +10 -58
  289. package/dist/templates/common/commands/start.md +19 -49
  290. package/dist/templates/common/skills/brainstorm.md +11 -199
  291. package/dist/templates/copilot/hooks/session-start.py +30 -26
  292. package/dist/templates/copilot/prompts/brainstorm.prompt.md +7 -160
  293. package/dist/templates/copilot/prompts/finish-work.prompt.md +11 -88
  294. package/dist/templates/copilot/prompts/record-session.prompt.md +4 -12
  295. package/dist/templates/copilot/prompts/start.prompt.md +12 -10
  296. package/dist/templates/dsh/DSH.md +2 -2
  297. package/dist/templates/kiro/agents/trellis.json +2 -2
  298. package/dist/templates/markdown/agents.md +14 -3
  299. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +9 -8
  300. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +1 -1
  301. package/dist/templates/markdown/workspace-index.md +0 -1
  302. package/dist/templates/omp/extensions/trellis/index.ts.txt +28 -17
  303. package/dist/templates/opencode/lib/session-utils.js +20 -25
  304. package/dist/templates/opencode/lib/trellis-context.js +4 -76
  305. package/dist/templates/opencode/plugins/inject-subagent-context.js +5 -4
  306. package/dist/templates/opencode/plugins/inject-workflow-state.js +14 -17
  307. package/dist/templates/shared-hooks/inject-shell-session-context.py +3 -3
  308. package/dist/templates/shared-hooks/inject-subagent-context.py +445 -67
  309. package/dist/templates/shared-hooks/inject-workflow-state.py +44 -36
  310. package/dist/templates/shared-hooks/session-start.py +21 -33
  311. package/dist/templates/trellis/agents/delegated-worktree-primary-agent.md +18 -0
  312. package/dist/templates/trellis/agents/teammate-profiles.json +8 -0
  313. package/dist/templates/trellis/agents/teammate.md +63 -0
  314. package/dist/templates/trellis/config.yaml +29 -38
  315. package/dist/templates/trellis/gitignore.txt +1 -0
  316. package/dist/templates/trellis/index.d.ts +8 -12
  317. package/dist/templates/trellis/index.d.ts.map +1 -1
  318. package/dist/templates/trellis/index.js +14 -25
  319. package/dist/templates/trellis/index.js.map +1 -1
  320. package/dist/templates/trellis/scripts/add_session.py +1 -1
  321. package/dist/templates/trellis/scripts/common/__init__.py +0 -1
  322. package/dist/templates/trellis/scripts/common/active_task.py +136 -100
  323. package/dist/templates/trellis/scripts/common/config.py +7 -9
  324. package/dist/templates/trellis/scripts/common/git_context.py +1 -1
  325. package/dist/templates/trellis/scripts/common/io.py +19 -0
  326. package/dist/templates/trellis/scripts/common/paths.py +0 -1
  327. package/dist/templates/trellis/scripts/common/safe_commit.py +11 -90
  328. package/dist/templates/trellis/scripts/common/session_context.py +1 -8
  329. package/dist/templates/trellis/scripts/common/spec_match.py +1 -1
  330. package/dist/templates/trellis/scripts/common/task_context.py +152 -59
  331. package/dist/templates/trellis/scripts/common/task_continuity.py +563 -0
  332. package/dist/templates/trellis/scripts/common/task_store.py +70 -548
  333. package/dist/templates/trellis/scripts/common/task_utils.py +4 -98
  334. package/dist/templates/trellis/scripts/common/task_workflow.py +1096 -0
  335. package/dist/templates/trellis/scripts/common/tasks.py +5 -8
  336. package/dist/templates/trellis/scripts/common/workflow_phase.py +8 -7
  337. package/dist/templates/trellis/scripts/hooks/linear_sync.py +3 -3
  338. package/dist/templates/trellis/scripts/task.py +114 -377
  339. package/dist/templates/trellis/workflow.md +111 -706
  340. package/dist/utils/agent-refs.d.ts +5 -5
  341. package/dist/utils/agent-refs.js +6 -6
  342. package/dist/utils/file-writer.d.ts +3 -2
  343. package/dist/utils/file-writer.d.ts.map +1 -1
  344. package/dist/utils/file-writer.js +3 -2
  345. package/dist/utils/file-writer.js.map +1 -1
  346. package/dist/utils/managed-paths.d.ts +0 -7
  347. package/dist/utils/managed-paths.d.ts.map +1 -1
  348. package/dist/utils/managed-paths.js +0 -40
  349. package/dist/utils/managed-paths.js.map +1 -1
  350. package/dist/utils/manifest-prune.d.ts.map +1 -1
  351. package/dist/utils/manifest-prune.js +2 -11
  352. package/dist/utils/manifest-prune.js.map +1 -1
  353. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
  354. package/dist/utils/uninstall-scrubbers.js +3 -3
  355. package/dist/utils/uninstall-scrubbers.js.map +1 -1
  356. package/dist/utils/workflow-resolver.d.ts +10 -16
  357. package/dist/utils/workflow-resolver.d.ts.map +1 -1
  358. package/dist/utils/workflow-resolver.js +25 -36
  359. package/dist/utils/workflow-resolver.js.map +1 -1
  360. package/package.json +2 -2
  361. package/dist/commands/channel/adapters/claude.d.ts.map +0 -1
  362. package/dist/commands/channel/adapters/claude.js.map +0 -1
  363. package/dist/commands/channel/adapters/codex.d.ts.map +0 -1
  364. package/dist/commands/channel/adapters/codex.js.map +0 -1
  365. package/dist/commands/channel/adapters/index.d.ts.map +0 -1
  366. package/dist/commands/channel/adapters/index.js.map +0 -1
  367. package/dist/commands/channel/adapters/types.d.ts.map +0 -1
  368. package/dist/commands/channel/adapters/types.js.map +0 -1
  369. package/dist/commands/channel/agent-loader.d.ts.map +0 -1
  370. package/dist/commands/channel/agent-loader.js.map +0 -1
  371. package/dist/commands/channel/context-loader.d.ts.map +0 -1
  372. package/dist/commands/channel/context-loader.js.map +0 -1
  373. package/dist/commands/channel/context-trust.d.ts.map +0 -1
  374. package/dist/commands/channel/context-trust.js.map +0 -1
  375. package/dist/commands/channel/context.d.ts +0 -16
  376. package/dist/commands/channel/context.d.ts.map +0 -1
  377. package/dist/commands/channel/context.js.map +0 -1
  378. package/dist/commands/channel/create.d.ts +0 -29
  379. package/dist/commands/channel/create.d.ts.map +0 -1
  380. package/dist/commands/channel/create.js +0 -47
  381. package/dist/commands/channel/create.js.map +0 -1
  382. package/dist/commands/channel/dev-parse-trace.d.ts.map +0 -1
  383. package/dist/commands/channel/dev-parse-trace.js.map +0 -1
  384. package/dist/commands/channel/guard.d.ts.map +0 -1
  385. package/dist/commands/channel/guard.js.map +0 -1
  386. package/dist/commands/channel/index.d.ts +0 -3
  387. package/dist/commands/channel/index.d.ts.map +0 -1
  388. package/dist/commands/channel/index.js.map +0 -1
  389. package/dist/commands/channel/interrupt.d.ts.map +0 -1
  390. package/dist/commands/channel/interrupt.js +0 -22
  391. package/dist/commands/channel/interrupt.js.map +0 -1
  392. package/dist/commands/channel/kill.d.ts +0 -7
  393. package/dist/commands/channel/kill.d.ts.map +0 -1
  394. package/dist/commands/channel/kill.js.map +0 -1
  395. package/dist/commands/channel/list.d.ts +0 -18
  396. package/dist/commands/channel/list.d.ts.map +0 -1
  397. package/dist/commands/channel/list.js.map +0 -1
  398. package/dist/commands/channel/messages.d.ts.map +0 -1
  399. package/dist/commands/channel/messages.js.map +0 -1
  400. package/dist/commands/channel/rm.d.ts +0 -27
  401. package/dist/commands/channel/rm.d.ts.map +0 -1
  402. package/dist/commands/channel/rm.js.map +0 -1
  403. package/dist/commands/channel/run.d.ts +0 -32
  404. package/dist/commands/channel/run.js +0 -141
  405. package/dist/commands/channel/run.js.map +0 -1
  406. package/dist/commands/channel/send.d.ts.map +0 -1
  407. package/dist/commands/channel/send.js.map +0 -1
  408. package/dist/commands/channel/spawn.d.ts.map +0 -1
  409. package/dist/commands/channel/spawn.js.map +0 -1
  410. package/dist/commands/channel/store/events.d.ts +0 -22
  411. package/dist/commands/channel/store/events.d.ts.map +0 -1
  412. package/dist/commands/channel/store/events.js.map +0 -1
  413. package/dist/commands/channel/store/filter.d.ts +0 -3
  414. package/dist/commands/channel/store/filter.d.ts.map +0 -1
  415. package/dist/commands/channel/store/filter.js +0 -2
  416. package/dist/commands/channel/store/filter.js.map +0 -1
  417. package/dist/commands/channel/store/lock.d.ts.map +0 -1
  418. package/dist/commands/channel/store/lock.js.map +0 -1
  419. package/dist/commands/channel/store/paths.d.ts.map +0 -1
  420. package/dist/commands/channel/store/paths.js.map +0 -1
  421. package/dist/commands/channel/store/schema.d.ts +0 -27
  422. package/dist/commands/channel/store/schema.d.ts.map +0 -1
  423. package/dist/commands/channel/store/schema.js +0 -34
  424. package/dist/commands/channel/store/schema.js.map +0 -1
  425. package/dist/commands/channel/store/thread-state.d.ts.map +0 -1
  426. package/dist/commands/channel/store/thread-state.js.map +0 -1
  427. package/dist/commands/channel/store/watch.d.ts +0 -19
  428. package/dist/commands/channel/store/watch.d.ts.map +0 -1
  429. package/dist/commands/channel/store/watch.js.map +0 -1
  430. package/dist/commands/channel/supervisor/idle.d.ts.map +0 -1
  431. package/dist/commands/channel/supervisor/idle.js.map +0 -1
  432. package/dist/commands/channel/supervisor/inbox.d.ts.map +0 -1
  433. package/dist/commands/channel/supervisor/inbox.js.map +0 -1
  434. package/dist/commands/channel/supervisor/shutdown.d.ts.map +0 -1
  435. package/dist/commands/channel/supervisor/shutdown.js.map +0 -1
  436. package/dist/commands/channel/supervisor/stdout.d.ts.map +0 -1
  437. package/dist/commands/channel/supervisor/stdout.js.map +0 -1
  438. package/dist/commands/channel/supervisor/turns.d.ts.map +0 -1
  439. package/dist/commands/channel/supervisor/turns.js.map +0 -1
  440. package/dist/commands/channel/supervisor/warning.d.ts.map +0 -1
  441. package/dist/commands/channel/supervisor/warning.js.map +0 -1
  442. package/dist/commands/channel/supervisor.d.ts.map +0 -1
  443. package/dist/commands/channel/supervisor.js.map +0 -1
  444. package/dist/commands/channel/text-body.d.ts +0 -13
  445. package/dist/commands/channel/text-body.d.ts.map +0 -1
  446. package/dist/commands/channel/text-body.js.map +0 -1
  447. package/dist/commands/channel/threads.d.ts +0 -39
  448. package/dist/commands/channel/threads.d.ts.map +0 -1
  449. package/dist/commands/channel/threads.js.map +0 -1
  450. package/dist/commands/channel/title.d.ts +0 -12
  451. package/dist/commands/channel/title.d.ts.map +0 -1
  452. package/dist/commands/channel/title.js +0 -24
  453. package/dist/commands/channel/title.js.map +0 -1
  454. package/dist/commands/channel/wait.d.ts.map +0 -1
  455. package/dist/commands/channel/wait.js.map +0 -1
  456. package/dist/commands/channel/workers.d.ts +0 -9
  457. package/dist/commands/channel/workers.d.ts.map +0 -1
  458. package/dist/commands/channel/workers.js +0 -31
  459. package/dist/commands/channel/workers.js.map +0 -1
  460. package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +0 -69
  461. package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +0 -549
  462. package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +0 -233
  463. package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +0 -237
  464. package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +0 -222
  465. package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +0 -295
  466. package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +0 -131
  467. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-channel.md +0 -70
  468. package/dist/templates/common/bundled-skills/trellis-research-record/SKILL.md +0 -14
  469. package/dist/templates/copilot/prompts/parallel.prompt.md +0 -204
  470. package/dist/templates/trellis/agents/check.md +0 -70
  471. package/dist/templates/trellis/agents/implement.md +0 -71
  472. package/dist/templates/trellis/agents/subnode.env +0 -4
  473. package/dist/templates/trellis/agents/subnode.md +0 -76
  474. package/dist/templates/trellis/scripts/common/context_projection.py +0 -508
  475. package/dist/templates/trellis/scripts/common/continuation_record.py +0 -450
  476. package/dist/templates/trellis/scripts/common/ownership_record.py +0 -439
  477. package/dist/templates/trellis/scripts/subnode_artifact.py +0 -735
  478. package/dist/templates/trellis/scripts/workspace_note.py +0 -126
  479. /package/dist/commands/{channel → teamwork}/adapters/types.js +0 -0
  480. /package/dist/commands/{channel → teamwork}/supervisor/idle.d.ts +0 -0
  481. /package/dist/commands/{channel → teamwork}/supervisor/idle.js +0 -0
  482. /package/dist/commands/{channel → teamwork}/supervisor/turns.d.ts +0 -0
  483. /package/dist/commands/{channel → teamwork}/supervisor/turns.js +0 -0
@@ -2,12 +2,12 @@ import fs from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { GLOBAL_PROJECT_KEY, } from "./schema.js";
5
- /** Top-level Trellis channels directory. */
6
- export function channelRoot() {
7
- const env = process.env.TRELLIS_CHANNEL_ROOT;
5
+ /** Top-level Trellis Teamwork directory. */
6
+ export function teamworkRoot() {
7
+ const env = process.env.TRELLIS_TEAMWORK_ROOT;
8
8
  if (env && env.length > 0)
9
9
  return path.resolve(env);
10
- return path.join(os.homedir(), ".trellis", "channels");
10
+ return path.join(os.homedir(), ".trellis", "teamwork");
11
11
  }
12
12
  /**
13
13
  * Derive a per-project bucket name from an absolute cwd, mirroring
@@ -33,131 +33,68 @@ export function projectKey(cwd) {
33
33
  }
34
34
  /**
35
35
  * Project key for the current CLI invocation. Reads
36
- * `TRELLIS_CHANNEL_PROJECT` env first (set by the supervisor spawn so
36
+ * `TRELLIS_TEAMWORK_PROJECT` env first (set by the supervisor spawn so
37
37
  * detached children land in the same bucket as the spawning CLI), then
38
38
  * falls back to deriving from `process.cwd()`.
39
39
  */
40
40
  export function currentProjectKey() {
41
- const env = process.env.TRELLIS_CHANNEL_PROJECT;
41
+ const env = process.env.TRELLIS_TEAMWORK_PROJECT;
42
42
  if (env && env.length > 0)
43
43
  return env;
44
44
  return projectKey(process.cwd());
45
45
  }
46
- /** Directory holding all channels for a given project. */
46
+ /** Directory holding Teamwork Sessions for a given project. */
47
47
  export function projectDir(project = currentProjectKey()) {
48
- return path.join(channelRoot(), project);
48
+ return path.join(teamworkRoot(), project);
49
49
  }
50
- /** Marker file that distinguishes a project bucket from a legacy
51
- * flat-layout channel. New project buckets touch this on first use. */
50
+ /** Marker file identifying a project bucket. New buckets create it on first use. */
52
51
  const BUCKET_MARKER = ".bucket";
53
- /** Characters allowed in a channel or worker name used as a path segment. */
52
+ /** Characters allowed in a Teamwork Session or teammate name used as a path segment. */
54
53
  const SAFE_SEGMENT_RE = /^[A-Za-z0-9._-]+$/;
55
54
  /**
56
- * Whether a channel/worker name is usable as a filesystem segment.
55
+ * Whether a Teamwork Session or teammate name is usable as a filesystem segment.
57
56
  * Discovery scans use this to skip directories created before name
58
57
  * validation existed (spaces, CJK, ...) — they can never be valid
59
- * channels, and `assertSafeName` throwing mid-scan would kill the scan.
58
+ * valid Teamwork Sessions, and `assertSafeName` throwing mid-scan would kill the scan.
60
59
  */
61
60
  export function isSafeName(name) {
62
61
  return name !== "." && name !== ".." && SAFE_SEGMENT_RE.test(name);
63
62
  }
64
63
  /**
65
64
  * Reject names that would escape their bucket when joined into a path.
66
- * A channel/worker name becomes a filesystem segment; without this guard
65
+ * A Teamwork Session ID or worker name becomes a filesystem segment; without this guard
67
66
  * a name like `../../x` lets `path.join` resolve outside the store and a
68
67
  * later `fs.rmSync(recursive)` deletes arbitrary directories.
69
68
  */
70
- export function assertSafeName(name, kind = "channel") {
69
+ export function assertSafeName(name, kind = "Teamwork Session") {
71
70
  if (!isSafeName(name)) {
72
71
  throw new Error(`Invalid ${kind} name: ${JSON.stringify(name)}. ` +
73
72
  `Names may only contain letters, digits, '.', '_' and '-'.`);
74
73
  }
75
74
  }
76
75
  /**
77
- * Channel directory inside its project bucket. Defaults to the current
76
+ * Teamwork Session directory inside its project bucket. Defaults to the current
78
77
  * project (cwd-derived); pass an explicit project for cross-project
79
78
  * addressing.
80
79
  */
81
- export function channelDir(name, project = currentProjectKey()) {
80
+ export function sessionDir(name, project = currentProjectKey()) {
82
81
  assertSafeName(name);
83
82
  return path.join(projectDir(project), name);
84
83
  }
85
84
  export function eventsPath(name, project = currentProjectKey()) {
86
- return path.join(channelDir(name, project), "events.jsonl");
85
+ return path.join(sessionDir(name, project), "events.jsonl");
87
86
  }
88
87
  export function lockPath(name, project = currentProjectKey()) {
89
- return path.join(channelDir(name, project), `${name}.lock`);
88
+ return path.join(sessionDir(name, project), `${name}.lock`);
90
89
  }
91
90
  export function workerFile(name, worker, suffix, project = currentProjectKey()) {
92
91
  assertSafeName(worker, "worker");
93
- return path.join(channelDir(name, project), `${worker}.${suffix}`);
92
+ return path.join(sessionDir(name, project), `${worker}.${suffix}`);
94
93
  }
95
94
  export function workerLockPath(name, worker, project = currentProjectKey()) {
96
95
  assertSafeName(worker, "worker");
97
- return path.join(channelDir(name, project), `${worker}.spawnlock`);
96
+ return path.join(sessionDir(name, project), `${worker}.spawnlock`);
98
97
  }
99
- /**
100
- * One-shot migration: move legacy flat channels at `<root>/<name>/` into
101
- * a `_legacy/` bucket so the new project-scoped layout can use the top
102
- * level. Called lazily by `currentProject*` consumers — safe to invoke
103
- * multiple times (idempotent).
104
- *
105
- * A directory at `<root>/X` is treated as a legacy channel if:
106
- * - it doesn't have a `.bucket` marker (so it's not a project bucket)
107
- * - AND it contains an `events.jsonl` directly inside
108
- *
109
- * Buckets named `_legacy` and `_default` are reserved and never moved.
110
- */
111
- export function migrateLegacyChannels() {
112
- const root = channelRoot();
113
- if (!fs.existsSync(root))
114
- return;
115
- const legacy = path.join(root, "_legacy");
116
- let moved = 0;
117
- let entries;
118
- try {
119
- entries = fs.readdirSync(root);
120
- }
121
- catch {
122
- return;
123
- }
124
- for (const entry of entries) {
125
- if (entry === "_legacy" || entry === "_default")
126
- continue;
127
- const dir = path.join(root, entry);
128
- let stat;
129
- try {
130
- stat = fs.statSync(dir);
131
- }
132
- catch {
133
- continue;
134
- }
135
- if (!stat.isDirectory())
136
- continue;
137
- // Project bucket marker → skip.
138
- if (fs.existsSync(path.join(dir, BUCKET_MARKER)))
139
- continue;
140
- // Heuristic: a legacy channel has events.jsonl directly.
141
- if (!fs.existsSync(path.join(dir, "events.jsonl")))
142
- continue;
143
- // It's legacy — move it to _legacy/<name>/.
144
- fs.mkdirSync(legacy, { recursive: true });
145
- const target = path.join(legacy, entry);
146
- try {
147
- fs.renameSync(dir, target);
148
- moved++;
149
- }
150
- catch (err) {
151
- process.stderr.write(`[channel migrate] failed to move ${entry} to _legacy/: ${err instanceof Error ? err.message : err}\n`);
152
- }
153
- }
154
- if (moved > 0) {
155
- fs.mkdirSync(legacy, { recursive: true });
156
- fs.writeFileSync(path.join(legacy, BUCKET_MARKER), "");
157
- process.stderr.write(`[channel migrate] moved ${moved} legacy channel(s) to ${legacy}\n`);
158
- }
159
- }
160
- /** Mark a directory as a project bucket so the migrator skips it. */
161
98
  export function ensureBucketMarker(project) {
162
99
  const dir = projectDir(project);
163
100
  fs.mkdirSync(dir, { recursive: true });
@@ -166,9 +103,9 @@ export function ensureBucketMarker(project) {
166
103
  fs.writeFileSync(marker, "");
167
104
  }
168
105
  }
169
- /** Enumerate all project buckets currently on disk (excluding legacy). */
106
+ /** Enumerate all project buckets currently on disk. */
170
107
  export function listProjects() {
171
- const root = channelRoot();
108
+ const root = teamworkRoot();
172
109
  if (!fs.existsSync(root))
173
110
  return [];
174
111
  const out = [];
@@ -181,18 +118,15 @@ export function listProjects() {
181
118
  catch {
182
119
  continue;
183
120
  }
184
- // A directory is a project bucket if it has the marker OR is
185
- // _legacy / _default / _global (reserved bucket names).
121
+ // A directory is a project bucket if it has the marker or is global.
186
122
  if (fs.existsSync(path.join(dir, BUCKET_MARKER)) ||
187
- entry === "_legacy" ||
188
- entry === "_default" ||
189
123
  entry === GLOBAL_PROJECT_KEY) {
190
124
  out.push(entry);
191
125
  }
192
126
  }
193
127
  return out;
194
128
  }
195
- export function resolveChannelProjectForCreate(name, opts = {}) {
129
+ export function resolveTeamworkSessionProjectForCreate(name, opts = {}) {
196
130
  const scope = opts.scope ?? "project";
197
131
  const project = scope === "global"
198
132
  ? GLOBAL_PROJECT_KEY
@@ -203,11 +137,10 @@ export function resolveChannelProjectForCreate(name, opts = {}) {
203
137
  name,
204
138
  scope,
205
139
  project,
206
- dir: channelDir(name, project),
140
+ dir: sessionDir(name, project),
207
141
  };
208
142
  }
209
- export function resolveExistingChannelRef(name, opts = {}) {
210
- migrateLegacyChannels();
143
+ export function resolveExistingTeamworkSession(name, opts = {}) {
211
144
  if (opts.scope) {
212
145
  const project = opts.scope === "global"
213
146
  ? GLOBAL_PROJECT_KEY
@@ -215,10 +148,10 @@ export function resolveExistingChannelRef(name, opts = {}) {
215
148
  ? projectKey(opts.cwd)
216
149
  : currentProjectKey();
217
150
  if (!fs.existsSync(eventsPath(name, project))) {
218
- throw new Error(`Channel '${name}' not found in ${opts.scope} scope (${project})`);
151
+ throw new Error(`Teamwork Session '${name}' not found in ${opts.scope} scope (${project})`);
219
152
  }
220
- process.env.TRELLIS_CHANNEL_PROJECT = project;
221
- return { name, scope: opts.scope, project, dir: channelDir(name, project) };
153
+ process.env.TRELLIS_TEAMWORK_PROJECT = project;
154
+ return { name, scope: opts.scope, project, dir: sessionDir(name, project) };
222
155
  }
223
156
  const current = currentProjectKey();
224
157
  const projectMatches = listProjects()
@@ -226,47 +159,47 @@ export function resolveExistingChannelRef(name, opts = {}) {
226
159
  .filter((project) => fs.existsSync(eventsPath(name, project)));
227
160
  const globalExists = fs.existsSync(eventsPath(name, GLOBAL_PROJECT_KEY));
228
161
  if (globalExists && projectMatches.length > 0) {
229
- throw new Error(`Channel '${name}' exists in global and project scopes. Use --scope global or --scope project.`);
162
+ throw new Error(`Teamwork Session '${name}' exists in global and project scopes. Use --scope global or --scope project.`);
230
163
  }
231
164
  if (globalExists) {
232
- process.env.TRELLIS_CHANNEL_PROJECT = GLOBAL_PROJECT_KEY;
165
+ process.env.TRELLIS_TEAMWORK_PROJECT = GLOBAL_PROJECT_KEY;
233
166
  return {
234
167
  name,
235
168
  scope: "global",
236
169
  project: GLOBAL_PROJECT_KEY,
237
- dir: channelDir(name, GLOBAL_PROJECT_KEY),
170
+ dir: sessionDir(name, GLOBAL_PROJECT_KEY),
238
171
  };
239
172
  }
240
173
  if (fs.existsSync(eventsPath(name, current))) {
241
- process.env.TRELLIS_CHANNEL_PROJECT = current;
174
+ process.env.TRELLIS_TEAMWORK_PROJECT = current;
242
175
  return {
243
176
  name,
244
177
  scope: "project",
245
178
  project: current,
246
- dir: channelDir(name, current),
179
+ dir: sessionDir(name, current),
247
180
  };
248
181
  }
249
182
  if (projectMatches.length === 1) {
250
- process.env.TRELLIS_CHANNEL_PROJECT = projectMatches[0];
183
+ process.env.TRELLIS_TEAMWORK_PROJECT = projectMatches[0];
251
184
  return {
252
185
  name,
253
186
  scope: "project",
254
187
  project: projectMatches[0],
255
- dir: channelDir(name, projectMatches[0]),
188
+ dir: sessionDir(name, projectMatches[0]),
256
189
  };
257
190
  }
258
191
  if (projectMatches.length > 1) {
259
- throw new Error(`Channel '${name}' exists in multiple project buckets: ${projectMatches.join(", ")}. Run from the owning project cwd or use --scope.`);
192
+ throw new Error(`Teamwork Session '${name}' exists in multiple project buckets: ${projectMatches.join(", ")}. Run from the owning project cwd or use --scope.`);
260
193
  }
261
- throw new Error(`Channel '${name}' not found in current project bucket (${current}) or any known scope`);
194
+ throw new Error(`Teamwork Session '${name}' not found in current project bucket (${current}) or any known scope`);
262
195
  }
263
196
  /**
264
- * Select the project bucket for an existing channel in this CLI process.
197
+ * Select the project bucket for an existing Teamwork Session in this CLI process.
265
198
  * Current cwd wins. If it is not there, fall back to a unique match across
266
- * all buckets so users can run `channel send <name>` from a different cwd
199
+ * all buckets so users can run `trellis teamwork send <name>` from a different cwd
267
200
  * without silently writing a second event stream.
268
201
  */
269
- export function selectExistingChannelProject(name) {
270
- return resolveExistingChannelRef(name).project;
202
+ export function selectExistingTeamworkSessionProject(name) {
203
+ return resolveExistingTeamworkSession(name).project;
271
204
  }
272
205
  //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../../src/commands/teamwork/store/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * TeamworkSession schema re-exports.
3
+ *
4
+ * Canonical source: `@pennixrv/trellis-core/teamwork`. This module is
5
+ * kept as a thin pass-through during the supervisor/wait migration so
6
+ * CLI runtime code (supervisor, spawn, kill, wait) can continue to
7
+ * import from a stable local path while command files migrate to the
8
+ * core public API directly.
9
+ */
10
+ export { GLOBAL_PROJECT_KEY, TEAMWORK_SESSION_TYPES, THREAD_ACTIONS, parseTeamworkSessionScope, parseTeamworkSessionType, parseThreadAction, normalizeThreadKey, asStringArray, asContextEntries, buildContextEntries, } from "@pennixrv/trellis-core/teamwork";
11
+ export type { TeamworkSessionScope, TeamworkSessionType, TeamworkSessionRef, TeamworkSessionMetadata, ContextEntry, FileContextEntry, RawContextEntry, ThreadAction, EventOrigin, } from "@pennixrv/trellis-core/teamwork";
12
+ /**
13
+ * CSV parser kept colocated with the schema for CLI command files that
14
+ * trim comma-separated label / target lists. Pure helper — does not
15
+ * touch Teamwork Session storage.
16
+ */
17
+ export declare function parseCsv(value: string | undefined): string[] | undefined;
18
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/commands/teamwork/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,iCAAiC,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAMxE"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * TeamworkSession schema re-exports.
3
+ *
4
+ * Canonical source: `@pennixrv/trellis-core/teamwork`. This module is
5
+ * kept as a thin pass-through during the supervisor/wait migration so
6
+ * CLI runtime code (supervisor, spawn, kill, wait) can continue to
7
+ * import from a stable local path while command files migrate to the
8
+ * core public API directly.
9
+ */
10
+ export { GLOBAL_PROJECT_KEY, TEAMWORK_SESSION_TYPES, THREAD_ACTIONS, parseTeamworkSessionScope, parseTeamworkSessionType, parseThreadAction, normalizeThreadKey, asStringArray, asContextEntries, buildContextEntries, } from "@pennixrv/trellis-core/teamwork";
11
+ /**
12
+ * CSV parser kept colocated with the schema for CLI command files that
13
+ * trim comma-separated label / target lists. Pure helper — does not
14
+ * touch Teamwork Session storage.
15
+ */
16
+ export function parseCsv(value) {
17
+ const out = value
18
+ ?.split(",")
19
+ .map((s) => s.trim())
20
+ .filter(Boolean);
21
+ return out && out.length > 0 ? out : undefined;
22
+ }
23
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/commands/teamwork/store/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAczC;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAyB;IAChD,MAAM,GAAG,GAAG,KAAK;QACf,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC"}
@@ -1,5 +1,5 @@
1
- export { reduceThreads, buildThreadAliasResolver, collectThreadTimeline, } from "@pennixrv/trellis-core/channel";
2
- export type { ThreadState, ThreadAliasResolver, } from "@pennixrv/trellis-core/channel";
3
- import type { ThreadState } from "@pennixrv/trellis-core/channel";
1
+ export { reduceThreads, buildThreadAliasResolver, collectThreadTimeline, } from "@pennixrv/trellis-core/teamwork";
2
+ export type { ThreadState, ThreadAliasResolver, } from "@pennixrv/trellis-core/teamwork";
3
+ import type { ThreadState } from "@pennixrv/trellis-core/teamwork";
4
4
  export declare function formatThreadBoard(states: ThreadState[]): string[];
5
5
  //# sourceMappingURL=thread-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-state.d.ts","sourceRoot":"","sources":["../../../../src/commands/teamwork/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AAEzC,YAAY,EACV,WAAW,EACX,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAcjE"}
@@ -1,4 +1,4 @@
1
- export { reduceThreads, buildThreadAliasResolver, collectThreadTimeline, } from "@pennixrv/trellis-core/channel";
1
+ export { reduceThreads, buildThreadAliasResolver, collectThreadTimeline, } from "@pennixrv/trellis-core/teamwork";
2
2
  export function formatThreadBoard(states) {
3
3
  if (states.length === 0)
4
4
  return ["(no threads)"];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-state.js","sourceRoot":"","sources":["../../../../src/commands/teamwork/store/thread-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AASzC,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjD,OAAO;QACL,uBAAuB;QACvB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACtB,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,SAAS,GACb,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBACxB,CAAC,CAAC,cAAc,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC3C,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;QACvF,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { TeamworkEvent } from "./events.js";
2
+ import { type TeamworkEventFilter } from "./filter.js";
3
+ export type WatchFilter = TeamworkEventFilter;
4
+ /**
5
+ * Watch the Teamwork Session events.jsonl file for matching events.
6
+ *
7
+ * Yields each matching event as it arrives. Caller may break to stop;
8
+ * the function cleans up on iterator return.
9
+ *
10
+ * Implementation: fs.watch with a 200ms safety poll for platforms where
11
+ * fs.watch is lossy (Windows, NFS, etc.).
12
+ */
13
+ export declare function watchEvents(sessionId: string, filter: WatchFilter, opts?: {
14
+ signal?: AbortSignal;
15
+ fromStart?: boolean;
16
+ sinceSeq?: number;
17
+ project?: string;
18
+ }): AsyncGenerator<TeamworkEvent, void, unknown>;
19
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../../src/commands/teamwork/store/watch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAwD9C;;;;;;;;GAQG;AACH,wBAAuB,WAAW,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE;IACJ,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CA2F9C"}
@@ -1,6 +1,6 @@
1
1
  import fs from "node:fs";
2
2
  import { StringDecoder } from "node:string_decoder";
3
- import { eventsPath, channelDir } from "./paths.js";
3
+ import { eventsPath, sessionDir } from "./paths.js";
4
4
  import { matchesEventFilter } from "./filter.js";
5
5
  async function readNewEvents(filePath, state) {
6
6
  if (!fs.existsSync(filePath)) {
@@ -50,7 +50,7 @@ async function readNewEvents(filePath, state) {
50
50
  }
51
51
  }
52
52
  /**
53
- * Watch the channel events.jsonl for events matching the filter.
53
+ * Watch the Teamwork Session events.jsonl file for matching events.
54
54
  *
55
55
  * Yields each matching event as it arrives. Caller may break to stop;
56
56
  * the function cleans up on iterator return.
@@ -58,11 +58,11 @@ async function readNewEvents(filePath, state) {
58
58
  * Implementation: fs.watch with a 200ms safety poll for platforms where
59
59
  * fs.watch is lossy (Windows, NFS, etc.).
60
60
  */
61
- export async function* watchEvents(channelName, filter, opts = {}) {
62
- const file = eventsPath(channelName, opts.project);
63
- // Ensure channel dir exists so fs.watch on its parent works
64
- if (!fs.existsSync(channelDir(channelName, opts.project))) {
65
- await fs.promises.mkdir(channelDir(channelName, opts.project), {
61
+ export async function* watchEvents(sessionId, filter, opts = {}) {
62
+ const file = eventsPath(sessionId, opts.project);
63
+ // Ensure the Teamwork Session directory exists so fs.watch works.
64
+ if (!fs.existsSync(sessionDir(sessionId, opts.project))) {
65
+ await fs.promises.mkdir(sessionDir(sessionId, opts.project), {
66
66
  recursive: true,
67
67
  });
68
68
  }
@@ -101,7 +101,7 @@ export async function* watchEvents(channelName, filter, opts = {}) {
101
101
  };
102
102
  let watcher = null;
103
103
  try {
104
- watcher = fs.watch(channelDir(channelName, opts.project), () => wake());
104
+ watcher = fs.watch(sessionDir(sessionId, opts.project), () => wake());
105
105
  watcher.on("error", () => {
106
106
  try {
107
107
  watcher?.close();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../../src/commands/teamwork/store/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.d.ts","sourceRoot":"","sources":["../../../../src/commands/teamwork/supervisor/idle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,cAAc,IAAI,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,KAAK,IAAI,IAAI,CAAC;IACd,wDAAwD;IACxD,KAAK,IAAI,IAAI,CAAC;IACd,gDAAgD;IAChD,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,kBAAkB,GAAG,mBAAmB,CAAC;IACnD,sDAAsD;IACtD,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,GAAG,EAAE;QAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,qBAAqB,GAC1B,eAAe,CAoDjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.js","sourceRoot":"","sources":["../../../../src/commands/teamwork/supervisor/idle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAyBH;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAA2B;IAE3B,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7D,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;YACtB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,KAAgD,CAAC;IACrD,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,KAAK,GAAG,SAAS,CAAC;QAClB,IAAI,SAAS;YAAE,OAAO;QACtB,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,aAAa,EAAE,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QACD,GAAG,CAAC,KAAK,CACP,6BAA6B,aAAa,mCAAmC,CAC9E,CAAC;QACF,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,SAAS;YAAE,OAAO;QACtB,KAAK,EAAE,CAAC;QACR,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACxC,gEAAgE;QAChE,iEAAiE;QACjE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,yDAAyD;IACzD,KAAK,EAAE,CAAC;IAER,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,GAAG,EAAE;YACX,SAAS,GAAG,IAAI,CAAC;YACjB,KAAK,EAAE,CAAC;QACV,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -10,12 +10,12 @@
10
10
  */
11
11
  import type { ChildProcessByStdio } from "node:child_process";
12
12
  import type { Readable, Writable } from "node:stream";
13
- import { type InboxPolicy } from "@pennixrv/trellis-core/channel";
13
+ import { type InboxPolicy } from "@pennixrv/trellis-core/teamwork";
14
14
  import type { WorkerAdapter } from "../adapters/index.js";
15
15
  import type { TurnTracker } from "./turns.js";
16
16
  type Child = ChildProcessByStdio<Writable, Readable, Readable>;
17
17
  export interface InboxWatcherArgs {
18
- channelName: string;
18
+ sessionId: string;
19
19
  workerName: string;
20
20
  adapter: WorkerAdapter;
21
21
  ctx: unknown;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../../src/commands/teamwork/supervisor/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,KAAK,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoH3E"}
@@ -9,17 +9,17 @@
9
9
  * read/write helpers stay private to this module.
10
10
  */
11
11
  import fs from "node:fs";
12
- import { DEFAULT_INBOX_POLICY, matchesInboxPolicy, } from "@pennixrv/trellis-core/channel";
12
+ import { DEFAULT_INBOX_POLICY, matchesInboxPolicy, } from "@pennixrv/trellis-core/teamwork";
13
13
  import { appendEvent } from "../store/events.js";
14
14
  import { workerFile } from "../store/paths.js";
15
15
  import { watchEvents } from "../store/watch.js";
16
16
  export async function runInboxWatcher(args) {
17
- const { channelName, workerName, adapter, ctx, child, signal } = args;
17
+ const { sessionId, workerName, adapter, ctx, child, signal } = args;
18
18
  const inboxPolicy = args.inboxPolicy ?? DEFAULT_INBOX_POLICY;
19
19
  // Resume from persisted cursor: first-time spawn → 0 (read full backlog);
20
20
  // respawn after kill → last forwarded seq (no replay).
21
- let cursor = readInboxCursor(channelName, workerName);
22
- for await (const ev of watchEvents(channelName, {
21
+ let cursor = readInboxCursor(sessionId, workerName);
22
+ for await (const ev of watchEvents(sessionId, {
23
23
  self: workerName, // ignore our own events
24
24
  kind: ["message", "interrupt_requested"],
25
25
  },
@@ -58,7 +58,7 @@ export async function runInboxWatcher(args) {
58
58
  // never became ready; advance the cursor anyway so we don't
59
59
  // re-attempt this exact event on next start.
60
60
  cursor = ev.seq;
61
- writeInboxCursor(channelName, workerName, cursor);
61
+ writeInboxCursor(sessionId, workerName, cursor);
62
62
  continue;
63
63
  }
64
64
  }
@@ -70,7 +70,7 @@ export async function runInboxWatcher(args) {
70
70
  if (isInterrupt) {
71
71
  const aborted = args.turnTracker?.abortCurrent();
72
72
  if (aborted) {
73
- await appendEvent(channelName, {
73
+ await appendEvent(sessionId, {
74
74
  kind: "turn_finished",
75
75
  by: workerName,
76
76
  worker: workerName,
@@ -79,7 +79,7 @@ export async function runInboxWatcher(args) {
79
79
  outcome: "aborted",
80
80
  });
81
81
  }
82
- await appendEvent(channelName, {
82
+ await appendEvent(sessionId, {
83
83
  kind: "interrupted",
84
84
  by: workerName,
85
85
  worker: workerName,
@@ -92,7 +92,7 @@ export async function runInboxWatcher(args) {
92
92
  let turn = args.turnTracker?.begin(ev.seq);
93
93
  try {
94
94
  if (turn) {
95
- await appendEvent(channelName, {
95
+ await appendEvent(sessionId, {
96
96
  kind: "turn_started",
97
97
  by: workerName,
98
98
  worker: workerName,
@@ -104,12 +104,12 @@ export async function runInboxWatcher(args) {
104
104
  ? adapter.encodeInterruptMessage(interruptText, ctx)
105
105
  : adapter.encodeUserMessage(text, ctx));
106
106
  cursor = ev.seq;
107
- writeInboxCursor(channelName, workerName, cursor);
107
+ writeInboxCursor(sessionId, workerName, cursor);
108
108
  }
109
109
  catch {
110
110
  if (turn) {
111
111
  args.turnTracker?.finish();
112
- await appendEvent(channelName, {
112
+ await appendEvent(sessionId, {
113
113
  kind: "turn_finished",
114
114
  by: workerName,
115
115
  worker: workerName,
@@ -131,9 +131,9 @@ export async function runInboxWatcher(args) {
131
131
  * process. The cursor is the highest seq we've already turned into a
132
132
  * worker stdin write.
133
133
  */
134
- function readInboxCursor(channelName, workerName) {
134
+ function readInboxCursor(sessionId, workerName) {
135
135
  try {
136
- const raw = fs.readFileSync(workerFile(channelName, workerName, "inbox-cursor"), "utf-8");
136
+ const raw = fs.readFileSync(workerFile(sessionId, workerName, "inbox-cursor"), "utf-8");
137
137
  const n = Number(raw.trim());
138
138
  return Number.isFinite(n) && n > 0 ? n : 0;
139
139
  }
@@ -141,9 +141,9 @@ function readInboxCursor(channelName, workerName) {
141
141
  return 0;
142
142
  }
143
143
  }
144
- function writeInboxCursor(channelName, workerName, seq) {
144
+ function writeInboxCursor(sessionId, workerName, seq) {
145
145
  try {
146
- fs.writeFileSync(workerFile(channelName, workerName, "inbox-cursor"), String(seq), "utf-8");
146
+ fs.writeFileSync(workerFile(sessionId, workerName, "inbox-cursor"), String(seq), "utf-8");
147
147
  }
148
148
  catch {
149
149
  // ignore — cursor is best-effort; worst case we replay a message
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../../src/commands/teamwork/supervisor/inbox.ts"],"names":[],"mappings":"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"}
@@ -22,14 +22,11 @@
22
22
  import type { ChildProcessByStdio } from "node:child_process";
23
23
  import type { Readable, Writable } from "node:stream";
24
24
  type Child = ChildProcessByStdio<Writable, Readable, Readable>;
25
- export type ShutdownReason = "explicit-kill" | "timeout" | "crash" | "idle-timeout" | "completed";
26
- type KillReason = Exclude<ShutdownReason, "completed">;
25
+ export type ShutdownReason = "explicit-kill" | "timeout" | "crash" | "idle-timeout";
27
26
  export interface ShutdownController {
28
27
  /** Idempotent: only the first call wins. Returns the killed-append
29
28
  * promise so callers can await ordering if they need to. */
30
- request(signal: NodeJS.Signals, reason: KillReason): Promise<void>;
31
- /** End a successfully completed one-shot worker without appending `killed`. */
32
- complete(): void;
29
+ request(signal: NodeJS.Signals, reason: ShutdownReason): Promise<void>;
33
30
  /** Synchronously mark shutdown intent without starting the kill
34
31
  * ladder or appending `killed`. Use when other code must see
35
32
  * `isShuttingDown=true` BEFORE the caller proceeds to any await
@@ -52,7 +49,7 @@ export interface ShutdownController {
52
49
  awaitFinalize(): Promise<void>;
53
50
  }
54
51
  export interface CreateShutdownArgs {
55
- channelName: string;
52
+ sessionId: string;
56
53
  workerName: string;
57
54
  log: {
58
55
  write: (data: string) => void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shutdown.d.ts","sourceRoot":"","sources":["../../../../src/commands/teamwork/supervisor/shutdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAItD,KAAK,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/D,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,SAAS,GACT,OAAO,GACP,cAAc,CAAC;AAEnB,MAAM,WAAW,kBAAkB;IACjC;iEAC6D;IAC7D,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE;;;;;4EAKwE;IACxE,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC;IACvC,cAAc,IAAI,OAAO,CAAC;IAC1B,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC;IAEhC;wDACoD;IACpD,mBAAmB,IAAI,IAAI,CAAC;IAC5B,gBAAgB,IAAI,OAAO,CAAC;IAE5B;;qEAEiE;IACjE,cAAc,CACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;2EACuE;IACvE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE;QAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IACvC;iEAC6D;IAC7D,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAkJ3E"}