@qelos/aidev 1.1.0 → 1.3.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 (239) hide show
  1. package/.env.aidev.example +12 -1
  2. package/README.md +65 -7
  3. package/dist/ai/devin.d.ts +7 -0
  4. package/dist/ai/devin.d.ts.map +1 -0
  5. package/dist/ai/devin.js +91 -0
  6. package/dist/ai/devin.js.map +1 -0
  7. package/dist/ai/index.js +2 -2
  8. package/dist/ai/index.js.map +1 -1
  9. package/dist/cli.js +31 -0
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/help.js +1 -1
  12. package/dist/commands/help.js.map +1 -1
  13. package/dist/commands/hooks.d.ts +5 -0
  14. package/dist/commands/hooks.d.ts.map +1 -0
  15. package/dist/commands/hooks.js +86 -0
  16. package/dist/commands/hooks.js.map +1 -0
  17. package/dist/commands/init.d.ts +1 -0
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +18 -109
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/run.d.ts +2 -1
  22. package/dist/commands/run.d.ts.map +1 -1
  23. package/dist/commands/run.js +105 -64
  24. package/dist/commands/run.js.map +1 -1
  25. package/dist/commands/schedule.js +2 -2
  26. package/dist/commands/schedule.js.map +1 -1
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +8 -1
  29. package/dist/config.js.map +1 -1
  30. package/dist/diagnostics.d.ts.map +1 -1
  31. package/dist/diagnostics.js +1 -2
  32. package/dist/diagnostics.js.map +1 -1
  33. package/dist/hooks.d.ts +18 -0
  34. package/dist/hooks.d.ts.map +1 -1
  35. package/dist/hooks.js +16 -0
  36. package/dist/hooks.js.map +1 -1
  37. package/dist/hooksTemplate.d.ts +14 -0
  38. package/dist/hooksTemplate.d.ts.map +1 -0
  39. package/dist/hooksTemplate.js +274 -0
  40. package/dist/hooksTemplate.js.map +1 -0
  41. package/dist/logger.d.ts +1 -0
  42. package/dist/logger.d.ts.map +1 -1
  43. package/dist/logger.js +32 -0
  44. package/dist/logger.js.map +1 -1
  45. package/dist/platform.d.ts +2 -2
  46. package/dist/platform.js +2 -2
  47. package/dist/providers/clickup.d.ts +8 -0
  48. package/dist/providers/clickup.d.ts.map +1 -1
  49. package/dist/providers/clickup.js +13 -1
  50. package/dist/providers/clickup.js.map +1 -1
  51. package/dist/providers/jira.d.ts +2 -0
  52. package/dist/providers/jira.d.ts.map +1 -1
  53. package/dist/providers/jira.js +51 -12
  54. package/dist/providers/jira.js.map +1 -1
  55. package/dist/providers/linear.d.ts +19 -0
  56. package/dist/providers/linear.d.ts.map +1 -1
  57. package/dist/providers/linear.js +65 -18
  58. package/dist/providers/linear.js.map +1 -1
  59. package/dist/providers/monday.d.ts +11 -0
  60. package/dist/providers/monday.d.ts.map +1 -1
  61. package/dist/providers/monday.js +74 -1
  62. package/dist/providers/monday.js.map +1 -1
  63. package/dist/providers/notion.d.ts +1 -0
  64. package/dist/providers/notion.d.ts.map +1 -1
  65. package/dist/providers/notion.js +44 -0
  66. package/dist/providers/notion.js.map +1 -1
  67. package/dist/providers/trello.d.ts +1 -0
  68. package/dist/providers/trello.d.ts.map +1 -1
  69. package/dist/providers/trello.js +53 -0
  70. package/dist/providers/trello.js.map +1 -1
  71. package/dist/safeMode.d.ts +32 -0
  72. package/dist/safeMode.d.ts.map +1 -0
  73. package/dist/safeMode.js +192 -0
  74. package/dist/safeMode.js.map +1 -0
  75. package/dist/types.d.ts +4 -1
  76. package/dist/types.d.ts.map +1 -1
  77. package/package.json +2 -2
  78. package/ui/.output/nitro.json +1 -1
  79. package/ui/.output/public/_nuxt/6wLLp9Nc.js +1 -0
  80. package/ui/.output/public/_nuxt/BGkU0f28.js +1 -0
  81. package/ui/.output/public/_nuxt/BOIhDy_l.js +4 -0
  82. package/ui/.output/public/_nuxt/BWJzzHTi.js +1 -0
  83. package/ui/.output/public/_nuxt/{3LZdFtk_.js → By4xSvKt.js} +3 -3
  84. package/ui/.output/public/_nuxt/ByAMJ0xS.js +1 -0
  85. package/ui/.output/public/_nuxt/C1xk3ymy.js +1 -0
  86. package/ui/.output/public/_nuxt/CBV5GuL6.js +11 -0
  87. package/ui/.output/public/_nuxt/CTtW-0zG.js +1 -0
  88. package/ui/.output/public/_nuxt/CX0vIr0s.js +131 -0
  89. package/ui/.output/public/_nuxt/{LzHPbXPK.js → CYm8nRCj.js} +1 -1
  90. package/ui/.output/public/_nuxt/CdHqKVo4.js +1 -0
  91. package/ui/.output/public/_nuxt/CnXdKLRd.js +16 -0
  92. package/ui/.output/public/_nuxt/Cz9dogwK.js +1 -0
  93. package/ui/.output/public/_nuxt/DGHfexQZ.js +1 -0
  94. package/ui/.output/public/_nuxt/{CWjftssB.js → DOoocm0F.js} +1 -1
  95. package/ui/.output/public/_nuxt/{DZd8Jv5H.js → D_gcbXK2.js} +1 -1
  96. package/ui/.output/public/_nuxt/{CO4XMBYO.js → Dfhp6TEA.js} +11 -11
  97. package/ui/.output/public/_nuxt/{BtD1YBwM.js → G5BjvTWO.js} +1 -1
  98. package/ui/.output/public/_nuxt/H73b_QUy.js +1 -0
  99. package/ui/.output/public/_nuxt/{BMTHyzVP.js → LCoCV2KL.js} +1 -1
  100. package/ui/.output/public/_nuxt/Zrl3Utak.js +1 -0
  101. package/ui/.output/public/_nuxt/config.CaB_F_OT.css +1 -0
  102. package/ui/.output/public/_nuxt/default.D13_FS9T.css +1 -0
  103. package/ui/.output/public/_nuxt/hooks.B03-GWTh.css +1 -0
  104. package/ui/.output/public/_nuxt/kPPYUzXr.js +2 -0
  105. package/ui/.output/public/_nuxt/logs.DLMkvOEl.css +1 -0
  106. package/ui/.output/public/_nuxt/mHp9eItY.js +1 -0
  107. package/ui/.output/public/_nuxt/{BTfAgCfF.js → tyaD1vVi.js} +1 -1
  108. package/ui/.output/public/_nuxt/{BGlShnpS.js → ynXKxjpn.js} +1 -1
  109. package/ui/.output/public/_nuxt/{B8sr5ZW-.js → yqBy-NAR.js} +2 -2
  110. package/ui/.output/server/chunks/_/hooksTemplate.mjs +365 -0
  111. package/ui/.output/server/chunks/_/hooksTemplate.mjs.map +1 -0
  112. package/ui/.output/server/chunks/build/{Badge-YPOjmkfv.mjs → Badge-nNgbDd8N.mjs} +2 -2
  113. package/ui/.output/server/chunks/build/{Badge-YPOjmkfv.mjs.map → Badge-nNgbDd8N.mjs.map} +1 -1
  114. package/ui/.output/server/chunks/build/{Button-CZHl6fpI.mjs → Button-CQZG7w2L.mjs} +117 -3
  115. package/ui/.output/server/chunks/build/Button-CQZG7w2L.mjs.map +1 -0
  116. package/ui/.output/server/chunks/build/{Card--ibiHV_r.mjs → Card-DdEnDTQW.mjs} +2 -2
  117. package/ui/.output/server/chunks/build/{Card--ibiHV_r.mjs.map → Card-DdEnDTQW.mjs.map} +1 -1
  118. package/ui/.output/server/chunks/build/{FormGroup-CX5VmH8y.mjs → FormGroup-BfYiVGgN.mjs} +2 -2
  119. package/ui/.output/server/chunks/build/{FormGroup-CX5VmH8y.mjs.map → FormGroup-BfYiVGgN.mjs.map} +1 -1
  120. package/ui/.output/server/chunks/build/{Input-kmqS1oY_.mjs → Input-Cnk3P_aB.mjs} +5 -60
  121. package/ui/.output/server/chunks/build/Input-Cnk3P_aB.mjs.map +1 -0
  122. package/ui/.output/server/chunks/build/{Modal-DmZs0Ekg.mjs → Modal-DfVO6DJD.mjs} +10 -5
  123. package/ui/.output/server/chunks/build/Modal-DfVO6DJD.mjs.map +1 -0
  124. package/ui/.output/server/chunks/build/{Select-n4_YfXfk.mjs → Select-Dc9_TJIR.mjs} +3 -3
  125. package/ui/.output/server/chunks/build/{Select-n4_YfXfk.mjs.map → Select-Dc9_TJIR.mjs.map} +1 -1
  126. package/ui/.output/server/chunks/build/client.precomputed.mjs +1 -1
  127. package/ui/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  128. package/ui/.output/server/chunks/build/{config-Bkb2wy7R.mjs → config-BUokZPak.mjs} +78 -58
  129. package/ui/.output/server/chunks/build/config-BUokZPak.mjs.map +1 -0
  130. package/ui/.output/server/chunks/build/config-styles.irltMnuD.mjs +8 -0
  131. package/ui/.output/server/chunks/build/config-styles.irltMnuD.mjs.map +1 -0
  132. package/ui/.output/server/chunks/build/{default-DmD3qBXZ.mjs → default-6TcwTt3p.mjs} +10 -9
  133. package/ui/.output/server/chunks/build/default-6TcwTt3p.mjs.map +1 -0
  134. package/ui/.output/server/chunks/build/default-styles.BqL9zxh4.mjs +8 -0
  135. package/ui/.output/server/chunks/build/default-styles.BqL9zxh4.mjs.map +1 -0
  136. package/ui/.output/server/chunks/build/entry-styles.q-b4rEBh.mjs +11 -0
  137. package/ui/.output/server/chunks/build/entry-styles.q-b4rEBh.mjs.map +1 -0
  138. package/ui/.output/server/chunks/build/hooks-k2ZmlVpA.mjs +4181 -0
  139. package/ui/.output/server/chunks/build/hooks-k2ZmlVpA.mjs.map +1 -0
  140. package/ui/.output/server/chunks/build/hooks-styles.Ddk4F_Gj.mjs +8 -0
  141. package/ui/.output/server/chunks/build/hooks-styles.Ddk4F_Gj.mjs.map +1 -0
  142. package/ui/.output/server/chunks/build/{index-Dy4Tu7MB.mjs → index-DwMIJp2e.mjs} +7 -3
  143. package/ui/.output/server/chunks/build/index-DwMIJp2e.mjs.map +1 -0
  144. package/ui/.output/server/chunks/build/{index-BvfXQQ2n.mjs → index-JLPhao-C.mjs} +5 -5
  145. package/ui/.output/server/chunks/build/{index-BvfXQQ2n.mjs.map → index-JLPhao-C.mjs.map} +1 -1
  146. package/ui/.output/server/chunks/build/{interval-DHZqEf-n.mjs → interval-DPa3fpS0.mjs} +3 -3
  147. package/ui/.output/server/chunks/build/{interval-DHZqEf-n.mjs.map → interval-DPa3fpS0.mjs.map} +1 -1
  148. package/ui/.output/server/chunks/build/{login-B5YkLJCV.mjs → login-D9DpNq3o.mjs} +6 -5
  149. package/ui/.output/server/chunks/build/login-D9DpNq3o.mjs.map +1 -0
  150. package/ui/.output/server/chunks/build/{logs-BvD1Y3HI.mjs → logs-BVuWOSb6.mjs} +49 -31
  151. package/ui/.output/server/chunks/build/logs-BVuWOSb6.mjs.map +1 -0
  152. package/ui/.output/server/chunks/build/logs-styles.C2Mi0JvX.mjs +8 -0
  153. package/ui/.output/server/chunks/build/logs-styles.C2Mi0JvX.mjs.map +1 -0
  154. package/ui/.output/server/chunks/build/{run-BStPkbGg.mjs → run-BVQZSGcX.mjs} +5 -5
  155. package/ui/.output/server/chunks/build/{run-BStPkbGg.mjs.map → run-BVQZSGcX.mjs.map} +1 -1
  156. package/ui/.output/server/chunks/build/{schedule-B2UKsnRW.mjs → schedule-rRz2CwWh.mjs} +10 -9
  157. package/ui/.output/server/chunks/build/schedule-rRz2CwWh.mjs.map +1 -0
  158. package/ui/.output/server/chunks/build/server.mjs +14 -9
  159. package/ui/.output/server/chunks/build/server.mjs.map +1 -1
  160. package/ui/.output/server/chunks/build/styles.mjs +8 -7
  161. package/ui/.output/server/chunks/build/styles.mjs.map +1 -1
  162. package/ui/.output/server/chunks/build/{tasks-DBH3Z6lg.mjs → tasks-DJjZQWcq.mjs} +10 -9
  163. package/ui/.output/server/chunks/build/tasks-DJjZQWcq.mjs.map +1 -0
  164. package/ui/.output/server/chunks/build/{useApi-Bqajqsuz.mjs → useApi-Brbyp7hV.mjs} +3 -3
  165. package/ui/.output/server/chunks/build/useApi-Brbyp7hV.mjs.map +1 -0
  166. package/ui/.output/server/chunks/build/useFormGroup-DqE91r20.mjs +61 -0
  167. package/ui/.output/server/chunks/build/useFormGroup-DqE91r20.mjs.map +1 -0
  168. package/ui/.output/server/chunks/nitro/nitro.mjs +202 -164
  169. package/ui/.output/server/chunks/routes/api/config/test.post.mjs +1 -1
  170. package/ui/.output/server/chunks/routes/api/config/test.post.mjs.map +1 -1
  171. package/ui/.output/server/chunks/routes/api/hooks-execute.post.mjs +83 -0
  172. package/ui/.output/server/chunks/routes/api/hooks-execute.post.mjs.map +1 -0
  173. package/ui/.output/server/chunks/routes/api/hooks-regenerate.post.mjs +30 -0
  174. package/ui/.output/server/chunks/routes/api/hooks-regenerate.post.mjs.map +1 -0
  175. package/ui/.output/server/chunks/routes/api/hooks-update.post.mjs +31 -0
  176. package/ui/.output/server/chunks/routes/api/hooks-update.post.mjs.map +1 -0
  177. package/ui/.output/server/chunks/routes/api/hooks.get.mjs +28 -0
  178. package/ui/.output/server/chunks/routes/api/hooks.get.mjs.map +1 -0
  179. package/ui/.output/server/chunks/routes/api/hooks.put.mjs +32 -0
  180. package/ui/.output/server/chunks/routes/api/hooks.put.mjs.map +1 -0
  181. package/ui/.output/server/chunks/routes/api/logs.get.mjs +7 -2
  182. package/ui/.output/server/chunks/routes/api/logs.get.mjs.map +1 -1
  183. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/_virtual/_rollupPluginBabelHelpers.js +123 -0
  184. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/config/index.js +11 -0
  185. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/index.js +9 -0
  186. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/loader/index.js +175 -0
  187. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/compose.js +16 -0
  188. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/curry.js +20 -0
  189. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/deepMerge.js +18 -0
  190. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/isObject.js +9 -0
  191. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/makeCancelable.js +25 -0
  192. package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/validators/index.js +49 -0
  193. package/ui/.output/server/node_modules/@monaco-editor/loader/package.json +51 -0
  194. package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +1197 -0
  195. package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
  196. package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
  197. package/ui/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
  198. package/ui/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
  199. package/ui/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
  200. package/ui/.output/server/node_modules/state-local/lib/cjs/state-local.js +195 -0
  201. package/ui/.output/server/node_modules/state-local/package.json +59 -0
  202. package/ui/.output/server/package.json +4 -0
  203. package/ui/package.json +1 -0
  204. package/ui/.output/public/_nuxt/B93YYUZf.js +0 -1
  205. package/ui/.output/public/_nuxt/BAs1isOw.js +0 -1
  206. package/ui/.output/public/_nuxt/BrZL2iQr.js +0 -1
  207. package/ui/.output/public/_nuxt/Bv6Ws9vz.js +0 -1
  208. package/ui/.output/public/_nuxt/C2WdrjFS.js +0 -1
  209. package/ui/.output/public/_nuxt/CVTgFccA.js +0 -2
  210. package/ui/.output/public/_nuxt/Ceb2855t.js +0 -1
  211. package/ui/.output/public/_nuxt/Cg55PjEy.js +0 -4
  212. package/ui/.output/public/_nuxt/D0ZgktSu.js +0 -1
  213. package/ui/.output/public/_nuxt/DZIUG6ZX.js +0 -1
  214. package/ui/.output/public/_nuxt/DihqGT4A.js +0 -1
  215. package/ui/.output/public/_nuxt/MzK2TZ-I.js +0 -16
  216. package/ui/.output/public/_nuxt/TJXLPQOj.js +0 -1
  217. package/ui/.output/public/_nuxt/VuiIFQtE.js +0 -1
  218. package/ui/.output/public/_nuxt/config.C19X1GwO.css +0 -1
  219. package/ui/.output/public/_nuxt/default.Dw-0Xw5D.css +0 -1
  220. package/ui/.output/public/_nuxt/logs.PK6CTQHM.css +0 -1
  221. package/ui/.output/server/chunks/build/Button-CZHl6fpI.mjs.map +0 -1
  222. package/ui/.output/server/chunks/build/Input-kmqS1oY_.mjs.map +0 -1
  223. package/ui/.output/server/chunks/build/Modal-DmZs0Ekg.mjs.map +0 -1
  224. package/ui/.output/server/chunks/build/config-Bkb2wy7R.mjs.map +0 -1
  225. package/ui/.output/server/chunks/build/config-styles.B4mTchgT.mjs +0 -8
  226. package/ui/.output/server/chunks/build/config-styles.B4mTchgT.mjs.map +0 -1
  227. package/ui/.output/server/chunks/build/default-DmD3qBXZ.mjs.map +0 -1
  228. package/ui/.output/server/chunks/build/default-styles.DmprFUrQ.mjs +0 -8
  229. package/ui/.output/server/chunks/build/default-styles.DmprFUrQ.mjs.map +0 -1
  230. package/ui/.output/server/chunks/build/entry-styles.Cg1Sndbr.mjs +0 -11
  231. package/ui/.output/server/chunks/build/entry-styles.Cg1Sndbr.mjs.map +0 -1
  232. package/ui/.output/server/chunks/build/index-Dy4Tu7MB.mjs.map +0 -1
  233. package/ui/.output/server/chunks/build/login-B5YkLJCV.mjs.map +0 -1
  234. package/ui/.output/server/chunks/build/logs-BvD1Y3HI.mjs.map +0 -1
  235. package/ui/.output/server/chunks/build/logs-styles.CU5b1wKf.mjs +0 -8
  236. package/ui/.output/server/chunks/build/logs-styles.CU5b1wKf.mjs.map +0 -1
  237. package/ui/.output/server/chunks/build/schedule-B2UKsnRW.mjs.map +0 -1
  238. package/ui/.output/server/chunks/build/tasks-DBH3Z6lg.mjs.map +0 -1
  239. package/ui/.output/server/chunks/build/useApi-Bqajqsuz.mjs.map +0 -1
