@chinhae/atw-cli 0.1.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 (710) hide show
  1. package/COPYRIGHT +14 -0
  2. package/LICENSE +77 -0
  3. package/README.md +122 -0
  4. package/bin/atw.js +3 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +299 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/commands/ablate.d.ts +14 -0
  10. package/dist/commands/ablate.d.ts.map +1 -0
  11. package/dist/commands/ablate.js +307 -0
  12. package/dist/commands/ablate.js.map +1 -0
  13. package/dist/commands/channel/adapters/claude.d.ts +53 -0
  14. package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
  15. package/dist/commands/channel/adapters/claude.js +225 -0
  16. package/dist/commands/channel/adapters/claude.js.map +1 -0
  17. package/dist/commands/channel/adapters/codex.d.ts +93 -0
  18. package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
  19. package/dist/commands/channel/adapters/codex.js +573 -0
  20. package/dist/commands/channel/adapters/codex.js.map +1 -0
  21. package/dist/commands/channel/adapters/index.d.ts +94 -0
  22. package/dist/commands/channel/adapters/index.d.ts.map +1 -0
  23. package/dist/commands/channel/adapters/index.js +116 -0
  24. package/dist/commands/channel/adapters/index.js.map +1 -0
  25. package/dist/commands/channel/adapters/types.d.ts +33 -0
  26. package/dist/commands/channel/adapters/types.d.ts.map +1 -0
  27. package/dist/commands/channel/adapters/types.js +2 -0
  28. package/dist/commands/channel/adapters/types.js.map +1 -0
  29. package/dist/commands/channel/agent-loader.d.ts +32 -0
  30. package/dist/commands/channel/agent-loader.d.ts.map +1 -0
  31. package/dist/commands/channel/agent-loader.js +158 -0
  32. package/dist/commands/channel/agent-loader.js.map +1 -0
  33. package/dist/commands/channel/context-loader.d.ts +26 -0
  34. package/dist/commands/channel/context-loader.d.ts.map +1 -0
  35. package/dist/commands/channel/context-loader.js +311 -0
  36. package/dist/commands/channel/context-loader.js.map +1 -0
  37. package/dist/commands/channel/context-trust.d.ts +31 -0
  38. package/dist/commands/channel/context-trust.d.ts.map +1 -0
  39. package/dist/commands/channel/context-trust.js +139 -0
  40. package/dist/commands/channel/context-trust.js.map +1 -0
  41. package/dist/commands/channel/context.d.ts +16 -0
  42. package/dist/commands/channel/context.d.ts.map +1 -0
  43. package/dist/commands/channel/context.js +83 -0
  44. package/dist/commands/channel/context.js.map +1 -0
  45. package/dist/commands/channel/create.d.ts +27 -0
  46. package/dist/commands/channel/create.d.ts.map +1 -0
  47. package/dist/commands/channel/create.js +39 -0
  48. package/dist/commands/channel/create.js.map +1 -0
  49. package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
  50. package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
  51. package/dist/commands/channel/dev-parse-trace.js +70 -0
  52. package/dist/commands/channel/dev-parse-trace.js.map +1 -0
  53. package/dist/commands/channel/guard.d.ts +150 -0
  54. package/dist/commands/channel/guard.d.ts.map +1 -0
  55. package/dist/commands/channel/guard.js +479 -0
  56. package/dist/commands/channel/guard.js.map +1 -0
  57. package/dist/commands/channel/index.d.ts +3 -0
  58. package/dist/commands/channel/index.d.ts.map +1 -0
  59. package/dist/commands/channel/index.js +535 -0
  60. package/dist/commands/channel/index.js.map +1 -0
  61. package/dist/commands/channel/interrupt.d.ts +10 -0
  62. package/dist/commands/channel/interrupt.d.ts.map +1 -0
  63. package/dist/commands/channel/interrupt.js +22 -0
  64. package/dist/commands/channel/interrupt.js.map +1 -0
  65. package/dist/commands/channel/kill.d.ts +7 -0
  66. package/dist/commands/channel/kill.d.ts.map +1 -0
  67. package/dist/commands/channel/kill.js +130 -0
  68. package/dist/commands/channel/kill.js.map +1 -0
  69. package/dist/commands/channel/list.d.ts +17 -0
  70. package/dist/commands/channel/list.d.ts.map +1 -0
  71. package/dist/commands/channel/list.js +233 -0
  72. package/dist/commands/channel/list.js.map +1 -0
  73. package/dist/commands/channel/messages.d.ts +15 -0
  74. package/dist/commands/channel/messages.d.ts.map +1 -0
  75. package/dist/commands/channel/messages.js +245 -0
  76. package/dist/commands/channel/messages.js.map +1 -0
  77. package/dist/commands/channel/rm.d.ts +27 -0
  78. package/dist/commands/channel/rm.d.ts.map +1 -0
  79. package/dist/commands/channel/rm.js +216 -0
  80. package/dist/commands/channel/rm.js.map +1 -0
  81. package/dist/commands/channel/run.d.ts +30 -0
  82. package/dist/commands/channel/run.d.ts.map +1 -0
  83. package/dist/commands/channel/run.js +130 -0
  84. package/dist/commands/channel/run.js.map +1 -0
  85. package/dist/commands/channel/send.d.ts +11 -0
  86. package/dist/commands/channel/send.d.ts.map +1 -0
  87. package/dist/commands/channel/send.js +24 -0
  88. package/dist/commands/channel/send.js.map +1 -0
  89. package/dist/commands/channel/spawn.d.ts +43 -0
  90. package/dist/commands/channel/spawn.d.ts.map +1 -0
  91. package/dist/commands/channel/spawn.js +247 -0
  92. package/dist/commands/channel/spawn.js.map +1 -0
  93. package/dist/commands/channel/store/events.d.ts +22 -0
  94. package/dist/commands/channel/store/events.d.ts.map +1 -0
  95. package/dist/commands/channel/store/events.js +43 -0
  96. package/dist/commands/channel/store/events.js.map +1 -0
  97. package/dist/commands/channel/store/filter.d.ts +3 -0
  98. package/dist/commands/channel/store/filter.d.ts.map +1 -0
  99. package/dist/commands/channel/store/filter.js +2 -0
  100. package/dist/commands/channel/store/filter.js.map +1 -0
  101. package/dist/commands/channel/store/lock.d.ts +23 -0
  102. package/dist/commands/channel/store/lock.d.ts.map +1 -0
  103. package/dist/commands/channel/store/lock.js +99 -0
  104. package/dist/commands/channel/store/lock.js.map +1 -0
  105. package/dist/commands/channel/store/paths.d.ts +77 -0
  106. package/dist/commands/channel/store/paths.d.ts.map +1 -0
  107. package/dist/commands/channel/store/paths.js +272 -0
  108. package/dist/commands/channel/store/paths.js.map +1 -0
  109. package/dist/commands/channel/store/schema.d.ts +27 -0
  110. package/dist/commands/channel/store/schema.d.ts.map +1 -0
  111. package/dist/commands/channel/store/schema.js +34 -0
  112. package/dist/commands/channel/store/schema.js.map +1 -0
  113. package/dist/commands/channel/store/thread-state.d.ts +5 -0
  114. package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
  115. package/dist/commands/channel/store/thread-state.js +16 -0
  116. package/dist/commands/channel/store/thread-state.js.map +1 -0
  117. package/dist/commands/channel/store/watch.d.ts +19 -0
  118. package/dist/commands/channel/store/watch.d.ts.map +1 -0
  119. package/dist/commands/channel/store/watch.js +153 -0
  120. package/dist/commands/channel/store/watch.js.map +1 -0
  121. package/dist/commands/channel/supervisor/idle.d.ts +45 -0
  122. package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
  123. package/dist/commands/channel/supervisor/idle.js +70 -0
  124. package/dist/commands/channel/supervisor/idle.js.map +1 -0
  125. package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
  126. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
  127. package/dist/commands/channel/supervisor/inbox.js +160 -0
  128. package/dist/commands/channel/supervisor/inbox.js.map +1 -0
  129. package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
  130. package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
  131. package/dist/commands/channel/supervisor/shutdown.js +146 -0
  132. package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
  133. package/dist/commands/channel/supervisor/stdout.d.ts +71 -0
  134. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
  135. package/dist/commands/channel/supervisor/stdout.js +229 -0
  136. package/dist/commands/channel/supervisor/stdout.js.map +1 -0
  137. package/dist/commands/channel/supervisor/turns.d.ts +31 -0
  138. package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
  139. package/dist/commands/channel/supervisor/turns.js +45 -0
  140. package/dist/commands/channel/supervisor/turns.js.map +1 -0
  141. package/dist/commands/channel/supervisor/warning.d.ts +48 -0
  142. package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
  143. package/dist/commands/channel/supervisor/warning.js +77 -0
  144. package/dist/commands/channel/supervisor/warning.js.map +1 -0
  145. package/dist/commands/channel/supervisor.d.ts +91 -0
  146. package/dist/commands/channel/supervisor.d.ts.map +1 -0
  147. package/dist/commands/channel/supervisor.js +463 -0
  148. package/dist/commands/channel/supervisor.js.map +1 -0
  149. package/dist/commands/channel/text-body.d.ts +13 -0
  150. package/dist/commands/channel/text-body.d.ts.map +1 -0
  151. package/dist/commands/channel/text-body.js +47 -0
  152. package/dist/commands/channel/text-body.js.map +1 -0
  153. package/dist/commands/channel/threads.d.ts +39 -0
  154. package/dist/commands/channel/threads.d.ts.map +1 -0
  155. package/dist/commands/channel/threads.js +106 -0
  156. package/dist/commands/channel/threads.js.map +1 -0
  157. package/dist/commands/channel/title.d.ts +12 -0
  158. package/dist/commands/channel/title.d.ts.map +1 -0
  159. package/dist/commands/channel/title.js +24 -0
  160. package/dist/commands/channel/title.js.map +1 -0
  161. package/dist/commands/channel/wait.d.ts +17 -0
  162. package/dist/commands/channel/wait.d.ts.map +1 -0
  163. package/dist/commands/channel/wait.js +75 -0
  164. package/dist/commands/channel/wait.js.map +1 -0
  165. package/dist/commands/init.d.ts +71 -0
  166. package/dist/commands/init.d.ts.map +1 -0
  167. package/dist/commands/init.js +1612 -0
  168. package/dist/commands/init.js.map +1 -0
  169. package/dist/commands/mem.d.ts +30 -0
  170. package/dist/commands/mem.d.ts.map +1 -0
  171. package/dist/commands/mem.js +423 -0
  172. package/dist/commands/mem.js.map +1 -0
  173. package/dist/commands/uninstall.d.ts +36 -0
  174. package/dist/commands/uninstall.d.ts.map +1 -0
  175. package/dist/commands/uninstall.js +205 -0
  176. package/dist/commands/uninstall.js.map +1 -0
  177. package/dist/commands/update.d.ts +133 -0
  178. package/dist/commands/update.d.ts.map +1 -0
  179. package/dist/commands/update.js +2255 -0
  180. package/dist/commands/update.js.map +1 -0
  181. package/dist/commands/upgrade.d.ts +28 -0
  182. package/dist/commands/upgrade.d.ts.map +1 -0
  183. package/dist/commands/upgrade.js +84 -0
  184. package/dist/commands/upgrade.js.map +1 -0
  185. package/dist/commands/workflow.d.ts +35 -0
  186. package/dist/commands/workflow.d.ts.map +1 -0
  187. package/dist/commands/workflow.js +232 -0
  188. package/dist/commands/workflow.js.map +1 -0
  189. package/dist/configurators/antigravity.d.ts +7 -0
  190. package/dist/configurators/antigravity.d.ts.map +1 -0
  191. package/dist/configurators/antigravity.js +11 -0
  192. package/dist/configurators/antigravity.js.map +1 -0
  193. package/dist/configurators/claude.d.ts +23 -0
  194. package/dist/configurators/claude.d.ts.map +1 -0
  195. package/dist/configurators/claude.js +123 -0
  196. package/dist/configurators/claude.js.map +1 -0
  197. package/dist/configurators/codebuddy.d.ts +10 -0
  198. package/dist/configurators/codebuddy.d.ts.map +1 -0
  199. package/dist/configurators/codebuddy.js +24 -0
  200. package/dist/configurators/codebuddy.js.map +1 -0
  201. package/dist/configurators/codex.d.ts +57 -0
  202. package/dist/configurators/codex.d.ts.map +1 -0
  203. package/dist/configurators/codex.js +170 -0
  204. package/dist/configurators/codex.js.map +1 -0
  205. package/dist/configurators/copilot.d.ts +18 -0
  206. package/dist/configurators/copilot.d.ts.map +1 -0
  207. package/dist/configurators/copilot.js +50 -0
  208. package/dist/configurators/copilot.js.map +1 -0
  209. package/dist/configurators/cursor.d.ts +10 -0
  210. package/dist/configurators/cursor.d.ts.map +1 -0
  211. package/dist/configurators/cursor.js +23 -0
  212. package/dist/configurators/cursor.js.map +1 -0
  213. package/dist/configurators/devin.d.ts +8 -0
  214. package/dist/configurators/devin.d.ts.map +1 -0
  215. package/dist/configurators/devin.js +12 -0
  216. package/dist/configurators/devin.js.map +1 -0
  217. package/dist/configurators/droid.d.ts +10 -0
  218. package/dist/configurators/droid.d.ts.map +1 -0
  219. package/dist/configurators/droid.js +24 -0
  220. package/dist/configurators/droid.js.map +1 -0
  221. package/dist/configurators/dsh.d.ts +29 -0
  222. package/dist/configurators/dsh.d.ts.map +1 -0
  223. package/dist/configurators/dsh.js +64 -0
  224. package/dist/configurators/dsh.js.map +1 -0
  225. package/dist/configurators/gemini.d.ts +19 -0
  226. package/dist/configurators/gemini.d.ts.map +1 -0
  227. package/dist/configurators/gemini.js +40 -0
  228. package/dist/configurators/gemini.js.map +1 -0
  229. package/dist/configurators/grok.d.ts +17 -0
  230. package/dist/configurators/grok.d.ts.map +1 -0
  231. package/dist/configurators/grok.js +38 -0
  232. package/dist/configurators/grok.js.map +1 -0
  233. package/dist/configurators/index.d.ts +68 -0
  234. package/dist/configurators/index.d.ts.map +1 -0
  235. package/dist/configurators/index.js +191 -0
  236. package/dist/configurators/index.js.map +1 -0
  237. package/dist/configurators/kilo.d.ts +7 -0
  238. package/dist/configurators/kilo.d.ts.map +1 -0
  239. package/dist/configurators/kilo.js +11 -0
  240. package/dist/configurators/kilo.js.map +1 -0
  241. package/dist/configurators/kimi.d.ts +26 -0
  242. package/dist/configurators/kimi.d.ts.map +1 -0
  243. package/dist/configurators/kimi.js +74 -0
  244. package/dist/configurators/kimi.js.map +1 -0
  245. package/dist/configurators/kiro.d.ts +11 -0
  246. package/dist/configurators/kiro.d.ts.map +1 -0
  247. package/dist/configurators/kiro.js +30 -0
  248. package/dist/configurators/kiro.js.map +1 -0
  249. package/dist/configurators/omp.d.ts +6 -0
  250. package/dist/configurators/omp.d.ts.map +1 -0
  251. package/dist/configurators/omp.js +28 -0
  252. package/dist/configurators/omp.js.map +1 -0
  253. package/dist/configurators/opencode.d.ts +5 -0
  254. package/dist/configurators/opencode.d.ts.map +1 -0
  255. package/dist/configurators/opencode.js +80 -0
  256. package/dist/configurators/opencode.js.map +1 -0
  257. package/dist/configurators/pi.d.ts +5 -0
  258. package/dist/configurators/pi.d.ts.map +1 -0
  259. package/dist/configurators/pi.js +39 -0
  260. package/dist/configurators/pi.js.map +1 -0
  261. package/dist/configurators/qoder.d.ts +12 -0
  262. package/dist/configurators/qoder.d.ts.map +1 -0
  263. package/dist/configurators/qoder.js +30 -0
  264. package/dist/configurators/qoder.js.map +1 -0
  265. package/dist/configurators/reasonix.d.ts +17 -0
  266. package/dist/configurators/reasonix.d.ts.map +1 -0
  267. package/dist/configurators/reasonix.js +37 -0
  268. package/dist/configurators/reasonix.js.map +1 -0
  269. package/dist/configurators/shared.d.ts +196 -0
  270. package/dist/configurators/shared.d.ts.map +1 -0
  271. package/dist/configurators/shared.js +600 -0
  272. package/dist/configurators/shared.js.map +1 -0
  273. package/dist/configurators/snow.d.ts +25 -0
  274. package/dist/configurators/snow.d.ts.map +1 -0
  275. package/dist/configurators/snow.js +69 -0
  276. package/dist/configurators/snow.js.map +1 -0
  277. package/dist/configurators/trae.d.ts +16 -0
  278. package/dist/configurators/trae.d.ts.map +1 -0
  279. package/dist/configurators/trae.js +34 -0
  280. package/dist/configurators/trae.js.map +1 -0
  281. package/dist/configurators/workflow.d.ts +51 -0
  282. package/dist/configurators/workflow.d.ts.map +1 -0
  283. package/dist/configurators/workflow.js +210 -0
  284. package/dist/configurators/workflow.js.map +1 -0
  285. package/dist/configurators/zcode.d.ts +19 -0
  286. package/dist/configurators/zcode.d.ts.map +1 -0
  287. package/dist/configurators/zcode.js +51 -0
  288. package/dist/configurators/zcode.js.map +1 -0
  289. package/dist/constants/paths.d.ts +74 -0
  290. package/dist/constants/paths.d.ts.map +1 -0
  291. package/dist/constants/paths.js +83 -0
  292. package/dist/constants/paths.js.map +1 -0
  293. package/dist/constants/version.d.ts +9 -0
  294. package/dist/constants/version.d.ts.map +1 -0
  295. package/dist/constants/version.js +15 -0
  296. package/dist/constants/version.js.map +1 -0
  297. package/dist/index.d.ts +9 -0
  298. package/dist/index.d.ts.map +1 -0
  299. package/dist/index.js +9 -0
  300. package/dist/index.js.map +1 -0
  301. package/dist/migrations/index.d.ts +65 -0
  302. package/dist/migrations/index.d.ts.map +1 -0
  303. package/dist/migrations/index.js +202 -0
  304. package/dist/migrations/index.js.map +1 -0
  305. package/dist/templates/atw/agents/implement-agent.md +69 -0
  306. package/dist/templates/atw/agents/review.md +68 -0
  307. package/dist/templates/atw/config.yaml +158 -0
  308. package/dist/templates/atw/gitattributes.txt +9 -0
  309. package/dist/templates/atw/gitignore.txt +32 -0
  310. package/dist/templates/atw/index.d.ts +70 -0
  311. package/dist/templates/atw/index.d.ts.map +1 -0
  312. package/dist/templates/atw/index.js +137 -0
  313. package/dist/templates/atw/index.js.map +1 -0
  314. package/dist/templates/atw/scripts/__init__.py +5 -0
  315. package/dist/templates/atw/scripts/add_session.py +1545 -0
  316. package/dist/templates/atw/scripts/common/__init__.py +94 -0
  317. package/dist/templates/atw/scripts/common/active_task.py +857 -0
  318. package/dist/templates/atw/scripts/common/atw_config.py +239 -0
  319. package/dist/templates/atw/scripts/common/cli_adapter.py +949 -0
  320. package/dist/templates/atw/scripts/common/config.py +482 -0
  321. package/dist/templates/atw/scripts/common/developer.py +192 -0
  322. package/dist/templates/atw/scripts/common/git.py +203 -0
  323. package/dist/templates/atw/scripts/common/git_context.py +106 -0
  324. package/dist/templates/atw/scripts/common/io.py +160 -0
  325. package/dist/templates/atw/scripts/common/log.py +45 -0
  326. package/dist/templates/atw/scripts/common/packages_context.py +238 -0
  327. package/dist/templates/atw/scripts/common/paths.py +543 -0
  328. package/dist/templates/atw/scripts/common/safe_commit.py +322 -0
  329. package/dist/templates/atw/scripts/common/session_context.py +892 -0
  330. package/dist/templates/atw/scripts/common/task_context.py +470 -0
  331. package/dist/templates/atw/scripts/common/task_queue.py +188 -0
  332. package/dist/templates/atw/scripts/common/task_store.py +1940 -0
  333. package/dist/templates/atw/scripts/common/task_utils.py +498 -0
  334. package/dist/templates/atw/scripts/common/tasks.py +122 -0
  335. package/dist/templates/atw/scripts/common/types.py +110 -0
  336. package/dist/templates/atw/scripts/common/workflow_phase.py +242 -0
  337. package/dist/templates/atw/scripts/get_context.py +16 -0
  338. package/dist/templates/atw/scripts/get_developer.py +26 -0
  339. package/dist/templates/atw/scripts/github_sync.py +391 -0
  340. package/dist/templates/atw/scripts/hooks/linear_sync.py +243 -0
  341. package/dist/templates/atw/scripts/init_developer.py +51 -0
  342. package/dist/templates/atw/scripts/task.py +833 -0
  343. package/dist/templates/atw/scripts/tickets.py +495 -0
  344. package/dist/templates/atw/tasks/.gitkeep +0 -0
  345. package/dist/templates/atw/workflow.md +754 -0
  346. package/dist/templates/claude/agents/atw-implement-agent.md +107 -0
  347. package/dist/templates/claude/agents/atw-review.md +113 -0
  348. package/dist/templates/claude/hooks/statusline.py +332 -0
  349. package/dist/templates/claude/index.d.ts +31 -0
  350. package/dist/templates/claude/index.d.ts.map +1 -0
  351. package/dist/templates/claude/index.js +57 -0
  352. package/dist/templates/claude/index.js.map +1 -0
  353. package/dist/templates/claude/settings.json +73 -0
  354. package/dist/templates/codebuddy/agents/atw-implement-agent.md +107 -0
  355. package/dist/templates/codebuddy/agents/atw-review.md +113 -0
  356. package/dist/templates/codebuddy/index.d.ts +15 -0
  357. package/dist/templates/codebuddy/index.d.ts.map +1 -0
  358. package/dist/templates/codebuddy/index.js +15 -0
  359. package/dist/templates/codebuddy/index.js.map +1 -0
  360. package/dist/templates/codebuddy/settings.json +69 -0
  361. package/dist/templates/codex/agents/atw-implement-agent.toml +37 -0
  362. package/dist/templates/codex/agents/atw-review.toml +56 -0
  363. package/dist/templates/codex/config.toml +39 -0
  364. package/dist/templates/codex/hooks/session-start.py +514 -0
  365. package/dist/templates/codex/hooks.json +27 -0
  366. package/dist/templates/codex/index.d.ts +35 -0
  367. package/dist/templates/codex/index.d.ts.map +1 -0
  368. package/dist/templates/codex/index.js +67 -0
  369. package/dist/templates/codex/index.js.map +1 -0
  370. package/dist/templates/common/bundled-skills/atw-askme/SKILL.md +7 -0
  371. package/dist/templates/common/bundled-skills/atw-askme/agents/openai.yaml +5 -0
  372. package/dist/templates/common/bundled-skills/atw-askme-with-docs/SKILL.md +7 -0
  373. package/dist/templates/common/bundled-skills/atw-askme-with-docs/agents/openai.yaml +5 -0
  374. package/dist/templates/common/bundled-skills/atw-channel/SKILL.md +67 -0
  375. package/dist/templates/common/bundled-skills/atw-channel/references/command-reference.md +480 -0
  376. package/dist/templates/common/bundled-skills/atw-channel/references/forum.md +233 -0
  377. package/dist/templates/common/bundled-skills/atw-channel/references/progress-debugging.md +226 -0
  378. package/dist/templates/common/bundled-skills/atw-channel/references/workers.md +274 -0
  379. package/dist/templates/common/bundled-skills/atw-channel/references/workflows.md +125 -0
  380. package/dist/templates/common/bundled-skills/atw-code-review/SKILL.md +113 -0
  381. package/dist/templates/common/bundled-skills/atw-code-review/agents/openai.yaml +3 -0
  382. package/dist/templates/common/bundled-skills/atw-codebase-design/DEEPENING.md +37 -0
  383. package/dist/templates/common/bundled-skills/atw-codebase-design/DESIGN-IT-TWICE.md +44 -0
  384. package/dist/templates/common/bundled-skills/atw-codebase-design/SKILL.md +114 -0
  385. package/dist/templates/common/bundled-skills/atw-codebase-design/agents/openai.yaml +3 -0
  386. package/dist/templates/common/bundled-skills/atw-diagnosing-bugs/SKILL.md +138 -0
  387. package/dist/templates/common/bundled-skills/atw-diagnosing-bugs/agents/openai.yaml +3 -0
  388. package/dist/templates/common/bundled-skills/atw-diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  389. package/dist/templates/common/bundled-skills/atw-domain-modeling/ADR-FORMAT.md +47 -0
  390. package/dist/templates/common/bundled-skills/atw-domain-modeling/CONTEXT-FORMAT.md +60 -0
  391. package/dist/templates/common/bundled-skills/atw-domain-modeling/SKILL.md +74 -0
  392. package/dist/templates/common/bundled-skills/atw-domain-modeling/agents/openai.yaml +3 -0
  393. package/dist/templates/common/bundled-skills/atw-handoff/SKILL.md +16 -0
  394. package/dist/templates/common/bundled-skills/atw-handoff/agents/openai.yaml +5 -0
  395. package/dist/templates/common/bundled-skills/atw-implement/SKILL.md +21 -0
  396. package/dist/templates/common/bundled-skills/atw-implement/agents/openai.yaml +5 -0
  397. package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/HTML-REPORT.md +123 -0
  398. package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/SKILL.md +71 -0
  399. package/dist/templates/common/bundled-skills/atw-improve-codebase-architecture/agents/openai.yaml +5 -0
  400. package/dist/templates/common/bundled-skills/atw-init-repo/SKILL.md +130 -0
  401. package/dist/templates/common/bundled-skills/atw-init-repo/references/domain.md +51 -0
  402. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw-local.md +133 -0
  403. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-atw.md +109 -0
  404. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-github.md +45 -0
  405. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-gitlab.md +46 -0
  406. package/dist/templates/common/bundled-skills/atw-init-repo/references/issue-tracker-local.md +30 -0
  407. package/dist/templates/common/bundled-skills/atw-init-repo/references/triage-labels.md +15 -0
  408. package/dist/templates/common/bundled-skills/atw-interview/SKILL.md +22 -0
  409. package/dist/templates/common/bundled-skills/atw-interview/agents/openai.yaml +3 -0
  410. package/dist/templates/common/bundled-skills/atw-map/SKILL.md +128 -0
  411. package/dist/templates/common/bundled-skills/atw-map/agents/openai.yaml +5 -0
  412. package/dist/templates/common/bundled-skills/atw-merge/SKILL.md +14 -0
  413. package/dist/templates/common/bundled-skills/atw-merge/agents/openai.yaml +3 -0
  414. package/dist/templates/common/bundled-skills/atw-meta/SKILL.md +85 -0
  415. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/add-project-local-conventions.md +83 -0
  416. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-agents.md +55 -0
  417. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-context-loading.md +80 -0
  418. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-hooks.md +57 -0
  419. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-skills-or-commands.md +123 -0
  420. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-spec-structure.md +83 -0
  421. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-task-lifecycle.md +91 -0
  422. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/change-workflow.md +59 -0
  423. package/dist/templates/common/bundled-skills/atw-meta/references/customize-local/overview.md +55 -0
  424. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/bundled-skills.md +159 -0
  425. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/context-injection.md +68 -0
  426. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/generated-files.md +80 -0
  427. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/multi-agent-channel.md +69 -0
  428. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/overview.md +51 -0
  429. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/spec-system.md +102 -0
  430. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/task-system.md +126 -0
  431. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/workflow.md +79 -0
  432. package/dist/templates/common/bundled-skills/atw-meta/references/local-architecture/workspace-memory.md +71 -0
  433. package/dist/templates/common/bundled-skills/atw-meta/references/platform-files/agents.md +80 -0
  434. package/dist/templates/common/bundled-skills/atw-meta/references/platform-files/hooks-and-settings.md +72 -0
  435. package/dist/templates/common/bundled-skills/atw-meta/references/platform-files/overview.md +59 -0
  436. package/dist/templates/common/bundled-skills/atw-meta/references/platform-files/platform-map.md +112 -0
  437. package/dist/templates/common/bundled-skills/atw-meta/references/platform-files/skills-and-commands.md +86 -0
  438. package/dist/templates/common/bundled-skills/atw-prototype/LOGIC.md +67 -0
  439. package/dist/templates/common/bundled-skills/atw-prototype/SKILL.md +26 -0
  440. package/dist/templates/common/bundled-skills/atw-prototype/UI.md +112 -0
  441. package/dist/templates/common/bundled-skills/atw-prototype/agents/openai.yaml +3 -0
  442. package/dist/templates/common/bundled-skills/atw-research/SKILL.md +14 -0
  443. package/dist/templates/common/bundled-skills/atw-research/agents/openai.yaml +3 -0
  444. package/dist/templates/common/bundled-skills/atw-session-insight/SKILL.md +81 -0
  445. package/dist/templates/common/bundled-skills/atw-session-insight/references/cli-quick-reference.md +65 -0
  446. package/dist/templates/common/bundled-skills/atw-session-insight/references/triggering-patterns.md +93 -0
  447. package/dist/templates/common/bundled-skills/atw-spec/SKILL.md +75 -0
  448. package/dist/templates/common/bundled-skills/atw-spec/agents/openai.yaml +5 -0
  449. package/dist/templates/common/bundled-skills/atw-spec-bootstrap/SKILL.md +41 -0
  450. package/dist/templates/common/bundled-skills/atw-spec-bootstrap/references/mcp-setup.md +90 -0
  451. package/dist/templates/common/bundled-skills/atw-spec-bootstrap/references/repository-analysis.md +59 -0
  452. package/dist/templates/common/bundled-skills/atw-spec-bootstrap/references/spec-task-planning.md +61 -0
  453. package/dist/templates/common/bundled-skills/atw-spec-bootstrap/references/spec-writing.md +70 -0
  454. package/dist/templates/common/bundled-skills/atw-tdd/SKILL.md +38 -0
  455. package/dist/templates/common/bundled-skills/atw-tdd/agents/openai.yaml +3 -0
  456. package/dist/templates/common/bundled-skills/atw-tdd/mocking.md +59 -0
  457. package/dist/templates/common/bundled-skills/atw-tdd/tests.md +77 -0
  458. package/dist/templates/common/bundled-skills/atw-tickets/SKILL.md +105 -0
  459. package/dist/templates/common/bundled-skills/atw-tickets/agents/openai.yaml +5 -0
  460. package/dist/templates/common/bundled-skills/atw-triage/AGENT-BRIEF.md +207 -0
  461. package/dist/templates/common/bundled-skills/atw-triage/OUT-OF-SCOPE.md +105 -0
  462. package/dist/templates/common/bundled-skills/atw-triage/SKILL.md +112 -0
  463. package/dist/templates/common/bundled-skills/atw-triage/agents/openai.yaml +5 -0
  464. package/dist/templates/common/commands/continue.md +55 -0
  465. package/dist/templates/common/commands/finish-work.md +69 -0
  466. package/dist/templates/common/commands/start.md +68 -0
  467. package/dist/templates/common/index.d.ts +48 -0
  468. package/dist/templates/common/index.d.ts.map +1 -0
  469. package/dist/templates/common/index.js +104 -0
  470. package/dist/templates/common/index.js.map +1 -0
  471. package/dist/templates/common/skills/before-dev.md +44 -0
  472. package/dist/templates/common/skills/brainstorm.md +194 -0
  473. package/dist/templates/common/skills/update-spec.md +351 -0
  474. package/dist/templates/copilot/copilot-instructions.md +11 -0
  475. package/dist/templates/copilot/hooks/session-start.py +510 -0
  476. package/dist/templates/copilot/hooks.json +19 -0
  477. package/dist/templates/copilot/index.d.ts +23 -0
  478. package/dist/templates/copilot/index.d.ts.map +1 -0
  479. package/dist/templates/copilot/index.js +48 -0
  480. package/dist/templates/copilot/index.js.map +1 -0
  481. package/dist/templates/cursor/agents/atw-implement-agent.md +106 -0
  482. package/dist/templates/cursor/agents/atw-review.md +112 -0
  483. package/dist/templates/cursor/hooks.json +24 -0
  484. package/dist/templates/cursor/index.d.ts +13 -0
  485. package/dist/templates/cursor/index.d.ts.map +1 -0
  486. package/dist/templates/cursor/index.js +13 -0
  487. package/dist/templates/cursor/index.js.map +1 -0
  488. package/dist/templates/droid/droids/atw-implement-agent.md +99 -0
  489. package/dist/templates/droid/droids/atw-review.md +105 -0
  490. package/dist/templates/droid/index.d.ts +15 -0
  491. package/dist/templates/droid/index.d.ts.map +1 -0
  492. package/dist/templates/droid/index.js +15 -0
  493. package/dist/templates/droid/index.js.map +1 -0
  494. package/dist/templates/droid/settings.json +69 -0
  495. package/dist/templates/dsh/DSH.md +56 -0
  496. package/dist/templates/dsh/index.d.ts +21 -0
  497. package/dist/templates/dsh/index.d.ts.map +1 -0
  498. package/dist/templates/dsh/index.js +25 -0
  499. package/dist/templates/dsh/index.js.map +1 -0
  500. package/dist/templates/extract.d.ts +40 -0
  501. package/dist/templates/extract.d.ts.map +1 -0
  502. package/dist/templates/extract.js +106 -0
  503. package/dist/templates/extract.js.map +1 -0
  504. package/dist/templates/gemini/agents/atw-implement-agent.md +99 -0
  505. package/dist/templates/gemini/agents/atw-review.md +105 -0
  506. package/dist/templates/gemini/index.d.ts +13 -0
  507. package/dist/templates/gemini/index.d.ts.map +1 -0
  508. package/dist/templates/gemini/index.js +13 -0
  509. package/dist/templates/gemini/index.js.map +1 -0
  510. package/dist/templates/gemini/settings.json +40 -0
  511. package/dist/templates/grok/agents/atw-implement-agent.md +115 -0
  512. package/dist/templates/grok/agents/atw-review.md +105 -0
  513. package/dist/templates/grok/index.d.ts +15 -0
  514. package/dist/templates/grok/index.d.ts.map +1 -0
  515. package/dist/templates/grok/index.js +18 -0
  516. package/dist/templates/grok/index.js.map +1 -0
  517. package/dist/templates/kimi/agents/atw-implement-agent.md +114 -0
  518. package/dist/templates/kimi/agents/atw-review.md +103 -0
  519. package/dist/templates/kimi/index.d.ts +20 -0
  520. package/dist/templates/kimi/index.d.ts.map +1 -0
  521. package/dist/templates/kimi/index.js +23 -0
  522. package/dist/templates/kimi/index.js.map +1 -0
  523. package/dist/templates/kiro/agents/atw-implement-agent.json +26 -0
  524. package/dist/templates/kiro/agents/atw-review.json +26 -0
  525. package/dist/templates/kiro/agents/atw.json +34 -0
  526. package/dist/templates/kiro/hooks/atw-workflow-state.kiro.hook +14 -0
  527. package/dist/templates/kiro/index.d.ts +32 -0
  528. package/dist/templates/kiro/index.d.ts.map +1 -0
  529. package/dist/templates/kiro/index.js +28 -0
  530. package/dist/templates/kiro/index.js.map +1 -0
  531. package/dist/templates/markdown/agents.md +21 -0
  532. package/dist/templates/markdown/gitignore.txt +15 -0
  533. package/dist/templates/markdown/index.d.ts +27 -0
  534. package/dist/templates/markdown/index.d.ts.map +1 -0
  535. package/dist/templates/markdown/index.js +52 -0
  536. package/dist/templates/markdown/index.js.map +1 -0
  537. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
  538. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
  539. package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
  540. package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
  541. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
  542. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
  543. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
  544. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
  545. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
  546. package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
  547. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
  548. package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
  549. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
  550. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
  551. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +290 -0
  552. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +634 -0
  553. package/dist/templates/markdown/spec/guides/index.md.txt +97 -0
  554. package/dist/templates/markdown/workspace-index.md +125 -0
  555. package/dist/templates/markdown/worktree.yaml.txt +58 -0
  556. package/dist/templates/omp/agents/atw-implement-agent.md +45 -0
  557. package/dist/templates/omp/agents/atw-review.md +41 -0
  558. package/dist/templates/omp/extensions/atw/index.ts.txt +1109 -0
  559. package/dist/templates/omp/index.d.ts +4 -0
  560. package/dist/templates/omp/index.d.ts.map +1 -0
  561. package/dist/templates/omp/index.js +9 -0
  562. package/dist/templates/omp/index.js.map +1 -0
  563. package/dist/templates/opencode/agents/atw-implement-agent.md +115 -0
  564. package/dist/templates/opencode/agents/atw-review.md +120 -0
  565. package/dist/templates/opencode/lib/atw-context.js +637 -0
  566. package/dist/templates/opencode/lib/context-visibility.js +148 -0
  567. package/dist/templates/opencode/lib/session-utils.js +474 -0
  568. package/dist/templates/opencode/package.json +6 -0
  569. package/dist/templates/opencode/plugins/inject-subagent-context.js +390 -0
  570. package/dist/templates/opencode/plugins/inject-workflow-state.js +240 -0
  571. package/dist/templates/opencode/plugins/session-start.js +65 -0
  572. package/dist/templates/pi/agents/atw-implement-agent.md +42 -0
  573. package/dist/templates/pi/agents/atw-review.md +37 -0
  574. package/dist/templates/pi/extensions/atw/index.ts.txt +2014 -0
  575. package/dist/templates/pi/index.d.ts +5 -0
  576. package/dist/templates/pi/index.d.ts.map +1 -0
  577. package/dist/templates/pi/index.js +12 -0
  578. package/dist/templates/pi/index.js.map +1 -0
  579. package/dist/templates/pi/settings.json +9 -0
  580. package/dist/templates/qoder/agents/atw-implement-agent.md +100 -0
  581. package/dist/templates/qoder/agents/atw-review.md +106 -0
  582. package/dist/templates/qoder/index.d.ts +15 -0
  583. package/dist/templates/qoder/index.d.ts.map +1 -0
  584. package/dist/templates/qoder/index.js +15 -0
  585. package/dist/templates/qoder/index.js.map +1 -0
  586. package/dist/templates/qoder/settings.json +59 -0
  587. package/dist/templates/reasonix/agents/atw-implement-agent.md +41 -0
  588. package/dist/templates/reasonix/agents/atw-review.md +36 -0
  589. package/dist/templates/reasonix/index.d.ts +13 -0
  590. package/dist/templates/reasonix/index.d.ts.map +1 -0
  591. package/dist/templates/reasonix/index.js +16 -0
  592. package/dist/templates/reasonix/index.js.map +1 -0
  593. package/dist/templates/shared-hooks/index.d.ts +77 -0
  594. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  595. package/dist/templates/shared-hooks/index.js +140 -0
  596. package/dist/templates/shared-hooks/index.js.map +1 -0
  597. package/dist/templates/shared-hooks/inject-shell-session-context.py +292 -0
  598. package/dist/templates/shared-hooks/inject-subagent-context.py +1178 -0
  599. package/dist/templates/shared-hooks/inject-workflow-state.py +488 -0
  600. package/dist/templates/shared-hooks/session-start.py +889 -0
  601. package/dist/templates/snow/SNOW.md +86 -0
  602. package/dist/templates/snow/agents/atw-implement-agent.md +152 -0
  603. package/dist/templates/snow/agents/atw-review.md +135 -0
  604. package/dist/templates/snow/hooks/beforeSubAgentStart.json +15 -0
  605. package/dist/templates/snow/hooks/onSessionStart.json +15 -0
  606. package/dist/templates/snow/hooks/onUserMessage.json +15 -0
  607. package/dist/templates/snow/hooks/write-atw-context.py +637 -0
  608. package/dist/templates/snow/index.d.ts +25 -0
  609. package/dist/templates/snow/index.d.ts.map +1 -0
  610. package/dist/templates/snow/index.js +35 -0
  611. package/dist/templates/snow/index.js.map +1 -0
  612. package/dist/templates/template-utils.d.ts +26 -0
  613. package/dist/templates/template-utils.d.ts.map +1 -0
  614. package/dist/templates/template-utils.js +64 -0
  615. package/dist/templates/template-utils.js.map +1 -0
  616. package/dist/templates/trae/agents/atw-implement-agent.md +100 -0
  617. package/dist/templates/trae/agents/atw-review.md +106 -0
  618. package/dist/templates/trae/hooks.json +39 -0
  619. package/dist/templates/trae/index.d.ts +15 -0
  620. package/dist/templates/trae/index.d.ts.map +1 -0
  621. package/dist/templates/trae/index.js +15 -0
  622. package/dist/templates/trae/index.js.map +1 -0
  623. package/dist/templates/zcode/agents/atw-implement-agent.md +108 -0
  624. package/dist/templates/zcode/agents/atw-review.md +109 -0
  625. package/dist/templates/zcode/config.json +52 -0
  626. package/dist/templates/zcode/index.d.ts +22 -0
  627. package/dist/templates/zcode/index.d.ts.map +1 -0
  628. package/dist/templates/zcode/index.js +26 -0
  629. package/dist/templates/zcode/index.js.map +1 -0
  630. package/dist/types/ai-tools.d.ts +95 -0
  631. package/dist/types/ai-tools.d.ts.map +1 -0
  632. package/dist/types/ai-tools.js +494 -0
  633. package/dist/types/ai-tools.js.map +1 -0
  634. package/dist/types/migration.d.ts +125 -0
  635. package/dist/types/migration.d.ts.map +1 -0
  636. package/dist/types/migration.js +8 -0
  637. package/dist/types/migration.js.map +1 -0
  638. package/dist/utils/ablation-store.d.ts +123 -0
  639. package/dist/utils/ablation-store.d.ts.map +1 -0
  640. package/dist/utils/ablation-store.js +749 -0
  641. package/dist/utils/ablation-store.js.map +1 -0
  642. package/dist/utils/agent-refs.d.ts +31 -0
  643. package/dist/utils/agent-refs.d.ts.map +1 -0
  644. package/dist/utils/agent-refs.js +63 -0
  645. package/dist/utils/agent-refs.js.map +1 -0
  646. package/dist/utils/atomic-write.d.ts +12 -0
  647. package/dist/utils/atomic-write.d.ts.map +1 -0
  648. package/dist/utils/atomic-write.js +30 -0
  649. package/dist/utils/atomic-write.js.map +1 -0
  650. package/dist/utils/compare-versions.d.ts +12 -0
  651. package/dist/utils/compare-versions.d.ts.map +1 -0
  652. package/dist/utils/compare-versions.js +86 -0
  653. package/dist/utils/compare-versions.js.map +1 -0
  654. package/dist/utils/cwd-guard.d.ts +38 -0
  655. package/dist/utils/cwd-guard.d.ts.map +1 -0
  656. package/dist/utils/cwd-guard.js +62 -0
  657. package/dist/utils/cwd-guard.js.map +1 -0
  658. package/dist/utils/file-writer.d.ts +36 -0
  659. package/dist/utils/file-writer.d.ts.map +1 -0
  660. package/dist/utils/file-writer.js +204 -0
  661. package/dist/utils/file-writer.js.map +1 -0
  662. package/dist/utils/managed-paths.d.ts +5 -0
  663. package/dist/utils/managed-paths.d.ts.map +1 -0
  664. package/dist/utils/managed-paths.js +51 -0
  665. package/dist/utils/managed-paths.js.map +1 -0
  666. package/dist/utils/managed-removal.d.ts +74 -0
  667. package/dist/utils/managed-removal.d.ts.map +1 -0
  668. package/dist/utils/managed-removal.js +270 -0
  669. package/dist/utils/managed-removal.js.map +1 -0
  670. package/dist/utils/manifest-prune.d.ts +61 -0
  671. package/dist/utils/manifest-prune.d.ts.map +1 -0
  672. package/dist/utils/manifest-prune.js +135 -0
  673. package/dist/utils/manifest-prune.js.map +1 -0
  674. package/dist/utils/posix.d.ts +13 -0
  675. package/dist/utils/posix.d.ts.map +1 -0
  676. package/dist/utils/posix.js +15 -0
  677. package/dist/utils/posix.js.map +1 -0
  678. package/dist/utils/project-detector.d.ts +46 -0
  679. package/dist/utils/project-detector.d.ts.map +1 -0
  680. package/dist/utils/project-detector.js +666 -0
  681. package/dist/utils/project-detector.js.map +1 -0
  682. package/dist/utils/proxy.d.ts +25 -0
  683. package/dist/utils/proxy.d.ts.map +1 -0
  684. package/dist/utils/proxy.js +60 -0
  685. package/dist/utils/proxy.js.map +1 -0
  686. package/dist/utils/registry-config.d.ts +7 -0
  687. package/dist/utils/registry-config.d.ts.map +1 -0
  688. package/dist/utils/registry-config.js +172 -0
  689. package/dist/utils/registry-config.js.map +1 -0
  690. package/dist/utils/task-json.d.ts +13 -0
  691. package/dist/utils/task-json.d.ts.map +1 -0
  692. package/dist/utils/task-json.js +12 -0
  693. package/dist/utils/task-json.js.map +1 -0
  694. package/dist/utils/template-fetcher.d.ts +161 -0
  695. package/dist/utils/template-fetcher.d.ts.map +1 -0
  696. package/dist/utils/template-fetcher.js +994 -0
  697. package/dist/utils/template-fetcher.js.map +1 -0
  698. package/dist/utils/template-hash.d.ts +127 -0
  699. package/dist/utils/template-hash.d.ts.map +1 -0
  700. package/dist/utils/template-hash.js +335 -0
  701. package/dist/utils/template-hash.js.map +1 -0
  702. package/dist/utils/uninstall-scrubbers.d.ts +66 -0
  703. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
  704. package/dist/utils/uninstall-scrubbers.js +417 -0
  705. package/dist/utils/uninstall-scrubbers.js.map +1 -0
  706. package/dist/utils/workflow-resolver.d.ts +86 -0
  707. package/dist/utils/workflow-resolver.d.ts.map +1 -0
  708. package/dist/utils/workflow-resolver.js +265 -0
  709. package/dist/utils/workflow-resolver.js.map +1 -0
  710. package/package.json +93 -0
