@blulotus/trellis 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (821) hide show
  1. package/LICENSE +235 -0
  2. package/README.md +149 -0
  3. package/bin/trellis.js +3 -0
  4. package/dist/cli/index.d.ts +3 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +276 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/commands/channel/adapters/claude.d.ts +29 -0
  9. package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
  10. package/dist/commands/channel/adapters/claude.js +203 -0
  11. package/dist/commands/channel/adapters/claude.js.map +1 -0
  12. package/dist/commands/channel/adapters/codex.d.ts +93 -0
  13. package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
  14. package/dist/commands/channel/adapters/codex.js +573 -0
  15. package/dist/commands/channel/adapters/codex.js.map +1 -0
  16. package/dist/commands/channel/adapters/index.d.ts +86 -0
  17. package/dist/commands/channel/adapters/index.d.ts.map +1 -0
  18. package/dist/commands/channel/adapters/index.js +115 -0
  19. package/dist/commands/channel/adapters/index.js.map +1 -0
  20. package/dist/commands/channel/adapters/types.d.ts +33 -0
  21. package/dist/commands/channel/adapters/types.d.ts.map +1 -0
  22. package/dist/commands/channel/adapters/types.js +2 -0
  23. package/dist/commands/channel/adapters/types.js.map +1 -0
  24. package/dist/commands/channel/agent-loader.d.ts +32 -0
  25. package/dist/commands/channel/agent-loader.d.ts.map +1 -0
  26. package/dist/commands/channel/agent-loader.js +158 -0
  27. package/dist/commands/channel/agent-loader.js.map +1 -0
  28. package/dist/commands/channel/context-loader.d.ts +26 -0
  29. package/dist/commands/channel/context-loader.d.ts.map +1 -0
  30. package/dist/commands/channel/context-loader.js +311 -0
  31. package/dist/commands/channel/context-loader.js.map +1 -0
  32. package/dist/commands/channel/context-trust.d.ts +31 -0
  33. package/dist/commands/channel/context-trust.d.ts.map +1 -0
  34. package/dist/commands/channel/context-trust.js +139 -0
  35. package/dist/commands/channel/context-trust.js.map +1 -0
  36. package/dist/commands/channel/context.d.ts +16 -0
  37. package/dist/commands/channel/context.d.ts.map +1 -0
  38. package/dist/commands/channel/context.js +83 -0
  39. package/dist/commands/channel/context.js.map +1 -0
  40. package/dist/commands/channel/create.d.ts +27 -0
  41. package/dist/commands/channel/create.d.ts.map +1 -0
  42. package/dist/commands/channel/create.js +39 -0
  43. package/dist/commands/channel/create.js.map +1 -0
  44. package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
  45. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
  46. package/dist/commands/channel/dev-parse-trace.js +70 -0
  47. package/dist/commands/channel/dev-parse-trace.js.map +1 -0
  48. package/dist/commands/channel/guard.d.ts +150 -0
  49. package/dist/commands/channel/guard.d.ts.map +1 -0
  50. package/dist/commands/channel/guard.js +479 -0
  51. package/dist/commands/channel/guard.js.map +1 -0
  52. package/dist/commands/channel/index.d.ts +3 -0
  53. package/dist/commands/channel/index.d.ts.map +1 -0
  54. package/dist/commands/channel/index.js +535 -0
  55. package/dist/commands/channel/index.js.map +1 -0
  56. package/dist/commands/channel/interrupt.d.ts +10 -0
  57. package/dist/commands/channel/interrupt.d.ts.map +1 -0
  58. package/dist/commands/channel/interrupt.js +22 -0
  59. package/dist/commands/channel/interrupt.js.map +1 -0
  60. package/dist/commands/channel/kill.d.ts +7 -0
  61. package/dist/commands/channel/kill.d.ts.map +1 -0
  62. package/dist/commands/channel/kill.js +121 -0
  63. package/dist/commands/channel/kill.js.map +1 -0
  64. package/dist/commands/channel/list.d.ts +17 -0
  65. package/dist/commands/channel/list.d.ts.map +1 -0
  66. package/dist/commands/channel/list.js +233 -0
  67. package/dist/commands/channel/list.js.map +1 -0
  68. package/dist/commands/channel/messages.d.ts +15 -0
  69. package/dist/commands/channel/messages.d.ts.map +1 -0
  70. package/dist/commands/channel/messages.js +245 -0
  71. package/dist/commands/channel/messages.js.map +1 -0
  72. package/dist/commands/channel/rm.d.ts +27 -0
  73. package/dist/commands/channel/rm.d.ts.map +1 -0
  74. package/dist/commands/channel/rm.js +216 -0
  75. package/dist/commands/channel/rm.js.map +1 -0
  76. package/dist/commands/channel/run.d.ts +30 -0
  77. package/dist/commands/channel/run.d.ts.map +1 -0
  78. package/dist/commands/channel/run.js +130 -0
  79. package/dist/commands/channel/run.js.map +1 -0
  80. package/dist/commands/channel/send.d.ts +11 -0
  81. package/dist/commands/channel/send.d.ts.map +1 -0
  82. package/dist/commands/channel/send.js +24 -0
  83. package/dist/commands/channel/send.js.map +1 -0
  84. package/dist/commands/channel/spawn.d.ts +43 -0
  85. package/dist/commands/channel/spawn.d.ts.map +1 -0
  86. package/dist/commands/channel/spawn.js +247 -0
  87. package/dist/commands/channel/spawn.js.map +1 -0
  88. package/dist/commands/channel/store/events.d.ts +39 -0
  89. package/dist/commands/channel/store/events.d.ts.map +1 -0
  90. package/dist/commands/channel/store/events.js +87 -0
  91. package/dist/commands/channel/store/events.js.map +1 -0
  92. package/dist/commands/channel/store/filter.d.ts +3 -0
  93. package/dist/commands/channel/store/filter.d.ts.map +1 -0
  94. package/dist/commands/channel/store/filter.js +2 -0
  95. package/dist/commands/channel/store/filter.js.map +1 -0
  96. package/dist/commands/channel/store/lock.d.ts +23 -0
  97. package/dist/commands/channel/store/lock.d.ts.map +1 -0
  98. package/dist/commands/channel/store/lock.js +99 -0
  99. package/dist/commands/channel/store/lock.js.map +1 -0
  100. package/dist/commands/channel/store/paths.d.ts +77 -0
  101. package/dist/commands/channel/store/paths.d.ts.map +1 -0
  102. package/dist/commands/channel/store/paths.js +272 -0
  103. package/dist/commands/channel/store/paths.js.map +1 -0
  104. package/dist/commands/channel/store/schema.d.ts +27 -0
  105. package/dist/commands/channel/store/schema.d.ts.map +1 -0
  106. package/dist/commands/channel/store/schema.js +34 -0
  107. package/dist/commands/channel/store/schema.js.map +1 -0
  108. package/dist/commands/channel/store/thread-state.d.ts +5 -0
  109. package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
  110. package/dist/commands/channel/store/thread-state.js +16 -0
  111. package/dist/commands/channel/store/thread-state.js.map +1 -0
  112. package/dist/commands/channel/store/watch.d.ts +19 -0
  113. package/dist/commands/channel/store/watch.d.ts.map +1 -0
  114. package/dist/commands/channel/store/watch.js +146 -0
  115. package/dist/commands/channel/store/watch.js.map +1 -0
  116. package/dist/commands/channel/supervisor/idle.d.ts +45 -0
  117. package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
  118. package/dist/commands/channel/supervisor/idle.js +70 -0
  119. package/dist/commands/channel/supervisor/idle.js.map +1 -0
  120. package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
  121. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
  122. package/dist/commands/channel/supervisor/inbox.js +160 -0
  123. package/dist/commands/channel/supervisor/inbox.js.map +1 -0
  124. package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
  125. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
  126. package/dist/commands/channel/supervisor/shutdown.js +146 -0
  127. package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
  128. package/dist/commands/channel/supervisor/stdout.d.ts +53 -0
  129. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
  130. package/dist/commands/channel/supervisor/stdout.js +168 -0
  131. package/dist/commands/channel/supervisor/stdout.js.map +1 -0
  132. package/dist/commands/channel/supervisor/turns.d.ts +31 -0
  133. package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
  134. package/dist/commands/channel/supervisor/turns.js +45 -0
  135. package/dist/commands/channel/supervisor/turns.js.map +1 -0
  136. package/dist/commands/channel/supervisor/warning.d.ts +48 -0
  137. package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
  138. package/dist/commands/channel/supervisor/warning.js +77 -0
  139. package/dist/commands/channel/supervisor/warning.js.map +1 -0
  140. package/dist/commands/channel/supervisor.d.ts +75 -0
  141. package/dist/commands/channel/supervisor.d.ts.map +1 -0
  142. package/dist/commands/channel/supervisor.js +397 -0
  143. package/dist/commands/channel/supervisor.js.map +1 -0
  144. package/dist/commands/channel/text-body.d.ts +13 -0
  145. package/dist/commands/channel/text-body.d.ts.map +1 -0
  146. package/dist/commands/channel/text-body.js +47 -0
  147. package/dist/commands/channel/text-body.js.map +1 -0
  148. package/dist/commands/channel/threads.d.ts +39 -0
  149. package/dist/commands/channel/threads.d.ts.map +1 -0
  150. package/dist/commands/channel/threads.js +106 -0
  151. package/dist/commands/channel/threads.js.map +1 -0
  152. package/dist/commands/channel/title.d.ts +12 -0
  153. package/dist/commands/channel/title.d.ts.map +1 -0
  154. package/dist/commands/channel/title.js +24 -0
  155. package/dist/commands/channel/title.js.map +1 -0
  156. package/dist/commands/channel/wait.d.ts +17 -0
  157. package/dist/commands/channel/wait.d.ts.map +1 -0
  158. package/dist/commands/channel/wait.js +75 -0
  159. package/dist/commands/channel/wait.js.map +1 -0
  160. package/dist/commands/init.d.ts +71 -0
  161. package/dist/commands/init.d.ts.map +1 -0
  162. package/dist/commands/init.js +1603 -0
  163. package/dist/commands/init.js.map +1 -0
  164. package/dist/commands/mem.d.ts +30 -0
  165. package/dist/commands/mem.d.ts.map +1 -0
  166. package/dist/commands/mem.js +447 -0
  167. package/dist/commands/mem.js.map +1 -0
  168. package/dist/commands/uninstall.d.ts +36 -0
  169. package/dist/commands/uninstall.d.ts.map +1 -0
  170. package/dist/commands/uninstall.js +410 -0
  171. package/dist/commands/uninstall.js.map +1 -0
  172. package/dist/commands/update.d.ts +111 -0
  173. package/dist/commands/update.d.ts.map +1 -0
  174. package/dist/commands/update.js +2152 -0
  175. package/dist/commands/update.js.map +1 -0
  176. package/dist/commands/upgrade.d.ts +28 -0
  177. package/dist/commands/upgrade.d.ts.map +1 -0
  178. package/dist/commands/upgrade.js +84 -0
  179. package/dist/commands/upgrade.js.map +1 -0
  180. package/dist/commands/workflow.d.ts +52 -0
  181. package/dist/commands/workflow.d.ts.map +1 -0
  182. package/dist/commands/workflow.js +454 -0
  183. package/dist/commands/workflow.js.map +1 -0
  184. package/dist/configurators/antigravity.d.ts +7 -0
  185. package/dist/configurators/antigravity.d.ts.map +1 -0
  186. package/dist/configurators/antigravity.js +11 -0
  187. package/dist/configurators/antigravity.js.map +1 -0
  188. package/dist/configurators/claude.d.ts +23 -0
  189. package/dist/configurators/claude.d.ts.map +1 -0
  190. package/dist/configurators/claude.js +123 -0
  191. package/dist/configurators/claude.js.map +1 -0
  192. package/dist/configurators/codebuddy.d.ts +10 -0
  193. package/dist/configurators/codebuddy.d.ts.map +1 -0
  194. package/dist/configurators/codebuddy.js +24 -0
  195. package/dist/configurators/codebuddy.js.map +1 -0
  196. package/dist/configurators/codex.d.ts +57 -0
  197. package/dist/configurators/codex.d.ts.map +1 -0
  198. package/dist/configurators/codex.js +170 -0
  199. package/dist/configurators/codex.js.map +1 -0
  200. package/dist/configurators/copilot.d.ts +14 -0
  201. package/dist/configurators/copilot.d.ts.map +1 -0
  202. package/dist/configurators/copilot.js +46 -0
  203. package/dist/configurators/copilot.js.map +1 -0
  204. package/dist/configurators/cursor.d.ts +10 -0
  205. package/dist/configurators/cursor.d.ts.map +1 -0
  206. package/dist/configurators/cursor.js +23 -0
  207. package/dist/configurators/cursor.js.map +1 -0
  208. package/dist/configurators/devin.d.ts +8 -0
  209. package/dist/configurators/devin.d.ts.map +1 -0
  210. package/dist/configurators/devin.js +12 -0
  211. package/dist/configurators/devin.js.map +1 -0
  212. package/dist/configurators/droid.d.ts +10 -0
  213. package/dist/configurators/droid.d.ts.map +1 -0
  214. package/dist/configurators/droid.js +24 -0
  215. package/dist/configurators/droid.js.map +1 -0
  216. package/dist/configurators/dsh.d.ts +26 -0
  217. package/dist/configurators/dsh.d.ts.map +1 -0
  218. package/dist/configurators/dsh.js +76 -0
  219. package/dist/configurators/dsh.js.map +1 -0
  220. package/dist/configurators/gemini.d.ts +18 -0
  221. package/dist/configurators/gemini.d.ts.map +1 -0
  222. package/dist/configurators/gemini.js +39 -0
  223. package/dist/configurators/gemini.js.map +1 -0
  224. package/dist/configurators/grok.d.ts +17 -0
  225. package/dist/configurators/grok.d.ts.map +1 -0
  226. package/dist/configurators/grok.js +38 -0
  227. package/dist/configurators/grok.js.map +1 -0
  228. package/dist/configurators/index.d.ts +68 -0
  229. package/dist/configurators/index.d.ts.map +1 -0
  230. package/dist/configurators/index.js +191 -0
  231. package/dist/configurators/index.js.map +1 -0
  232. package/dist/configurators/kilo.d.ts +7 -0
  233. package/dist/configurators/kilo.d.ts.map +1 -0
  234. package/dist/configurators/kilo.js +11 -0
  235. package/dist/configurators/kilo.js.map +1 -0
  236. package/dist/configurators/kimi.d.ts +26 -0
  237. package/dist/configurators/kimi.d.ts.map +1 -0
  238. package/dist/configurators/kimi.js +74 -0
  239. package/dist/configurators/kimi.js.map +1 -0
  240. package/dist/configurators/kiro.d.ts +11 -0
  241. package/dist/configurators/kiro.d.ts.map +1 -0
  242. package/dist/configurators/kiro.js +30 -0
  243. package/dist/configurators/kiro.js.map +1 -0
  244. package/dist/configurators/omp.d.ts +6 -0
  245. package/dist/configurators/omp.d.ts.map +1 -0
  246. package/dist/configurators/omp.js +28 -0
  247. package/dist/configurators/omp.js.map +1 -0
  248. package/dist/configurators/opencode.d.ts +5 -0
  249. package/dist/configurators/opencode.d.ts.map +1 -0
  250. package/dist/configurators/opencode.js +84 -0
  251. package/dist/configurators/opencode.js.map +1 -0
  252. package/dist/configurators/pi.d.ts +5 -0
  253. package/dist/configurators/pi.d.ts.map +1 -0
  254. package/dist/configurators/pi.js +39 -0
  255. package/dist/configurators/pi.js.map +1 -0
  256. package/dist/configurators/qoder.d.ts +12 -0
  257. package/dist/configurators/qoder.d.ts.map +1 -0
  258. package/dist/configurators/qoder.js +30 -0
  259. package/dist/configurators/qoder.js.map +1 -0
  260. package/dist/configurators/reasonix.d.ts +17 -0
  261. package/dist/configurators/reasonix.d.ts.map +1 -0
  262. package/dist/configurators/reasonix.js +37 -0
  263. package/dist/configurators/reasonix.js.map +1 -0
  264. package/dist/configurators/shared.d.ts +187 -0
  265. package/dist/configurators/shared.d.ts.map +1 -0
  266. package/dist/configurators/shared.js +590 -0
  267. package/dist/configurators/shared.js.map +1 -0
  268. package/dist/configurators/snow.d.ts +25 -0
  269. package/dist/configurators/snow.d.ts.map +1 -0
  270. package/dist/configurators/snow.js +69 -0
  271. package/dist/configurators/snow.js.map +1 -0
  272. package/dist/configurators/trae.d.ts +16 -0
  273. package/dist/configurators/trae.d.ts.map +1 -0
  274. package/dist/configurators/trae.js +34 -0
  275. package/dist/configurators/trae.js.map +1 -0
  276. package/dist/configurators/workflow.d.ts +51 -0
  277. package/dist/configurators/workflow.d.ts.map +1 -0
  278. package/dist/configurators/workflow.js +210 -0
  279. package/dist/configurators/workflow.js.map +1 -0
  280. package/dist/configurators/zcode.d.ts +23 -0
  281. package/dist/configurators/zcode.d.ts.map +1 -0
  282. package/dist/configurators/zcode.js +63 -0
  283. package/dist/configurators/zcode.js.map +1 -0
  284. package/dist/constants/paths.d.ts +74 -0
  285. package/dist/constants/paths.d.ts.map +1 -0
  286. package/dist/constants/paths.js +83 -0
  287. package/dist/constants/paths.js.map +1 -0
  288. package/dist/constants/version.d.ts +9 -0
  289. package/dist/constants/version.d.ts.map +1 -0
  290. package/dist/constants/version.js +15 -0
  291. package/dist/constants/version.js.map +1 -0
  292. package/dist/index.d.ts +9 -0
  293. package/dist/index.d.ts.map +1 -0
  294. package/dist/index.js +9 -0
  295. package/dist/index.js.map +1 -0
  296. package/dist/migrations/index.d.ts +62 -0
  297. package/dist/migrations/index.d.ts.map +1 -0
  298. package/dist/migrations/index.js +187 -0
  299. package/dist/migrations/index.js.map +1 -0
  300. package/dist/migrations/manifests/0.1.9.json +30 -0
  301. package/dist/migrations/manifests/0.2.0.json +49 -0
  302. package/dist/migrations/manifests/0.2.12.json +9 -0
  303. package/dist/migrations/manifests/0.2.13.json +9 -0
  304. package/dist/migrations/manifests/0.2.14.json +175 -0
  305. package/dist/migrations/manifests/0.2.15.json +33 -0
  306. package/dist/migrations/manifests/0.3.0-beta.0.json +297 -0
  307. package/dist/migrations/manifests/0.3.0-beta.1.json +9 -0
  308. package/dist/migrations/manifests/0.3.0-beta.10.json +9 -0
  309. package/dist/migrations/manifests/0.3.0-beta.11.json +9 -0
  310. package/dist/migrations/manifests/0.3.0-beta.12.json +9 -0
  311. package/dist/migrations/manifests/0.3.0-beta.13.json +9 -0
  312. package/dist/migrations/manifests/0.3.0-beta.14.json +9 -0
  313. package/dist/migrations/manifests/0.3.0-beta.15.json +9 -0
  314. package/dist/migrations/manifests/0.3.0-beta.16.json +9 -0
  315. package/dist/migrations/manifests/0.3.0-beta.2.json +9 -0
  316. package/dist/migrations/manifests/0.3.0-beta.3.json +9 -0
  317. package/dist/migrations/manifests/0.3.0-beta.4.json +9 -0
  318. package/dist/migrations/manifests/0.3.0-beta.5.json +9 -0
  319. package/dist/migrations/manifests/0.3.0-beta.6.json +9 -0
  320. package/dist/migrations/manifests/0.3.0-beta.7.json +11 -0
  321. package/dist/migrations/manifests/0.3.0-beta.8.json +9 -0
  322. package/dist/migrations/manifests/0.3.0-beta.9.json +9 -0
  323. package/dist/migrations/manifests/0.3.0-rc.0.json +9 -0
  324. package/dist/migrations/manifests/0.3.0-rc.1.json +9 -0
  325. package/dist/migrations/manifests/0.3.0-rc.2.json +9 -0
  326. package/dist/migrations/manifests/0.3.0-rc.3.json +9 -0
  327. package/dist/migrations/manifests/0.3.0-rc.4.json +9 -0
  328. package/dist/migrations/manifests/0.3.0-rc.5.json +9 -0
  329. package/dist/migrations/manifests/0.3.0-rc.6.json +9 -0
  330. package/dist/migrations/manifests/0.3.0.json +11 -0
  331. package/dist/migrations/manifests/0.3.1.json +9 -0
  332. package/dist/migrations/manifests/0.3.10.json +9 -0
  333. package/dist/migrations/manifests/0.3.2.json +9 -0
  334. package/dist/migrations/manifests/0.3.3.json +9 -0
  335. package/dist/migrations/manifests/0.3.4.json +21 -0
  336. package/dist/migrations/manifests/0.3.5.json +9 -0
  337. package/dist/migrations/manifests/0.3.6.json +9 -0
  338. package/dist/migrations/manifests/0.3.7.json +9 -0
  339. package/dist/migrations/manifests/0.3.8.json +9 -0
  340. package/dist/migrations/manifests/0.3.9.json +9 -0
  341. package/dist/migrations/manifests/0.4.0-beta.1.json +228 -0
  342. package/dist/migrations/manifests/0.4.0-beta.10.json +9 -0
  343. package/dist/migrations/manifests/0.4.0-beta.2.json +9 -0
  344. package/dist/migrations/manifests/0.4.0-beta.3.json +9 -0
  345. package/dist/migrations/manifests/0.4.0-beta.4.json +9 -0
  346. package/dist/migrations/manifests/0.4.0-beta.5.json +9 -0
  347. package/dist/migrations/manifests/0.4.0-beta.6.json +9 -0
  348. package/dist/migrations/manifests/0.4.0-beta.7.json +9 -0
  349. package/dist/migrations/manifests/0.4.0-beta.8.json +34 -0
  350. package/dist/migrations/manifests/0.4.0-beta.9.json +9 -0
  351. package/dist/migrations/manifests/0.4.0-rc.0.json +9 -0
  352. package/dist/migrations/manifests/0.4.0-rc.1.json +9 -0
  353. package/dist/migrations/manifests/0.4.0.json +9 -0
  354. package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
  355. package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
  356. package/dist/migrations/manifests/0.5.0-beta.10.json +9 -0
  357. package/dist/migrations/manifests/0.5.0-beta.11.json +9 -0
  358. package/dist/migrations/manifests/0.5.0-beta.12.json +9 -0
  359. package/dist/migrations/manifests/0.5.0-beta.13.json +9 -0
  360. package/dist/migrations/manifests/0.5.0-beta.14.json +9 -0
  361. package/dist/migrations/manifests/0.5.0-beta.15.json +116 -0
  362. package/dist/migrations/manifests/0.5.0-beta.16.json +9 -0
  363. package/dist/migrations/manifests/0.5.0-beta.17.json +9 -0
  364. package/dist/migrations/manifests/0.5.0-beta.18.json +9 -0
  365. package/dist/migrations/manifests/0.5.0-beta.19.json +9 -0
  366. package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
  367. package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
  368. package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
  369. package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
  370. package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
  371. package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
  372. package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
  373. package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
  374. package/dist/migrations/manifests/0.5.0-rc.0.json +9 -0
  375. package/dist/migrations/manifests/0.5.0-rc.1.json +9 -0
  376. package/dist/migrations/manifests/0.5.0-rc.2.json +9 -0
  377. package/dist/migrations/manifests/0.5.0-rc.3.json +9 -0
  378. package/dist/migrations/manifests/0.5.0-rc.4.json +9 -0
  379. package/dist/migrations/manifests/0.5.0-rc.5.json +9 -0
  380. package/dist/migrations/manifests/0.5.0-rc.6.json +9 -0
  381. package/dist/migrations/manifests/0.5.0-rc.7.json +9 -0
  382. package/dist/migrations/manifests/0.5.0.json +9 -0
  383. package/dist/migrations/manifests/0.5.1.json +9 -0
  384. package/dist/migrations/manifests/0.5.10.json +9 -0
  385. package/dist/migrations/manifests/0.5.11.json +16 -0
  386. package/dist/migrations/manifests/0.5.12.json +9 -0
  387. package/dist/migrations/manifests/0.5.13.json +9 -0
  388. package/dist/migrations/manifests/0.5.14.json +9 -0
  389. package/dist/migrations/manifests/0.5.15.json +9 -0
  390. package/dist/migrations/manifests/0.5.16.json +9 -0
  391. package/dist/migrations/manifests/0.5.17.json +9 -0
  392. package/dist/migrations/manifests/0.5.18.json +9 -0
  393. package/dist/migrations/manifests/0.5.19.json +9 -0
  394. package/dist/migrations/manifests/0.5.2.json +9 -0
  395. package/dist/migrations/manifests/0.5.3.json +9 -0
  396. package/dist/migrations/manifests/0.5.4.json +9 -0
  397. package/dist/migrations/manifests/0.5.5.json +9 -0
  398. package/dist/migrations/manifests/0.5.6.json +9 -0
  399. package/dist/migrations/manifests/0.5.7.json +16 -0
  400. package/dist/migrations/manifests/0.5.8.json +9 -0
  401. package/dist/migrations/manifests/0.5.9.json +9 -0
  402. package/dist/migrations/manifests/0.6.0-beta.0.json +16 -0
  403. package/dist/migrations/manifests/0.6.0-beta.1.json +9 -0
  404. package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
  405. package/dist/migrations/manifests/0.6.0-beta.11.json +9 -0
  406. package/dist/migrations/manifests/0.6.0-beta.12.json +9 -0
  407. package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
  408. package/dist/migrations/manifests/0.6.0-beta.14.json +9 -0
  409. package/dist/migrations/manifests/0.6.0-beta.15.json +9 -0
  410. package/dist/migrations/manifests/0.6.0-beta.16.json +9 -0
  411. package/dist/migrations/manifests/0.6.0-beta.17.json +9 -0
  412. package/dist/migrations/manifests/0.6.0-beta.18.json +16 -0
  413. package/dist/migrations/manifests/0.6.0-beta.19.json +9 -0
  414. package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
  415. package/dist/migrations/manifests/0.6.0-beta.20.json +9 -0
  416. package/dist/migrations/manifests/0.6.0-beta.21.json +9 -0
  417. package/dist/migrations/manifests/0.6.0-beta.22.json +9 -0
  418. package/dist/migrations/manifests/0.6.0-beta.23.json +88 -0
  419. package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
  420. package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
  421. package/dist/migrations/manifests/0.6.0-beta.5.json +9 -0
  422. package/dist/migrations/manifests/0.6.0-beta.6.json +16 -0
  423. package/dist/migrations/manifests/0.6.0-beta.7.json +9 -0
  424. package/dist/migrations/manifests/0.6.0-beta.8.json +9 -0
  425. package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
  426. package/dist/migrations/manifests/0.6.0-rc.0.json +9 -0
  427. package/dist/migrations/manifests/0.6.0.json +1 -0
  428. package/dist/migrations/manifests/0.6.1.json +9 -0
  429. package/dist/migrations/manifests/0.6.10.json +9 -0
  430. package/dist/migrations/manifests/0.6.11.json +9 -0
  431. package/dist/migrations/manifests/0.6.12.json +9 -0
  432. package/dist/migrations/manifests/0.6.13.json +9 -0
  433. package/dist/migrations/manifests/0.6.14.json +9 -0
  434. package/dist/migrations/manifests/0.6.2.json +9 -0
  435. package/dist/migrations/manifests/0.6.3.json +24 -0
  436. package/dist/migrations/manifests/0.6.4.json +9 -0
  437. package/dist/migrations/manifests/0.6.5.json +9 -0
  438. package/dist/migrations/manifests/0.6.6.json +17 -0
  439. package/dist/migrations/manifests/0.6.7.json +9 -0
  440. package/dist/migrations/manifests/0.6.8.json +17 -0
  441. package/dist/migrations/manifests/0.6.9.json +9 -0
  442. package/dist/migrations/manifests/0.7.0-beta.0.json +9 -0
  443. package/dist/migrations/manifests/0.7.0-beta.1.json +9 -0
  444. package/dist/migrations/manifests/0.7.0-beta.2.json +9 -0
  445. package/dist/migrations/manifests/0.7.0-beta.3.json +9 -0
  446. package/dist/templates/claude/agents/trellis-check.md +115 -0
  447. package/dist/templates/claude/agents/trellis-implement.md +115 -0
  448. package/dist/templates/claude/agents/trellis-research.md +137 -0
  449. package/dist/templates/claude/hooks/statusline.py +332 -0
  450. package/dist/templates/claude/index.d.ts +31 -0
  451. package/dist/templates/claude/index.d.ts.map +1 -0
  452. package/dist/templates/claude/index.js +57 -0
  453. package/dist/templates/claude/index.js.map +1 -0
  454. package/dist/templates/claude/settings.json +95 -0
  455. package/dist/templates/codebuddy/agents/trellis-check.md +115 -0
  456. package/dist/templates/codebuddy/agents/trellis-implement.md +115 -0
  457. package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
  458. package/dist/templates/codebuddy/index.d.ts +15 -0
  459. package/dist/templates/codebuddy/index.d.ts.map +1 -0
  460. package/dist/templates/codebuddy/index.js +15 -0
  461. package/dist/templates/codebuddy/index.js.map +1 -0
  462. package/dist/templates/codebuddy/settings.json +69 -0
  463. package/dist/templates/codex/agents/trellis-check.toml +56 -0
  464. package/dist/templates/codex/agents/trellis-implement.toml +37 -0
  465. package/dist/templates/codex/agents/trellis-research.toml +78 -0
  466. package/dist/templates/codex/config.toml +39 -0
  467. package/dist/templates/codex/hooks/session-start.py +568 -0
  468. package/dist/templates/codex/hooks.json +52 -0
  469. package/dist/templates/codex/index.d.ts +35 -0
  470. package/dist/templates/codex/index.d.ts.map +1 -0
  471. package/dist/templates/codex/index.js +67 -0
  472. package/dist/templates/codex/index.js.map +1 -0
  473. package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +67 -0
  474. package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +480 -0
  475. package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +233 -0
  476. package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +226 -0
  477. package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +276 -0
  478. package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +128 -0
  479. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +85 -0
  480. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
  481. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +56 -0
  482. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
  483. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
  484. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +123 -0
  485. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
  486. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +90 -0
  487. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
  488. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
  489. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/bundled-skills.md +159 -0
  490. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
  491. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
  492. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-channel.md +69 -0
  493. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
  494. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
  495. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +130 -0
  496. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
  497. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
  498. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +84 -0
  499. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +73 -0
  500. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +59 -0
  501. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +113 -0
  502. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +87 -0
  503. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +81 -0
  504. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +65 -0
  505. package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +93 -0
  506. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/SKILL.md +41 -0
  507. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/mcp-setup.md +90 -0
  508. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/repository-analysis.md +59 -0
  509. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-task-planning.md +61 -0
  510. package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-writing.md +70 -0
  511. package/dist/templates/common/commands/continue.md +56 -0
  512. package/dist/templates/common/commands/finish-work.md +66 -0
  513. package/dist/templates/common/commands/start.md +59 -0
  514. package/dist/templates/common/index.d.ts +48 -0
  515. package/dist/templates/common/index.d.ts.map +1 -0
  516. package/dist/templates/common/index.js +104 -0
  517. package/dist/templates/common/index.js.map +1 -0
  518. package/dist/templates/common/skills/before-dev.md +46 -0
  519. package/dist/templates/common/skills/brainstorm.md +212 -0
  520. package/dist/templates/common/skills/break-loop.md +184 -0
  521. package/dist/templates/common/skills/check.md +106 -0
  522. package/dist/templates/common/skills/tdd.md +142 -0
  523. package/dist/templates/common/skills/update-spec.md +351 -0
  524. package/dist/templates/copilot/copilot-instructions.md +11 -0
  525. package/dist/templates/copilot/hooks/session-start.py +564 -0
  526. package/dist/templates/copilot/hooks.json +19 -0
  527. package/dist/templates/copilot/index.d.ts +28 -0
  528. package/dist/templates/copilot/index.d.ts.map +1 -0
  529. package/dist/templates/copilot/index.js +61 -0
  530. package/dist/templates/copilot/index.js.map +1 -0
  531. package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
  532. package/dist/templates/copilot/prompts/brainstorm.prompt.md +173 -0
  533. package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
  534. package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +170 -0
  535. package/dist/templates/copilot/prompts/check.prompt.md +110 -0
  536. package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
  537. package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
  538. package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
  539. package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
  540. package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
  541. package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
  542. package/dist/templates/copilot/prompts/start.prompt.md +63 -0
  543. package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
  544. package/dist/templates/cursor/agents/trellis-check.md +114 -0
  545. package/dist/templates/cursor/agents/trellis-implement.md +114 -0
  546. package/dist/templates/cursor/agents/trellis-research.md +136 -0
  547. package/dist/templates/cursor/hooks.json +24 -0
  548. package/dist/templates/cursor/index.d.ts +13 -0
  549. package/dist/templates/cursor/index.d.ts.map +1 -0
  550. package/dist/templates/cursor/index.js +13 -0
  551. package/dist/templates/cursor/index.js.map +1 -0
  552. package/dist/templates/droid/droids/trellis-check.md +107 -0
  553. package/dist/templates/droid/droids/trellis-implement.md +107 -0
  554. package/dist/templates/droid/droids/trellis-research.md +137 -0
  555. package/dist/templates/droid/index.d.ts +15 -0
  556. package/dist/templates/droid/index.d.ts.map +1 -0
  557. package/dist/templates/droid/index.js +15 -0
  558. package/dist/templates/droid/index.js.map +1 -0
  559. package/dist/templates/droid/settings.json +69 -0
  560. package/dist/templates/dsh/DSH.md +80 -0
  561. package/dist/templates/dsh/agents/trellis-check.md +99 -0
  562. package/dist/templates/dsh/agents/trellis-implement.md +106 -0
  563. package/dist/templates/dsh/agents/trellis-research.md +134 -0
  564. package/dist/templates/dsh/index.d.ts +22 -0
  565. package/dist/templates/dsh/index.d.ts.map +1 -0
  566. package/dist/templates/dsh/index.js +27 -0
  567. package/dist/templates/dsh/index.js.map +1 -0
  568. package/dist/templates/extract.d.ts +40 -0
  569. package/dist/templates/extract.d.ts.map +1 -0
  570. package/dist/templates/extract.js +106 -0
  571. package/dist/templates/extract.js.map +1 -0
  572. package/dist/templates/gemini/agents/trellis-check.md +107 -0
  573. package/dist/templates/gemini/agents/trellis-implement.md +107 -0
  574. package/dist/templates/gemini/agents/trellis-research.md +136 -0
  575. package/dist/templates/gemini/index.d.ts +13 -0
  576. package/dist/templates/gemini/index.d.ts.map +1 -0
  577. package/dist/templates/gemini/index.js +13 -0
  578. package/dist/templates/gemini/index.js.map +1 -0
  579. package/dist/templates/gemini/settings.json +40 -0
  580. package/dist/templates/grok/agents/trellis-check.md +106 -0
  581. package/dist/templates/grok/agents/trellis-implement.md +121 -0
  582. package/dist/templates/grok/agents/trellis-research.md +146 -0
  583. package/dist/templates/grok/index.d.ts +16 -0
  584. package/dist/templates/grok/index.d.ts.map +1 -0
  585. package/dist/templates/grok/index.js +19 -0
  586. package/dist/templates/grok/index.js.map +1 -0
  587. package/dist/templates/kimi/agents/trellis-check.md +104 -0
  588. package/dist/templates/kimi/agents/trellis-implement.md +120 -0
  589. package/dist/templates/kimi/agents/trellis-research.md +144 -0
  590. package/dist/templates/kimi/index.d.ts +20 -0
  591. package/dist/templates/kimi/index.d.ts.map +1 -0
  592. package/dist/templates/kimi/index.js +23 -0
  593. package/dist/templates/kimi/index.js.map +1 -0
  594. package/dist/templates/kiro/agents/trellis-check.json +26 -0
  595. package/dist/templates/kiro/agents/trellis-implement.json +26 -0
  596. package/dist/templates/kiro/agents/trellis-research.json +30 -0
  597. package/dist/templates/kiro/agents/trellis.json +34 -0
  598. package/dist/templates/kiro/hooks/trellis-workflow-state.kiro.hook +14 -0
  599. package/dist/templates/kiro/index.d.ts +32 -0
  600. package/dist/templates/kiro/index.d.ts.map +1 -0
  601. package/dist/templates/kiro/index.js +28 -0
  602. package/dist/templates/kiro/index.js.map +1 -0
  603. package/dist/templates/markdown/agents.md +21 -0
  604. package/dist/templates/markdown/gitignore.txt +15 -0
  605. package/dist/templates/markdown/index.d.ts +27 -0
  606. package/dist/templates/markdown/index.d.ts.map +1 -0
  607. package/dist/templates/markdown/index.js +52 -0
  608. package/dist/templates/markdown/index.js.map +1 -0
  609. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
  610. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
  611. package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
  612. package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
  613. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
  614. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
  615. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
  616. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
  617. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
  618. package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
  619. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
  620. package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
  621. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
  622. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
  623. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +327 -0
  624. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +633 -0
  625. package/dist/templates/markdown/spec/guides/index.md.txt +97 -0
  626. package/dist/templates/markdown/workspace-index.md +125 -0
  627. package/dist/templates/markdown/worktree.yaml.txt +58 -0
  628. package/dist/templates/omp/agents/trellis-check.md +41 -0
  629. package/dist/templates/omp/agents/trellis-implement.md +55 -0
  630. package/dist/templates/omp/agents/trellis-research.md +30 -0
  631. package/dist/templates/omp/extensions/trellis/index.ts.txt +592 -0
  632. package/dist/templates/omp/index.d.ts +4 -0
  633. package/dist/templates/omp/index.d.ts.map +1 -0
  634. package/dist/templates/omp/index.js +9 -0
  635. package/dist/templates/omp/index.js.map +1 -0
  636. package/dist/templates/opencode/agents/trellis-check.md +122 -0
  637. package/dist/templates/opencode/agents/trellis-implement.md +123 -0
  638. package/dist/templates/opencode/agents/trellis-research.md +145 -0
  639. package/dist/templates/opencode/lib/context-visibility.js +86 -0
  640. package/dist/templates/opencode/lib/session-utils.js +526 -0
  641. package/dist/templates/opencode/lib/trellis-context.js +627 -0
  642. package/dist/templates/opencode/package.json +5 -0
  643. package/dist/templates/opencode/plugins/inject-spec-context.js +121 -0
  644. package/dist/templates/opencode/plugins/inject-subagent-context.js +569 -0
  645. package/dist/templates/opencode/plugins/inject-workflow-state.js +340 -0
  646. package/dist/templates/opencode/plugins/session-start.js +74 -0
  647. package/dist/templates/pi/agents/trellis-check.md +37 -0
  648. package/dist/templates/pi/agents/trellis-implement.md +52 -0
  649. package/dist/templates/pi/agents/trellis-research.md +25 -0
  650. package/dist/templates/pi/extensions/trellis/index.ts.txt +2033 -0
  651. package/dist/templates/pi/index.d.ts +5 -0
  652. package/dist/templates/pi/index.d.ts.map +1 -0
  653. package/dist/templates/pi/index.js +12 -0
  654. package/dist/templates/pi/index.js.map +1 -0
  655. package/dist/templates/pi/settings.json +9 -0
  656. package/dist/templates/qoder/agents/trellis-check.md +108 -0
  657. package/dist/templates/qoder/agents/trellis-implement.md +108 -0
  658. package/dist/templates/qoder/agents/trellis-research.md +137 -0
  659. package/dist/templates/qoder/index.d.ts +15 -0
  660. package/dist/templates/qoder/index.d.ts.map +1 -0
  661. package/dist/templates/qoder/index.js +15 -0
  662. package/dist/templates/qoder/index.js.map +1 -0
  663. package/dist/templates/qoder/settings.json +59 -0
  664. package/dist/templates/reasonix/agents/trellis-check.md +36 -0
  665. package/dist/templates/reasonix/agents/trellis-implement.md +51 -0
  666. package/dist/templates/reasonix/index.d.ts +13 -0
  667. package/dist/templates/reasonix/index.d.ts.map +1 -0
  668. package/dist/templates/reasonix/index.js +16 -0
  669. package/dist/templates/reasonix/index.js.map +1 -0
  670. package/dist/templates/shared-hooks/index.d.ts +83 -0
  671. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  672. package/dist/templates/shared-hooks/index.js +152 -0
  673. package/dist/templates/shared-hooks/index.js.map +1 -0
  674. package/dist/templates/shared-hooks/inject-shell-session-context.py +292 -0
  675. package/dist/templates/shared-hooks/inject-spec-context.py +844 -0
  676. package/dist/templates/shared-hooks/inject-subagent-context.py +1175 -0
  677. package/dist/templates/shared-hooks/inject-workflow-state.py +501 -0
  678. package/dist/templates/shared-hooks/session-start.py +969 -0
  679. package/dist/templates/snow/SNOW.md +86 -0
  680. package/dist/templates/snow/agents/trellis-check.md +136 -0
  681. package/dist/templates/snow/agents/trellis-implement.md +158 -0
  682. package/dist/templates/snow/agents/trellis-research.md +114 -0
  683. package/dist/templates/snow/hooks/beforeSubAgentStart.json +15 -0
  684. package/dist/templates/snow/hooks/onSessionStart.json +15 -0
  685. package/dist/templates/snow/hooks/onUserMessage.json +15 -0
  686. package/dist/templates/snow/hooks/write-trellis-context.py +644 -0
  687. package/dist/templates/snow/index.d.ts +26 -0
  688. package/dist/templates/snow/index.d.ts.map +1 -0
  689. package/dist/templates/snow/index.js +36 -0
  690. package/dist/templates/snow/index.js.map +1 -0
  691. package/dist/templates/template-utils.d.ts +26 -0
  692. package/dist/templates/template-utils.d.ts.map +1 -0
  693. package/dist/templates/template-utils.js +64 -0
  694. package/dist/templates/template-utils.js.map +1 -0
  695. package/dist/templates/trae/agents/trellis-check.md +108 -0
  696. package/dist/templates/trae/agents/trellis-implement.md +108 -0
  697. package/dist/templates/trae/agents/trellis-research.md +137 -0
  698. package/dist/templates/trae/hooks.json +39 -0
  699. package/dist/templates/trae/index.d.ts +15 -0
  700. package/dist/templates/trae/index.d.ts.map +1 -0
  701. package/dist/templates/trae/index.js +15 -0
  702. package/dist/templates/trae/index.js.map +1 -0
  703. package/dist/templates/trellis/agents/check.md +70 -0
  704. package/dist/templates/trellis/agents/implement.md +81 -0
  705. package/dist/templates/trellis/config.yaml +205 -0
  706. package/dist/templates/trellis/gitattributes.txt +9 -0
  707. package/dist/templates/trellis/gitignore.txt +32 -0
  708. package/dist/templates/trellis/index.d.ts +70 -0
  709. package/dist/templates/trellis/index.d.ts.map +1 -0
  710. package/dist/templates/trellis/index.js +127 -0
  711. package/dist/templates/trellis/index.js.map +1 -0
  712. package/dist/templates/trellis/scripts/__init__.py +5 -0
  713. package/dist/templates/trellis/scripts/add_session.py +681 -0
  714. package/dist/templates/trellis/scripts/common/__init__.py +92 -0
  715. package/dist/templates/trellis/scripts/common/active_task.py +787 -0
  716. package/dist/templates/trellis/scripts/common/cli_adapter.py +982 -0
  717. package/dist/templates/trellis/scripts/common/config.py +587 -0
  718. package/dist/templates/trellis/scripts/common/developer.py +190 -0
  719. package/dist/templates/trellis/scripts/common/git.py +74 -0
  720. package/dist/templates/trellis/scripts/common/git_context.py +138 -0
  721. package/dist/templates/trellis/scripts/common/io.py +61 -0
  722. package/dist/templates/trellis/scripts/common/log.py +45 -0
  723. package/dist/templates/trellis/scripts/common/packages_context.py +238 -0
  724. package/dist/templates/trellis/scripts/common/paths.py +508 -0
  725. package/dist/templates/trellis/scripts/common/safe_commit.py +315 -0
  726. package/dist/templates/trellis/scripts/common/session_context.py +892 -0
  727. package/dist/templates/trellis/scripts/common/spec_inject.py +439 -0
  728. package/dist/templates/trellis/scripts/common/spec_match.py +395 -0
  729. package/dist/templates/trellis/scripts/common/task_context.py +372 -0
  730. package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
  731. package/dist/templates/trellis/scripts/common/task_store.py +1016 -0
  732. package/dist/templates/trellis/scripts/common/task_utils.py +309 -0
  733. package/dist/templates/trellis/scripts/common/tasks.py +112 -0
  734. package/dist/templates/trellis/scripts/common/trellis_config.py +132 -0
  735. package/dist/templates/trellis/scripts/common/types.py +110 -0
  736. package/dist/templates/trellis/scripts/common/workflow_phase.py +243 -0
  737. package/dist/templates/trellis/scripts/common/workflow_selection.py +177 -0
  738. package/dist/templates/trellis/scripts/get_context.py +16 -0
  739. package/dist/templates/trellis/scripts/get_developer.py +26 -0
  740. package/dist/templates/trellis/scripts/hooks/linear_sync.py +243 -0
  741. package/dist/templates/trellis/scripts/init_developer.py +51 -0
  742. package/dist/templates/trellis/scripts/task.py +694 -0
  743. package/dist/templates/trellis/tasks/.gitkeep +0 -0
  744. package/dist/templates/trellis/workflow.md +777 -0
  745. package/dist/templates/zcode/agents/trellis-check.md +110 -0
  746. package/dist/templates/zcode/agents/trellis-implement.md +116 -0
  747. package/dist/templates/zcode/agents/trellis-research.md +133 -0
  748. package/dist/templates/zcode/config.json +52 -0
  749. package/dist/templates/zcode/index.d.ts +25 -0
  750. package/dist/templates/zcode/index.d.ts.map +1 -0
  751. package/dist/templates/zcode/index.js +29 -0
  752. package/dist/templates/zcode/index.js.map +1 -0
  753. package/dist/types/ai-tools.d.ts +95 -0
  754. package/dist/types/ai-tools.d.ts.map +1 -0
  755. package/dist/types/ai-tools.js +509 -0
  756. package/dist/types/ai-tools.js.map +1 -0
  757. package/dist/types/migration.d.ts +125 -0
  758. package/dist/types/migration.d.ts.map +1 -0
  759. package/dist/types/migration.js +8 -0
  760. package/dist/types/migration.js.map +1 -0
  761. package/dist/utils/agent-refs.d.ts +31 -0
  762. package/dist/utils/agent-refs.d.ts.map +1 -0
  763. package/dist/utils/agent-refs.js +63 -0
  764. package/dist/utils/agent-refs.js.map +1 -0
  765. package/dist/utils/atomic-write.d.ts +12 -0
  766. package/dist/utils/atomic-write.d.ts.map +1 -0
  767. package/dist/utils/atomic-write.js +30 -0
  768. package/dist/utils/atomic-write.js.map +1 -0
  769. package/dist/utils/compare-versions.d.ts +12 -0
  770. package/dist/utils/compare-versions.d.ts.map +1 -0
  771. package/dist/utils/compare-versions.js +86 -0
  772. package/dist/utils/compare-versions.js.map +1 -0
  773. package/dist/utils/cwd-guard.d.ts +38 -0
  774. package/dist/utils/cwd-guard.d.ts.map +1 -0
  775. package/dist/utils/cwd-guard.js +62 -0
  776. package/dist/utils/cwd-guard.js.map +1 -0
  777. package/dist/utils/file-writer.d.ts +36 -0
  778. package/dist/utils/file-writer.d.ts.map +1 -0
  779. package/dist/utils/file-writer.js +204 -0
  780. package/dist/utils/file-writer.js.map +1 -0
  781. package/dist/utils/manifest-prune.d.ts +61 -0
  782. package/dist/utils/manifest-prune.d.ts.map +1 -0
  783. package/dist/utils/manifest-prune.js +136 -0
  784. package/dist/utils/manifest-prune.js.map +1 -0
  785. package/dist/utils/posix.d.ts +13 -0
  786. package/dist/utils/posix.d.ts.map +1 -0
  787. package/dist/utils/posix.js +15 -0
  788. package/dist/utils/posix.js.map +1 -0
  789. package/dist/utils/project-detector.d.ts +46 -0
  790. package/dist/utils/project-detector.d.ts.map +1 -0
  791. package/dist/utils/project-detector.js +666 -0
  792. package/dist/utils/project-detector.js.map +1 -0
  793. package/dist/utils/proxy.d.ts +25 -0
  794. package/dist/utils/proxy.d.ts.map +1 -0
  795. package/dist/utils/proxy.js +60 -0
  796. package/dist/utils/proxy.js.map +1 -0
  797. package/dist/utils/registry-config.d.ts +7 -0
  798. package/dist/utils/registry-config.d.ts.map +1 -0
  799. package/dist/utils/registry-config.js +172 -0
  800. package/dist/utils/registry-config.js.map +1 -0
  801. package/dist/utils/task-json.d.ts +13 -0
  802. package/dist/utils/task-json.d.ts.map +1 -0
  803. package/dist/utils/task-json.js +12 -0
  804. package/dist/utils/task-json.js.map +1 -0
  805. package/dist/utils/template-fetcher.d.ts +161 -0
  806. package/dist/utils/template-fetcher.d.ts.map +1 -0
  807. package/dist/utils/template-fetcher.js +994 -0
  808. package/dist/utils/template-fetcher.js.map +1 -0
  809. package/dist/utils/template-hash.d.ts +123 -0
  810. package/dist/utils/template-hash.d.ts.map +1 -0
  811. package/dist/utils/template-hash.js +335 -0
  812. package/dist/utils/template-hash.js.map +1 -0
  813. package/dist/utils/uninstall-scrubbers.d.ts +67 -0
  814. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
  815. package/dist/utils/uninstall-scrubbers.js +361 -0
  816. package/dist/utils/uninstall-scrubbers.js.map +1 -0
  817. package/dist/utils/workflow-resolver.d.ts +86 -0
  818. package/dist/utils/workflow-resolver.d.ts.map +1 -0
  819. package/dist/utils/workflow-resolver.js +265 -0
  820. package/dist/utils/workflow-resolver.js.map +1 -0
  821. package/package.json +89 -0