@@ -77,7 +77,7 @@ GIT_REMOTE=origin
77
77
  GITHUB_BASE_BRANCH=main
78
78
  GITHUB_REPO=
79
79
 
80
- # Agents to use, in fallback order (comma-separated: antigravity, anthropic-sdk, claude, codex, cursor, windsurf)
80
+ # Agents to use, in fallback order (comma-separated: antigravity, anthropic-sdk, claude, codex, cursor, devin)
81
81
  AGENTS=claude,cursor
82
82
 
83
83
  # ── Claude CLI (when AGENTS includes claude) ──────────────────
@@ -110,6 +110,13 @@ DEV_NOTES_MODE=smart
110
110
  # aidev init creates .aidev/aidev.hooks.ts and sets this by default.
111
111
  # AIDEV_HOOKS_PATH=.aidev/aidev.hooks.ts
112
112
 
113
+ # AIDEV_SAFE_MODE: redact secret values from task prompts before sending to AI agents.
114
+ # When true (default), values from .env / .env.aidev whose keys look like secrets
115
+ # (token, key, password, etc.) are replaced with a placeholder and stored in
116
+ # .aidev/assets/secrets/task-<id>.secrets (git-ignored under .aidev/assets/).
117
+ # Set to false / 0 / no to disable.
118
+ # AIDEV_SAFE_MODE=true
119
+
113
120
  # AIDEV_AUTO_COMPRESS: when the prompt grows past AIDEV_COMPRESS_THRESHOLD chars,
