@qelos/aidev 1.2.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.
- package/.env.aidev.example +12 -1
- package/README.md +23 -6
- package/dist/ai/devin.d.ts +7 -0
- package/dist/ai/devin.d.ts.map +1 -0
- package/dist/ai/devin.js +91 -0
- package/dist/ai/devin.js.map +1 -0
- package/dist/ai/index.js +2 -2
- package/dist/ai/index.js.map +1 -1
- package/dist/cli.js +31 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/help.js +1 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/hooks.d.ts +5 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +86 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +18 -109
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +78 -63
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/schedule.js +2 -2
- package/dist/commands/schedule.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +1 -2
- package/dist/diagnostics.js.map +1 -1
- package/dist/hooks.d.ts +18 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +16 -0
- package/dist/hooks.js.map +1 -1
- package/dist/hooksTemplate.d.ts +14 -0
- package/dist/hooksTemplate.d.ts.map +1 -0
- package/dist/hooksTemplate.js +274 -0
- package/dist/hooksTemplate.js.map +1 -0
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +32 -0
- package/dist/logger.js.map +1 -1
- package/dist/platform.d.ts +2 -2
- package/dist/platform.js +2 -2
- package/dist/safeMode.d.ts +32 -0
- package/dist/safeMode.d.ts.map +1 -0
- package/dist/safeMode.js +192 -0
- package/dist/safeMode.js.map +1 -0
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/ui/.output/nitro.json +1 -1
- package/ui/.output/public/_nuxt/6wLLp9Nc.js +1 -0
- package/ui/.output/public/_nuxt/BGkU0f28.js +1 -0
- package/ui/.output/public/_nuxt/BOIhDy_l.js +4 -0
- package/ui/.output/public/_nuxt/BWJzzHTi.js +1 -0
- package/ui/.output/public/_nuxt/{3LZdFtk_.js → By4xSvKt.js} +3 -3
- package/ui/.output/public/_nuxt/ByAMJ0xS.js +1 -0
- package/ui/.output/public/_nuxt/C1xk3ymy.js +1 -0
- package/ui/.output/public/_nuxt/CBV5GuL6.js +11 -0
- package/ui/.output/public/_nuxt/CTtW-0zG.js +1 -0
- package/ui/.output/public/_nuxt/CX0vIr0s.js +131 -0
- package/ui/.output/public/_nuxt/{LzHPbXPK.js → CYm8nRCj.js} +1 -1
- package/ui/.output/public/_nuxt/CdHqKVo4.js +1 -0
- package/ui/.output/public/_nuxt/CnXdKLRd.js +16 -0
- package/ui/.output/public/_nuxt/Cz9dogwK.js +1 -0
- package/ui/.output/public/_nuxt/DGHfexQZ.js +1 -0
- package/ui/.output/public/_nuxt/{CWjftssB.js → DOoocm0F.js} +1 -1
- package/ui/.output/public/_nuxt/{DZd8Jv5H.js → D_gcbXK2.js} +1 -1
- package/ui/.output/public/_nuxt/{CO4XMBYO.js → Dfhp6TEA.js} +11 -11
- package/ui/.output/public/_nuxt/{BtD1YBwM.js → G5BjvTWO.js} +1 -1
- package/ui/.output/public/_nuxt/H73b_QUy.js +1 -0
- package/ui/.output/public/_nuxt/{BMTHyzVP.js → LCoCV2KL.js} +1 -1
- package/ui/.output/public/_nuxt/Zrl3Utak.js +1 -0
- package/ui/.output/public/_nuxt/config.CaB_F_OT.css +1 -0
- package/ui/.output/public/_nuxt/default.D13_FS9T.css +1 -0
- package/ui/.output/public/_nuxt/hooks.B03-GWTh.css +1 -0
- package/ui/.output/public/_nuxt/kPPYUzXr.js +2 -0
- package/ui/.output/public/_nuxt/logs.DLMkvOEl.css +1 -0
- package/ui/.output/public/_nuxt/mHp9eItY.js +1 -0
- package/ui/.output/public/_nuxt/{BTfAgCfF.js → tyaD1vVi.js} +1 -1
- package/ui/.output/public/_nuxt/{BGlShnpS.js → ynXKxjpn.js} +1 -1
- package/ui/.output/public/_nuxt/{B8sr5ZW-.js → yqBy-NAR.js} +2 -2
- package/ui/.output/server/chunks/_/hooksTemplate.mjs +365 -0
- package/ui/.output/server/chunks/_/hooksTemplate.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{Badge-YPOjmkfv.mjs → Badge-nNgbDd8N.mjs} +2 -2
- package/ui/.output/server/chunks/build/{Badge-YPOjmkfv.mjs.map → Badge-nNgbDd8N.mjs.map} +1 -1
- package/ui/.output/server/chunks/build/{Button-CZHl6fpI.mjs → Button-CQZG7w2L.mjs} +117 -3
- package/ui/.output/server/chunks/build/Button-CQZG7w2L.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{Card--ibiHV_r.mjs → Card-DdEnDTQW.mjs} +2 -2
- package/ui/.output/server/chunks/build/{Card--ibiHV_r.mjs.map → Card-DdEnDTQW.mjs.map} +1 -1
- package/ui/.output/server/chunks/build/{FormGroup-CX5VmH8y.mjs → FormGroup-BfYiVGgN.mjs} +2 -2
- package/ui/.output/server/chunks/build/{FormGroup-CX5VmH8y.mjs.map → FormGroup-BfYiVGgN.mjs.map} +1 -1
- package/ui/.output/server/chunks/build/{Input-kmqS1oY_.mjs → Input-Cnk3P_aB.mjs} +5 -60
- package/ui/.output/server/chunks/build/Input-Cnk3P_aB.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{Modal-DmZs0Ekg.mjs → Modal-DfVO6DJD.mjs} +10 -5
- package/ui/.output/server/chunks/build/Modal-DfVO6DJD.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{Select-n4_YfXfk.mjs → Select-Dc9_TJIR.mjs} +3 -3
- package/ui/.output/server/chunks/build/{Select-n4_YfXfk.mjs.map → Select-Dc9_TJIR.mjs.map} +1 -1
- package/ui/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/ui/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
- package/ui/.output/server/chunks/build/{config-Bkb2wy7R.mjs → config-BUokZPak.mjs} +78 -58
- package/ui/.output/server/chunks/build/config-BUokZPak.mjs.map +1 -0
- package/ui/.output/server/chunks/build/config-styles.irltMnuD.mjs +8 -0
- package/ui/.output/server/chunks/build/config-styles.irltMnuD.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{default-DmD3qBXZ.mjs → default-6TcwTt3p.mjs} +10 -9
- package/ui/.output/server/chunks/build/default-6TcwTt3p.mjs.map +1 -0
- package/ui/.output/server/chunks/build/default-styles.BqL9zxh4.mjs +8 -0
- package/ui/.output/server/chunks/build/default-styles.BqL9zxh4.mjs.map +1 -0
- package/ui/.output/server/chunks/build/entry-styles.q-b4rEBh.mjs +11 -0
- package/ui/.output/server/chunks/build/entry-styles.q-b4rEBh.mjs.map +1 -0
- package/ui/.output/server/chunks/build/hooks-k2ZmlVpA.mjs +4181 -0
- package/ui/.output/server/chunks/build/hooks-k2ZmlVpA.mjs.map +1 -0
- package/ui/.output/server/chunks/build/hooks-styles.Ddk4F_Gj.mjs +8 -0
- package/ui/.output/server/chunks/build/hooks-styles.Ddk4F_Gj.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{index-Dy4Tu7MB.mjs → index-DwMIJp2e.mjs} +7 -3
- package/ui/.output/server/chunks/build/index-DwMIJp2e.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{index-BvfXQQ2n.mjs → index-JLPhao-C.mjs} +5 -5
- package/ui/.output/server/chunks/build/{index-BvfXQQ2n.mjs.map → index-JLPhao-C.mjs.map} +1 -1
- package/ui/.output/server/chunks/build/{interval-DHZqEf-n.mjs → interval-DPa3fpS0.mjs} +3 -3
- package/ui/.output/server/chunks/build/{interval-DHZqEf-n.mjs.map → interval-DPa3fpS0.mjs.map} +1 -1
- package/ui/.output/server/chunks/build/{login-B5YkLJCV.mjs → login-D9DpNq3o.mjs} +6 -5
- package/ui/.output/server/chunks/build/login-D9DpNq3o.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{logs-BvD1Y3HI.mjs → logs-BVuWOSb6.mjs} +49 -31
- package/ui/.output/server/chunks/build/logs-BVuWOSb6.mjs.map +1 -0
- package/ui/.output/server/chunks/build/logs-styles.C2Mi0JvX.mjs +8 -0
- package/ui/.output/server/chunks/build/logs-styles.C2Mi0JvX.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{run-BStPkbGg.mjs → run-BVQZSGcX.mjs} +5 -5
- package/ui/.output/server/chunks/build/{run-BStPkbGg.mjs.map → run-BVQZSGcX.mjs.map} +1 -1
- package/ui/.output/server/chunks/build/{schedule-B2UKsnRW.mjs → schedule-rRz2CwWh.mjs} +10 -9
- package/ui/.output/server/chunks/build/schedule-rRz2CwWh.mjs.map +1 -0
- package/ui/.output/server/chunks/build/server.mjs +14 -9
- package/ui/.output/server/chunks/build/server.mjs.map +1 -1
- package/ui/.output/server/chunks/build/styles.mjs +7 -6
- package/ui/.output/server/chunks/build/styles.mjs.map +1 -1
- package/ui/.output/server/chunks/build/{tasks-DBH3Z6lg.mjs → tasks-DJjZQWcq.mjs} +10 -9
- package/ui/.output/server/chunks/build/tasks-DJjZQWcq.mjs.map +1 -0
- package/ui/.output/server/chunks/build/{useApi-Bqajqsuz.mjs → useApi-Brbyp7hV.mjs} +3 -3
- package/ui/.output/server/chunks/build/useApi-Brbyp7hV.mjs.map +1 -0
- package/ui/.output/server/chunks/build/useFormGroup-DqE91r20.mjs +61 -0
- package/ui/.output/server/chunks/build/useFormGroup-DqE91r20.mjs.map +1 -0
- package/ui/.output/server/chunks/nitro/nitro.mjs +195 -157
- package/ui/.output/server/chunks/routes/api/config/test.post.mjs +1 -1
- package/ui/.output/server/chunks/routes/api/config/test.post.mjs.map +1 -1
- package/ui/.output/server/chunks/routes/api/hooks-execute.post.mjs +83 -0
- package/ui/.output/server/chunks/routes/api/hooks-execute.post.mjs.map +1 -0
- package/ui/.output/server/chunks/routes/api/hooks-regenerate.post.mjs +30 -0
- package/ui/.output/server/chunks/routes/api/hooks-regenerate.post.mjs.map +1 -0
- package/ui/.output/server/chunks/routes/api/hooks-update.post.mjs +31 -0
- package/ui/.output/server/chunks/routes/api/hooks-update.post.mjs.map +1 -0
- package/ui/.output/server/chunks/routes/api/hooks.get.mjs +28 -0
- package/ui/.output/server/chunks/routes/api/hooks.get.mjs.map +1 -0
- package/ui/.output/server/chunks/routes/api/hooks.put.mjs +32 -0
- package/ui/.output/server/chunks/routes/api/hooks.put.mjs.map +1 -0
- package/ui/.output/server/chunks/routes/api/logs.get.mjs +7 -2
- package/ui/.output/server/chunks/routes/api/logs.get.mjs.map +1 -1
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/_virtual/_rollupPluginBabelHelpers.js +123 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/config/index.js +11 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/index.js +9 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/loader/index.js +175 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/compose.js +16 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/curry.js +20 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/deepMerge.js +18 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/isObject.js +9 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/utils/makeCancelable.js +25 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/lib/cjs/validators/index.js +49 -0
- package/ui/.output/server/node_modules/@monaco-editor/loader/package.json +51 -0
- package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +1197 -0
- package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
- package/ui/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
- package/ui/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
- package/ui/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
- package/ui/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
- package/ui/.output/server/node_modules/state-local/lib/cjs/state-local.js +195 -0
- package/ui/.output/server/node_modules/state-local/package.json +59 -0
- package/ui/.output/server/package.json +4 -0
- package/ui/package.json +1 -0
- package/ui/.output/public/_nuxt/B93YYUZf.js +0 -1
- package/ui/.output/public/_nuxt/BAs1isOw.js +0 -1
- package/ui/.output/public/_nuxt/BrZL2iQr.js +0 -1
- package/ui/.output/public/_nuxt/Bv6Ws9vz.js +0 -1
- package/ui/.output/public/_nuxt/C2WdrjFS.js +0 -1
- package/ui/.output/public/_nuxt/CVTgFccA.js +0 -2
- package/ui/.output/public/_nuxt/Ceb2855t.js +0 -1
- package/ui/.output/public/_nuxt/Cg55PjEy.js +0 -4
- package/ui/.output/public/_nuxt/D0ZgktSu.js +0 -1
- package/ui/.output/public/_nuxt/DZIUG6ZX.js +0 -1
- package/ui/.output/public/_nuxt/DihqGT4A.js +0 -1
- package/ui/.output/public/_nuxt/MzK2TZ-I.js +0 -16
- package/ui/.output/public/_nuxt/TJXLPQOj.js +0 -1
- package/ui/.output/public/_nuxt/VuiIFQtE.js +0 -1
- package/ui/.output/public/_nuxt/config.C19X1GwO.css +0 -1
- package/ui/.output/public/_nuxt/default.Dw-0Xw5D.css +0 -1
- package/ui/.output/public/_nuxt/logs.PK6CTQHM.css +0 -1
- package/ui/.output/server/chunks/build/Button-CZHl6fpI.mjs.map +0 -1
- package/ui/.output/server/chunks/build/Input-kmqS1oY_.mjs.map +0 -1
- package/ui/.output/server/chunks/build/Modal-DmZs0Ekg.mjs.map +0 -1
- package/ui/.output/server/chunks/build/config-Bkb2wy7R.mjs.map +0 -1
- package/ui/.output/server/chunks/build/config-styles.B4mTchgT.mjs +0 -8
- package/ui/.output/server/chunks/build/config-styles.B4mTchgT.mjs.map +0 -1
- package/ui/.output/server/chunks/build/default-DmD3qBXZ.mjs.map +0 -1
- package/ui/.output/server/chunks/build/default-styles.DmprFUrQ.mjs +0 -8
- package/ui/.output/server/chunks/build/default-styles.DmprFUrQ.mjs.map +0 -1
- package/ui/.output/server/chunks/build/entry-styles.Cg1Sndbr.mjs +0 -11
- package/ui/.output/server/chunks/build/entry-styles.Cg1Sndbr.mjs.map +0 -1
- package/ui/.output/server/chunks/build/index-Dy4Tu7MB.mjs.map +0 -1
- package/ui/.output/server/chunks/build/login-B5YkLJCV.mjs.map +0 -1
- package/ui/.output/server/chunks/build/logs-BvD1Y3HI.mjs.map +0 -1
- package/ui/.output/server/chunks/build/logs-styles.CU5b1wKf.mjs +0 -8
- package/ui/.output/server/chunks/build/logs-styles.CU5b1wKf.mjs.map +0 -1
- package/ui/.output/server/chunks/build/schedule-B2UKsnRW.mjs.map +0 -1
- package/ui/.output/server/chunks/build/tasks-DBH3Z6lg.mjs.map +0 -1
- package/ui/.output/server/chunks/build/useApi-Bqajqsuz.mjs.map +0 -1
package/.env.aidev.example
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
@@ -274,6 +274,7 @@ Linear calls them "labels" — the same concept as `CLICKUP_TAG` / `JIRA_LABEL`.
|
|
|
274
274
|
| `ACCEPTED_TAG` | `accepted` | Tasks in review with this tag are auto-merged (see [Auto-merge accepted PRs](#auto-merge-accepted-prs)) |
|
|
275
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 |
|
|
276
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 |
|
|
277
278
|
| `AIDEV_AUTO_COMPRESS` | `true` | Auto-compress older comments when the prompt grows large. Set to `false` / `0` / `no` to opt out |
|
|
278
279
|
| `AIDEV_COMPRESS_THRESHOLD` | `12000` | Char-length threshold that triggers compression |
|
|
279
280
|
|
|
@@ -321,7 +322,7 @@ aidev supports multiple AI agents with automatic fallback. The first available a
|
|
|
321
322
|
| `antigravity` | Google **Antigravity** CLI (`agy` or `antigravity`) in PATH — see [Antigravity](https://antigravity.google/download) |
|
|
322
323
|
| `claude` | [Claude CLI](https://github.com/anthropics/claude-code) installed and authenticated |
|
|
323
324
|
| `cursor` | Cursor **Agent CLI** (`agent`) in PATH — see [Windows](#windows-cursor-agent-cli) below |
|
|
324
|
-
| `
|
|
325
|
+
| `devin` | [Devin CLI](https://docs.devin.ai/cli) installed and authenticated |
|
|
325
326
|
|
|
326
327
|
### Windows: Cursor Agent CLI
|
|
327
328
|
|
|
@@ -345,14 +346,14 @@ AGENTS=cursor
|
|
|
345
346
|
# Cursor first (useful when working locally with a monitor)
|
|
346
347
|
AGENTS=cursor,claude
|
|
347
348
|
|
|
348
|
-
# Claude first, then
|
|
349
|
-
AGENTS=claude,
|
|
349
|
+
# Claude first, then Devin, then Cursor
|
|
350
|
+
AGENTS=claude,devin,cursor
|
|
350
351
|
|
|
351
352
|
# Antigravity first, then Claude
|
|
352
353
|
AGENTS=antigravity,claude
|
|
353
354
|
|
|
354
|
-
#
|
|
355
|
-
AGENTS=
|
|
355
|
+
# Devin only
|
|
356
|
+
AGENTS=devin
|
|
356
357
|
```
|
|
357
358
|
|
|
358
359
|
---
|
|
@@ -690,6 +691,20 @@ AIDEV_LOG_PATH=/var/log/aidev.log # absolute
|
|
|
690
691
|
AIDEV_LOG_PATH=~/aidev/run.log # under your home directory
|
|
691
692
|
```
|
|
692
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
|
+
|
|
693
708
|
---
|
|
694
709
|
|
|
695
710
|
## Providers
|
|
@@ -784,6 +799,8 @@ To add a comment, append a `---` separator followed by a `## your-name` header a
|
|
|
784
799
|
|
|
785
800
|
Downloaded task attachments are stored in `.aidev/assets/<task-id>/`, and `aidev init` adds `.aidev/assets/` to `.gitignore` automatically.
|
|
786
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
|
+
|
|
787
804
|
---
|
|
788
805
|
|
|
789
806
|
## UI dashboard
|
|
@@ -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"}
|
package/dist/ai/devin.js
ADDED
|
@@ -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
|
|
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
|
-
|
|
17
|
+
devin: new devin_1.DevinRunner(),
|
|
18
18
|
};
|
|
19
19
|
function createRunners(config) {
|
|
20
20
|
const runners = config.agents.map((name) => registry[name]);
|
package/dist/ai/index.js.map
CHANGED
|
@@ -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,
|
|
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":";;;AACA,yCAAoC;AACpC,0CAA8C;AAC9C,wCAAuD;AACvD,kDAAwH;AACxH,4CAA6H;AAC7H,0CAA8C;AAC9C,0CAA8C;AAC9C,sCAA0C;AAC1C,qCAAsC;AACtC,2CAA2D;AAC3D,6BAAqC;AACrC,mCAA4C;AAC5C,qCAAkC;AAElC,mCAAkD;AAClD,kDAAsD;AACtD,qCAAyC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/help.js
CHANGED
|
@@ -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 |
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|