trellis-hgl 0.6.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) 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 +207 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/commands/channel/adapters/claude.d.ts +38 -0
  9. package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
  10. package/dist/commands/channel/adapters/claude.js +209 -0
  11. package/dist/commands/channel/adapters/claude.js.map +1 -0
  12. package/dist/commands/channel/adapters/codex.d.ts +81 -0
  13. package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
  14. package/dist/commands/channel/adapters/codex.js +512 -0
  15. package/dist/commands/channel/adapters/codex.js.map +1 -0
  16. package/dist/commands/channel/adapters/index.d.ts +79 -0
  17. package/dist/commands/channel/adapters/index.d.ts.map +1 -0
  18. package/dist/commands/channel/adapters/index.js +109 -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 +154 -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 +290 -0
  31. package/dist/commands/channel/context-loader.js.map +1 -0
  32. package/dist/commands/channel/context.d.ts +16 -0
  33. package/dist/commands/channel/context.d.ts.map +1 -0
  34. package/dist/commands/channel/context.js +83 -0
  35. package/dist/commands/channel/context.js.map +1 -0
  36. package/dist/commands/channel/create.d.ts +27 -0
  37. package/dist/commands/channel/create.d.ts.map +1 -0
  38. package/dist/commands/channel/create.js +39 -0
  39. package/dist/commands/channel/create.js.map +1 -0
  40. package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
  41. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
  42. package/dist/commands/channel/dev-parse-trace.js +70 -0
  43. package/dist/commands/channel/dev-parse-trace.js.map +1 -0
  44. package/dist/commands/channel/index.d.ts +3 -0
  45. package/dist/commands/channel/index.d.ts.map +1 -0
  46. package/dist/commands/channel/index.js +503 -0
  47. package/dist/commands/channel/index.js.map +1 -0
  48. package/dist/commands/channel/kill.d.ts +7 -0
  49. package/dist/commands/channel/kill.d.ts.map +1 -0
  50. package/dist/commands/channel/kill.js +121 -0
  51. package/dist/commands/channel/kill.js.map +1 -0
  52. package/dist/commands/channel/list.d.ts +17 -0
  53. package/dist/commands/channel/list.d.ts.map +1 -0
  54. package/dist/commands/channel/list.js +233 -0
  55. package/dist/commands/channel/list.js.map +1 -0
  56. package/dist/commands/channel/messages.d.ts +16 -0
  57. package/dist/commands/channel/messages.d.ts.map +1 -0
  58. package/dist/commands/channel/messages.js +249 -0
  59. package/dist/commands/channel/messages.js.map +1 -0
  60. package/dist/commands/channel/rm.d.ts +27 -0
  61. package/dist/commands/channel/rm.d.ts.map +1 -0
  62. package/dist/commands/channel/rm.js +216 -0
  63. package/dist/commands/channel/rm.js.map +1 -0
  64. package/dist/commands/channel/run.d.ts +31 -0
  65. package/dist/commands/channel/run.d.ts.map +1 -0
  66. package/dist/commands/channel/run.js +137 -0
  67. package/dist/commands/channel/run.js.map +1 -0
  68. package/dist/commands/channel/send.d.ts +13 -0
  69. package/dist/commands/channel/send.d.ts.map +1 -0
  70. package/dist/commands/channel/send.js +26 -0
  71. package/dist/commands/channel/send.js.map +1 -0
  72. package/dist/commands/channel/spawn.d.ts +30 -0
  73. package/dist/commands/channel/spawn.d.ts.map +1 -0
  74. package/dist/commands/channel/spawn.js +194 -0
  75. package/dist/commands/channel/spawn.js.map +1 -0
  76. package/dist/commands/channel/store/events.d.ts +39 -0
  77. package/dist/commands/channel/store/events.d.ts.map +1 -0
  78. package/dist/commands/channel/store/events.js +87 -0
  79. package/dist/commands/channel/store/events.js.map +1 -0
  80. package/dist/commands/channel/store/filter.d.ts +3 -0
  81. package/dist/commands/channel/store/filter.d.ts.map +1 -0
  82. package/dist/commands/channel/store/filter.js +2 -0
  83. package/dist/commands/channel/store/filter.js.map +1 -0
  84. package/dist/commands/channel/store/lock.d.ts +23 -0
  85. package/dist/commands/channel/store/lock.d.ts.map +1 -0
  86. package/dist/commands/channel/store/lock.js +99 -0
  87. package/dist/commands/channel/store/lock.js.map +1 -0
  88. package/dist/commands/channel/store/paths.d.ts +63 -0
  89. package/dist/commands/channel/store/paths.d.ts.map +1 -0
  90. package/dist/commands/channel/store/paths.js +246 -0
  91. package/dist/commands/channel/store/paths.js.map +1 -0
  92. package/dist/commands/channel/store/schema.d.ts +27 -0
  93. package/dist/commands/channel/store/schema.d.ts.map +1 -0
  94. package/dist/commands/channel/store/schema.js +34 -0
  95. package/dist/commands/channel/store/schema.js.map +1 -0
  96. package/dist/commands/channel/store/thread-state.d.ts +5 -0
  97. package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
  98. package/dist/commands/channel/store/thread-state.js +16 -0
  99. package/dist/commands/channel/store/thread-state.js.map +1 -0
  100. package/dist/commands/channel/store/watch.d.ts +19 -0
  101. package/dist/commands/channel/store/watch.d.ts.map +1 -0
  102. package/dist/commands/channel/store/watch.js +146 -0
  103. package/dist/commands/channel/store/watch.js.map +1 -0
  104. package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
  105. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
  106. package/dist/commands/channel/supervisor/inbox.js +160 -0
  107. package/dist/commands/channel/supervisor/inbox.js.map +1 -0
  108. package/dist/commands/channel/supervisor/shutdown.d.ts +66 -0
  109. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
  110. package/dist/commands/channel/supervisor/shutdown.js +143 -0
  111. package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
  112. package/dist/commands/channel/supervisor/stdout.d.ts +51 -0
  113. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
  114. package/dist/commands/channel/supervisor/stdout.js +121 -0
  115. package/dist/commands/channel/supervisor/stdout.js.map +1 -0
  116. package/dist/commands/channel/supervisor/turns.d.ts +20 -0
  117. package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
  118. package/dist/commands/channel/supervisor/turns.js +28 -0
  119. package/dist/commands/channel/supervisor/turns.js.map +1 -0
  120. package/dist/commands/channel/supervisor/warning.d.ts +48 -0
  121. package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
  122. package/dist/commands/channel/supervisor/warning.js +77 -0
  123. package/dist/commands/channel/supervisor/warning.js.map +1 -0
  124. package/dist/commands/channel/supervisor.d.ts +53 -0
  125. package/dist/commands/channel/supervisor.d.ts.map +1 -0
  126. package/dist/commands/channel/supervisor.js +304 -0
  127. package/dist/commands/channel/supervisor.js.map +1 -0
  128. package/dist/commands/channel/text-body.d.ts +13 -0
  129. package/dist/commands/channel/text-body.d.ts.map +1 -0
  130. package/dist/commands/channel/text-body.js +47 -0
  131. package/dist/commands/channel/text-body.js.map +1 -0
  132. package/dist/commands/channel/threads.d.ts +39 -0
  133. package/dist/commands/channel/threads.d.ts.map +1 -0
  134. package/dist/commands/channel/threads.js +106 -0
  135. package/dist/commands/channel/threads.js.map +1 -0
  136. package/dist/commands/channel/title.d.ts +12 -0
  137. package/dist/commands/channel/title.d.ts.map +1 -0
  138. package/dist/commands/channel/title.js +24 -0
  139. package/dist/commands/channel/title.js.map +1 -0
  140. package/dist/commands/channel/wait.d.ts +18 -0
  141. package/dist/commands/channel/wait.d.ts.map +1 -0
  142. package/dist/commands/channel/wait.js +76 -0
  143. package/dist/commands/channel/wait.js.map +1 -0
  144. package/dist/commands/init.d.ts +59 -0
  145. package/dist/commands/init.d.ts.map +1 -0
  146. package/dist/commands/init.js +1459 -0
  147. package/dist/commands/init.js.map +1 -0
  148. package/dist/commands/mem.d.ts +30 -0
  149. package/dist/commands/mem.d.ts.map +1 -0
  150. package/dist/commands/mem.js +424 -0
  151. package/dist/commands/mem.js.map +1 -0
  152. package/dist/commands/uninstall.d.ts +27 -0
  153. package/dist/commands/uninstall.d.ts.map +1 -0
  154. package/dist/commands/uninstall.js +339 -0
  155. package/dist/commands/uninstall.js.map +1 -0
  156. package/dist/commands/update.d.ts +72 -0
  157. package/dist/commands/update.d.ts.map +1 -0
  158. package/dist/commands/update.js +1926 -0
  159. package/dist/commands/update.js.map +1 -0
  160. package/dist/commands/upgrade.d.ts +28 -0
  161. package/dist/commands/upgrade.d.ts.map +1 -0
  162. package/dist/commands/upgrade.js +84 -0
  163. package/dist/commands/upgrade.js.map +1 -0
  164. package/dist/commands/workflow.d.ts +35 -0
  165. package/dist/commands/workflow.d.ts.map +1 -0
  166. package/dist/commands/workflow.js +219 -0
  167. package/dist/commands/workflow.js.map +1 -0
  168. package/dist/configurators/antigravity.d.ts +7 -0
  169. package/dist/configurators/antigravity.d.ts.map +1 -0
  170. package/dist/configurators/antigravity.js +19 -0
  171. package/dist/configurators/antigravity.js.map +1 -0
  172. package/dist/configurators/claude.d.ts +9 -0
  173. package/dist/configurators/claude.d.ts.map +1 -0
  174. package/dist/configurators/claude.js +72 -0
  175. package/dist/configurators/claude.js.map +1 -0
  176. package/dist/configurators/codebuddy.d.ts +10 -0
  177. package/dist/configurators/codebuddy.d.ts.map +1 -0
  178. package/dist/configurators/codebuddy.js +30 -0
  179. package/dist/configurators/codebuddy.js.map +1 -0
  180. package/dist/configurators/codex.d.ts +8 -0
  181. package/dist/configurators/codex.d.ts.map +1 -0
  182. package/dist/configurators/codex.js +87 -0
  183. package/dist/configurators/codex.js.map +1 -0
  184. package/dist/configurators/copilot.d.ts +10 -0
  185. package/dist/configurators/copilot.d.ts.map +1 -0
  186. package/dist/configurators/copilot.js +51 -0
  187. package/dist/configurators/copilot.js.map +1 -0
  188. package/dist/configurators/cursor.d.ts +10 -0
  189. package/dist/configurators/cursor.d.ts.map +1 -0
  190. package/dist/configurators/cursor.js +29 -0
  191. package/dist/configurators/cursor.js.map +1 -0
  192. package/dist/configurators/droid.d.ts +10 -0
  193. package/dist/configurators/droid.d.ts.map +1 -0
  194. package/dist/configurators/droid.js +30 -0
  195. package/dist/configurators/droid.js.map +1 -0
  196. package/dist/configurators/gemini.d.ts +16 -0
  197. package/dist/configurators/gemini.d.ts.map +1 -0
  198. package/dist/configurators/gemini.js +38 -0
  199. package/dist/configurators/gemini.js.map +1 -0
  200. package/dist/configurators/index.d.ts +65 -0
  201. package/dist/configurators/index.d.ts.map +1 -0
  202. package/dist/configurators/index.js +367 -0
  203. package/dist/configurators/index.js.map +1 -0
  204. package/dist/configurators/kilo.d.ts +7 -0
  205. package/dist/configurators/kilo.d.ts.map +1 -0
  206. package/dist/configurators/kilo.js +19 -0
  207. package/dist/configurators/kilo.js.map +1 -0
  208. package/dist/configurators/kiro.d.ts +8 -0
  209. package/dist/configurators/kiro.d.ts.map +1 -0
  210. package/dist/configurators/kiro.js +24 -0
  211. package/dist/configurators/kiro.js.map +1 -0
  212. package/dist/configurators/opencode.d.ts +14 -0
  213. package/dist/configurators/opencode.d.ts.map +1 -0
  214. package/dist/configurators/opencode.js +96 -0
  215. package/dist/configurators/opencode.js.map +1 -0
  216. package/dist/configurators/pi.d.ts +3 -0
  217. package/dist/configurators/pi.d.ts.map +1 -0
  218. package/dist/configurators/pi.js +45 -0
  219. package/dist/configurators/pi.js.map +1 -0
  220. package/dist/configurators/qoder.d.ts +11 -0
  221. package/dist/configurators/qoder.d.ts.map +1 -0
  222. package/dist/configurators/qoder.js +31 -0
  223. package/dist/configurators/qoder.js.map +1 -0
  224. package/dist/configurators/shared.d.ts +178 -0
  225. package/dist/configurators/shared.d.ts.map +1 -0
  226. package/dist/configurators/shared.js +541 -0
  227. package/dist/configurators/shared.js.map +1 -0
  228. package/dist/configurators/windsurf.d.ts +7 -0
  229. package/dist/configurators/windsurf.d.ts.map +1 -0
  230. package/dist/configurators/windsurf.js +19 -0
  231. package/dist/configurators/windsurf.js.map +1 -0
  232. package/dist/configurators/workflow.d.ts +37 -0
  233. package/dist/configurators/workflow.d.ts.map +1 -0
  234. package/dist/configurators/workflow.js +164 -0
  235. package/dist/configurators/workflow.js.map +1 -0
  236. package/dist/constants/paths.d.ts +70 -0
  237. package/dist/constants/paths.d.ts.map +1 -0
  238. package/dist/constants/paths.js +79 -0
  239. package/dist/constants/paths.js.map +1 -0
  240. package/dist/constants/version.d.ts +9 -0
  241. package/dist/constants/version.d.ts.map +1 -0
  242. package/dist/constants/version.js +15 -0
  243. package/dist/constants/version.js.map +1 -0
  244. package/dist/index.d.ts +9 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +9 -0
  247. package/dist/index.js.map +1 -0
  248. package/dist/migrations/index.d.ts +62 -0
  249. package/dist/migrations/index.d.ts.map +1 -0
  250. package/dist/migrations/index.js +187 -0
  251. package/dist/migrations/index.js.map +1 -0
  252. package/dist/migrations/manifests/0.1.9.json +30 -0
  253. package/dist/migrations/manifests/0.2.0.json +49 -0
  254. package/dist/migrations/manifests/0.2.12.json +9 -0
  255. package/dist/migrations/manifests/0.2.13.json +9 -0
  256. package/dist/migrations/manifests/0.2.14.json +175 -0
  257. package/dist/migrations/manifests/0.2.15.json +33 -0
  258. package/dist/migrations/manifests/0.3.0-beta.0.json +297 -0
  259. package/dist/migrations/manifests/0.3.0-beta.1.json +9 -0
  260. package/dist/migrations/manifests/0.3.0-beta.10.json +9 -0
  261. package/dist/migrations/manifests/0.3.0-beta.11.json +9 -0
  262. package/dist/migrations/manifests/0.3.0-beta.12.json +9 -0
  263. package/dist/migrations/manifests/0.3.0-beta.13.json +9 -0
  264. package/dist/migrations/manifests/0.3.0-beta.14.json +9 -0
  265. package/dist/migrations/manifests/0.3.0-beta.15.json +9 -0
  266. package/dist/migrations/manifests/0.3.0-beta.16.json +9 -0
  267. package/dist/migrations/manifests/0.3.0-beta.2.json +9 -0
  268. package/dist/migrations/manifests/0.3.0-beta.3.json +9 -0
  269. package/dist/migrations/manifests/0.3.0-beta.4.json +9 -0
  270. package/dist/migrations/manifests/0.3.0-beta.5.json +9 -0
  271. package/dist/migrations/manifests/0.3.0-beta.6.json +9 -0
  272. package/dist/migrations/manifests/0.3.0-beta.7.json +11 -0
  273. package/dist/migrations/manifests/0.3.0-beta.8.json +9 -0
  274. package/dist/migrations/manifests/0.3.0-beta.9.json +9 -0
  275. package/dist/migrations/manifests/0.3.0-rc.0.json +9 -0
  276. package/dist/migrations/manifests/0.3.0-rc.1.json +9 -0
  277. package/dist/migrations/manifests/0.3.0-rc.2.json +9 -0
  278. package/dist/migrations/manifests/0.3.0-rc.3.json +9 -0
  279. package/dist/migrations/manifests/0.3.0-rc.4.json +9 -0
  280. package/dist/migrations/manifests/0.3.0-rc.5.json +9 -0
  281. package/dist/migrations/manifests/0.3.0-rc.6.json +9 -0
  282. package/dist/migrations/manifests/0.3.0.json +11 -0
  283. package/dist/migrations/manifests/0.3.1.json +9 -0
  284. package/dist/migrations/manifests/0.3.10.json +9 -0
  285. package/dist/migrations/manifests/0.3.2.json +9 -0
  286. package/dist/migrations/manifests/0.3.3.json +9 -0
  287. package/dist/migrations/manifests/0.3.4.json +21 -0
  288. package/dist/migrations/manifests/0.3.5.json +9 -0
  289. package/dist/migrations/manifests/0.3.6.json +9 -0
  290. package/dist/migrations/manifests/0.3.7.json +9 -0
  291. package/dist/migrations/manifests/0.3.8.json +9 -0
  292. package/dist/migrations/manifests/0.3.9.json +9 -0
  293. package/dist/migrations/manifests/0.4.0-beta.1.json +228 -0
  294. package/dist/migrations/manifests/0.4.0-beta.10.json +9 -0
  295. package/dist/migrations/manifests/0.4.0-beta.2.json +9 -0
  296. package/dist/migrations/manifests/0.4.0-beta.3.json +9 -0
  297. package/dist/migrations/manifests/0.4.0-beta.4.json +9 -0
  298. package/dist/migrations/manifests/0.4.0-beta.5.json +9 -0
  299. package/dist/migrations/manifests/0.4.0-beta.6.json +9 -0
  300. package/dist/migrations/manifests/0.4.0-beta.7.json +9 -0
  301. package/dist/migrations/manifests/0.4.0-beta.8.json +34 -0
  302. package/dist/migrations/manifests/0.4.0-beta.9.json +9 -0
  303. package/dist/migrations/manifests/0.4.0-rc.0.json +9 -0
  304. package/dist/migrations/manifests/0.4.0-rc.1.json +9 -0
  305. package/dist/migrations/manifests/0.4.0.json +9 -0
  306. package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
  307. package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
  308. package/dist/migrations/manifests/0.5.0-beta.10.json +9 -0
  309. package/dist/migrations/manifests/0.5.0-beta.11.json +9 -0
  310. package/dist/migrations/manifests/0.5.0-beta.12.json +9 -0
  311. package/dist/migrations/manifests/0.5.0-beta.13.json +9 -0
  312. package/dist/migrations/manifests/0.5.0-beta.14.json +9 -0
  313. package/dist/migrations/manifests/0.5.0-beta.15.json +116 -0
  314. package/dist/migrations/manifests/0.5.0-beta.16.json +9 -0
  315. package/dist/migrations/manifests/0.5.0-beta.17.json +9 -0
  316. package/dist/migrations/manifests/0.5.0-beta.18.json +9 -0
  317. package/dist/migrations/manifests/0.5.0-beta.19.json +9 -0
  318. package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
  319. package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
  320. package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
  321. package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
  322. package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
  323. package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
  324. package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
  325. package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
  326. package/dist/migrations/manifests/0.5.0-rc.0.json +9 -0
  327. package/dist/migrations/manifests/0.5.0-rc.1.json +9 -0
  328. package/dist/migrations/manifests/0.5.0-rc.2.json +9 -0
  329. package/dist/migrations/manifests/0.5.0-rc.3.json +9 -0
  330. package/dist/migrations/manifests/0.5.0-rc.4.json +9 -0
  331. package/dist/migrations/manifests/0.5.0-rc.5.json +9 -0
  332. package/dist/migrations/manifests/0.5.0-rc.6.json +9 -0
  333. package/dist/migrations/manifests/0.5.0-rc.7.json +9 -0
  334. package/dist/migrations/manifests/0.5.0.json +9 -0
  335. package/dist/migrations/manifests/0.5.1.json +9 -0
  336. package/dist/migrations/manifests/0.5.10.json +9 -0
  337. package/dist/migrations/manifests/0.5.11.json +16 -0
  338. package/dist/migrations/manifests/0.5.12.json +9 -0
  339. package/dist/migrations/manifests/0.5.13.json +9 -0
  340. package/dist/migrations/manifests/0.5.14.json +9 -0
  341. package/dist/migrations/manifests/0.5.15.json +9 -0
  342. package/dist/migrations/manifests/0.5.2.json +9 -0
  343. package/dist/migrations/manifests/0.5.3.json +9 -0
  344. package/dist/migrations/manifests/0.5.4.json +9 -0
  345. package/dist/migrations/manifests/0.5.5.json +9 -0
  346. package/dist/migrations/manifests/0.5.6.json +9 -0
  347. package/dist/migrations/manifests/0.5.7.json +16 -0
  348. package/dist/migrations/manifests/0.5.8.json +9 -0
  349. package/dist/migrations/manifests/0.5.9.json +9 -0
  350. package/dist/migrations/manifests/0.6.0-beta.0.json +16 -0
  351. package/dist/migrations/manifests/0.6.0-beta.1.json +9 -0
  352. package/dist/migrations/manifests/0.6.0-beta.10.json +9 -0
  353. package/dist/migrations/manifests/0.6.0-beta.11.json +9 -0
  354. package/dist/migrations/manifests/0.6.0-beta.12.json +9 -0
  355. package/dist/migrations/manifests/0.6.0-beta.13.json +9 -0
  356. package/dist/migrations/manifests/0.6.0-beta.14.json +9 -0
  357. package/dist/migrations/manifests/0.6.0-beta.15.json +9 -0
  358. package/dist/migrations/manifests/0.6.0-beta.16.json +9 -0
  359. package/dist/migrations/manifests/0.6.0-beta.17.json +9 -0
  360. package/dist/migrations/manifests/0.6.0-beta.2.json +9 -0
  361. package/dist/migrations/manifests/0.6.0-beta.3.json +9 -0
  362. package/dist/migrations/manifests/0.6.0-beta.4.json +9 -0
  363. package/dist/migrations/manifests/0.6.0-beta.5.json +9 -0
  364. package/dist/migrations/manifests/0.6.0-beta.6.json +16 -0
  365. package/dist/migrations/manifests/0.6.0-beta.7.json +9 -0
  366. package/dist/migrations/manifests/0.6.0-beta.8.json +9 -0
  367. package/dist/migrations/manifests/0.6.0-beta.9.json +9 -0
  368. package/dist/templates/claude/agents/trellis-check.md +123 -0
  369. package/dist/templates/claude/agents/trellis-code-architecture-review.md +71 -0
  370. package/dist/templates/claude/agents/trellis-code-review.md +71 -0
  371. package/dist/templates/claude/agents/trellis-implement.md +118 -0
  372. package/dist/templates/claude/agents/trellis-merge-review.md +72 -0
  373. package/dist/templates/claude/agents/trellis-research.md +137 -0
  374. package/dist/templates/claude/agents/trellis-spec-review.md +71 -0
  375. package/dist/templates/claude/index.d.ts +22 -0
  376. package/dist/templates/claude/index.d.ts.map +1 -0
  377. package/dist/templates/claude/index.js +46 -0
  378. package/dist/templates/claude/index.js.map +1 -0
  379. package/dist/templates/claude/settings.json +73 -0
  380. package/dist/templates/codebuddy/agents/trellis-check.md +115 -0
  381. package/dist/templates/codebuddy/agents/trellis-implement.md +110 -0
  382. package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
  383. package/dist/templates/codebuddy/index.d.ts +15 -0
  384. package/dist/templates/codebuddy/index.d.ts.map +1 -0
  385. package/dist/templates/codebuddy/index.js +15 -0
  386. package/dist/templates/codebuddy/index.js.map +1 -0
  387. package/dist/templates/codebuddy/settings.json +59 -0
  388. package/dist/templates/codex/agents/trellis-check.toml +84 -0
  389. package/dist/templates/codex/agents/trellis-implement.toml +65 -0
  390. package/dist/templates/codex/agents/trellis-research.toml +73 -0
  391. package/dist/templates/codex/config.toml +35 -0
  392. package/dist/templates/codex/hooks/session-start.py +545 -0
  393. package/dist/templates/codex/hooks.json +15 -0
  394. package/dist/templates/codex/index.d.ts +39 -0
  395. package/dist/templates/codex/index.d.ts.map +1 -0
  396. package/dist/templates/codex/index.js +85 -0
  397. package/dist/templates/codex/index.js.map +1 -0
  398. package/dist/templates/codex/skills/before-dev/SKILL.md +40 -0
  399. package/dist/templates/codex/skills/brainstorm/SKILL.md +112 -0
  400. package/dist/templates/codex/skills/break-loop/SKILL.md +130 -0
  401. package/dist/templates/codex/skills/check/SKILL.md +98 -0
  402. package/dist/templates/codex/skills/check-cross-layer/SKILL.md +158 -0
  403. package/dist/templates/codex/skills/create-command/SKILL.md +101 -0
  404. package/dist/templates/codex/skills/finish-work/SKILL.md +90 -0
  405. package/dist/templates/codex/skills/improve-ut/SKILL.md +69 -0
  406. package/dist/templates/codex/skills/integrate-skill/SKILL.md +221 -0
  407. package/dist/templates/codex/skills/onboard/SKILL.md +363 -0
  408. package/dist/templates/codex/skills/record-session/SKILL.md +67 -0
  409. package/dist/templates/codex/skills/start/SKILL.md +64 -0
  410. package/dist/templates/codex/skills/update-spec/SKILL.md +335 -0
  411. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +73 -0
  412. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
  413. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +54 -0
  414. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
  415. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
  416. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +78 -0
  417. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
  418. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +90 -0
  419. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
  420. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
  421. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
  422. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
  423. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
  424. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
  425. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +130 -0
  426. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
  427. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
  428. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +80 -0
  429. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +69 -0
  430. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +59 -0
  431. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +74 -0
  432. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +83 -0
  433. package/dist/templates/common/commands/continue.md +56 -0
  434. package/dist/templates/common/commands/finish-work.md +66 -0
  435. package/dist/templates/common/commands/start.md +59 -0
  436. package/dist/templates/common/index.d.ts +48 -0
  437. package/dist/templates/common/index.d.ts.map +1 -0
  438. package/dist/templates/common/index.js +104 -0
  439. package/dist/templates/common/index.js.map +1 -0
  440. package/dist/templates/common/skills/before-dev.md +41 -0
  441. package/dist/templates/common/skills/brainstorm.md +112 -0
  442. package/dist/templates/common/skills/break-loop.md +125 -0
  443. package/dist/templates/common/skills/check.md +93 -0
  444. package/dist/templates/common/skills/grill-me.md +49 -0
  445. package/dist/templates/common/skills/improve-codebase-architecture.md +38 -0
  446. package/dist/templates/common/skills/tdd.md +34 -0
  447. package/dist/templates/common/skills/update-spec.md +351 -0
  448. package/dist/templates/copilot/hooks/session-start.py +547 -0
  449. package/dist/templates/copilot/hooks.json +19 -0
  450. package/dist/templates/copilot/index.d.ts +23 -0
  451. package/dist/templates/copilot/index.d.ts.map +1 -0
  452. package/dist/templates/copilot/index.js +54 -0
  453. package/dist/templates/copilot/index.js.map +1 -0
  454. package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
  455. package/dist/templates/copilot/prompts/brainstorm.prompt.md +111 -0
  456. package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
  457. package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +157 -0
  458. package/dist/templates/copilot/prompts/check.prompt.md +97 -0
  459. package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
  460. package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
  461. package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
  462. package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
  463. package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
  464. package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
  465. package/dist/templates/copilot/prompts/start.prompt.md +63 -0
  466. package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
  467. package/dist/templates/cursor/agents/trellis-check.md +114 -0
  468. package/dist/templates/cursor/agents/trellis-implement.md +109 -0
  469. package/dist/templates/cursor/agents/trellis-research.md +136 -0
  470. package/dist/templates/cursor/hooks.json +24 -0
  471. package/dist/templates/cursor/index.d.ts +13 -0
  472. package/dist/templates/cursor/index.d.ts.map +1 -0
  473. package/dist/templates/cursor/index.js +13 -0
  474. package/dist/templates/cursor/index.js.map +1 -0
  475. package/dist/templates/droid/droids/trellis-check.md +107 -0
  476. package/dist/templates/droid/droids/trellis-implement.md +102 -0
  477. package/dist/templates/droid/droids/trellis-research.md +137 -0
  478. package/dist/templates/droid/index.d.ts +15 -0
  479. package/dist/templates/droid/index.d.ts.map +1 -0
  480. package/dist/templates/droid/index.js +15 -0
  481. package/dist/templates/droid/index.js.map +1 -0
  482. package/dist/templates/droid/settings.json +59 -0
  483. package/dist/templates/extract.d.ts +40 -0
  484. package/dist/templates/extract.d.ts.map +1 -0
  485. package/dist/templates/extract.js +106 -0
  486. package/dist/templates/extract.js.map +1 -0
  487. package/dist/templates/gemini/agents/trellis-check.md +107 -0
  488. package/dist/templates/gemini/agents/trellis-implement.md +102 -0
  489. package/dist/templates/gemini/agents/trellis-research.md +136 -0
  490. package/dist/templates/gemini/index.d.ts +13 -0
  491. package/dist/templates/gemini/index.d.ts.map +1 -0
  492. package/dist/templates/gemini/index.js +13 -0
  493. package/dist/templates/gemini/index.js.map +1 -0
  494. package/dist/templates/gemini/settings.json +28 -0
  495. package/dist/templates/kiro/agents/trellis-check.json +26 -0
  496. package/dist/templates/kiro/agents/trellis-implement.json +26 -0
  497. package/dist/templates/kiro/agents/trellis-research.json +30 -0
  498. package/dist/templates/kiro/index.d.ts +18 -0
  499. package/dist/templates/kiro/index.d.ts.map +1 -0
  500. package/dist/templates/kiro/index.js +18 -0
  501. package/dist/templates/kiro/index.js.map +1 -0
  502. package/dist/templates/markdown/agents.md +21 -0
  503. package/dist/templates/markdown/gitignore.txt +15 -0
  504. package/dist/templates/markdown/index.d.ts +27 -0
  505. package/dist/templates/markdown/index.d.ts.map +1 -0
  506. package/dist/templates/markdown/index.js +52 -0
  507. package/dist/templates/markdown/index.js.map +1 -0
  508. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
  509. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
  510. package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
  511. package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
  512. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
  513. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
  514. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
  515. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
  516. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
  517. package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
  518. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
  519. package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
  520. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
  521. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
  522. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +259 -0
  523. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +595 -0
  524. package/dist/templates/markdown/spec/guides/index.md.txt +97 -0
  525. package/dist/templates/markdown/workspace-index.md +125 -0
  526. package/dist/templates/markdown/worktree.yaml.txt +58 -0
  527. package/dist/templates/opencode/agents/trellis-check.md +122 -0
  528. package/dist/templates/opencode/agents/trellis-implement.md +118 -0
  529. package/dist/templates/opencode/agents/trellis-research.md +145 -0
  530. package/dist/templates/opencode/lib/session-utils.js +521 -0
  531. package/dist/templates/opencode/lib/trellis-context.js +381 -0
  532. package/dist/templates/opencode/package.json +5 -0
  533. package/dist/templates/opencode/plugins/inject-subagent-context.js +513 -0
  534. package/dist/templates/opencode/plugins/inject-workflow-state.js +159 -0
  535. package/dist/templates/opencode/plugins/session-start.js +101 -0
  536. package/dist/templates/pi/agents/trellis-check.md +37 -0
  537. package/dist/templates/pi/agents/trellis-implement.md +42 -0
  538. package/dist/templates/pi/agents/trellis-research.md +25 -0
  539. package/dist/templates/pi/extensions/trellis/index.ts.txt +1174 -0
  540. package/dist/templates/pi/index.d.ts +5 -0
  541. package/dist/templates/pi/index.d.ts.map +1 -0
  542. package/dist/templates/pi/index.js +12 -0
  543. package/dist/templates/pi/index.js.map +1 -0
  544. package/dist/templates/pi/settings.json +21 -0
  545. package/dist/templates/qoder/agents/trellis-check.md +108 -0
  546. package/dist/templates/qoder/agents/trellis-implement.md +103 -0
  547. package/dist/templates/qoder/agents/trellis-research.md +137 -0
  548. package/dist/templates/qoder/index.d.ts +15 -0
  549. package/dist/templates/qoder/index.d.ts.map +1 -0
  550. package/dist/templates/qoder/index.js +15 -0
  551. package/dist/templates/qoder/index.js.map +1 -0
  552. package/dist/templates/qoder/settings.json +47 -0
  553. package/dist/templates/shared-hooks/index.d.ts +50 -0
  554. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  555. package/dist/templates/shared-hooks/index.js +88 -0
  556. package/dist/templates/shared-hooks/index.js.map +1 -0
  557. package/dist/templates/shared-hooks/inject-shell-session-context.py +183 -0
  558. package/dist/templates/shared-hooks/inject-subagent-context.py +771 -0
  559. package/dist/templates/shared-hooks/inject-workflow-state.py +363 -0
  560. package/dist/templates/shared-hooks/session-start.py +832 -0
  561. package/dist/templates/template-utils.d.ts +26 -0
  562. package/dist/templates/template-utils.d.ts.map +1 -0
  563. package/dist/templates/template-utils.js +60 -0
  564. package/dist/templates/template-utils.js.map +1 -0
  565. package/dist/templates/trellis/config.yaml +90 -0
  566. package/dist/templates/trellis/gitignore.txt +32 -0
  567. package/dist/templates/trellis/index.d.ts +52 -0
  568. package/dist/templates/trellis/index.d.ts.map +1 -0
  569. package/dist/templates/trellis/index.js +97 -0
  570. package/dist/templates/trellis/index.js.map +1 -0
  571. package/dist/templates/trellis/scripts/__init__.py +5 -0
  572. package/dist/templates/trellis/scripts/add_session.py +547 -0
  573. package/dist/templates/trellis/scripts/common/__init__.py +92 -0
  574. package/dist/templates/trellis/scripts/common/active_task.py +626 -0
  575. package/dist/templates/trellis/scripts/common/cli_adapter.py +811 -0
  576. package/dist/templates/trellis/scripts/common/config.py +445 -0
  577. package/dist/templates/trellis/scripts/common/developer.py +190 -0
  578. package/dist/templates/trellis/scripts/common/git.py +31 -0
  579. package/dist/templates/trellis/scripts/common/git_context.py +106 -0
  580. package/dist/templates/trellis/scripts/common/io.py +37 -0
  581. package/dist/templates/trellis/scripts/common/log.py +45 -0
  582. package/dist/templates/trellis/scripts/common/packages_context.py +238 -0
  583. package/dist/templates/trellis/scripts/common/paths.py +447 -0
  584. package/dist/templates/trellis/scripts/common/safe_commit.py +285 -0
  585. package/dist/templates/trellis/scripts/common/session_context.py +821 -0
  586. package/dist/templates/trellis/scripts/common/task_context.py +223 -0
  587. package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
  588. package/dist/templates/trellis/scripts/common/task_store.py +698 -0
  589. package/dist/templates/trellis/scripts/common/task_utils.py +274 -0
  590. package/dist/templates/trellis/scripts/common/tasks.py +112 -0
  591. package/dist/templates/trellis/scripts/common/trellis_config.py +131 -0
  592. package/dist/templates/trellis/scripts/common/types.py +110 -0
  593. package/dist/templates/trellis/scripts/common/workflow_phase.py +212 -0
  594. package/dist/templates/trellis/scripts/get_context.py +16 -0
  595. package/dist/templates/trellis/scripts/get_developer.py +26 -0
  596. package/dist/templates/trellis/scripts/hooks/linear_sync.py +243 -0
  597. package/dist/templates/trellis/scripts/init_developer.py +51 -0
  598. package/dist/templates/trellis/scripts/task.py +500 -0
  599. package/dist/templates/trellis/tasks/.gitkeep +0 -0
  600. package/dist/templates/trellis/workflow.md +750 -0
  601. package/dist/types/ai-tools.d.ts +95 -0
  602. package/dist/types/ai-tools.d.ts.map +1 -0
  603. package/dist/types/ai-tools.js +280 -0
  604. package/dist/types/ai-tools.js.map +1 -0
  605. package/dist/types/migration.d.ts +125 -0
  606. package/dist/types/migration.d.ts.map +1 -0
  607. package/dist/types/migration.js +8 -0
  608. package/dist/types/migration.js.map +1 -0
  609. package/dist/utils/compare-versions.d.ts +12 -0
  610. package/dist/utils/compare-versions.d.ts.map +1 -0
  611. package/dist/utils/compare-versions.js +86 -0
  612. package/dist/utils/compare-versions.js.map +1 -0
  613. package/dist/utils/cwd-guard.d.ts +38 -0
  614. package/dist/utils/cwd-guard.d.ts.map +1 -0
  615. package/dist/utils/cwd-guard.js +62 -0
  616. package/dist/utils/cwd-guard.js.map +1 -0
  617. package/dist/utils/file-writer.d.ts +36 -0
  618. package/dist/utils/file-writer.d.ts.map +1 -0
  619. package/dist/utils/file-writer.js +203 -0
  620. package/dist/utils/file-writer.js.map +1 -0
  621. package/dist/utils/manifest-prune.d.ts +61 -0
  622. package/dist/utils/manifest-prune.d.ts.map +1 -0
  623. package/dist/utils/manifest-prune.js +136 -0
  624. package/dist/utils/manifest-prune.js.map +1 -0
  625. package/dist/utils/posix.d.ts +13 -0
  626. package/dist/utils/posix.d.ts.map +1 -0
  627. package/dist/utils/posix.js +15 -0
  628. package/dist/utils/posix.js.map +1 -0
  629. package/dist/utils/project-detector.d.ts +46 -0
  630. package/dist/utils/project-detector.d.ts.map +1 -0
  631. package/dist/utils/project-detector.js +666 -0
  632. package/dist/utils/project-detector.js.map +1 -0
  633. package/dist/utils/proxy.d.ts +25 -0
  634. package/dist/utils/proxy.d.ts.map +1 -0
  635. package/dist/utils/proxy.js +60 -0
  636. package/dist/utils/proxy.js.map +1 -0
  637. package/dist/utils/task-json.d.ts +13 -0
  638. package/dist/utils/task-json.d.ts.map +1 -0
  639. package/dist/utils/task-json.js +12 -0
  640. package/dist/utils/task-json.js.map +1 -0
  641. package/dist/utils/template-fetcher.d.ts +150 -0
  642. package/dist/utils/template-fetcher.d.ts.map +1 -0
  643. package/dist/utils/template-fetcher.js +907 -0
  644. package/dist/utils/template-fetcher.js.map +1 -0
  645. package/dist/utils/template-hash.d.ts +123 -0
  646. package/dist/utils/template-hash.d.ts.map +1 -0
  647. package/dist/utils/template-hash.js +334 -0
  648. package/dist/utils/template-hash.js.map +1 -0
  649. package/dist/utils/uninstall-scrubbers.d.ts +66 -0
  650. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
  651. package/dist/utils/uninstall-scrubbers.js +342 -0
  652. package/dist/utils/uninstall-scrubbers.js.map +1 -0
  653. package/dist/utils/workflow-resolver.d.ts +86 -0
  654. package/dist/utils/workflow-resolver.d.ts.map +1 -0
  655. package/dist/utils/workflow-resolver.js +265 -0
  656. package/dist/utils/workflow-resolver.js.map +1 -0
  657. package/package.json +90 -0