@@ -0,0 +1,637 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """Snow CLI ATW context writer + additionalContext emitter.
4
+
5
+ Used by onSessionStart / onUserMessage / beforeSubAgentStart hooks.
6
+
7
+ 1. Writes a breadcrumb file agents/skills can Read:
8
+ .snow/log/atw-context.txt
9
+ 2. Prints stdout JSON for the Snow inject protocol:
10
+ { "additionalContext": "...", "display": "..." }
11
+
12
+ Modes (compact vs full):
13
+ - argv: session | user | subagent (preferred)
14
+ - env: ATW_SNOW_HOOK_MODE
15
+ - stdin JSON from Snow may include agentId/agentName/prompt/cwd/sessionId
16
+
17
+ Non-JSON hosts ignore stdout; Snow injects it into model context.
18
+ Fail-open: never raise out of main().
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ from collections.abc import Mapping
24
+ import json
25
+ import os
26
+ import re
27
+ import subprocess
28
+ import sys
29
+ from pathlib import Path
30
+ from typing import Any
31
+
32
+ # Force UTF-8 on Windows consoles (cp936/cp1252 otherwise corrupt Chinese paths).
33
+ if sys.platform.startswith("win"):
34
+ import io as _io
35
+
36
+ for _stream_name in ("stdin", "stdout", "stderr"):
37
+ _stream = getattr(sys, _stream_name, None)
38
+ if _stream is None:
39
+ continue
40
+ if hasattr(_stream, "reconfigure"):
41
+ try:
42
+ _stream.reconfigure(encoding="utf-8", errors="replace") # type: ignore[union-attr]
43
+ except Exception:
44
+ pass
45
+ elif hasattr(_stream, "detach"):
46
+ try:
47
+ setattr(
48
+ sys,
49
+ _stream_name,
50
+ _io.TextIOWrapper(_stream.detach(), encoding="utf-8", errors="replace"),
51
+ )
52
+ except Exception:
53
+ pass
54
+
55
+
56
+ DEFAULT_MAX_BYTES = 7500
57
+ COMPACT_MAX_BYTES = 2800
58
+
59
+
60
+ def _find_repo_root(start: Path) -> Path:
61
+ cur = start.resolve()
62
+ for candidate in [cur, *cur.parents]:
63
+ if (candidate / ".atw").is_dir():
64
+ return candidate
65
+ return cur
66
+
67
+
68
+ def _run(cmd: list[str], cwd: Path) -> str:
69
+ try:
70
+ completed = subprocess.run(
71
+ cmd,
72
+ cwd=str(cwd),
73
+ capture_output=True,
74
+ text=True,
75
+ encoding="utf-8",
76
+ errors="replace",
77
+ # Keep below Snow user/subagent hook timeout (15s) so fail-open JSON
78
+ # can still emit if task.py stalls.
79
+ timeout=5,
80
+ check=False,
81
+ )
82
+ except Exception as exc: # noqa: BLE001 — hooks must never crash the host
83
+ return f"(command failed: {exc})"
84
+ out = (completed.stdout or "").strip()
85
+ if out:
86
+ return out
87
+ err = (completed.stderr or "").strip()
88
+ return err or "(no output)"
89
+
90
+
91
+ def _read_text(path: Path, limit: int = 4000) -> str:
92
+ try:
93
+ data = path.read_text(encoding="utf-8", errors="replace")
94
+ except Exception:
95
+ return ""
96
+ data = data.strip()
97
+ if len(data) > limit:
98
+ return data[: limit - 20] + "\n... (truncated)"
99
+ return data
100
+
101
+
102
+ def _count_jsonl_lines(path: Path) -> int | None:
103
+ if not path.is_file():
104
+ return None
105
+ try:
106
+ count = 0
107
+ with path.open("r", encoding="utf-8", errors="replace") as fh:
108
+ for line in fh:
109
+ if line.strip():
110
+ count += 1
111
+ return count
112
+ except Exception:
113
+ return None
114
+
115
+
116
+ def _jsonl_summaries(path: Path, max_items: int = 8, line_limit: int = 120) -> list[str]:
117
+ if max_items <= 0 or not path.is_file():
118
+ return []
119
+ items: list[str] = []
120
+ try:
121
+ with path.open("r", encoding="utf-8", errors="replace") as fh:
122
+ for raw in fh:
123
+ line = raw.strip()
124
+ if not line:
125
+ continue
126
+ summary = line
127
+ try:
128
+ obj = json.loads(line)
129
+ if isinstance(obj, dict):
130
+ for key in ("summary", "title", "id", "path", "message", "status"):
131
+ val = obj.get(key)
132
+ if isinstance(val, str) and val.strip():
133
+ summary = val.strip()
134
+ break
135
+ else:
136
+ summary = json.dumps(obj, ensure_ascii=False)
137
+ except Exception:
138
+ pass
139
+ if len(summary) > line_limit:
140
+ summary = summary[: line_limit - 3] + "..."
141
+ items.append(f"- {summary}")
142
+ if len(items) > max_items:
143
+ items.pop(0)
144
+ except Exception:
145
+ return []
146
+ return items
147
+
148
+
149
+ def _parse_active_task_path(current_out: str, repo: Path) -> Path | None:
150
+ # Prefer "Current task: .atw/tasks/..." line from task.py --source.
151
+ for line in current_out.splitlines():
152
+ m = re.search(r"Current task:\s*(.+)\s*$", line.strip(), re.I)
153
+ if not m:
154
+ continue
155
+ raw = m.group(1).strip().strip('"').strip("'")
156
+ if not raw or raw.lower() in {"none", "(none)", "n/a"}:
157
+ return None
158
+ p = Path(raw)
159
+ if not p.is_absolute():
160
+ p = repo / p
161
+ return p
162
+ # Fallback: first path-like token containing tasks/
163
+ m = re.search(r"(\.atw[/\\]tasks[/\\][^\s]+)", current_out)
164
+ if m:
165
+ return repo / m.group(1).replace("\\", "/")
166
+ return None
167
+
168
+
169
+ def _drain_stdin(timeout_sec: float = 0.5) -> str:
170
+ """Best-effort drain of host-piped hook context without hanging on TTY."""
171
+ chunks: list[str] = []
172
+ try:
173
+ if sys.stdin is None or sys.stdin.closed:
174
+ return ""
175
+ # Interactive terminal: do not block waiting for EOF.
176
+ if hasattr(sys.stdin, "isatty") and sys.stdin.isatty():
177
+ return ""
178
+
179
+ # Hosts (Snow) pipe JSON then close stdin. Manual CLI runs must not hang.
180
+ if sys.platform.startswith("win"):
181
+ import threading
182
+
183
+ box: list[str] = []
184
+
185
+ def _read() -> None:
186
+ try:
187
+ box.append(sys.stdin.read())
188
+ except Exception:
189
+ pass
190
+
191
+ t = threading.Thread(target=_read, daemon=True)
192
+ t.start()
193
+ t.join(timeout_sec)
194
+ return box[0] if box else ""
195
+
196
+ import select
197
+
198
+ while True:
199
+ ready, _, _ = select.select([sys.stdin], [], [], timeout_sec)
200
+ if not ready:
201
+ break
202
+ chunk = sys.stdin.read(4096)
203
+ if not chunk:
204
+ break
205
+ chunks.append(chunk)
206
+ except Exception:
207
+ pass
208
+ return "".join(chunks)
209
+
210
+
211
+ def _parse_stdin_json(raw: str) -> dict[str, Any]:
212
+ text = (raw or "").strip()
213
+ if not text:
214
+ return {}
215
+ try:
216
+ data = json.loads(text)
217
+ return data if isinstance(data, dict) else {}
218
+ except Exception:
219
+ # Some hosts may wrap payload; try first JSON object substring.
220
+ start = text.find("{")
221
+ end = text.rfind("}")
222
+ if start >= 0 and end > start:
223
+ try:
224
+ data = json.loads(text[start : end + 1])
225
+ return data if isinstance(data, dict) else {}
226
+ except Exception:
227
+ return {}
228
+ return {}
229
+
230
+
231
+ def _resolve_mode(
232
+ argv: list[str], env: Mapping[str, str], stdin_ctx: dict[str, Any]
233
+ ) -> str:
234
+ for arg in argv[1:]:
235
+ a = arg.strip().lower()
236
+ if a in {"session", "user", "subagent", "full", "compact"}:
237
+ if a == "full":
238
+ return "session"
239
+ if a == "compact":
240
+ return "user"
241
+ return a
242
+ env_mode = (env.get("ATW_SNOW_HOOK_MODE") or "").strip().lower()
243
+ if env_mode in {"session", "user", "subagent"}:
244
+ return env_mode
245
+ # Infer from Snow stdin context shape.
246
+ if stdin_ctx.get("agentId") or stdin_ctx.get("agentName") or stdin_ctx.get("prompt"):
247
+ return "subagent"
248
+ if stdin_ctx.get("message") is not None or stdin_ctx.get("source") in {"normal", "pending"}:
249
+ return "user"
250
+ if stdin_ctx.get("isResume") is not None or stdin_ctx.get("messages") is not None:
251
+ return "session"
252
+ return "session"
253
+
254
+
255
+ def _agent_kind(stdin_ctx: dict[str, Any]) -> str:
256
+ blob = " ".join(
257
+ str(stdin_ctx.get(k) or "")
258
+ for k in ("agentId", "agentName", "prompt")
259
+ ).lower()
260
+ if "implement" in blob:
261
+ return "implement"
262
+ # `check` stays as the internal kind name (the checklist below keys on it),
263
+ # but the review role is called `atw-review` now — matching only on "check"
264
+ # silently degraded every review dispatch to the generic checklist.
265
+ if "review" in blob or "check" in blob:
266
+ return "check"
267
+ if "research" in blob:
268
+ return "research"
269
+ return "generic"
270
+
271
+
272
+ def _task_artifact_summary(task_dir: Path, *, detailed: bool, kind: str) -> list[str]:
273
+ lines: list[str] = [f"## Active task artifacts ({task_dir.as_posix()})"]
274
+ for name in ("prd.md", "task.json"):
275
+ p = task_dir / name
276
+ if p.is_file():
277
+ try:
278
+ size = p.stat().st_size
279
+ except Exception:
280
+ size = -1
281
+ lines.append(f"- {name}: present ({size} bytes)")
282
+ else:
283
+ lines.append(f"- {name}: missing")
284
+
285
+ for jl in ("implement.jsonl", "check.jsonl"):
286
+ n = _count_jsonl_lines(task_dir / jl)
287
+ if n is None:
288
+ lines.append(f"- {jl}: missing")
289
+ else:
290
+ lines.append(f"- {jl}: {n} entries")
291
+
292
+ research_dir = task_dir / "research"
293
+ if research_dir.is_dir():
294
+ try:
295
+ research_files = [p.name for p in research_dir.iterdir() if p.is_file()]
296
+ except Exception:
297
+ research_files = []
298
+ lines.append(f"- research/: {len(research_files)} file(s)")
299
+ else:
300
+ lines.append("- research/: missing")
301
+
302
+ lines.append("")
303
+
304
+ if not detailed:
305
+ return lines
306
+
307
+ prd = task_dir / "prd.md"
308
+ if prd.is_file():
309
+ # Prefer first ~40 lines / ~1800 chars for full mode.
310
+ body = _read_text(prd, 1800)
311
+ if body:
312
+ lines.extend(["## prd.md summary", body, ""])
313
+
314
+ if kind in {"implement", "generic"}:
315
+ impl = task_dir / "implement.jsonl"
316
+ items = _jsonl_summaries(impl, max_items=10)
317
+ if items:
318
+ lines.append("## implement.jsonl (recent)")
319
+ lines.extend(items)
320
+ lines.append("")
321
+
322
+ if kind in {"check", "generic"}:
323
+ lines.extend(
324
+ [
325
+ "## Check focus",
326
+ "- Run `git diff` / diagnostics for uncommitted changes.",
327
+ "- Compare against prd.md and project specs.",
328
+ "- Self-fix issues; do not only report.",
329
+ "",
330
+ ]
331
+ )
332
+ check_items = _jsonl_summaries(task_dir / "check.jsonl", max_items=8)
333
+ if check_items:
334
+ lines.append("## check.jsonl (recent)")
335
+ lines.extend(check_items)
336
+ lines.append("")
337
+
338
+ if kind == "research":
339
+ lines.extend(
340
+ [
341
+ "## Research focus",
342
+ f"- Persist findings ONLY under `{task_dir.as_posix()}/research/`.",
343
+ "- Chat reply should list file paths + one-line summaries, not full dumps.",
344
+ "- Do not modify code outside the research directory.",
345
+ "",
346
+ ]
347
+ )
348
+
349
+ return lines
350
+
351
+
352
+ def _sanitize_session_key(value: str) -> str:
353
+ cleaned = re.sub(r"[^A-Za-z0-9._-]+", "_", (value or "").strip())
354
+ return cleaned.strip("._-")
355
+
356
+
357
+ def _current_session_ids(stdin_ctx: dict[str, Any] | None = None) -> list[str]:
358
+ # Prefer explicit ATW context, then Snow session identity.
359
+ ids: list[str] = []
360
+ candidates = [
361
+ os.environ.get("ATW_CONTEXT_ID"),
362
+ os.environ.get("SNOW_SESSION_ID"),
363
+ ]
364
+ if stdin_ctx:
365
+ candidates.extend(
366
+ [
367
+ stdin_ctx.get("sessionId"),
368
+ stdin_ctx.get("session_id"),
369
+ ]
370
+ )
371
+ for raw in candidates:
372
+ if not isinstance(raw, str):
373
+ continue
374
+ key = _sanitize_session_key(raw)
375
+ if key and key not in ids:
376
+ ids.append(key)
377
+ # Snow injects ATW_CONTEXT_ID=snow-<sessionId>
378
+ if key.startswith("snow_"):
379
+ bare = key[5:]
380
+ if bare and bare not in ids:
381
+ ids.append(bare)
382
+ if key.startswith("snow-"):
383
+ bare = key[5:]
384
+ if bare and bare not in ids:
385
+ ids.append(bare)
386
+ return ids
387
+
388
+
389
+ def _resolve_runtime_session_file(
390
+ repo: Path,
391
+ stdin_ctx: dict[str, Any] | None = None,
392
+ ) -> Path | None:
393
+ # Resolve only the current session runtime file; never pick by mtime.
394
+ sessions_dir = repo / ".atw" / ".runtime" / "sessions"
395
+ if not sessions_dir.is_dir():
396
+ return None
397
+ for sid in _current_session_ids(stdin_ctx):
398
+ for name in (f"{sid}.json", sid):
399
+ candidate = sessions_dir / name
400
+ if candidate.is_file():
401
+ return candidate
402
+ return None
403
+
404
+
405
+ def _workflow_phase_summary(
406
+ repo: Path,
407
+ stdin_ctx: dict[str, Any] | None = None,
408
+ ) -> list[str]:
409
+ lines: list[str] = []
410
+ workflow = repo / ".atw" / "workflow.md"
411
+ if workflow.is_file():
412
+ body = _read_text(workflow, 900)
413
+ if body:
414
+ lines.extend(["## workflow.md excerpt", body, ""])
415
+
416
+ # Prefer classic path; fall back only to the *current* runtime session file.
417
+ session_md = repo / ".atw" / "session" / "current.md"
418
+ if session_md.is_file():
419
+ body = _read_text(session_md, 1200)
420
+ if body:
421
+ lines.extend(["## .atw/session/current.md", body, ""])
422
+ else:
423
+ current_session = _resolve_runtime_session_file(repo, stdin_ctx)
424
+ if current_session is not None:
425
+ body = _read_text(current_session, 900)
426
+ if body:
427
+ lines.extend(
428
+ [
429
+ f"## runtime session ({current_session.name})",
430
+ body,
431
+ "",
432
+ ]
433
+ )
434
+ return lines
435
+
436
+
437
+ def build_context(
438
+ repo: Path,
439
+ *,
440
+ mode: str,
441
+ stdin_ctx: dict[str, Any],
442
+ ) -> str:
443
+ compact = mode == "user"
444
+ kind = _agent_kind(stdin_ctx) if mode == "subagent" else "generic"
445
+
446
+ lines: list[str] = [
447
+ "# ATW context (Snow CLI)",
448
+ "",
449
+ f"Mode: {mode}" + (f" | agentKind: {kind}" if mode == "subagent" else ""),
450
+ f"Repo: {repo}",
451
+ "",
452
+ ]
453
+
454
+ if stdin_ctx.get("sessionId"):
455
+ lines.append(f"Snow sessionId: {stdin_ctx.get('sessionId')}")
456
+ if stdin_ctx.get("cwd"):
457
+ lines.append(f"Hook cwd: {stdin_ctx.get('cwd')}")
458
+ if mode == "subagent":
459
+ if stdin_ctx.get("agentId") or stdin_ctx.get("agentName"):
460
+ lines.append(
461
+ f"Sub-agent: {stdin_ctx.get('agentId') or stdin_ctx.get('agentName')}"
462
+ )
463
+ prompt = stdin_ctx.get("prompt")
464
+ if isinstance(prompt, str) and prompt.strip():
465
+ p = prompt.strip()
466
+ if len(p) > 240:
467
+ p = p[:237] + "..."
468
+ lines.append(f"Dispatch prompt (truncated): {p}")
469
+ lines.append("")
470
+
471
+ task_py = repo / ".atw" / "scripts" / "task.py"
472
+ current = ""
473
+ task_dir: Path | None = None
474
+ if task_py.is_file():
475
+ py = sys.executable or "python3"
476
+ current = _run([py, "-X", "utf8", str(task_py), "current", "--source"], repo)
477
+ lines.extend(["## task.py current --source", "```", current, "```", ""])
478
+ task_dir = _parse_active_task_path(current, repo)
479
+ else:
480
+ lines.append("(no .atw/scripts/task.py — run atw init first)")
481
+ lines.append("")
482
+
483
+ if task_dir and task_dir.exists():
484
+ lines.extend(
485
+ _task_artifact_summary(
486
+ task_dir,
487
+ detailed=not compact,
488
+ kind=kind if mode == "subagent" else "generic",
489
+ )
490
+ )
491
+ elif current:
492
+ lines.append("(could not resolve active task directory from task.py output)")
493
+ lines.append("")
494
+
495
+ if not compact:
496
+ lines.extend(_workflow_phase_summary(repo, stdin_ctx))
497
+
498
+ identity = repo / ".atw" / "identity.md"
499
+ if identity.is_file():
500
+ body = _read_text(identity, 900 if mode == "subagent" else 1200)
501
+ if body:
502
+ lines.extend(["## .atw/identity.md", body, ""])
503
+ else:
504
+ # Compact: short identity one-liner if file exists.
505
+ identity = repo / ".atw" / "identity.md"
506
+ if identity.is_file():
507
+ body = _read_text(identity, 280)
508
+ if body:
509
+ first = body.splitlines()[0].strip()
510
+ lines.append(f"Identity: {first}")
511
+ lines.append("")
512
+
513
+ # Mode-specific checklist (keep short).
514
+ if mode == "subagent" and kind == "research":
515
+ task_hint = (
516
+ task_dir.as_posix()
517
+ if task_dir
518
+ else "<path from task.py current>"
519
+ )
520
+ lines.extend(
521
+ [
522
+ "## Sub-agent checklist (research)",
523
+ f"1. Active task: {task_hint}",
524
+ f"2. Write ONLY under `{task_hint}/research/`.",
525
+ "3. Return paths + one-line summaries to main session.",
526
+ "",
527
+ ]
528
+ )
529
+ elif mode == "subagent" and kind == "check":
530
+ lines.extend(
531
+ [
532
+ "## Sub-agent checklist (check)",
533
+ "1. `git diff` + diagnostics first.",
534
+ "2. Compare against prd.md + specs.",
535
+ "3. Self-fix; no git commit/push/merge.",
536
+ "",
537
+ ]
538
+ )
539
+ elif mode == "subagent" and kind == "implement":
540
+ lines.extend(
541
+ [
542
+ "## Sub-agent checklist (implement)",
543
+ "1. Read prd.md before coding.",
544
+ "2. Prefer Active task path from task.py / inject above.",
545
+ "3. No git commit/push/merge from implement agent.",
546
+ "",
547
+ ]
548
+ )
549
+ else:
550
+ lines.extend(
551
+ [
552
+ "## Main-session checklist",
553
+ "1. Session/user hooks auto-inject ATW context; `/atw-start` is optional."
554
+ if not compact
555
+ else "1. Compact inject — full context also at `.snow/log/atw-context.txt`.",
556
+ "2. When dispatching implement/check/research, start the prompt with:",
557
+ " `Active task: <path from task.py current>`",
558
+ "3. Do not git commit/push/merge from ATW implement/check agents.",
559
+ "",
560
+ ]
561
+ )
562
+
563
+ return "\n".join(lines).strip() + "\n"
564
+
565
+
566
+ def _truncate(text: str, max_bytes: int) -> str:
567
+ encoded = text.encode("utf-8")
568
+ if len(encoded) <= max_bytes:
569
+ return text
570
+ suffix = "\n... (truncated)\n"
571
+ budget = max(0, max_bytes - len(suffix.encode("utf-8")))
572
+ return encoded[:budget].decode("utf-8", errors="ignore") + suffix
573
+
574
+
575
+ def main() -> int:
576
+ try:
577
+ raw_stdin = _drain_stdin()
578
+ stdin_ctx = _parse_stdin_json(raw_stdin)
579
+ mode = _resolve_mode(sys.argv, os.environ, stdin_ctx)
580
+
581
+ cwd_hint = stdin_ctx.get("cwd") if isinstance(stdin_ctx.get("cwd"), str) else None
582
+ cwd = Path(cwd_hint or os.environ.get("SNOW_CWD") or os.getcwd())
583
+ repo = _find_repo_root(cwd)
584
+ context = build_context(repo, mode=mode, stdin_ctx=stdin_ctx)
585
+
586
+ log_dir = repo / ".snow" / "log"
587
+ try:
588
+ log_dir.mkdir(parents=True, exist_ok=True)
589
+ # Keep atw-context.txt as the richest practical breadcrumb for
590
+ # pull-based reads. User-mode inject stays compact, but must not
591
+ # clobber a prior full snapshot.
592
+ log_path = log_dir / "atw-context.txt"
593
+ if mode == "user":
594
+ full_context = build_context(repo, mode="session", stdin_ctx=stdin_ctx)
595
+ log_path.write_text(full_context, encoding="utf-8")
596
+ else:
597
+ log_path.write_text(context, encoding="utf-8")
598
+ except Exception as exc: # noqa: BLE001
599
+ sys.stderr.write(f"atw-context write failed: {exc}\n")
600
+
601
+ max_bytes = COMPACT_MAX_BYTES if mode == "user" else DEFAULT_MAX_BYTES
602
+ inject = _truncate(context, max_bytes)
603
+ display = {
604
+ "session": "ATW session context injected",
605
+ "user": "ATW compact breadcrumb",
606
+ "subagent": f"ATW sub-agent context ({_agent_kind(stdin_ctx)})",
607
+ }.get(mode, "ATW context refreshed")
608
+ display = f"{display} (.snow/log/atw-context.txt)"
609
+
610
+ payload = {
611
+ "additionalContext": inject,
612
+ "display": display,
613
+ }
614
+ sys.stdout.write(json.dumps(payload, ensure_ascii=False))
615
+ sys.stdout.write("\n")
616
+ return 0
617
+ except Exception as exc: # noqa: BLE001 — absolute fail-open
618
+ try:
619
+ sys.stderr.write(f"write-atw-context failed: {exc}\n")
620
+ # Still emit empty-safe JSON so host can continue.
621
+ sys.stdout.write(
622
+ json.dumps(
623
+ {
624
+ "additionalContext": "# ATW context unavailable (hook error)\n",
625
+ "display": "ATW context hook error (fail-open)",
626
+ },
627
+ ensure_ascii=False,
628
+ )
629
+ )
630
+ sys.stdout.write("\n")
631
+ except Exception:
632
+ pass
633
+ return 0
634
+
635
+
636
+ if __name__ == "__main__":
637
+ raise SystemExit(main())
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Snow CLI template module.
3
+ *
4
+ * Snow CLI is a class-1 platform:
5
+ * - Skills under `.snow/skills/<name>/SKILL.md`
6
+ * - Slash commands under `.snow/commands/atw-*.json` (prompt type)
7
+ * - Project agents under `.snow/agents/<name>.md` (auto-discovered)
8
+ * - Inject hooks under `.snow/hooks/` (additionalContext + log breadcrumb)
9
+ * - Operator guide `.snow/SNOW.md`
10
+ *
11
+ * hasHooks=true: SessionStart/UserMessage/beforeSubAgentStart inject workflow
12
+ * context, so atw-start is filtered out of skills/commands (optional
13
+ * recovery still documented in SNOW.md).
14
+ *
15
+ * Class-1: do NOT inject the class-2 "does NOT auto-inject" pull-based prelude.
16
+ * Hook inject (session/user/beforeSubAgentStart) is the primary context path.
17
+ */
18
+ import { type AgentTemplate, type HookTemplate } from "../template-utils.js";
19
+ /** Sub-agent definitions (atw-implement-agent, atw-review). */
20
+ export declare function getAllAgents(): AgentTemplate[];
21
+ /** Inject + breadcrumb hooks (onSessionStart / onUserMessage / beforeSubAgentStart). */
22
+ export declare function getAllHooks(): HookTemplate[];
23
+ /** Operator guide copied to `.snow/SNOW.md`. */
24
+ export declare function getSnowGuide(): string;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/snow/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAM9B,+DAA+D;AAC/D,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C;AAED,wFAAwF;AACxF,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAK5C;AAED,gDAAgD;AAChD,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Snow CLI template module.
3
+ *
4
+ * Snow CLI is a class-1 platform:
5
+ * - Skills under `.snow/skills/<name>/SKILL.md`
6
+ * - Slash commands under `.snow/commands/atw-*.json` (prompt type)
7
+ * - Project agents under `.snow/agents/<name>.md` (auto-discovered)
8
+ * - Inject hooks under `.snow/hooks/` (additionalContext + log breadcrumb)
9
+ * - Operator guide `.snow/SNOW.md`
10
+ *
11
+ * hasHooks=true: SessionStart/UserMessage/beforeSubAgentStart inject workflow
12
+ * context, so atw-start is filtered out of skills/commands (optional
13
+ * recovery still documented in SNOW.md).
14
+ *
15
+ * Class-1: do NOT inject the class-2 "does NOT auto-inject" pull-based prelude.
16
+ * Hook inject (session/user/beforeSubAgentStart) is the primary context path.
17
+ */
18
+ import { createTemplateReader, } from "../template-utils.js";
19
+ const { listMdAgents, readTemplate, listFiles } = createTemplateReader(import.meta.url);
20
+ /** Sub-agent definitions (atw-implement-agent, atw-review). */
21
+ export function getAllAgents() {
22
+ return listMdAgents();
23
+ }
24
+ /** Inject + breadcrumb hooks (onSessionStart / onUserMessage / beforeSubAgentStart). */
25
+ export function getAllHooks() {
26
+ return listFiles("hooks").map((name) => ({
27
+ targetPath: name,
28
+ content: readTemplate(`hooks/${name}`),
29
+ }));
30
+ }
31
+ /** Operator guide copied to `.snow/SNOW.md`. */
32
+ export function getSnowGuide() {
33
+ return readTemplate("SNOW.md");
34
+ }
35
+ //# sourceMappingURL=index.js.map