114
121
  # summarize older comments and keep only the latest verbatim. Default: true.
115
122
  # Set to false / 0 / no to opt out.
@@ -123,3 +130,7 @@ DEV_NOTES_MODE=smart
123
130
  # just a directory. Missing parent directories are created automatically.
124
131
  # Default: aidev.log in the project cwd.
125
132
  # AIDEV_LOG_PATH=logs/aidev.log
133
+
134
+ # AIDEV_LOG_TTL_DAYS: log lines older than this many days are removed from the log
135
+ # file at the start of each run. Set to 0 to disable pruning. Default: 14.
136
+ # AIDEV_LOG_TTL_DAYS=14
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  **aidev** turns your tasks into merged code — automatically.
8
8
 
9
- It polls your task manager (ClickUp, Jira, Linear, Monday.com, Notion, Trello, or local markdown files), checks whether tasks are clear, runs Claude, Cursor, or Windsurf to implement them, pushes a branch, and moves the task to review. All without touching your keyboard.
9
+ It polls your task manager (ClickUp, Jira, Linear, Monday.com, Notion, Trello, or local markdown files), checks whether tasks are clear, runs Claude, Cursor, or Devin to implement them, pushes a branch, and moves the task to review. All without touching your keyboard.
10
10
 
11
11
  ```
12
12
  Task → AI implements → git push → "in review" → AI resolves code review comments
@@ -25,6 +25,7 @@ Task → AI implements → git push → "in review" → AI resolves code
25
25
  - [Code review resolution](#code-review-resolution)
26
26
  - [Auto-merge accepted PRs](#auto-merge-accepted-prs)
27
27
  - [Dev notes mode](#dev-notes-mode)
28
+ - [Blocked tasks](#blocked-tasks)
28
29
  - [Local tasks file (`aidev.tasks.json`)](#local-tasks-file-aidevtasksjson)
29
30
  - [Scheduling](#scheduling)
30
31
  - [Hooks](#hooks)
@@ -38,7 +39,7 @@ Task → AI implements → git push → "in review" → AI resolves code
38
39
  ## How it works
39
40
 
40
41
  1. **Fetch** — pulls all tasks tagged with your configured tag from your task provider
41
- 2. **Filter** — skips done/cancelled tasks and tasks that already have a branch
42
+ 2. **Filter** — skips done/cancelled tasks, tasks that already have a branch, and tasks that are blocked by other open tasks
42
43
  3. **Clarify** — in `smart` mode, asks the AI if the task description is clear enough; if not, posts a question as a comment (prefixed with `[aidev]`) and marks the task `pending`
43
44
  4. **Wait** — pending tasks are re-checked on the next run; if a human replied or the trigger word is found, implementation proceeds with the conversation as context
44
45
  5. **Implement** — checks out a fresh branch (or reuses an existing one), runs your configured AI agent(s), falls back to the next agent if one fails
@@ -273,6 +274,7 @@ Linear calls them "labels" — the same concept as `CLICKUP_TAG` / `JIRA_LABEL`.
273
274
  | `ACCEPTED_TAG` | `accepted` | Tasks in review with this tag are auto-merged (see [Auto-merge accepted PRs](#auto-merge-accepted-prs)) |
274
275
  | `DONE_STATUS` | auto-detected | Status to set after auto-merging an accepted PR. When unset, aidev picks the first match of `done`, `closed`, `finish`, `success`, `prod` from the board's statuses |
275
276
  | `PR_SIGNATURE` | `Automated PR by aidev.` | Custom signature line appended to the PR body |
277
+ | `AIDEV_SAFE_MODE` | `true` | Redact secret env values from AI prompts. Matching values from `.env` / `.env.aidev` are replaced with a placeholder and stored in `.aidev/assets/secrets/task-<id>.secrets` (git-ignored). Set to `false` / `0` / `no` to disable |
276
278
  | `AIDEV_AUTO_COMPRESS` | `true` | Auto-compress older comments when the prompt grows large. Set to `false` / `0` / `no` to opt out |
277
279
  | `AIDEV_COMPRESS_THRESHOLD` | `12000` | Char-length threshold that triggers compression |
278
280
 
@@ -320,7 +322,7 @@ aidev supports multiple AI agents with automatic fallback. The first available a
320
322
  | `antigravity` | Google **Antigravity** CLI (`agy` or `antigravity`) in PATH — see [Antigravity](https://antigravity.google/download) |
321
323
  | `claude` | [Claude CLI](https://github.com/anthropics/claude-code) installed and authenticated |
322
324
  | `cursor` | Cursor **Agent CLI** (`agent`) in PATH — see [Windows](#windows-cursor-agent-cli) below |
323
- | `windsurf` | [Windsurf](https://windsurf.com) installed with CLI available in PATH |
325
+ | `devin` | [Devin CLI](https://docs.devin.ai/cli) installed and authenticated |
324
326
 
325
327
  ### Windows: Cursor Agent CLI
326
328
 
@@ -344,14 +346,14 @@ AGENTS=cursor
344
346
  # Cursor first (useful when working locally with a monitor)
345
347
  AGENTS=cursor,claude
346
348
 
347
- # Claude first, then Windsurf, then Cursor
348
- AGENTS=claude,windsurf,cursor
349
+ # Claude first, then Devin, then Cursor
350
+ AGENTS=claude,devin,cursor
349
351
 
350
352
  # Antigravity first, then Claude
351
353
  AGENTS=antigravity,claude
352
354
 
353
- # Windsurf only
354
- AGENTS=windsurf
355
+ # Devin only
356
+ AGENTS=devin
355
357
  ```