@@ -0,0 +1,342 @@
1
+ /**
2
+ * Scrubbers for structured config files during `trellis uninstall`.
3
+ *
4
+ * Each scrubber takes the file content (and any context it needs) and returns
5
+ * `{ content, fullyEmpty }`:
6
+ * - `content` is the post-scrub text to write back if the file should remain.
7
+ * - `fullyEmpty` is true when, after stripping every trellis-managed value,
8
+ * nothing meaningful is left. The caller deletes the file in that case.
9
+ *
10
+ * Manifest path matching (for hooks.json scrubbers) uses substring containment
11
+ * on the resolved `command` string. The leading `python3 ` / `python ` prefix
12
+ * does not matter — we just look for the manifest-relative file path.
13
+ */
14
+ /**
15
+ * Test whether a hook command string references any of the given manifest paths.
16
+ *
17
+ * Trellis-emitted hook commands always have the shape
18
+ * `<python-cmd> <manifest-path>`
19
+ * so the trailing whitespace-delimited token is the script path. We compare
20
+ * that last token (with surrounding quotes stripped) against the manifest
21
+ * delete-set. This is intentionally stricter than substring matching: a
22
+ * user-added hook whose body merely mentions a deleted path inside an `echo`
23
+ * or comment argument (`echo "see .claude/hooks/session-start.py"`) does NOT
24
+ * match, because the trailing token is `inspiration"` (or similar) — not the
25
+ * path. We also accept absolute-path variants like
26
+ * `/Users/me/proj/.claude/hooks/session-start.py` via `endsWith("/" + p)`.
27
+ */
28
+ function commandMatchesDeletedPath(command, deletedPaths) {
29
+ const trimmed = command.trim();
30
+ if (trimmed.length === 0)
31
+ return false;
32
+ const tokens = trimmed.split(/\s+/);
33
+ const lastToken = tokens[tokens.length - 1].replace(/^["']|["']$/g, "");
34
+ if (lastToken.length === 0)
35
+ return false;
36
+ for (const p of deletedPaths) {
37
+ if (lastToken === p || lastToken.endsWith("/" + p)) {
38
+ return true;
39
+ }
40
+ }
41
+ return false;
42
+ }
43
+ /**
44
+ * Read the `command` (or fallback `bash` / `powershell`) string out of an
45
+ * arbitrary hook entry. Copilot's flat schema uses `bash` + `powershell`
46
+ * instead of `command` for some events.
47
+ */
48
+ function getEntryCommand(entry) {
49
+ if (entry === null || typeof entry !== "object") {
50
+ return null;
51
+ }
52
+ const obj = entry;
53
+ if (typeof obj.command === "string")
54
+ return obj.command;
55
+ if (typeof obj.bash === "string")
56
+ return obj.bash;
57
+ if (typeof obj.powershell === "string")
58
+ return obj.powershell;
59
+ return null;
60
+ }
61
+ /**
62
+ * Scrub a hooks-shaped settings JSON file.
63
+ *
64
+ * `mode = "nested"` → `hooks.{Event}.[ {matcher?, hooks: [ {command,...} ]} ]`
65
+ * `mode = "flat"` → `hooks.{Event}.[ {command,...} ]`
66
+ *
67
+ * Strips every entry whose command references a path in `deletedPaths`,
68
+ * then bottom-up cleans empty containers (matcher block, event array, hooks
69
+ * object). Any user-defined keys outside `hooks` (e.g. `env`, `model`,
70
+ * `permissions`, `version`) are preserved verbatim.
71
+ */
72
+ export function scrubHooksJson(content, deletedPaths, mode) {
73
+ let parsed;
74
+ try {
75
+ parsed = JSON.parse(content);
76
+ }
77
+ catch {
78
+ // Malformed JSON — leave it untouched, caller will skip.
79
+ return { content, fullyEmpty: false };
80
+ }
81
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
82
+ return { content, fullyEmpty: false };
83
+ }
84
+ const root = parsed;
85
+ const hooks = root.hooks;
86
+ if (hooks === undefined) {
87
+ // No hooks block — nothing to scrub. Treat as fully empty only if the
88
+ // entire file has no other keys.
89
+ const fullyEmpty = Object.keys(root).length === 0;
90
+ return { content: JSON.stringify(root, null, 2) + "\n", fullyEmpty };
91
+ }
92
+ if (hooks === null || typeof hooks !== "object" || Array.isArray(hooks)) {
93
+ // hooks is some unexpected shape — leave it alone.
94
+ return { content, fullyEmpty: false };
95
+ }
96
+ const hooksObj = hooks;
97
+ for (const eventName of Object.keys(hooksObj)) {
98
+ const eventArr = hooksObj[eventName];
99
+ if (!Array.isArray(eventArr))
100
+ continue;
101
+ const filteredEvent = [];
102
+ for (const entry of eventArr) {
103
+ if (mode === "flat") {
104
+ const cmd = getEntryCommand(entry);
105
+ if (cmd !== null && commandMatchesDeletedPath(cmd, deletedPaths)) {
106
+ continue; // drop trellis entry
107
+ }
108
+ filteredEvent.push(entry);
109
+ }
110
+ else {
111
+ // nested: entry is { matcher?, hooks: [...] }
112
+ if (entry === null || typeof entry !== "object") {
113
+ filteredEvent.push(entry);
114
+ continue;
115
+ }
116
+ const matcherBlock = entry;
117
+ const inner = matcherBlock.hooks;
118
+ if (!Array.isArray(inner)) {
119
+ filteredEvent.push(entry);
120
+ continue;
121
+ }
122
+ const filteredInner = inner.filter((sub) => {
123
+ const cmd = getEntryCommand(sub);
124
+ return !(cmd !== null && commandMatchesDeletedPath(cmd, deletedPaths));
125
+ });
126
+ if (filteredInner.length === 0) {
127
+ // Whole matcher block is now empty → drop the block.
128
+ continue;
129
+ }
130
+ // Reconstruct the block with the filtered inner list.
131
+ const rebuilt = { ...matcherBlock };
132
+ rebuilt.hooks = filteredInner;
133
+ filteredEvent.push(rebuilt);
134
+ }
135
+ }
136
+ if (filteredEvent.length === 0) {
137
+ // Drop the whole event array.
138
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
139
+ delete hooksObj[eventName];
140
+ }
141
+ else {
142
+ hooksObj[eventName] = filteredEvent;
143
+ }
144
+ }
145
+ // If hooks is empty → drop the key.
146
+ if (Object.keys(hooksObj).length === 0) {
147
+ delete root.hooks;
148
+ }
149
+ else {
150
+ root.hooks = hooksObj;
151
+ }
152
+ const fullyEmpty = Object.keys(root).length === 0;
153
+ return {
154
+ content: JSON.stringify(root, null, 2) + "\n",
155
+ fullyEmpty,
156
+ };
157
+ }
158
+ /**
159
+ * Scrub `.opencode/package.json`:
160
+ * - remove `dependencies["@opencode-ai/plugin"]`
161
+ * - if `dependencies` ends up empty → drop the field
162
+ * - fully empty when nothing is left in the object
163
+ */
164
+ export function scrubOpencodePackageJson(content) {
165
+ let parsed;
166
+ try {
167
+ parsed = JSON.parse(content);
168
+ }
169
+ catch {
170
+ return { content, fullyEmpty: false };
171
+ }
172
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
173
+ return { content, fullyEmpty: false };
174
+ }
175
+ const root = parsed;
176
+ const deps = root.dependencies;
177
+ if (deps !== null && typeof deps === "object" && !Array.isArray(deps)) {
178
+ const depsObj = deps;
179
+ if ("@opencode-ai/plugin" in depsObj) {
180
+ delete depsObj["@opencode-ai/plugin"];
181
+ }
182
+ if (Object.keys(depsObj).length === 0) {
183
+ delete root.dependencies;
184
+ }
185
+ else {
186
+ root.dependencies = depsObj;
187
+ }
188
+ }
189
+ const fullyEmpty = Object.keys(root).length === 0;
190
+ return {
191
+ content: JSON.stringify(root, null, 2) + "\n",
192
+ fullyEmpty,
193
+ };
194
+ }
195
+ /**
196
+ * Trellis-specific values written by the Pi configurator.
197
+ *
198
+ * The `extensions`/`skills`/`prompts` arrays are paths relative to `.pi/`. We
199
+ * remove the exact entries that the Pi configurator emits.
200
+ */
201
+ const PI_TRELLIS_EXTENSION = "./extensions/trellis/index.ts";
202
+ const PI_TRELLIS_SKILLS = "./skills";
203
+ const PI_TRELLIS_PROMPTS = "./prompts";
204
+ const PI_SUBAGENTS_PACKAGE = "npm:pi-subagents";
205
+ function isTrellisPiEntry(value, target) {
206
+ return typeof value === "string" && value === target;
207
+ }
208
+ /**
209
+ * Scrub `.pi/settings.json`:
210
+ * - drop `enableSkillCommands` (trellis-flagged)
211
+ * - remove trellis entries from `extensions`/`skills`/`prompts` arrays
212
+ * - remove trellis-managed `packages["npm:pi-subagents"]` isolation override
213
+ * - drop arrays that become empty
214
+ */
215
+ export function scrubPiSettings(content) {
216
+ let parsed;
217
+ try {
218
+ parsed = JSON.parse(content);
219
+ }
220
+ catch {
221
+ return { content, fullyEmpty: false };
222
+ }
223
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
224
+ return { content, fullyEmpty: false };
225
+ }
226
+ const root = parsed;
227
+ if ("enableSkillCommands" in root) {
228
+ delete root.enableSkillCommands;
229
+ }
230
+ const arrayCleanups = [
231
+ ["extensions", PI_TRELLIS_EXTENSION],
232
+ ["skills", PI_TRELLIS_SKILLS],
233
+ ["prompts", PI_TRELLIS_PROMPTS],
234
+ ];
235
+ for (const [key, target] of arrayCleanups) {
236
+ const arr = root[key];
237
+ if (!Array.isArray(arr))
238
+ continue;
239
+ const filtered = arr.filter((v) => !isTrellisPiEntry(v, target));
240
+ if (filtered.length === 0) {
241
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
242
+ delete root[key];
243
+ }
244
+ else {
245
+ root[key] = filtered;
246
+ }
247
+ }
248
+ const packagesValue = root.packages;
249
+ if (Array.isArray(packagesValue)) {
250
+ const filtered = packagesValue.filter((entry) => {
251
+ if (entry !== null &&
252
+ typeof entry === "object" &&
253
+ !Array.isArray(entry)) {
254
+ const obj = entry;
255
+ return obj.source !== PI_SUBAGENTS_PACKAGE;
256
+ }
257
+ // String entries — keep unless they exactly match the package name
258
+ return entry !== PI_SUBAGENTS_PACKAGE;
259
+ });
260
+ if (filtered.length === 0) {
261
+ delete root.packages;
262
+ }
263
+ else {
264
+ root.packages = filtered;
265
+ }
266
+ }
267
+ const fullyEmpty = Object.keys(root).length === 0;
268
+ return {
269
+ content: JSON.stringify(root, null, 2) + "\n",
270
+ fullyEmpty,
271
+ };
272
+ }
273
+ /**
274
+ * Scrub `.codex/config.toml`.
275
+ *
276
+ * The current trellis-emitted file has two distinct chunks:
277
+ * 1. The line `project_doc_fallback_filenames = ["AGENTS.md"]`
278
+ * 2. A multi-line comment block that begins with the marker
279
+ * `# NOTE: Trellis's SessionStart + UserPromptSubmit hooks require opt-in.`
280
+ * and continues through `# be injected into Codex sessions.`
281
+ *
282
+ * Plus the leading "Project-scoped Codex defaults" header comments.
283
+ *
284
+ * Strategy: line-based removal. We strip:
285
+ * - the `project_doc_fallback_filenames = ...` line
286
+ * - any line that is *only* a comment introduced by trellis (the entire file
287
+ * as shipped is comments + that one assignment)
288
+ * - blank lines that surrounded those removals
289
+ *
290
+ * If the user added their own non-trellis lines, they are preserved as-is.
291
+ * "Fully empty" = post-scrub content has no non-whitespace characters.
292
+ */
293
+ export function scrubCodexConfigToml(content) {
294
+ const trellisCommentMarkers = [
295
+ "Project-scoped Codex defaults for Trellis workflows.",
296
+ "Codex loads this after ~/.codex/config.toml when you work in this project.",
297
+ "Keep AGENTS.md as the primary project instruction file.",
298
+ "NOTE: Trellis's SessionStart + UserPromptSubmit hooks require opt-in.",
299
+ "Add the following to your USER-level config at ~/.codex/config.toml",
300
+ "(not this project file — features.* must be enabled globally):",
301
+ "[features]",
302
+ "hooks = true",
303
+ "codex_hooks = true",
304
+ "Without this flag, hooks.json is ignored and Trellis context won't",
305
+ "be injected into Codex sessions.",
306
+ ];
307
+ // A comment line is "trellis-known" if its content (after `#` and spaces)
308
+ // matches one of the known marker strings exactly OR is an empty `#` line.
309
+ function isTrellisCommentLine(line) {
310
+ const trimmed = line.trim();
311
+ if (!trimmed.startsWith("#"))
312
+ return false;
313
+ const inner = trimmed.replace(/^#+\s?/, "").trim();
314
+ if (inner.length === 0)
315
+ return true; // bare `#` line inside trellis block
316
+ return trellisCommentMarkers.some((m) => inner === m);
317
+ }
318
+ function isTrellisAssignment(line) {
319
+ return /^\s*project_doc_fallback_filenames\s*=/.test(line);
320
+ }
321
+ const out = [];
322
+ let prevWasBlank = true; // start-of-file counts as blank for collapsing
323
+ for (const rawLine of content.split(/\r?\n/)) {
324
+ if (isTrellisAssignment(rawLine) || isTrellisCommentLine(rawLine)) {
325
+ continue; // drop
326
+ }
327
+ const isBlank = rawLine.trim().length === 0;
328
+ if (isBlank && prevWasBlank) {
329
+ continue; // collapse runs of blanks created by removals
330
+ }
331
+ out.push(rawLine);
332
+ prevWasBlank = isBlank;
333
+ }
334
+ // Trim trailing blank lines.
335
+ while (out.length > 0 && out[out.length - 1].trim().length === 0) {
336
+ out.pop();
337
+ }
338
+ const result = out.length > 0 ? out.join("\n") + "\n" : "";
339
+ const fullyEmpty = result.trim().length === 0;
340
+ return { content: result, fullyEmpty };
341
+ }
342
+ //# sourceMappingURL=uninstall-scrubbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall-scrubbers.js","sourceRoot":"","sources":["../../src/utils/uninstall-scrubbers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH;;;;;;;;;;;;;GAaG;AACH,SAAS,yBAAyB,CAChC,OAAe,EACf,YAA+B;IAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACxD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAClD,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,UAAU,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,YAA+B,EAC/B,IAAuB;IAEvB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,IAAI,GAAG,MAAiC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAEzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,sEAAsE;QACtE,iCAAiC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,mDAAmD;QACnD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAElD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEvC,MAAM,aAAa,GAAc,EAAE,CAAC;QAEpC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,GAAG,KAAK,IAAI,IAAI,yBAAyB,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;oBACjE,SAAS,CAAC,qBAAqB;gBACjC,CAAC;gBACD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,8CAA8C;gBAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAChD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,MAAM,YAAY,GAAG,KAAgC,CAAC;gBACtD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBAED,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;oBACzC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;oBACjC,OAAO,CAAC,CACN,GAAG,KAAK,IAAI,IAAI,yBAAyB,CAAC,GAAG,EAAE,YAAY,CAAC,CAC7D,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,qDAAqD;oBACrD,SAAS;gBACX,CAAC;gBAED,sDAAsD;gBACtD,MAAM,OAAO,GAA4B,EAAE,GAAG,YAAY,EAAE,CAAC;gBAC7D,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC;gBAC9B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,8BAA8B;YAC9B,gEAAgE;YAChE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;QACtC,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAClD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;QAC7C,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,IAAI,GAAG,MAAiC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;IAE/B,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,OAAO,GAAG,IAA+B,CAAC;QAChD,IAAI,qBAAqB,IAAI,OAAO,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAClD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;QAC7C,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAC7D,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AACvC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEhD,SAAS,gBAAgB,CAAC,KAAc,EAAE,MAAc;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,IAAI,GAAG,MAAiC,CAAC;IAE/C,IAAI,qBAAqB,IAAI,IAAI,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,MAAM,aAAa,GAAuB;QACxC,CAAC,YAAY,EAAE,oBAAoB,CAAC;QACpC,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QAC7B,CAAC,SAAS,EAAE,kBAAkB,CAAC;KAChC,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,SAAS;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,gEAAgE;YAChE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9C,IACE,KAAK,KAAK,IAAI;gBACd,OAAO,KAAK,KAAK,QAAQ;gBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,CAAC;gBACD,MAAM,GAAG,GAAG,KAAgC,CAAC;gBAC7C,OAAO,GAAG,CAAC,MAAM,KAAK,oBAAoB,CAAC;YAC7C,CAAC;YACD,mEAAmE;YACnE,OAAO,KAAK,KAAK,oBAAoB,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAClD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;QAC7C,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,qBAAqB,GAAG;QAC5B,sDAAsD;QACtD,4EAA4E;QAC5E,yDAAyD;QACzD,uEAAuE;QACvE,qEAAqE;QACrE,gEAAgE;QAChE,YAAY;QACZ,cAAc;QACd,oBAAoB;QACpB,oEAAoE;QACpE,kCAAkC;KACnC,CAAC;IAEF,0EAA0E;IAC1E,2EAA2E;IAC3E,SAAS,oBAAoB,CAAC,IAAY;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,qCAAqC;QAC1E,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,mBAAmB,CAAC,IAAY;QACvC,OAAO,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,YAAY,GAAG,IAAI,CAAC,CAAC,+CAA+C;IAExE,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,SAAS,CAAC,OAAO;QACnB,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5C,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,SAAS,CAAC,8CAA8C;QAC1D,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClB,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,6BAA6B;IAC7B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Workflow template resolver.
3
+ *
4
+ * Centralizes how `trellis init --workflow` and `trellis workflow` discover and
5
+ * fetch workflow.md content. Reuses `template-fetcher` helpers for registry
6
+ * parsing, index probing, and git/http transport. The `native` workflow is a
7
+ * virtual entry resolved directly from the bundled `workflowMdTemplate` to
8
+ * avoid a duplicate file on disk that could drift out of sync.
9
+ *
10
+ * Boundary: command-layer callers (init.ts, commands/workflow.ts) should NOT
11
+ * touch raw marketplace structures. They go through `resolveWorkflowTemplate`
12
+ * and `listWorkflowTemplates` only.
13
+ */
14
+ /**
15
+ * The id used to refer to the bundled native workflow.
16
+ *
17
+ * Treated as Trellis-managed for hash-tracking: when this id is selected by
18
+ * `init --workflow` or `trellis workflow`, `.trellis/workflow.md` stays in
19
+ * `.template-hashes.json`. Any other id is user-managed local workflow and
20
+ * must be removed from the hash file (the durable-state contract in
21
+ * design.md "Durable-state contract").
22
+ */
23
+ export declare const NATIVE_WORKFLOW_ID = "native";
24
+ /**
25
+ * Resolved workflow template entry.
26
+ *
27
+ * `content` is the workflow.md body bytes (LF-normalized in storage).
28
+ * `path` is the marketplace-relative path for remote entries, or
29
+ * `bundled:trellis/workflow.md` for the native virtual entry.
30
+ */
31
+ export interface ResolvedWorkflowTemplate {
32
+ id: string;
33
+ type: "workflow";
34
+ name: string;
35
+ description?: string;
36
+ path: string;
37
+ content: string;
38
+ /** Where the content came from (for error messages). */
39
+ source: "bundled" | "marketplace";
40
+ }
41
+ /**
42
+ * Workflow template listing (metadata only, no content).
43
+ */
44
+ export interface WorkflowTemplateListing {
45
+ id: string;
46
+ type: "workflow";
47
+ name: string;
48
+ description?: string;
49
+ path: string;
50
+ source: "bundled" | "marketplace";
51
+ }
52
+ export interface WorkflowResolveOptions {
53
+ /**
54
+ * Optional marketplace source (giget-style or HTTPS URL).
55
+ * Omitted = use the default marketplace via TEMPLATE_INDEX_URL.
56
+ */
57
+ source?: string;
58
+ }
59
+ export declare class WorkflowResolveError extends Error {
60
+ constructor(message: string);
61
+ }
62
+ /**
63
+ * List available workflow templates from the default marketplace (or a
64
+ * user-supplied source). The bundled native entry is always included first.
65
+ *
66
+ * Returns metadata only — no content is fetched. Use `resolveWorkflowTemplate`
67
+ * to fetch the actual workflow.md bytes for a chosen id.
68
+ *
69
+ * Network errors are surfaced as `errorMessage`. The native entry is still
70
+ * returned so callers can fall back to it offline.
71
+ */
72
+ export declare function listWorkflowTemplates(options?: WorkflowResolveOptions): Promise<{
73
+ templates: WorkflowTemplateListing[];
74
+ errorMessage?: string;
75
+ }>;
76
+ /**
77
+ * Resolve a workflow id to its content.
78
+ *
79
+ * - `native` → bundled `workflowMdTemplate` (offline, never errors).
80
+ * - other id → fetch index via `template-fetcher`, find the matching
81
+ * `type: "workflow"` entry, then fetch its single file content.
82
+ *
83
+ * Errors are workflow-specific (do NOT reuse "spec template not found" copy).
84
+ */
85
+ export declare function resolveWorkflowTemplate(id: string, options?: WorkflowResolveOptions): Promise<ResolvedWorkflowTemplate>;
86
+ //# sourceMappingURL=workflow-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/workflow-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AA+DD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC;IACT,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CA6BD;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAoDnC"}