@qelos/aidev 0.5.0 → 0.5.2
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 +8 -0
- package/README.md +137 -2
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/accepted.d.ts +7 -2
- package/dist/commands/accepted.d.ts.map +1 -1
- package/dist/commands/accepted.js +17 -2
- package/dist/commands/accepted.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +13 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/run.d.ts +16 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +408 -20
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/tasks.d.ts +1 -0
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +29 -0
- package/dist/commands/tasks.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/github.d.ts +2 -0
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +28 -0
- package/dist/github.js.map +1 -1
- package/dist/hooks.d.ts +16 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +1 -0
- package/dist/hooks.js.map +1 -1
- package/dist/providers/linear.js +1 -1
- package/dist/providers/linear.js.map +1 -1
- package/dist/sessions.d.ts +20 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +171 -0
- package/dist/sessions.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/ai-runners.test.d.ts +0 -2
- package/dist/__tests__/ai-runners.test.d.ts.map +0 -1
- package/dist/__tests__/ai-runners.test.js +0 -367
- package/dist/__tests__/ai-runners.test.js.map +0 -1
- package/dist/__tests__/clickup-format.test.d.ts +0 -2
- package/dist/__tests__/clickup-format.test.d.ts.map +0 -1
- package/dist/__tests__/clickup-format.test.js +0 -256
- package/dist/__tests__/clickup-format.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -418
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/git.test.d.ts +0 -2
- package/dist/__tests__/git.test.d.ts.map +0 -1
- package/dist/__tests__/git.test.js +0 -697
- package/dist/__tests__/git.test.js.map +0 -1
- package/dist/__tests__/github.test.d.ts +0 -2
- package/dist/__tests__/github.test.d.ts.map +0 -1
- package/dist/__tests__/github.test.js +0 -209
- package/dist/__tests__/github.test.js.map +0 -1
- package/dist/__tests__/help.test.d.ts +0 -2
- package/dist/__tests__/help.test.d.ts.map +0 -1
- package/dist/__tests__/help.test.js +0 -34
- package/dist/__tests__/help.test.js.map +0 -1
- package/dist/__tests__/hooks.test.d.ts +0 -2
- package/dist/__tests__/hooks.test.d.ts.map +0 -1
- package/dist/__tests__/hooks.test.js +0 -333
- package/dist/__tests__/hooks.test.js.map +0 -1
- package/dist/__tests__/init.test.d.ts +0 -2
- package/dist/__tests__/init.test.d.ts.map +0 -1
- package/dist/__tests__/init.test.js +0 -596
- package/dist/__tests__/init.test.js.map +0 -1
- package/dist/__tests__/local-provider.test.d.ts +0 -2
- package/dist/__tests__/local-provider.test.d.ts.map +0 -1
- package/dist/__tests__/local-provider.test.js +0 -631
- package/dist/__tests__/local-provider.test.js.map +0 -1
- package/dist/__tests__/lockfile.test.d.ts +0 -2
- package/dist/__tests__/lockfile.test.d.ts.map +0 -1
- package/dist/__tests__/lockfile.test.js +0 -144
- package/dist/__tests__/lockfile.test.js.map +0 -1
- package/dist/__tests__/permissions.test.d.ts +0 -2
- package/dist/__tests__/permissions.test.d.ts.map +0 -1
- package/dist/__tests__/permissions.test.js +0 -151
- package/dist/__tests__/permissions.test.js.map +0 -1
- package/dist/__tests__/platform.test.d.ts +0 -2
- package/dist/__tests__/platform.test.d.ts.map +0 -1
- package/dist/__tests__/platform.test.js +0 -329
- package/dist/__tests__/platform.test.js.map +0 -1
- package/dist/__tests__/providers.test.d.ts +0 -2
- package/dist/__tests__/providers.test.d.ts.map +0 -1
- package/dist/__tests__/providers.test.js +0 -925
- package/dist/__tests__/providers.test.js.map +0 -1
- package/dist/__tests__/run.test.d.ts +0 -2
- package/dist/__tests__/run.test.d.ts.map +0 -1
- package/dist/__tests__/run.test.js +0 -529
- package/dist/__tests__/run.test.js.map +0 -1
- package/dist/__tests__/schedule.test.d.ts +0 -2
- package/dist/__tests__/schedule.test.d.ts.map +0 -1
- package/dist/__tests__/schedule.test.js +0 -258
- package/dist/__tests__/schedule.test.js.map +0 -1
package/.env.aidev.example
CHANGED
|
@@ -82,3 +82,11 @@ DEV_NOTES_MODE=smart
|
|
|
82
82
|
# AIDEV_HOOKS_PATH: optional path to .ts or .js hooks module (relative to project cwd or absolute).
|
|
83
83
|
# aidev init creates .aidev/aidev.hooks.ts and sets this by default.
|
|
84
84
|
# AIDEV_HOOKS_PATH=.aidev/aidev.hooks.ts
|
|
85
|
+
|
|
86
|
+
# AIDEV_AUTO_COMPRESS: when the prompt grows past AIDEV_COMPRESS_THRESHOLD chars,
|
|
87
|
+
# summarize older comments and keep only the latest verbatim. Default: true.
|
|
88
|
+
# Set to false / 0 / no to opt out.
|
|
89
|
+
# AIDEV_AUTO_COMPRESS=true
|
|
90
|
+
|
|
91
|
+
# AIDEV_COMPRESS_THRESHOLD: char-length threshold that triggers compression. Default: 12000.
|
|
92
|
+
# AIDEV_COMPRESS_THRESHOLD=12000
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
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.
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
Task
|
|
12
|
+
Task → AI implements → git push → "in review" → AI resolves code review comments
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
---
|
|
@@ -22,8 +22,10 @@ Task (ClickUp / Jira / Monday / Notion / Trello / local) → AI implements
|
|
|
22
22
|
- [Concurrency lock](#concurrency-lock)
|
|
23
23
|
- [Configuration](#configuration)
|
|
24
24
|
- [AI agents](#ai-agents)
|
|
25
|
+
- [Code review resolution](#code-review-resolution)
|
|
25
26
|
- [Auto-merge accepted PRs](#auto-merge-accepted-prs)
|
|
26
27
|
- [Dev notes mode](#dev-notes-mode)
|
|
28
|
+
- [Local tasks file (`aidev.tasks.json`)](#local-tasks-file-aidevtasksjson)
|
|
27
29
|
- [Scheduling](#scheduling)
|
|
28
30
|
- [Hooks](#hooks)
|
|
29
31
|
- [Logging](#logging)
|
|
@@ -40,6 +42,7 @@ Task (ClickUp / Jira / Monday / Notion / Trello / local) → AI implements
|
|
|
40
42
|
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
|
|
41
43
|
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
|
|
42
44
|
6. **Ship** — commits all changes, pushes the branch, posts a comment with the branch name and a PR link, moves the task to your "in review" status
|
|
45
|
+
7. **Review** — checks tasks already in review for unresolved PR code review comments; if found, runs an AI agent to fix code or reply to discussion threads
|
|
43
46
|
|
|
44
47
|
---
|
|
45
48
|
|
|
@@ -75,10 +78,16 @@ aidev run
|
|
|
75
78
|
| Command | Description |
|
|
76
79
|
|---|---|
|
|
77
80
|
| `aidev init` | Interactive setup — creates `.env.aidev` |
|
|
78
|
-
| `aidev run` | Process
|
|
81
|
+
| `aidev run` | Process open + pending tasks, then check review tasks for unresolved PR comments |
|
|
79
82
|
| `aidev run open` | Only open (non-pending) tasks |
|
|
80
83
|
| `aidev run pending` | Only pending tasks — check for human replies |
|
|
81
84
|
| `aidev run accepted` | Auto-merge PRs for tasks in review with the accepted tag |
|
|
85
|
+
| `aidev run tasks` | Publish all entries in `aidev.tasks.json` and exit (no AI run) |
|
|
86
|
+
| `aidev tasks add` | Add a new entry to `aidev.tasks.json` (interactive) |
|
|
87
|
+
| `aidev tasks ls` | List entries currently queued in `aidev.tasks.json` |
|
|
88
|
+
| `aidev tasks update [id]` | Edit a queued entry (interactive if `id` omitted) |
|
|
89
|
+
| `aidev tasks remove [id]` | Delete a queued entry (interactive if `id` omitted) |
|
|
90
|
+
| `aidev tasks push` | Same as `aidev run tasks` — publish all queued entries and exit |
|
|
82
91
|
| `aidev stop` | Stop any running aidev process in the current directory |
|
|
83
92
|
| `aidev schedule set` | Interactive cron picker for this directory |
|
|
84
93
|
| `aidev schedule set "<expr>"` | Set a specific cron expression |
|
|
@@ -258,6 +267,8 @@ CLICKUP_TAG=my-project
|
|
|
258
267
|
| `ACCEPTED_TAG` | — | Tasks in review with this tag are auto-merged (see [Auto-merge accepted PRs](#auto-merge-accepted-prs)) |
|
|
259
268
|
| `DONE_STATUS` | — | Status to set after auto-merging an accepted PR (e.g. `done`) |
|
|
260
269
|
| `PR_SIGNATURE` | `Automated PR by aidev.` | Custom signature line appended to the PR body |
|
|
270
|
+
| `AIDEV_AUTO_COMPRESS` | `true` | Auto-compress older comments when the prompt grows large. Set to `false` / `0` / `no` to opt out |
|
|
271
|
+
| `AIDEV_COMPRESS_THRESHOLD` | `12000` | Char-length threshold that triggers compression |
|
|
261
272
|
|
|
262
273
|
---
|
|
263
274
|
|
|
@@ -276,6 +287,7 @@ The module should export an object (or `export default`) whose properties are op
|
|
|
276
287
|
| `beforeResolveConflicts` / `afterResolveConflicts` | Merge conflict resolution with AI | `conflictFiles`, `prompt`; `afterResolveConflicts` has `resolved` |
|
|
277
288
|
| `beforeNonCodeTask` / `afterNonCodeTask` | Non-code tasks | `afterNonCodeTask` includes agent `output` |
|
|
278
289
|
| `beforeThinkingTask` / `afterThinkingTask` | Thinking-tag tasks (subtask plan) | `beforeThinkingTask` may adjust `subtasks` before steps run |
|
|
290
|
+
| `beforeReviewTask` / `afterReviewTask` | Review tasks with unresolved PR comments | `threads`, `prompt`, `branchName`; `afterReviewTask` has `success`, `resolvedCount` |
|
|
279
291
|
|
|
280
292
|
**Second argument: `vm`**
|
|
281
293
|
|
|
@@ -364,6 +376,24 @@ AIDEV_COMMENT_PREFIX=[mybot]
|
|
|
364
376
|
|
|
365
377
|
---
|
|
366
378
|
|
|
379
|
+
## Auto-compress
|
|
380
|
+
|
|
381
|
+
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.
|
|
382
|
+
|
|
383
|
+
Compressed summaries are cached under `.aidev/sessions/<taskId>.json` and reused across runs; new comments invalidate the cache and trigger a re-summarisation of the delta. The directory is added to `.gitignore` automatically.
|
|
384
|
+
|
|
385
|
+
This is **on by default**. To opt out:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
# In .env.aidev
|
|
389
|
+
AIDEV_AUTO_COMPRESS=false
|
|
390
|
+
|
|
391
|
+
# Or raise the threshold instead of disabling
|
|
392
|
+
AIDEV_COMPRESS_THRESHOLD=24000
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
367
397
|
## Non-code tasks
|
|
368
398
|
|
|
369
399
|
Tasks tagged with `NON_CODE_TAG` are executed **without git branching** — no checkout, commit, push, or PR creation. The AI agent runs the task directly in the current working directory.
|
|
@@ -391,6 +421,25 @@ If `NON_CODE_TAG` is not configured, non-code task processing is disabled entire
|
|
|
391
421
|
|
|
392
422
|
---
|
|
393
423
|
|
|
424
|
+
## Code review resolution
|
|
425
|
+
|
|
426
|
+
When `aidev run` executes, it also checks tasks in **review** status for unresolved PR code review comments. If any actionable threads are found, an AI agent is run to address them — either by fixing the code or replying to discussion comments.
|
|
427
|
+
|
|
428
|
+
**How it works:**
|
|
429
|
+
|
|
430
|
+
1. Fetches all tasks in your configured "in review" status
|
|
431
|
+
2. For each task, finds the associated PR by branch name (via `gh` CLI)
|
|
432
|
+
3. Fetches unresolved review threads from the PR
|
|
433
|
+
4. Filters out threads where the last comment is from aidev itself (to avoid re-processing)
|
|
434
|
+
5. Runs an AI agent to address the remaining threads — code fixes are committed and pushed, discussion replies are posted directly on the thread
|
|
435
|
+
6. Resolved threads are marked as resolved on GitHub
|
|
436
|
+
|
|
437
|
+
This runs automatically as part of every `aidev run` (after processing open/pending tasks). No additional configuration is needed beyond having `gh` CLI installed and authenticated.
|
|
438
|
+
|
|
439
|
+
> **Prerequisites:** The [GitHub CLI](https://cli.github.com/) must be installed and authenticated (`gh auth login`). If `gh` is not available, review task processing is silently skipped.
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
394
443
|
## Auto-merge accepted PRs
|
|
395
444
|
|
|
396
445
|
When a task has been reviewed and is ready to merge, tag it with your configured `ACCEPTED_TAG`. On the next run, aidev will automatically merge the PR via the GitHub CLI (`gh`), update the task status, and sync your local main branch.
|
|
@@ -435,6 +484,92 @@ When a question is posted, the task is moved to the configured pending status (e
|
|
|
435
484
|
|
|
436
485
|
---
|
|
437
486
|
|
|
487
|
+
## Local tasks file (`aidev.tasks.json`)
|
|
488
|
+
|
|
489
|
+
`aidev.tasks.json` is an **outbound queue** — a JSON file that sits at the root of your project and holds task templates that aidev will publish to your configured provider (ClickUp, Jira, Linear, etc.). It is the opposite direction from the [Local provider](#local-provider): the local provider **stores** tasks on disk, while `aidev.tasks.json` **pushes** tasks to a remote provider.
|
|
490
|
+
|
|
491
|
+
Typical uses:
|
|
492
|
+
|
|
493
|
+
- **Recurring tasks** — with a `cron` expression, an entry publishes a fresh task on every matching tick (daily standup reminders, weekly reviews, monthly housekeeping).
|
|
494
|
+
- **Staged work** — queue a batch of tasks in a commit so they appear in the provider together when `aidev` next runs.
|
|
495
|
+
- **AI-authored tasks** — another AI agent or script can append entries to the file; `aidev` will pick them up and create real tickets.
|
|
496
|
+
|
|
497
|
+
The file is added to `.gitignore` by `aidev init` — each developer or automation environment maintains their own queue.
|
|
498
|
+
|
|
499
|
+
### File format
|
|
500
|
+
|
|
501
|
+
`aidev.tasks.json` is a JSON array of task entries. Each entry has the shape:
|
|
502
|
+
|
|
503
|
+
```ts
|
|
504
|
+
interface LocalTask {
|
|
505
|
+
id: string; // UUID — generated automatically by "aidev tasks add"
|
|
506
|
+
title: string; // required — task title on the remote provider
|
|
507
|
+
description: string; // task body / description
|
|
508
|
+
type: 'code' | 'non-code'; // routes to the non-code provider when set to 'non-code'
|
|
509
|
+
priority?: number; // 1=urgent, 2=high, 3=normal, 4=low
|
|
510
|
+
assignee?: string; // currently informational (reserved for future use)
|
|
511
|
+
dueDate?: string; // ISO date, e.g. "2026-05-01"
|
|
512
|
+
tags?: string[]; // extra tags appended to the provider-configured tag
|
|
513
|
+
listId?: string; // override provider list / project ID for this task only
|
|
514
|
+
cron?: string; // 5-field cron — if set, the task is re-published on every tick
|
|
515
|
+
lastPushedAt?: number; // epoch ms of the last successful push (managed by aidev for cron entries)
|
|
516
|
+
}
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
**Example** (`aidev.tasks.json`):
|
|
520
|
+
|
|
521
|
+
```json
|
|
522
|
+
[
|
|
523
|
+
{
|
|
524
|
+
"id": "7f3a9c2d-5b1e-4a6f-9d8c-1e2f3a4b5c6d",
|
|
525
|
+
"title": "Daily standup notes",
|
|
526
|
+
"description": "Post yesterday / today / blockers to the team channel.",
|
|
527
|
+
"type": "non-code",
|
|
528
|
+
"priority": 3,
|
|
529
|
+
"tags": ["standup"],
|
|
530
|
+
"cron": "0 9 * * 1-5"
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
"id": "2b8e1f7a-4c9d-4e5a-8b6c-9f1e2d3c4b5a",
|
|
534
|
+
"title": "Upgrade dependencies",
|
|
535
|
+
"description": "Run `npm outdated`, bump minor/patch versions, verify tests pass.",
|
|
536
|
+
"type": "code",
|
|
537
|
+
"priority": 2,
|
|
538
|
+
"tags": ["maintenance"]
|
|
539
|
+
}
|
|
540
|
+
]
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
### Lifecycle
|
|
544
|
+
|
|
545
|
+
1. **Every `aidev run`** (regardless of filter) begins by reading `aidev.tasks.json` and attempting to publish each entry via the configured provider's `createTask` API.
|
|
546
|
+
2. **One-shot entries** (no `cron` field) are **removed from the file** after a successful push — they become a real ticket and won't be duplicated on the next run.
|
|
547
|
+
3. **Cron entries** remain in the file. `lastPushedAt` is updated on each successful push; on the next run, aidev checks whether the cron has fired at least once since `lastPushedAt` before republishing. A fresh entry with a cron fires on the first run that matches.
|
|
548
|
+
4. **Failures** are logged and the entry is kept — the next run retries.
|
|
549
|
+
|
|
550
|
+
### Routing
|
|
551
|
+
|
|
552
|
+
- `type: 'code'` → published with the code tag (`CLICKUP_TAG` / `JIRA_LABEL` / `LINEAR_LABEL`, etc.) to the primary provider.
|
|
553
|
+
- `type: 'non-code'` → published with `NON_CODE_TAG` to the non-code provider (a separate team / project if `NON_CODE_CLICKUP_TEAM_ID`, `NON_CODE_JIRA_PROJECT`, or `NON_CODE_LINEAR_TEAM_ID` is configured, otherwise the primary).
|
|
554
|
+
- Per-task `tags` are appended to the resolved default tag.
|
|
555
|
+
- Per-task `listId` overrides the provider-default list / project for that single task.
|
|
556
|
+
|
|
557
|
+
### Managing entries
|
|
558
|
+
|
|
559
|
+
Use the built-in commands rather than hand-editing JSON (although hand-editing is fine — the file is plain JSON):
|
|
560
|
+
|
|
561
|
+
```bash
|
|
562
|
+
aidev tasks add # interactive prompt: title, description, type, priority, due date, tags, list, cron
|
|
563
|
+
aidev tasks ls # table of queued entries
|
|
564
|
+
aidev tasks update [id] # edit an entry by table ID (interactive picker if no id)
|
|
565
|
+
aidev tasks remove [id] # delete an entry by table ID (interactive picker if no id)
|
|
566
|
+
aidev tasks push # publish everything now (same as "aidev run tasks") — useful for dry-running or in scripts
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
`aidev tasks push` and `aidev run tasks` do the same thing: they only process `aidev.tasks.json` and exit without pulling tasks from the provider or invoking the AI. This is useful when you want to decouple queue publishing from the main AI loop — for example, running `aidev tasks push` from a separate cron entry or CI job.
|
|
570
|
+
|
|
571
|
+
---
|
|
572
|
+
|
|
438
573
|
## Scheduling
|
|
439
574
|
|
|
440
575
|
aidev can run on a cron schedule, one entry per project directory.
|
package/dist/cli.js
CHANGED
|
@@ -89,7 +89,7 @@ async function runWithFilter(filter) {
|
|
|
89
89
|
}
|
|
90
90
|
program
|
|
91
91
|
.command('run [filter]', { isDefault: true })
|
|
92
|
-
.description('Process tasks: all (default), open, pending, tasks, or accepted')
|
|
92
|
+
.description('Process tasks: all (default), open, pending, tasks, or accepted. Also checks review tasks for unresolved PR comments.')
|
|
93
93
|
.action(async (filter) => {
|
|
94
94
|
await runWithFilter(filter);
|
|
95
95
|
});
|
|
@@ -153,5 +153,18 @@ tasksCmd
|
|
|
153
153
|
.action(async (id) => {
|
|
154
154
|
await (0, tasks_1.tasksUpdateCommand)(id);
|
|
155
155
|
});
|
|
156
|
+
tasksCmd
|
|
157
|
+
.command('push')
|
|
158
|
+
.description('Publish all tasks from aidev.tasks.json to the configured provider')
|
|
159
|
+
.action(async () => {
|
|
160
|
+
const { env } = program.opts();
|
|
161
|
+
try {
|
|
162
|
+
await (0, tasks_1.tasksPushCommand)(env);
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
logger_1.logger.error(String(err));
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
156
169
|
program.parse(process.argv);
|
|
157
170
|
//# 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,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { Config } from '../types';
|
|
2
2
|
import { TaskProvider } from '../providers';
|
|
3
|
+
/**
|
|
4
|
+
* Comment posted on the task immediately before merging an accepted PR (so the
|
|
5
|
+
* ticket records that aidev is performing the merge).
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildAcceptedMergeComment(config: Config, branchName: string): string;
|
|
3
8
|
/**
|
|
4
9
|
* Process "accepted" tasks: find tasks in review status with the accepted tag,
|
|
5
|
-
* merge their PRs via gh CLI (squash +
|
|
6
|
-
* then checkout main and pull.
|
|
10
|
+
* post a short merge notice on each ticket, merge their PRs via gh CLI (squash +
|
|
11
|
+
* delete branch), update status to done, then checkout main and pull.
|
|
7
12
|
*/
|
|
8
13
|
export declare function acceptedCommand(config: Config, provider: TaskProvider): Promise<void>;
|
|
9
14
|
//# sourceMappingURL=accepted.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accepted.d.ts","sourceRoot":"","sources":["../../src/commands/accepted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAM5C;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"accepted.d.ts","sourceRoot":"","sources":["../../src/commands/accepted.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAM5C;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC,CA2Ef"}
|
|
@@ -33,15 +33,23 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.buildAcceptedMergeComment = buildAcceptedMergeComment;
|
|
36
37
|
exports.acceptedCommand = acceptedCommand;
|
|
37
38
|
const logger_1 = require("../logger");
|
|
38
39
|
const github_1 = require("../github");
|
|
39
40
|
const git = __importStar(require("../git"));
|
|
40
41
|
const run_1 = require("./run");
|
|
42
|
+
/**
|
|
43
|
+
* Comment posted on the task immediately before merging an accepted PR (so the
|
|
44
|
+
* ticket records that aidev is performing the merge).
|
|
45
|
+
*/
|
|
46
|
+
function buildAcceptedMergeComment(config, branchName) {
|
|
47
|
+
return `${config.commentPrefix} Merging the accepted pull request for branch \`${branchName}\`.`;
|
|
48
|
+
}
|
|
41
49
|
/**
|
|
42
50
|
* Process "accepted" tasks: find tasks in review status with the accepted tag,
|
|
43
|
-
* merge their PRs via gh CLI (squash +
|
|
44
|
-
* then checkout main and pull.
|
|
51
|
+
* post a short merge notice on each ticket, merge their PRs via gh CLI (squash +
|
|
52
|
+
* delete branch), update status to done, then checkout main and pull.
|
|
45
53
|
*/
|
|
46
54
|
async function acceptedCommand(config, provider) {
|
|
47
55
|
if (!config.acceptedTag) {
|
|
@@ -70,6 +78,13 @@ async function acceptedCommand(config, provider) {
|
|
|
70
78
|
for (const task of acceptedTasks) {
|
|
71
79
|
const branchName = `${task.id}/${git.slugify(task.name)}`;
|
|
72
80
|
logger_1.logger.task(`[${task.id}] "${task.name}" — merging branch ${branchName}`);
|
|
81
|
+
try {
|
|
82
|
+
await provider.postComment(task.id, buildAcceptedMergeComment(config, branchName));
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
logger_1.logger.warn(`[${task.id}] Failed to post merge notice: ${err instanceof Error ? err.message : String(err)}`);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
73
88
|
const result = (0, github_1.mergePullRequest)(branchName);
|
|
74
89
|
if (!result.success) {
|
|
75
90
|
logger_1.logger.error(`[${task.id}] Failed to merge PR: ${result.error}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accepted.js","sourceRoot":"","sources":["../../src/commands/accepted.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"accepted.js","sourceRoot":"","sources":["../../src/commands/accepted.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAUlG;AAED,wBAAgB,WAAW,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAUlG;AAED,wBAAgB,WAAW,IAAI,IAAI,CAkFlC"}
|
package/dist/commands/help.js
CHANGED
|
@@ -57,6 +57,12 @@ ${b('COMMANDS')}
|
|
|
57
57
|
${c('run')} Process all open + pending-with-replies tasks
|
|
58
58
|
${c('run open')} Only open (non-pending) tasks
|
|
59
59
|
${c('run pending')} Only pending tasks — check for human replies
|
|
60
|
+
${c('run tasks')} Publish queued ${d('aidev.tasks.json')} entries and exit
|
|
61
|
+
${c('tasks add')} Queue a new task in ${d('aidev.tasks.json')} (interactive)
|
|
62
|
+
${c('tasks ls')} List queued tasks
|
|
63
|
+
${c('tasks update')} ${d('[id]')} Edit a queued task
|
|
64
|
+
${c('tasks remove')} ${d('[id]')} Delete a queued task
|
|
65
|
+
${c('tasks push')} Publish all queued tasks now (same as ${c('run tasks')})
|
|
60
66
|
${c('schedule set')} ${d('<cron>')} Set cron schedule for this directory
|
|
61
67
|
${c('schedule get')} Show current cron schedule
|
|
62
68
|
${c('help')} Show this help message
|
|
@@ -82,6 +88,13 @@ ${b('LOCAL PROVIDER')}
|
|
|
82
88
|
Add ${c('type: non-code')} to frontmatter for tasks that skip git branching.
|
|
83
89
|
Run ${c('aidev init')} with provider ${c('local')} to create the folder structure.
|
|
84
90
|
|
|
91
|
+
${b('LOCAL TASKS FILE')}
|
|
92
|
+
${d('aidev.tasks.json')} queues tasks to publish to your remote provider. Each entry
|
|
93
|
+
has a title, description, type (${c('code')} | ${c('non-code')}), optional priority, tags, and cron.
|
|
94
|
+
Every ${c('aidev run')} publishes pending entries; one-shot entries are removed after
|
|
95
|
+
publishing, cron entries stay and re-publish on schedule. Manage with ${c('aidev tasks')}
|
|
96
|
+
${d('(add / ls / update / remove / push)')} or edit the JSON file directly.
|
|
97
|
+
|
|
85
98
|
${b('NON-CODE TASKS')}
|
|
86
99
|
Tasks tagged with the ${c('NON_CODE_TAG')} are executed without git branching —
|
|
87
100
|
no checkout, commit, push, or PR creation. The AI agent runs the task directly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":";;;;;AA+BA,wDAUC;AAED,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Config, Task, Comment } from '../types';
|
|
2
2
|
import { TaskProvider } from '../providers';
|
|
3
3
|
import { AIRunner } from '../ai';
|
|
4
|
+
import { ReviewThread } from '../github';
|
|
4
5
|
import { AidevHooks, HookVM } from '../hooks';
|
|
5
6
|
export declare const DEFAULT_TRIGGER_WORD = "aidev-continue";
|
|
6
7
|
export declare function getPendingStatus(config: Config): string;
|
|
@@ -8,10 +9,12 @@ export declare function getOpenStatus(config: Config): string;
|
|
|
8
9
|
export declare function getInReviewStatus(config: Config): string;
|
|
9
10
|
export type RunFilter = 'all' | 'open' | 'pending';
|
|
10
11
|
export interface SubTask {
|
|
11
|
-
id: number;
|
|
12
|
+
id: number | string;
|
|
12
13
|
title: string;
|
|
13
14
|
description: string;
|
|
14
15
|
status: 'pending' | 'running' | 'done' | 'failed';
|
|
16
|
+
attempts: number;
|
|
17
|
+
lastError?: string;
|
|
15
18
|
}
|
|
16
19
|
export interface ThinkingTaskPlan {
|
|
17
20
|
taskId: string;
|
|
@@ -20,6 +23,11 @@ export interface ThinkingTaskPlan {
|
|
|
20
23
|
}
|
|
21
24
|
export declare function getRunSkipReason(status: string, filter: RunFilter, pendingStatus: string, openStatus?: string): string | null;
|
|
22
25
|
export declare function sortTasksByPriority(tasks: Task[]): Task[];
|
|
26
|
+
export declare function writeTaskPlan(plan: ThinkingTaskPlan): void;
|
|
27
|
+
export declare function readTaskPlan(taskId: string): ThinkingTaskPlan | null;
|
|
28
|
+
export declare function formatSubtaskId(id: number | string): string;
|
|
29
|
+
export declare function subtaskDepth(id: number | string): number;
|
|
30
|
+
export declare function formatSubtaskList(plan: ThinkingTaskPlan): string;
|
|
23
31
|
export declare function runCommand(filter: RunFilter, config: Config, provider: TaskProvider, runners: AIRunner[], nonCodeProvider?: TaskProvider, hooks?: AidevHooks, vm?: HookVM): Promise<void>;
|
|
24
32
|
export declare function hasHumanReply(comments: Comment[], commentPrefix?: string): boolean;
|
|
25
33
|
/**
|
|
@@ -31,6 +39,7 @@ export declare function hasTriggerWord(comments: Comment[], triggerWord: string)
|
|
|
31
39
|
export declare function checkNeedsClarification(task: Task, config: Config, provider: TaskProvider, runners: AIRunner[]): Promise<string | null>;
|
|
32
40
|
export declare function buildConflictResolutionPrompt(task: Task, conflictFiles: string[], context: string): string;
|
|
33
41
|
export declare function buildImplementPrompt(task: Task, context: string): string;
|
|
42
|
+
export declare function splitFailedSubtask(parentTask: Task, plan: ThinkingTaskPlan, failedSubtask: SubTask, runners: AIRunner[]): Promise<SubTask[] | null>;
|
|
34
43
|
/**
|
|
35
44
|
* Attempts to create a PR via `gh` CLI. Falls back to a compare URL if gh is
|
|
36
45
|
* unavailable or PR creation fails.
|
|
@@ -43,4 +52,10 @@ export declare function buildNonCodePrompt(task: Task, context: string): string;
|
|
|
43
52
|
export declare function buildNonCodeCompletionComment(config: Config, agentResponse?: string): string;
|
|
44
53
|
export declare function hasAidevComment(comments: Comment[], commentPrefix?: string): boolean;
|
|
45
54
|
export declare function filterAutomatedComments(comments: Comment[], commentPrefix?: string): Comment[];
|
|
55
|
+
export declare function parseReplyDirectives(output: string): Array<{
|
|
56
|
+
threadId: string;
|
|
57
|
+
body: string;
|
|
58
|
+
}>;
|
|
59
|
+
export declare function buildReviewPrompt(task: Task, threads: ReviewThread[]): string;
|
|
60
|
+
export declare function buildReviewCompletionComment(config: Config, resolvedCount: number, repliedCount: number): string;
|
|
46
61
|
//# sourceMappingURL=run.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|