356
358
 
357
359
  ---
@@ -382,6 +384,46 @@ AIDEV_COMMENT_PREFIX=[mybot]
382
384
 
383
385
  ---
384
386
 
387
+ ## Blocked tasks
388
+
389
+ If a task lists other tasks as blockers (via your provider's dependency feature), aidev will skip it until all blockers are closed.
390
+
391
+ **How it works:**
392
+
393
+ 1. When a task is fetched, its blocking dependencies are read from the provider.
394
+ 2. Before running the AI agent, aidev fetches each blocker task and checks its status.
395
+ 3. If any blocker is still open (not in a done/closed/cancelled/complete/resolved state), the task is skipped with a log message:
396
+
397
+ ```
398
+ skipped: blocked by task <id> (status: in progress)
399
+ ```
400
+
401
+ 4. Once all blockers are resolved, the task is picked up on the next run as normal.
402
+
403
+ **Per-provider support:**
404
+
405
+ | Provider | Blocking support | Source |
406
+ |---|---|---|
407
+ | ClickUp | Native | `dependencies` entries with `depends_on` ("waiting on") |
408
+ | Jira | Native | Issue links where the link type inward direction is `"is blocked by"` |
409
+ | Linear | Native | `inverseRelations` of type `blocks` (blocker in `issue`) |
410
+ | Monday.com | Native | Dependency column `linked_item_ids` (predecessors) |
411
+ | Notion | Optional | A Relation property named **Blocked By** (case-insensitive) in the database — see note below |
412
+ | Trello | Not supported | Trello has no native blocking concept |
413
+ | Local | Not applicable | — |
414
+
415
+ > **Notion setup:** To enable blocked-by checking for Notion, add a **Relation** property named `Blocked By` to your task database and point it at the same (or another) task database. If the property is absent, the check is silently skipped and all tasks proceed normally.
416
+
417
+ **Edge cases:**
418
+
419
+ - If a blocker task cannot be fetched (deleted or inaccessible), it is treated as non-blocking.
420
+ - Only direct blockers are checked — circular or transitive dependencies are not followed.
421
+ - If a future provider does not implement `fetchTaskById`, the blocker check is silently skipped and the task proceeds (fail open).
422
+
423
+ No additional configuration is required for providers with native support; the behaviour is automatic when the provider exposes dependency data.
424
+
425
+ ---
426
+
385
427
  ## Auto-compress
386
428
 
387
429
  For long-running tasks with many comments, the combined prompt (description + conversation history + review threads) can grow past the AI agent's effective context window. When the assembled context exceeds `AIDEV_COMPRESS_THRESHOLD` characters (default `12000`), aidev summarises the older comments via the configured AI agent and keeps only the **latest comment verbatim** — so the agent always sees the user's most recent intent without ambiguity.
@@ -649,6 +691,20 @@ AIDEV_LOG_PATH=/var/log/aidev.log # absolute
649
691
  AIDEV_LOG_PATH=~/aidev/run.log # under your home directory
650
692
  ```
651
693
 
694
+ ### Log pruning
695
+
696
+ At the start of every run, aidev automatically removes log lines older than **14 days** from the log file. Lines are identified by their leading ISO timestamp; all lines before the first timestamp that is still within the retention window are erased.
697
+
698
+ To change the retention window, set `AIDEV_LOG_TTL_DAYS`:
699
+
700
+ ```bash
701
+ AIDEV_LOG_TTL_DAYS=7 # keep only the last 7 days
702
+ AIDEV_LOG_TTL_DAYS=30 # keep 30 days
703
+ AIDEV_LOG_TTL_DAYS=0 # disable pruning entirely
704
+ ```
705
+
706
+ Set `AIDEV_LOG_TTL_DAYS=0` (or any non-positive value) to turn off automatic pruning.
707
+
652
708
  ---
653
709
 
654
710
  ## Providers
@@ -743,6 +799,8 @@ To add a comment, append a `---` separator followed by a `## your-name` header a
743
799
 
744
800
  Downloaded task attachments are stored in `.aidev/assets/<task-id>/`, and `aidev init` adds `.aidev/assets/` to `.gitignore` automatically.
745
801
 
802
+ With **safe mode** enabled (default), secret values from `.env` / `.env.aidev` that appear in task prompts are redacted before they reach AI agents. The real values are written to `.aidev/assets/secrets/task-<id>.secrets` (also under the git-ignored assets tree). Prompts reference that file and nudge agents to pipe values via the terminal instead of reading the file directly. Disable with `AIDEV_SAFE_MODE=false` in `.env.aidev` or from the UI config page.
803
+
746
804
  ---
747
805
 
748
806
  ## UI dashboard
@@ -0,0 +1,7 @@
1
+ import { AIRunner, AIRunResult } from './base';
2
+ export declare class DevinRunner implements AIRunner {
3
+ readonly name = "devin";
4
+ isAvailable(): boolean;
5
+ run(prompt: string, notes?: string): Promise<AIRunResult>;
6
+ }
7
+ //# sourceMappingURL=devin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devin.d.ts","sourceRoot":"","sources":["../../src/ai/devin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAI/C,qBAAa,WAAY,YAAW,QAAQ;IAC1C,QAAQ,CAAC,IAAI,WAAW;IAExB,WAAW,IAAI,OAAO;IAIhB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAIhE"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DevinRunner = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const os = __importStar(require("node:os"));
39
+ const path = __importStar(require("node:path"));
40
+ const logger_1 = require("../logger");
41
+ const platform_1 = require("../platform");
42
+ class DevinRunner {
43
+ constructor() {
44
+ this.name = 'devin';
45
+ }
46
+ isAvailable() {
47
+ return (0, platform_1.commandExists)('devin');
48
+ }
49
+ async run(prompt, notes) {
50
+ const fullPrompt = notes ? `${prompt}\n\nAdditional context:\n${notes}` : prompt;
51
+ return runViaCli(fullPrompt);
52
+ }
53
+ }
54
+ exports.DevinRunner = DevinRunner;
55
+ async function runViaCli(fullPrompt) {
56
+ logger_1.logger.info('Running Devin CLI...');
57
+ logger_1.logger.debug(`Prompt: ${fullPrompt.slice(0, 200)}...`);
58
+ const cwd = process.cwd();
59
+ const promptFile = path.join(os.tmpdir(), `aidev-devin-${process.pid}-${Date.now()}.txt`);
60
+ try {
61
+ fs.writeFileSync(promptFile, fullPrompt, 'utf8');
62
+ // -p: single-turn print mode (non-interactive, outputs to stdout then exits)
63
+ // --permission-mode bypass: auto-approve all file/shell operations
64
+ // --prompt-file: avoids command-line length limits for large prompts
65
+ const args = ['-p', '--permission-mode', 'bypass', '--prompt-file', promptFile];
66
+ const result = (0, platform_1.spawnCommand)('devin', args, {
67
+ encoding: 'utf8',
68
+ timeout: 10 * 60 * 1000,
69
+ cwd,
70
+ env: (0, platform_1.getUserShellEnv)(),
71
+ });
72
+ const success = result.status === 0;
73
+ const output = result.stdout || '';
74
+ const error = result.stderr || '';
75
+ if (!success) {
76
+ logger_1.logger.warn(`Devin exited with status ${result.status}`);
77
+ if (error)
78
+ logger_1.logger.warn(`devin stderr: ${error.slice(0, 500)}`);
79
+ if (result.error)
80
+ logger_1.logger.warn(`devin spawn error: ${result.error.message}`);
81
+ }
82
+ return { success, output, error };
83
+ }
84
+ finally {
85
+ try {
86
+ fs.unlinkSync(promptFile);
87
+ }
88
+ catch { /* ignore */ }
89
+ }
90
+ }
91
+ //# sourceMappingURL=devin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devin.js","sourceRoot":"","sources":["../../src/ai/devin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,4CAA8B;AAC9B,gDAAkC;AAElC,sCAAmC;AACnC,0CAA2E;AAE3E,MAAa,WAAW;IAAxB;QACW,SAAI,GAAG,OAAO,CAAC;IAU1B,CAAC;IARC,WAAW;QACT,OAAO,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,KAAc;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,4BAA4B,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACjF,OAAO,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;CACF;AAXD,kCAWC;AAED,KAAK,UAAU,SAAS,CAAC,UAAkB;IACzC,eAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,eAAM,CAAC,KAAK,CAAC,WAAW,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAE1F,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEjD,6EAA6E;QAC7E,mEAAmE;QACnE,qEAAqE;QACrE,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,OAAO,EAAE,IAAI,EAAE;YACzC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YACvB,GAAG;YACH,GAAG,EAAE,IAAA,0BAAe,GAAE;SACvB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAElC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,eAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,IAAI,KAAK;gBAAE,eAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,KAAK;gBAAE,eAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
package/dist/ai/index.js CHANGED
@@ -6,7 +6,7 @@ const anthropicSdk_1 = require("./anthropicSdk");
6
6
  const claude_1 = require("./claude");
7
7
  const codex_1 = require("./codex");
8
8
  const cursor_1 = require("./cursor");
9
- const windsurf_1 = require("./windsurf");
9
+ const devin_1 = require("./devin");
10
10
  const logger_1 = require("../logger");
11
11
  const registry = {
12
12
  antigravity: new antigravity_1.AntigravityRunner(),
@@ -14,7 +14,7 @@ const registry = {
14
14
  claude: new claude_1.ClaudeRunner(),
15
15
  codex: new codex_1.CodexRunner(),
16
16
  cursor: new cursor_1.CursorRunner(),
17
- windsurf: new windsurf_1.WindsurfRunner(),
17
+ devin: new devin_1.DevinRunner(),
18
18
  };
19
19
  function createRunners(config) {
20
20
  const runners = config.agents.map((name) => registry[name]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":";;AAmBA,sCAcC;AA/BD,+CAAkD;AAClD,iDAAoD;AACpD,qCAAwC;AACxC,mCAAsC;AACtC,qCAAwC;AACxC,yCAA4C;AAC5C,sCAAmC;AAEnC,MAAM,QAAQ,GAA6B;IACzC,WAAW,EAAE,IAAI,+BAAiB,EAAE;IACpC,eAAe,EAAE,IAAI,iCAAkB,EAAE;IACzC,MAAM,EAAE,IAAI,qBAAY,EAAE;IAC1B,KAAK,EAAE,IAAI,mBAAW,EAAE;IACxB,MAAM,EAAE,IAAI,qBAAY,EAAE;IAC1B,QAAQ,EAAE,IAAI,yBAAc,EAAE;CAC/B,CAAC;AAEF,SAAgB,aAAa,CAAC,MAAc;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE/E,eAAM,CAAC,IAAI,CAAC,kCAAkC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,eAAM,CAAC,IAAI,CAAC,qCAAqC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,eAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":";;AAmBA,sCAcC;AA/BD,+CAAkD;AAClD,iDAAoD;AACpD,qCAAwC;AACxC,mCAAsC;AACtC,qCAAwC;AACxC,mCAAsC;AACtC,sCAAmC;AAEnC,MAAM,QAAQ,GAA6B;IACzC,WAAW,EAAE,IAAI,+BAAiB,EAAE;IACpC,eAAe,EAAE,IAAI,iCAAkB,EAAE;IACzC,MAAM,EAAE,IAAI,qBAAY,EAAE;IAC1B,KAAK,EAAE,IAAI,mBAAW,EAAE;IACxB,MAAM,EAAE,IAAI,qBAAY,EAAE;IAC1B,KAAK,EAAE,IAAI,mBAAW,EAAE;CACzB,CAAC;AAEF,SAAgB,aAAa,CAAC,MAAc;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE/E,eAAM,CAAC,IAAI,CAAC,kCAAkC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,eAAM,CAAC,IAAI,CAAC,qCAAqC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,eAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/cli.js CHANGED
@@ -17,6 +17,7 @@ const logger_1 = require("./logger");
17
17
  const hooks_1 = require("./hooks");
18
18
  const accepted_1 = require("./commands/accepted");
19
19
  const github_1 = require("./github");
20
+ const hooks_2 = require("./commands/hooks");
20
21
  // eslint-disable-next-line @typescript-eslint/no-var-requires
21
22
  const { version } = require('../package.json');
22
23
  const program = new commander_1.Command();
@@ -195,5 +196,35 @@ tasksCmd
195
196
  process.exit(1);
196
197
  }
197
198
  });
199
+ const hooksCmd = program
200
+ .command('hooks')
201
+ .description('Manage the aidev hooks file');
202
+ hooksCmd
203
+ .command('generate')
204
+ .description('Write a fresh hooks boilerplate to AIDEV_HOOKS_PATH (aborts if file exists without --force)')
205
+ .option('--force', 'overwrite an existing hooks file')
206
+ .action((opts) => {
207
+ const { env } = program.opts();
208
+ try {
209
+ (0, hooks_2.hooksGenerateCommand)(opts, env);
210
+ }
211
+ catch (err) {
212
+ logger_1.logger.error(String(err));
213
+ process.exit(1);
214
+ }
215
+ });
216
+ hooksCmd
217
+ .command('update')
218
+ .description('Append stubs for any missing hooks to the existing hooks file')
219
+ .action(() => {
220
+ const { env } = program.opts();
221
+ try {
222
+ (0, hooks_2.hooksUpdateCommand)(env);
223
+ }
224
+ catch (err) {
225
+ logger_1.logger.error(String(err));
226
+ process.exit(1);
227
+ }
228
+ });
198
229
  program.parse(process.argv);
199
230
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -116,7 +116,7 @@ ${b('CONFIG')} ${d('.env.aidev in your project directory')}
116
116
  ${d('CLICKUP_API_KEY')} ClickUp personal API token
117
117
  ${d('CLICKUP_TEAM_ID')} Workspace / team ID
118
118
  ${d('CLICKUP_TAG')} Tag used to filter tasks ${d('(default: folder name)')}
119
- ${d('AGENTS')} Agent order: ${c('claude,cursor')} ${d('| antigravity | cursor | windsurf | …')}
119
+ ${d('AGENTS')} Agent order: ${c('claude,cursor')} ${d('| antigravity | cursor | devin | …')}
120
120
  ${d('DEV_NOTES_MODE')} ${c('smart')} ${d('(default) | always')}
121
121
  ${d('AIDEV_TRIGGER_WORD')} Trigger word to re-process a skipped task ${d('(default: aidev-continue)')}
122
122
  ${d('AIDEV_HOOKS_PATH')} Optional hooks module ${d('(default from init: .aidev/aidev.hooks.ts)')}
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":";;;;;AA+BA,wDAUC;AAED,kCAkFC;AA7HD,kDAA0B;AAC1B,sCAA6E;AAC7E,gCAAsC;AACtC,0CAAuD;AAEvD,MAAM,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC;AACrB,MAAM,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC;AACrB,MAAM,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC;AACpB,MAAM,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC;AACtB,MAAM,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC;AAEvB,SAAS,YAAY;IACnB,MAAM,MAAM,GAAG,IAAA,kBAAY,GAAE,IAAI,QAAQ,CAAC;IAC1C,IAAI,CAAC,IAAA,uBAAc,EAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAA,sBAAa,GAAE,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI;YAC7B,KAAK,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC;IACtG,CAAC;IACD,IAAI,CAAC,IAAA,0BAAiB,GAAE,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI;YAC7B,KAAK,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI;QAC7B,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iEAAiE,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,IAAmD;IACxF,MAAM,GAAG,GAAG,IAAI,EAAE,SAAS,IAAI,oBAAS,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,EAAE,WAAW,IAAI,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI;YACnC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,2CAA2C,CAAC;IACzE,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI;QACnC,KAAK,CAAC,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,mDAAmD,CAAC,IAAI,CAAC;AAC1H,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,CAAC,GAAG,CAAC;EACZ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;;EAEzB,CAAC,CAAC,OAAO,CAAC;IACR,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;EAE9B,CAAC,CAAC,UAAU,CAAC;IACX,CAAC,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,YAAY,CAAC;IAC9E,CAAC,CAAC,KAAK,CAAC;IACR,CAAC,CAAC,UAAU,CAAC;IACb,CAAC,CAAC,aAAa,CAAC;IAChB,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC,kBAAkB,CAAC;IACxE,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC,kBAAkB,CAAC;IAC7E,CAAC,CAAC,UAAU,CAAC;IACb,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC9B,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC9B,CAAC,CAAC,YAAY,CAAC,2DAA2D,CAAC,CAAC,WAAW,CAAC;IACxF,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IAChC,CAAC,CAAC,cAAc,CAAC;IACjB,CAAC,CAAC,MAAM,CAAC;;EAEX,CAAC,CAAC,cAAc,CAAC;;gCAEa,CAAC,CAAC,2BAA2B,CAAC;4CAClB,CAAC,CAAC,oBAAoB,CAAC;;EAEjE,CAAC,CAAC,OAAO,CAAC;QACJ,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;IACzD,CAAC,CAAC,wDAAwD,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;IAC/E,CAAC,CAAC,uBAAuB,CAAC;;EAE5B,CAAC,CAAC,gBAAgB,CAAC;QACb,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;kBAC/B,CAAC,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IACpF,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;;;qDAGM,CAAC,CAAC,aAAa,CAAC;+BACtC,CAAC,CAAC,cAAc,CAAC;QACxC,CAAC,CAAC,gBAAgB,CAAC;QACnB,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;;EAEjD,CAAC,CAAC,kBAAkB,CAAC;IACnB,CAAC,CAAC,kBAAkB,CAAC;oCACW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;UACtD,CAAC,CAAC,WAAW,CAAC;0EACkD,CAAC,CAAC,aAAa,CAAC;IACtF,CAAC,CAAC,qCAAqC,CAAC;;EAE1C,CAAC,CAAC,gBAAgB,CAAC;0BACK,CAAC,CAAC,cAAc,CAAC;;;;6CAIE,CAAC,CAAC,0BAA0B,CAAC;kBACxD,CAAC,CAAC,uBAAuB,CAAC;OACrC,CAAC,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC,qBAAqB,CAAC;;EAE7E,CAAC,CAAC,UAAU,CAAC;IACX,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;IACzB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;IACxB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC;IAC7B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,mCAAmC,CAAC;IAChD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;;EAEnC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,sCAAsC,CAAC;IACvD,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,8DAA8D,CAAC;IAC9G,CAAC,CAAC,iBAAiB,CAAC;IACpB,CAAC,CAAC,iBAAiB,CAAC;IACpB,CAAC,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC,wBAAwB,CAAC;IACjF,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,uCAAuC,CAAC;IAC1G,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;IAClE,CAAC,CAAC,oBAAoB,CAAC,gDAAgD,CAAC,CAAC,2BAA2B,CAAC;IACrG,CAAC,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,CAAC,4CAA4C,CAAC;IAClG,CAAC,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC,gCAAgC,CAAC;IACvF,CAAC,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC,0BAA0B,CAAC;IACtE,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC;IAC7D,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;EAC9C,YAAY,EAAE,GAAG,sBAAsB,EAAE;QACnC,CAAC,CAAC,YAAY,CAAC;CACtB,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function hooksGenerateCommand(opts: {
2
+ force?: boolean;
3
+ }, envPath?: string): void;
4
+ export declare function hooksUpdateCommand(envPath?: string): void;
5
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":"AAiBA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAkBtF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBzD"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.hooksGenerateCommand = hooksGenerateCommand;
40
+ exports.hooksUpdateCommand = hooksUpdateCommand;
41
+ const fs = __importStar(require("node:fs"));
42
+ const path = __importStar(require("node:path"));
43
+ const config_1 = require("../config");
44
+ const hooksTemplate_1 = require("../hooksTemplate");
45
+ const logger_1 = require("../logger");
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ function resolveHooksPath(envPath) {
48
+ const config = (0, config_1.loadConfig)(envPath);
49
+ if (!config.hooksPath) {
50
+ throw new Error('AIDEV_HOOKS_PATH is not set. Run "aidev init" or set AIDEV_HOOKS_PATH in .env.aidev');
51
+ }
52
+ return path.isAbsolute(config.hooksPath)
53
+ ? config.hooksPath
54
+ : path.resolve(process.cwd(), config.hooksPath);
55
+ }
56
+ function hooksGenerateCommand(opts, envPath) {
57
+ const hooksPath = resolveHooksPath(envPath);
58
+ if (fs.existsSync(hooksPath) && !opts.force) {
59
+ logger_1.logger.error(`Hooks file already exists: ${hooksPath}\n` +
60
+ `Use ${chalk_1.default.cyan('--force')} to overwrite it, or use ${chalk_1.default.cyan('aidev hooks update')} to add only missing hooks.`);
61
+ process.exit(1);
62
+ }
63
+ const dir = path.dirname(hooksPath);
64
+ if (!fs.existsSync(dir)) {
65
+ fs.mkdirSync(dir, { recursive: true });
66
+ }
67
+ fs.writeFileSync(hooksPath, (0, hooksTemplate_1.generateFullHooksFile)(), 'utf8');
68
+ logger_1.logger.success(`Hooks file written to ${hooksPath}`);
69
+ }
70
+ function hooksUpdateCommand(envPath) {
71
+ const hooksPath = resolveHooksPath(envPath);
72
+ if (!fs.existsSync(hooksPath)) {
73
+ logger_1.logger.error(`Hooks file not found: ${hooksPath}\n` +
74
+ `Use ${chalk_1.default.cyan('aidev hooks generate')} to create it from scratch.`);
75
+ process.exit(1);
76
+ }
77
+ const existing = fs.readFileSync(hooksPath, 'utf8');
78
+ const { content, added } = (0, hooksTemplate_1.updateHooksFile)(existing);
79
+ if (added.length === 0) {
80
+ logger_1.logger.info('All hooks are already present — nothing to add.');
81
+ return;
82
+ }
83
+ fs.writeFileSync(hooksPath, content, 'utf8');
84
+ logger_1.logger.success(`Added ${added.length} missing hook(s): ${added.join(', ')}`);
85
+ }
86
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/commands/hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,oDAkBC;AAED,gDAqBC;AA1DD,4CAA8B;AAC9B,gDAAkC;AAClC,sCAAuC;AACvC,oDAA0E;AAC1E,sCAAmC;AACnC,kDAA0B;AAE1B,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,MAAM,CAAC,SAAS;QAClB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,oBAAoB,CAAC,IAAyB,EAAE,OAAgB;IAC9E,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5C,eAAM,CAAC,KAAK,CACV,8BAA8B,SAAS,IAAI;YAC3C,OAAO,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CACtH,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAA,qCAAqB,GAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,eAAM,CAAC,OAAO,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,eAAM,CAAC,KAAK,CACV,yBAAyB,SAAS,IAAI;YACtC,OAAO,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,6BAA6B,CACvE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAA,+BAAe,EAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,eAAM,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,MAAM,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC"}
@@ -63,6 +63,7 @@ export interface Answers {
63
63
  aidevEnvExtend: string;
64
64
  acceptedTag: string;
65
65
  doneStatus: string;
66
+ safeMode: boolean;
66
67
  }
67
68
  /** Wraps value in double quotes if it contains spaces or special chars. */
68
69
  export declare function envVal(val: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,GACzE,MAAM,GAAG,IAAI,CAiBf;AAED,wBAAgB,eAAe,CAAC,GAAG,SAAgB,GAAG,IAAI,CAyBzD;AAuCD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAExE,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAE9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAE3B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAE7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IAEtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAE7B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAE5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IAEf,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAqHD,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1C;AAMD,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAoI5C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA4BtD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAgB,GAAG,IAAI,CAchE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAufjD"}