@@ -0,0 +1,454 @@
1
+ /**
2
+ * `trellis workflow` command — list and switch the active `.trellis/workflow.md`.
3
+ *
4
+ * Behavior contracts:
5
+ *
6
+ * - Hash boundary: after writing native content, refresh the
7
+ * `.trellis/workflow.md` entry in `.template-hashes.json`. After writing
8
+ * any non-native content, remove that entry. This prevents `trellis update`
9
+ * from silently restoring native bytes over a user-selected variant
10
+ * (see design.md "Durable-state contract").
11
+ *
12
+ * - Modified-file protection: if the on-disk workflow has been edited (hash
13
+ * mismatch and it isn't already byte-identical to the chosen template),
14
+ * interactive runs prompt; non-interactive runs fail unless `--force` or
15
+ * `--create-new` was passed.
16
+ *
17
+ * - `--create-new`: never touches `.trellis/workflow.md`; writes
18
+ * `.trellis/workflow.md.new` and leaves the hash file alone.
19
+ *
20
+ * - `--save <id>`: resolves a template through the same pipeline but writes it
21
+ * to the per-task variant library (`.trellis/workflows/<id>.md`) instead of
22
+ * the active workflow. Library files are user-managed by definition: this
23
+ * path never touches `.trellis/workflow.md` or `.template-hashes.json`.
24
+ */
25
+ import fs from "node:fs";
26
+ import path from "node:path";
27
+ import chalk from "chalk";
28
+ import inquirer from "inquirer";
29
+ import { DIR_NAMES, PATHS } from "../constants/paths.js";
30
+ import { collectMissingAgents } from "../utils/agent-refs.js";
31
+ import { replacePythonCommandLiterals } from "../configurators/shared.js";
32
+ import { computeHash, loadHashes, removeHash, updateHashes, } from "../utils/template-hash.js";
33
+ import { listWorkflowTemplates, resolveWorkflowTemplate, NATIVE_WORKFLOW_ID, WorkflowResolveError, } from "../utils/workflow-resolver.js";
34
+ import { writeFileAtomic } from "../utils/atomic-write.js";
35
+ /**
36
+ * Per-task workflow variant library. Files here are user-managed: never
37
+ * hash-tracked, never touched by `trellis update` (same ownership stance as a
38
+ * non-native `.trellis/workflow.md`).
39
+ */
40
+ const WORKFLOWS_LIB_REL = `${DIR_NAMES.WORKFLOW}/workflows`;
41
+ /**
42
+ * Library id charset — must match the per-task resolution rule in the runtime
43
+ * consumers (`common/workflow_selection.py`) so a saved id is resolvable and
44
+ * cannot traverse paths.
45
+ */
46
+ const WORKFLOW_ID_RE = /^[A-Za-z0-9_-]+$/;
47
+ function workflowFilePath(cwd) {
48
+ return path.join(cwd, PATHS.WORKFLOW_GUIDE_FILE);
49
+ }
50
+ function workflowsLibraryDir(cwd) {
51
+ return path.join(cwd, WORKFLOWS_LIB_REL);
52
+ }
53
+ function workflowLibraryPath(cwd, id) {
54
+ return path.join(workflowsLibraryDir(cwd), `${id}.md`);
55
+ }
56
+ function isInteractive() {
57
+ return Boolean(process.stdin.isTTY);
58
+ }
59
+ function printListing(templates) {
60
+ console.log(chalk.cyan("\nAvailable workflow templates:\n"));
61
+ for (const t of templates) {
62
+ const tag = t.source === "bundled"
63
+ ? chalk.gray(" (bundled)")
64
+ : chalk.gray(" (marketplace)");
65
+ console.log(` ${chalk.green(t.id)}${tag} — ${t.name}`);
66
+ if (t.description) {
67
+ console.log(chalk.gray(` ${t.description}`));
68
+ }
69
+ }
70
+ console.log("");
71
+ }
72
+ /**
73
+ * `--list` addition: ids already saved to the per-task variant library on
74
+ * disk. Skipped entirely when the directory is absent or empty.
75
+ */
76
+ function printLibraryListing(cwd) {
77
+ const libDir = workflowsLibraryDir(cwd);
78
+ if (!fs.existsSync(libDir))
79
+ return;
80
+ const ids = fs
81
+ .readdirSync(libDir)
82
+ .filter((f) => f.endsWith(".md"))
83
+ .map((f) => f.slice(0, -".md".length))
84
+ .sort();
85
+ if (ids.length === 0)
86
+ return;
87
+ console.log(chalk.cyan(`Library (${WORKFLOWS_LIB_REL}/):\n`));
88
+ for (const id of ids) {
89
+ console.log(` ${chalk.green(id)}`);
90
+ }
91
+ console.log("");
92
+ }
93
+ /**
94
+ * Decide whether the existing workflow.md is byte-identical to the resolved
95
+ * template (treat as "safe to overwrite"), pristine (matches tracked hash —
96
+ * also safe), or user-modified (needs confirmation / --force).
97
+ */
98
+ function classifyExistingWorkflow(cwd, newContent) {
99
+ const filePath = workflowFilePath(cwd);
100
+ if (!fs.existsSync(filePath)) {
101
+ return { kind: "missing" };
102
+ }
103
+ const current = fs.readFileSync(filePath, "utf-8");
104
+ if (current === newContent) {
105
+ return { kind: "identical" };
106
+ }
107
+ const hashes = loadHashes(cwd);
108
+ const storedHash = hashes[PATHS.WORKFLOW_GUIDE_FILE];
109
+ if (storedHash && storedHash === computeHash(current)) {
110
+ return { kind: "pristine" };
111
+ }
112
+ return { kind: "modified" };
113
+ }
114
+ async function chooseTemplateInteractively(templates) {
115
+ if (templates.length === 0)
116
+ return null;
117
+ const { id } = await inquirer.prompt([
118
+ {
119
+ type: "list",
120
+ name: "id",
121
+ message: "Select a workflow template:",
122
+ choices: templates.map((t) => ({
123
+ name: `${t.id} — ${t.name}${t.source === "bundled" ? " (bundled)" : ""}`,
124
+ value: t.id,
125
+ })),
126
+ },
127
+ ]);
128
+ return id;
129
+ }
130
+ async function confirmOverwriteInteractively() {
131
+ const { action } = await inquirer.prompt([
132
+ {
133
+ type: "list",
134
+ name: "action",
135
+ message: "Your .trellis/workflow.md has local edits. What do you want to do?",
136
+ choices: [
137
+ { name: "Overwrite (replace local edits)", value: "overwrite" },
138
+ {
139
+ name: "Write to .trellis/workflow.md.new and keep current",
140
+ value: "create-new",
141
+ },
142
+ { name: "Skip (no changes)", value: "skip" },
143
+ ],
144
+ },
145
+ ]);
146
+ return action;
147
+ }
148
+ function applyHashContract(cwd, templateId) {
149
+ const relPath = PATHS.WORKFLOW_GUIDE_FILE;
150
+ if (templateId === NATIVE_WORKFLOW_ID) {
151
+ const filePath = workflowFilePath(cwd);
152
+ const current = fs.readFileSync(filePath, "utf-8");
153
+ const files = new Map();
154
+ files.set(relPath, current);
155
+ updateHashes(cwd, files);
156
+ }
157
+ else {
158
+ // Non-native workflow is user-managed local content. Drop the hash entry
159
+ // so `trellis update` treats it as modified and does not silently restore
160
+ // native bytes.
161
+ removeHash(cwd, relPath);
162
+ }
163
+ }
164
+ async function writeWorkflow(cwd, template, options) {
165
+ const filePath = workflowFilePath(cwd);
166
+ const dest = path.dirname(filePath);
167
+ if (!fs.existsSync(dest)) {
168
+ fs.mkdirSync(dest, { recursive: true });
169
+ }
170
+ const finalContent = replacePythonCommandLiterals(template.content);
171
+ // `--create-new` always writes the `.new` sibling, regardless of disk state.
172
+ if (options.createNew) {
173
+ const newPath = `${filePath}.new`;
174
+ fs.writeFileSync(newPath, finalContent, "utf-8");
175
+ console.log(chalk.cyan(` + Wrote ${path.relative(cwd, newPath)} (workflow.md unchanged)`));
176
+ return;
177
+ }
178
+ const classification = classifyExistingWorkflow(cwd, finalContent);
179
+ if (classification.kind === "identical") {
180
+ console.log(chalk.gray(` ○ ${PATHS.WORKFLOW_GUIDE_FILE} already matches "${template.id}" — refreshing hash entry`));
181
+ applyHashContract(cwd, template.id);
182
+ return;
183
+ }
184
+ if (classification.kind === "modified" && !options.force) {
185
+ const explicitTemplate = Boolean(options.template);
186
+ if (explicitTemplate || !isInteractive()) {
187
+ throw new WorkflowCommandError(`${PATHS.WORKFLOW_GUIDE_FILE} has local edits. Re-run with --force to overwrite or --create-new to write ${PATHS.WORKFLOW_GUIDE_FILE}.new.`);
188
+ }
189
+ const action = await confirmOverwriteInteractively();
190
+ if (action === "skip") {
191
+ console.log(chalk.gray(" ○ Skipped"));
192
+ return;
193
+ }
194
+ if (action === "create-new") {
195
+ const newPath = `${filePath}.new`;
196
+ fs.writeFileSync(newPath, finalContent, "utf-8");
197
+ console.log(chalk.cyan(` + Wrote ${path.relative(cwd, newPath)} (workflow.md unchanged)`));
198
+ return;
199
+ }
200
+ // fall through to overwrite
201
+ }
202
+ fs.writeFileSync(filePath, finalContent, "utf-8");
203
+ console.log(chalk.green(` ✓ Replaced ${PATHS.WORKFLOW_GUIDE_FILE} with "${template.id}"`));
204
+ applyHashContract(cwd, template.id);
205
+ }
206
+ /**
207
+ * The six breadcrumb statuses used by the bundled native template. Kept in
208
+ * sync with `.trellis/spec/cli/backend/workflow-state-contract.md` (status
209
+ * writer + reachability tables) — update both together.
210
+ */
211
+ const REQUIRED_WORKFLOW_STATE_IDS = [
212
+ "no_task",
213
+ "planning",
214
+ "planning-inline",
215
+ "in_progress",
216
+ "in_progress-inline",
217
+ "completed",
218
+ ];
219
+ /**
220
+ * Soft parser-contract validation for saved library variants: warn (never
221
+ * block) when runtime markers that SessionStart / per-turn hooks and
222
+ * `get_context.py --mode phase` rely on are missing. Warnings go to stderr —
223
+ * stdout stays reserved for command output.
224
+ */
225
+ function warnAboutMissingMarkers(content, relPath) {
226
+ const problems = [];
227
+ if (!content.includes("## Phase Index")) {
228
+ problems.push('missing "## Phase Index" section');
229
+ }
230
+ if (!/^#### \d+\.\d+/m.test(content)) {
231
+ problems.push('no "#### X.Y" step heading');
232
+ }
233
+ const missingStates = REQUIRED_WORKFLOW_STATE_IDS.filter((id) => !content.includes(`[workflow-state:${id}]`));
234
+ if (missingStates.length > 0) {
235
+ problems.push(`missing [workflow-state:*] blocks: ${missingStates.join(", ")}`);
236
+ }
237
+ if (problems.length === 0)
238
+ return;
239
+ process.stderr.write(chalk.yellow(`\n⚠ ${relPath} is missing runtime parser markers:\n` +
240
+ problems.map((p) => ` - ${p}\n`).join("") +
241
+ " Consumers degrade to generic breadcrumbs / partial phase detail where markers are absent.\n"));
242
+ }
243
+ /**
244
+ * `--save <id>`: resolve through the same template pipeline as `--template`
245
+ * and write to the per-task variant library. Never touches
246
+ * `.trellis/workflow.md` or `.template-hashes.json` — library files are
247
+ * user-managed by definition.
248
+ */
249
+ async function saveWorkflowToLibrary(cwd, id, options) {
250
+ if (!WORKFLOW_ID_RE.test(id)) {
251
+ throw new WorkflowCommandError(`Invalid workflow id "${id}". Library ids must match [A-Za-z0-9_-]+ so per-task resolution can find the saved file.`);
252
+ }
253
+ let template;
254
+ try {
255
+ template = await resolveWorkflowTemplate(id, {
256
+ source: options.marketplace,
257
+ });
258
+ }
259
+ catch (err) {
260
+ if (err instanceof WorkflowResolveError) {
261
+ throw new WorkflowCommandError(err.message);
262
+ }
263
+ throw err;
264
+ }
265
+ const libDir = workflowsLibraryDir(cwd);
266
+ const destPath = path.join(libDir, `${id}.md`);
267
+ const destRel = `${WORKFLOWS_LIB_REL}/${id}.md`;
268
+ if (fs.existsSync(destPath) && !options.force) {
269
+ throw new WorkflowCommandError(`${destRel} already exists. Re-run with --force to overwrite.`);
270
+ }
271
+ if (!fs.existsSync(libDir)) {
272
+ fs.mkdirSync(libDir, { recursive: true });
273
+ }
274
+ const finalContent = replacePythonCommandLiterals(template.content);
275
+ fs.writeFileSync(destPath, finalContent, "utf-8");
276
+ console.log(chalk.green(` ✓ Saved "${template.id}" to ${destRel}`));
277
+ warnAboutMissingMarkers(finalContent, destRel);
278
+ }
279
+ function setProjectDefaultWorkflow(cwd, id) {
280
+ const configPath = path.join(cwd, DIR_NAMES.WORKFLOW, "config.yaml");
281
+ if (!fs.existsSync(configPath)) {
282
+ throw new WorkflowCommandError(`Cannot set the project default because ${DIR_NAMES.WORKFLOW}/config.yaml is missing.`);
283
+ }
284
+ const content = fs.readFileSync(configPath, "utf-8");
285
+ const line = `default_workflow: ${id}`;
286
+ let next;
287
+ if (/^default_workflow\s*:/m.test(content)) {
288
+ next = content.replace(/^default_workflow\s*:.*$/m, line);
289
+ }
290
+ else if (/^#\s*default_workflow\s*:/m.test(content)) {
291
+ next = content.replace(/^#\s*default_workflow\s*:.*$/m, line);
292
+ }
293
+ else {
294
+ next = `${content.trimEnd()}\n\n${line}\n`;
295
+ }
296
+ writeFileAtomic(configPath, next);
297
+ }
298
+ function setPersonalDefaultWorkflow(cwd, id) {
299
+ const developerPath = path.join(cwd, PATHS.DEVELOPER_FILE);
300
+ if (!fs.existsSync(developerPath)) {
301
+ throw new WorkflowCommandError(`Cannot set the personal default because ${PATHS.DEVELOPER_FILE} is missing. Run \`trellis init -u <name>\` first.`);
302
+ }
303
+ const content = fs.readFileSync(developerPath, "utf-8");
304
+ const line = `workflow=${id}`;
305
+ const next = /^workflow=.*$/m.test(content)
306
+ ? content.replace(/^workflow=.*$/m, line)
307
+ : `${content.trimEnd()}\n${line}\n`;
308
+ writeFileAtomic(developerPath, next);
309
+ }
310
+ async function chooseWorkflowDefaults(id) {
311
+ const { projectDefault } = await inquirer.prompt([
312
+ {
313
+ type: "confirm",
314
+ name: "projectDefault",
315
+ message: `Set "${id}" as the project default in .trellis/config.yaml?`,
316
+ default: false,
317
+ },
318
+ ]);
319
+ const { personalDefault } = await inquirer.prompt([
320
+ {
321
+ type: "confirm",
322
+ name: "personalDefault",
323
+ message: `Set "${id}" as your personal default in .trellis/.developer?`,
324
+ default: false,
325
+ },
326
+ ]);
327
+ return { projectDefault, personalDefault };
328
+ }
329
+ /**
330
+ * Create a user-managed workflow variant from the bundled native workflow.
331
+ *
332
+ * Reusing native keeps every parser-sensitive heading, platform marker, and
333
+ * workflow-state block intact without maintaining a second scaffold template.
334
+ * The global `.trellis/workflow.md` and its hash entry are never changed.
335
+ */
336
+ export async function runCreateWorkflowCommand(id, options = {}) {
337
+ const cwd = process.cwd();
338
+ if (!fs.existsSync(path.join(cwd, DIR_NAMES.WORKFLOW))) {
339
+ throw new WorkflowCommandError("No .trellis/ directory found. Run `trellis init` first.");
340
+ }
341
+ if (!WORKFLOW_ID_RE.test(id)) {
342
+ throw new WorkflowCommandError(`Invalid workflow id "${id}". Workflow ids must match [A-Za-z0-9_-]+.`);
343
+ }
344
+ const destPath = workflowLibraryPath(cwd, id);
345
+ const destRel = `${WORKFLOWS_LIB_REL}/${id}.md`;
346
+ if (fs.existsSync(destPath)) {
347
+ throw new WorkflowCommandError(`${destRel} already exists. Choose another workflow id or edit the existing file.`);
348
+ }
349
+ fs.mkdirSync(path.dirname(destPath), { recursive: true });
350
+ const native = await resolveWorkflowTemplate(NATIVE_WORKFLOW_ID);
351
+ writeFileAtomic(destPath, replacePythonCommandLiterals(native.content));
352
+ console.log(chalk.green(` ✓ Created ${destRel} from the native workflow`));
353
+ if (options.skipDefaults || !isInteractive())
354
+ return;
355
+ const defaults = await chooseWorkflowDefaults(id);
356
+ if (defaults.projectDefault &&
357
+ !fs.existsSync(path.join(cwd, DIR_NAMES.WORKFLOW, "config.yaml"))) {
358
+ throw new WorkflowCommandError(`Created ${destRel}, but cannot set the project default because ${DIR_NAMES.WORKFLOW}/config.yaml is missing.`);
359
+ }
360
+ if (defaults.personalDefault &&
361
+ !fs.existsSync(path.join(cwd, PATHS.DEVELOPER_FILE))) {
362
+ throw new WorkflowCommandError(`Created ${destRel}, but cannot set the personal default because ${PATHS.DEVELOPER_FILE} is missing. Run \`trellis init -u <name>\` first.`);
363
+ }
364
+ if (defaults.projectDefault) {
365
+ setProjectDefaultWorkflow(cwd, id);
366
+ console.log(chalk.green(` ✓ Set default_workflow: ${id} in .trellis/config.yaml`));
367
+ }
368
+ if (defaults.personalDefault) {
369
+ setPersonalDefaultWorkflow(cwd, id);
370
+ console.log(chalk.green(` ✓ Set workflow=${id} in .trellis/.developer`));
371
+ }
372
+ }
373
+ /**
374
+ * Distinct error class so `cli/index.ts` can format these as user errors
375
+ * without dumping stack traces.
376
+ */
377
+ export class WorkflowCommandError extends Error {
378
+ constructor(message) {
379
+ super(message);
380
+ this.name = "WorkflowCommandError";
381
+ }
382
+ }
383
+ export async function runWorkflowCommand(options) {
384
+ const cwd = process.cwd();
385
+ if (!fs.existsSync(path.join(cwd, DIR_NAMES.WORKFLOW))) {
386
+ throw new WorkflowCommandError("No .trellis/ directory found. Run `trellis init` first.");
387
+ }
388
+ // List mode — print and exit.
389
+ if (options.list) {
390
+ const { templates, errorMessage } = await listWorkflowTemplates({
391
+ source: options.marketplace,
392
+ });
393
+ printListing(templates);
394
+ printLibraryListing(cwd);
395
+ if (errorMessage) {
396
+ console.log(chalk.yellow(`⚠ ${errorMessage}`));
397
+ }
398
+ return;
399
+ }
400
+ // `--save <id>` populates the per-task variant library; it never composes
401
+ // with the active-workflow write modes.
402
+ if (options.save !== undefined) {
403
+ if (options.template || options.createNew) {
404
+ throw new WorkflowCommandError("--save cannot be combined with --template or --create-new.");
405
+ }
406
+ await saveWorkflowToLibrary(cwd, options.save, options);
407
+ return;
408
+ }
409
+ // Resolve template id (non-interactive flag or interactive picker).
410
+ let templateId = options.template;
411
+ if (!templateId) {
412
+ if (!isInteractive()) {
413
+ throw new WorkflowCommandError("No --template specified and stdin is not a TTY. Pass --template <id> or run interactively.");
414
+ }
415
+ const { templates, errorMessage } = await listWorkflowTemplates({
416
+ source: options.marketplace,
417
+ });
418
+ if (errorMessage) {
419
+ console.log(chalk.yellow(`⚠ ${errorMessage}`));
420
+ }
421
+ const picked = await chooseTemplateInteractively(templates);
422
+ if (!picked) {
423
+ throw new WorkflowCommandError("No workflow template available.");
424
+ }
425
+ templateId = picked;
426
+ }
427
+ // Resolve content.
428
+ let template;
429
+ try {
430
+ template = await resolveWorkflowTemplate(templateId, {
431
+ source: options.marketplace,
432
+ });
433
+ }
434
+ catch (err) {
435
+ if (err instanceof WorkflowResolveError) {
436
+ throw new WorkflowCommandError(err.message);
437
+ }
438
+ throw err;
439
+ }
440
+ await writeWorkflow(cwd, template, options);
441
+ // Best-effort warning: if the resolved workflow references
442
+ // `.trellis/agents/<name>.md` files that don't exist on disk, point the user
443
+ // at `trellis update` so `trellis channel spawn --agent <name>` doesn't fail
444
+ // mid-session. Non-blocking; never errors a successful write.
445
+ warnAboutMissingAgents(cwd, template.content);
446
+ }
447
+ function warnAboutMissingAgents(cwd, workflowContent) {
448
+ const missing = collectMissingAgents(cwd, workflowContent);
449
+ if (missing.length === 0)
450
+ return;
451
+ process.stderr.write(chalk.yellow(`\n⚠ The selected workflow references .trellis/agents/{${missing.join(",")}}.md, but those files are not on disk.\n`) +
452
+ chalk.yellow(` Run \`trellis update\` to backfill the bundled agent definitions, or create them under ${PATHS.AGENTS}/.\n`));
453
+ }
454
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The Antigravity file set — written at init and diffed by `trellis update`.
3
+ * - workflows/ — start + finish-work as slash commands
4
+ * - skills/trellis-{name}/SKILL.md — auto-triggered skills from `common/skills/`
5
+ */
6
+ export declare function collectAntigravityTemplates(): Map<string, string>;
7
+ //# sourceMappingURL=antigravity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/configurators/antigravity.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjE"}
@@ -0,0 +1,11 @@
1
+ import { AI_TOOLS } from "../types/ai-tools.js";
2
+ import { collectBothTemplates } from "./shared.js";
3
+ /**
4
+ * The Antigravity file set — written at init and diffed by `trellis update`.
5
+ * - workflows/ — start + finish-work as slash commands
6
+ * - skills/trellis-{name}/SKILL.md — auto-triggered skills from `common/skills/`
7
+ */
8
+ export function collectAntigravityTemplates() {
9
+ return collectBothTemplates(AI_TOOLS.antigravity.templateContext, (n) => `.agent/workflows/${n}.md`, ".agent/skills");
10
+ }
11
+ //# sourceMappingURL=antigravity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/configurators/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,oBAAoB,CACzB,QAAQ,CAAC,WAAW,CAAC,eAAe,EACpC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EACjC,eAAe,CAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type PlatformConfigureOptions } from "./shared.js";
2
+ /**
3
+ * The Claude Code file set — written at init and diffed by `trellis update`.
4
+ * - agents/, settings.json from the platform template directory
5
+ * - hooks/ from shared-hooks/ (unified with other platforms)
6
+ * - commands/trellis/ — start + finish-work as slash commands
7
+ * - skills/trellis-{name}/SKILL.md — auto-triggered skills from `common/skills/`
8
+ *
9
+ * The opt-in statusline is deliberately absent — see `configureClaude`.
10
+ */
11
+ export declare function collectClaudeTemplates(): Map<string, string>;
12
+ /**
13
+ * Configure Claude Code by writing `collectClaudeTemplates`, plus the opt-in
14
+ * statusline (`trellis init --with-statusline`) when requested.
15
+ *
16
+ * The statusline is a post-processor over the map rather than part of it:
17
+ * `collectTemplates` has no parameter for a per-init flag, and a statusline
18
+ * entry there would make `trellis update` force-install the hook on every
19
+ * project that opted out (locked by regression.test.ts). It adds one file and
20
+ * replaces one entry; it does not restate the file set.
21
+ */
22
+ export declare function configureClaude(cwd: string, options?: PlatformConfigureOptions): Promise<void>;
23
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/configurators/claude.ts"],"names":[],"mappings":"AASA,OAAO,EAQL,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAC;AAiFrB;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB5D;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,123 @@
1
+ import { readFileSync, readdirSync, statSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { AI_TOOLS } from "../types/ai-tools.js";
4
+ import { getClaudeTemplatePath } from "../templates/extract.js";
5
+ import { getSettingsTemplate, getStatuslineHook, } from "../templates/claude/index.js";
6
+ import { toPosix } from "../utils/posix.js";
7
+ import { resolvePlaceholders, resolveCommands, resolveSkills, resolveBundledSkills, collectSkillTemplates, collectSharedHooks, writeTemplateMap, } from "./shared.js";
8
+ const EXCLUDE_PATTERNS = [
9
+ ".d.ts",
10
+ ".d.ts.map",
11
+ ".js",
12
+ ".js.map",
13
+ ".ts", // TypeScript source — dev-only; not part of user-shipped templates
14
+ "__pycache__",
15
+ ];
16
+ function shouldExclude(filename) {
17
+ for (const pattern of EXCLUDE_PATTERNS) {
18
+ if (filename.endsWith(pattern) || filename === pattern) {
19
+ return true;
20
+ }
21
+ }
22
+ return false;
23
+ }
24
+ /**
25
+ * Inject the opt-in `statusLine` block into the settings.json template.
26
+ * Runs BEFORE resolvePlaceholders so `{{PYTHON_CMD}}` resolves through the
27
+ * normal path. The flag-off path never calls this — default output stays
28
+ * byte-identical.
29
+ *
30
+ * Mirrors `preserveExistingClaudeStatusLine` (update.ts) exactly: parse →
31
+ * assign (key lands at the END of the object) → stringify(null, 2) + "\n".
32
+ * Byte-parity matters: `trellis update` re-derives the expected settings.json
33
+ * via that preserve step, so any divergence (e.g. a different key position)
34
+ * makes update flag a phantom settings.json change on every fresh opted-in
35
+ * project.
36
+ */
37
+ function injectStatusLine(content) {
38
+ const settings = JSON.parse(content);
39
+ settings.statusLine = {
40
+ type: "command",
41
+ command: "{{PYTHON_CMD}} .claude/hooks/statusline.py",
42
+ };
43
+ return `${JSON.stringify(settings, null, 2)}\n`;
44
+ }
45
+ /**
46
+ * Walk the claude template directory into a `Map<relPath, content>` rooted at
47
+ * `.claude/`, excluding build artifacts. Yields `agents/*.md` and
48
+ * `settings.json`.
49
+ *
50
+ * `commands/` is skipped (sourced from the common template context) and so is
51
+ * `hooks/` — the default hooks come from shared-hooks/ and the only file in
52
+ * this tree's hooks/ is the opt-in statusline, which `configureClaude` adds
53
+ * on request.
54
+ */
55
+ function walkClaudeTemplateDir() {
56
+ const files = new Map();
57
+ const sourcePath = getClaudeTemplatePath();
58
+ function walk(relDir) {
59
+ const absDir = path.join(sourcePath, relDir);
60
+ for (const entry of readdirSync(absDir)) {
61
+ if (shouldExclude(entry))
62
+ continue;
63
+ const absEntry = path.join(absDir, entry);
64
+ const relEntry = relDir ? path.join(relDir, entry) : entry;
65
+ if (statSync(absEntry).isDirectory()) {
66
+ if (relEntry === "commands" || relEntry === "hooks")
67
+ continue;
68
+ walk(relEntry);
69
+ }
70
+ else {
71
+ const content = readFileSync(absEntry, "utf-8");
72
+ // Map keys are logical paths used as cross-platform hash keys
73
+ // downstream. Always POSIX, regardless of host OS.
74
+ files.set(toPosix(path.join(".claude", relEntry)), entry === "settings.json" ? resolvePlaceholders(content) : content);
75
+ }
76
+ }
77
+ }
78
+ walk("");
79
+ return files;
80
+ }
81
+ /**
82
+ * The Claude Code file set — written at init and diffed by `trellis update`.
83
+ * - agents/, settings.json from the platform template directory
84
+ * - hooks/ from shared-hooks/ (unified with other platforms)
85
+ * - commands/trellis/ — start + finish-work as slash commands
86
+ * - skills/trellis-{name}/SKILL.md — auto-triggered skills from `common/skills/`
87
+ *
88
+ * The opt-in statusline is deliberately absent — see `configureClaude`.
89
+ */
90
+ export function collectClaudeTemplates() {
91
+ const ctx = AI_TOOLS["claude-code"].templateContext;
92
+ const files = walkClaudeTemplateDir();
93
+ for (const cmd of resolveCommands(ctx)) {
94
+ files.set(`.claude/commands/trellis/${cmd.name}.md`, cmd.content);
95
+ }
96
+ for (const [filePath, content] of collectSkillTemplates(".claude/skills", resolveSkills(ctx), resolveBundledSkills(ctx))) {
97
+ files.set(filePath, content);
98
+ }
99
+ for (const [k, v] of collectSharedHooks(".claude/hooks", "claude")) {
100
+ files.set(k, v);
101
+ }
102
+ return files;
103
+ }
104
+ /**
105
+ * Configure Claude Code by writing `collectClaudeTemplates`, plus the opt-in
106
+ * statusline (`trellis init --with-statusline`) when requested.
107
+ *
108
+ * The statusline is a post-processor over the map rather than part of it:
109
+ * `collectTemplates` has no parameter for a per-init flag, and a statusline
110
+ * entry there would make `trellis update` force-install the hook on every
111
+ * project that opted out (locked by regression.test.ts). It adds one file and
112
+ * replaces one entry; it does not restate the file set.
113
+ */
114
+ export async function configureClaude(cwd, options) {
115
+ const files = collectClaudeTemplates();
116
+ if (options?.withStatusline === true) {
117
+ const settings = getSettingsTemplate();
118
+ files.set(`.claude/${settings.targetPath}`, resolvePlaceholders(injectStatusLine(settings.content)));
119
+ files.set(".claude/hooks/statusline.py", getStatuslineHook());
120
+ }
121
+ await writeTemplateMap(cwd, files);
122
+ }
123
+ //# sourceMappingURL=claude.js.map