@autocode-cli/autocode 0.1.15 → 0.1.17
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/README.md +38 -38
- package/dist/cli/commands/comment.d.ts +1 -1
- package/dist/cli/commands/comment.js +11 -11
- package/dist/cli/commands/comment.js.map +1 -1
- package/dist/cli/commands/init.js +1 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.d.ts +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +65 -22
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/move.d.ts +1 -1
- package/dist/cli/commands/move.js +12 -12
- package/dist/cli/commands/move.js.map +1 -1
- package/dist/cli/commands/new.d.ts +1 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +26 -13
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/next.d.ts +1 -1
- package/dist/cli/commands/next.js +15 -15
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/parent.d.ts +9 -0
- package/dist/cli/commands/parent.d.ts.map +1 -0
- package/dist/cli/commands/parent.js +94 -0
- package/dist/cli/commands/parent.js.map +1 -0
- package/dist/cli/commands/serve.js +8 -8
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/show.d.ts +1 -1
- package/dist/cli/commands/show.d.ts.map +1 -1
- package/dist/cli/commands/show.js +51 -31
- package/dist/cli/commands/show.js.map +1 -1
- package/dist/cli/commands/stats.js +2 -2
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/sync.js +3 -3
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +5 -3
- package/dist/cli/parser.js.map +1 -1
- package/dist/core/column.js +2 -2
- package/dist/core/column.js.map +1 -1
- package/dist/core/hierarchy.d.ts +97 -0
- package/dist/core/hierarchy.d.ts.map +1 -0
- package/dist/core/hierarchy.js +274 -0
- package/dist/core/hierarchy.js.map +1 -0
- package/dist/core/issue.d.ts +62 -0
- package/dist/core/issue.d.ts.map +1 -0
- package/dist/core/issue.js +247 -0
- package/dist/core/issue.js.map +1 -0
- package/dist/core/sync.d.ts +9 -9
- package/dist/core/sync.d.ts.map +1 -1
- package/dist/core/sync.js +61 -58
- package/dist/core/sync.js.map +1 -1
- package/dist/core/workflow.d.ts +22 -20
- package/dist/core/workflow.d.ts.map +1 -1
- package/dist/core/workflow.js +68 -51
- package/dist/core/workflow.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/server/api-autocomplete.test.d.ts +6 -0
- package/dist/server/api-autocomplete.test.d.ts.map +1 -0
- package/dist/server/api-autocomplete.test.js +249 -0
- package/dist/server/api-autocomplete.test.js.map +1 -0
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +216 -106
- package/dist/server/api.js.map +1 -1
- package/dist/server/dashboard/pages/column-prompt.d.ts +1 -1
- package/dist/server/dashboard/pages/column-prompt.d.ts.map +1 -1
- package/dist/server/dashboard/pages/column-prompt.js +11 -11
- package/dist/server/dashboard/pages/column-prompt.js.map +1 -1
- package/dist/server/dashboard/pages/column-terminal.d.ts +1 -1
- package/dist/server/dashboard/pages/column-terminal.d.ts.map +1 -1
- package/dist/server/dashboard/pages/column-terminal.js +14 -14
- package/dist/server/dashboard/pages/column-terminal.js.map +1 -1
- package/dist/server/dashboard/pages/index.d.ts +3 -1
- package/dist/server/dashboard/pages/index.d.ts.map +1 -1
- package/dist/server/dashboard/pages/index.js +3 -1
- package/dist/server/dashboard/pages/index.js.map +1 -1
- package/dist/server/dashboard/pages/issue-graph.d.ts +9 -0
- package/dist/server/dashboard/pages/issue-graph.d.ts.map +1 -0
- package/dist/server/dashboard/pages/issue-graph.js +581 -0
- package/dist/server/dashboard/pages/issue-graph.js.map +1 -0
- package/dist/server/dashboard/pages/issue-view.d.ts +8 -0
- package/dist/server/dashboard/pages/issue-view.d.ts.map +1 -0
- package/dist/server/dashboard/pages/{ticket-view.js → issue-view.js} +128 -128
- package/dist/server/dashboard/pages/issue-view.js.map +1 -0
- package/dist/server/dashboard/pages/main-dashboard.js +21 -21
- package/dist/server/dashboard/pages/main-dashboard.js.map +1 -1
- package/dist/server/dashboard/pages/new-issue.d.ts +8 -0
- package/dist/server/dashboard/pages/new-issue.d.ts.map +1 -0
- package/dist/server/dashboard/pages/new-issue.js +648 -0
- package/dist/server/dashboard/pages/new-issue.js.map +1 -0
- package/dist/server/dashboard/pages/new-issue.test.d.ts +6 -0
- package/dist/server/dashboard/pages/new-issue.test.d.ts.map +1 -0
- package/dist/server/dashboard/pages/new-issue.test.js +349 -0
- package/dist/server/dashboard/pages/new-issue.test.js.map +1 -0
- package/dist/server/dashboard/pages/pipeline-configurator.js +1 -1
- package/dist/server/dashboard/pages/shared.d.ts +2 -2
- package/dist/server/dashboard/pages/shared.d.ts.map +1 -1
- package/dist/server/dashboard/pages/shared.js +5 -5
- package/dist/server/dashboard/pages/shared.js.map +1 -1
- package/dist/server/dashboard/pages/stats-page.js +11 -11
- package/dist/server/dashboard/scripts/index.js +134 -134
- package/dist/server/dashboard/styles/board.d.ts +1 -1
- package/dist/server/dashboard/styles/board.js +10 -10
- package/dist/server/dashboard.d.ts +1 -1
- package/dist/server/dashboard.d.ts.map +1 -1
- package/dist/server/dashboard.js +1 -1
- package/dist/server/dashboard.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +40 -24
- package/dist/server/index.js.map +1 -1
- package/dist/server/websocket.d.ts +6 -6
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +10 -10
- package/dist/server/websocket.js.map +1 -1
- package/dist/services/claude.d.ts +13 -13
- package/dist/services/claude.d.ts.map +1 -1
- package/dist/services/claude.js +98 -98
- package/dist/services/claude.js.map +1 -1
- package/dist/services/issue-io.d.ts +81 -0
- package/dist/services/issue-io.d.ts.map +1 -0
- package/dist/services/{ticket-io.js → issue-io.js} +54 -53
- package/dist/services/issue-io.js.map +1 -0
- package/dist/services/stats.d.ts +2 -0
- package/dist/services/stats.d.ts.map +1 -1
- package/dist/services/stats.js.map +1 -1
- package/dist/types/index.d.ts +6 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/fs.d.ts +2 -2
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +2 -2
- package/dist/utils/fs.js.map +1 -1
- package/package.json +3 -3
- package/templates/catalog.yaml +2 -2
- package/templates/prompts/api-endpoints-test.en.md +2 -2
- package/templates/prompts/api-endpoints-test.fr.md +2 -2
- package/templates/prompts/backlog.en.md +6 -6
- package/templates/prompts/backlog.fr.md +1 -1
- package/templates/prompts/changelog.en.md +6 -6
- package/templates/prompts/changelog.fr.md +3 -3
- package/templates/prompts/dashboard-responsive.en.md +1 -1
- package/templates/prompts/deploy-prod.en.md +3 -3
- package/templates/prompts/deploy-prod.fr.md +3 -3
- package/templates/prompts/deploy-staging.en.md +3 -3
- package/templates/prompts/deploy-staging.fr.md +3 -3
- package/templates/prompts/design.en.md +5 -5
- package/templates/prompts/design.fr.md +3 -3
- package/templates/prompts/dev.en.md +4 -4
- package/templates/prompts/dev.fr.md +3 -3
- package/templates/prompts/done.en.md +5 -5
- package/templates/prompts/done.fr.md +2 -2
- package/templates/prompts/error-handling-review.en.md +1 -1
- package/templates/prompts/error-handling-review.fr.md +1 -1
- package/templates/prompts/file-watcher-test.en.md +4 -4
- package/templates/prompts/file-watcher-test.fr.md +1 -1
- package/templates/prompts/git-commit.en.md +5 -5
- package/templates/prompts/git-commit.fr.md +3 -3
- package/templates/prompts/git-push.en.md +3 -3
- package/templates/prompts/git-push.fr.md +3 -3
- package/templates/prompts/git-tag.en.md +3 -3
- package/templates/prompts/git-tag.fr.md +3 -3
- package/templates/prompts/in-progress.en.md +6 -6
- package/templates/prompts/in-progress.fr.md +3 -3
- package/templates/prompts/qualification.en.md +8 -8
- package/templates/prompts/qualification.fr.md +3 -3
- package/templates/prompts/retest-cypress.en.md +3 -3
- package/templates/prompts/retest-cypress.fr.md +3 -3
- package/templates/prompts/retest-playwright.en.md +4 -4
- package/templates/prompts/retest-playwright.fr.md +3 -3
- package/templates/prompts/retest.en.md +4 -4
- package/templates/prompts/retest.fr.md +3 -3
- package/templates/prompts/review-best-practices.en.md +3 -3
- package/templates/prompts/review-best-practices.fr.md +3 -3
- package/templates/prompts/review-code.en.md +4 -4
- package/templates/prompts/review-code.fr.md +3 -3
- package/templates/prompts/review-consistency.en.md +3 -3
- package/templates/prompts/review-consistency.fr.md +3 -3
- package/templates/prompts/review-no-duplication.en.md +3 -3
- package/templates/prompts/review-no-duplication.fr.md +3 -3
- package/templates/prompts/review-security.en.md +4 -4
- package/templates/prompts/review-security.fr.md +3 -3
- package/templates/prompts/specification.en.md +5 -5
- package/templates/prompts/specification.fr.md +3 -3
- package/templates/prompts/splitter.en.md +13 -13
- package/templates/prompts/splitter.fr.md +3 -3
- package/templates/prompts/template-validation.en.md +1 -1
- package/templates/prompts/template-validation.fr.md +1 -1
- package/templates/prompts/testing-coverage.en.md +1 -1
- package/templates/prompts/testing-coverage.fr.md +1 -1
- package/templates/prompts/testing-cypress.en.md +4 -4
- package/templates/prompts/testing-cypress.fr.md +3 -3
- package/templates/prompts/testing-integration.en.md +4 -4
- package/templates/prompts/testing-integration.fr.md +3 -3
- package/templates/prompts/testing-playwright.en.md +4 -4
- package/templates/prompts/testing-playwright.fr.md +3 -3
- package/templates/prompts/testing-unit.en.md +4 -4
- package/templates/prompts/testing-unit.fr.md +3 -3
- package/templates/prompts/update-docs.en.md +3 -3
- package/templates/prompts/update-docs.fr.md +3 -3
- package/templates/prompts/validate-staging.en.md +3 -3
- package/templates/prompts/validate-staging.fr.md +3 -3
- package/templates/prompts/websocket-test.en.md +1 -1
- package/dist/core/ticket.d.ts +0 -50
- package/dist/core/ticket.d.ts.map +0 -1
- package/dist/core/ticket.js +0 -224
- package/dist/core/ticket.js.map +0 -1
- package/dist/server/dashboard/pages/ticket-view.d.ts +0 -8
- package/dist/server/dashboard/pages/ticket-view.d.ts.map +0 -1
- package/dist/server/dashboard/pages/ticket-view.js.map +0 -1
- package/dist/services/ticket-io.d.ts +0 -80
- package/dist/services/ticket-io.d.ts.map +0 -1
- package/dist/services/ticket-io.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AutoCode CLI
|
|
2
2
|
|
|
3
|
-
Filesystem-based
|
|
3
|
+
Filesystem-based issue tracking system with web dashboard.
|
|
4
4
|
|
|
5
5
|
**[Live Demo](https://evkoh.gitlab.io/autocode/)** | **[Interactive Kanban Demo](https://evkoh.gitlab.io/autocode/demo.html)**
|
|
6
6
|
|
|
@@ -12,8 +12,8 @@ Filesystem-based ticket management system with web dashboard.
|
|
|
12
12
|
### Dashboard
|
|
13
13
|

|
|
14
14
|
|
|
15
|
-
###
|
|
16
|
-

|
|
17
17
|
|
|
18
18
|
### Architecture
|
|
19
19
|

|
|
@@ -30,16 +30,16 @@ npm install -g @autocode-cli/autocode
|
|
|
30
30
|
# Initialize project structure
|
|
31
31
|
autocode init
|
|
32
32
|
|
|
33
|
-
# Create a new
|
|
33
|
+
# Create a new issue (with all options)
|
|
34
34
|
autocode new "Implement user authentication" "OAuth2 login with Google and GitHub" --priority P1 --labels "feature,auth" --acceptance "Login button visible,OAuth flow works,Token stored" --semver minor --column backlog
|
|
35
35
|
|
|
36
|
-
# List all
|
|
36
|
+
# List all issues
|
|
37
37
|
autocode list
|
|
38
38
|
|
|
39
|
-
# Show
|
|
39
|
+
# Show issue details
|
|
40
40
|
autocode show AC-000001
|
|
41
41
|
|
|
42
|
-
# Move
|
|
42
|
+
# Move issue to next column
|
|
43
43
|
autocode next AC-000001
|
|
44
44
|
|
|
45
45
|
# Start web dashboard
|
|
@@ -51,12 +51,12 @@ autocode serve
|
|
|
51
51
|
| Command | Description |
|
|
52
52
|
|---------|-------------|
|
|
53
53
|
| `init` | Initialize autocode project structure |
|
|
54
|
-
| `new <title> [description] [-p P0-P3] [-l labels] [-a criteria] [-s semver]` | Create a new
|
|
55
|
-
| `list` | List all
|
|
56
|
-
| `show <
|
|
57
|
-
| `move <
|
|
58
|
-
| `next <
|
|
59
|
-
| `comment <
|
|
54
|
+
| `new <title> [description] [-p P0-P3] [-l labels] [-a criteria] [-s semver]` | Create a new issue |
|
|
55
|
+
| `list` | List all issues |
|
|
56
|
+
| `show <issue-key>` | Show issue details |
|
|
57
|
+
| `move <issue-key> <column-slug>` | Move issue to specific column |
|
|
58
|
+
| `next <issue-key>` | Advance issue to next column |
|
|
59
|
+
| `comment <issue-key> <text>` | Add comment to issue |
|
|
60
60
|
| `serve` | Start web dashboard |
|
|
61
61
|
|
|
62
62
|
## Options
|
|
@@ -94,8 +94,8 @@ autocode serve
|
|
|
94
94
|
|
|
95
95
|
The default workflow includes 15 columns following a TDD approach (test before AND after refactoring):
|
|
96
96
|
|
|
97
|
-
0. **Backlog** - New
|
|
98
|
-
1. **Ready** -
|
|
97
|
+
0. **Backlog** - New issues waiting to be prioritized
|
|
98
|
+
1. **Ready** - Issues ready to start
|
|
99
99
|
2. **In Progress** - Currently being worked on
|
|
100
100
|
3. **Testing Playwright** - Manual testing before refactoring
|
|
101
101
|
4. **Testing Cypress** - E2E tests before refactoring
|
|
@@ -115,13 +115,13 @@ The default workflow includes 15 columns following a TDD approach (test before A
|
|
|
115
115
|
```
|
|
116
116
|
autodoc/
|
|
117
117
|
├── .autocode/
|
|
118
|
-
│ └── .seq #
|
|
118
|
+
│ └── .seq # Issue sequence counter
|
|
119
119
|
├── 00_backlog/
|
|
120
120
|
│ ├── ACTION.fr.md # Column instructions (French, default)
|
|
121
121
|
│ ├── ACTION.en.md # Column instructions (English)
|
|
122
|
-
│ └──
|
|
123
|
-
│ └── AC-
|
|
124
|
-
│ └── issue.md #
|
|
122
|
+
│ └── issues/ # Issues folder
|
|
123
|
+
│ └── AC-000001__issue_title/
|
|
124
|
+
│ └── issue.md # Issue content
|
|
125
125
|
├── 01_ready/
|
|
126
126
|
├── 02_in-progress/
|
|
127
127
|
├── 03_testing-playwright/
|
|
@@ -138,9 +138,9 @@ autodoc/
|
|
|
138
138
|
└── 14_done/
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
##
|
|
141
|
+
## Issue Format
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
Issues are stored as Markdown files with YAML front matter:
|
|
144
144
|
|
|
145
145
|
```yaml
|
|
146
146
|
---
|
|
@@ -166,7 +166,7 @@ history:
|
|
|
166
166
|
to: "Backlog"
|
|
167
167
|
---
|
|
168
168
|
|
|
169
|
-
#
|
|
169
|
+
# Issue Title
|
|
170
170
|
|
|
171
171
|
## Context
|
|
172
172
|
|
|
@@ -179,20 +179,20 @@ When running `autocode serve`:
|
|
|
179
179
|
|
|
180
180
|
| Method | Endpoint | Description |
|
|
181
181
|
|--------|----------|-------------|
|
|
182
|
-
| GET | `/api/
|
|
183
|
-
| GET | `/api/
|
|
184
|
-
| POST | `/api/
|
|
185
|
-
| PATCH | `/api/
|
|
186
|
-
| POST | `/api/
|
|
187
|
-
| POST | `/api/
|
|
188
|
-
| POST | `/api/
|
|
189
|
-
| POST | `/api/
|
|
190
|
-
| GET | `/api/
|
|
191
|
-
| GET | `/api/
|
|
192
|
-
| GET | `/api/
|
|
193
|
-
| GET | `/api/
|
|
194
|
-
| POST | `/api/
|
|
195
|
-
| DELETE | `/api/
|
|
182
|
+
| GET | `/api/issues` | List all issues |
|
|
183
|
+
| GET | `/api/issues/:key` | Get issue details |
|
|
184
|
+
| POST | `/api/issues` | Create new issue |
|
|
185
|
+
| PATCH | `/api/issues/:key` | Update issue |
|
|
186
|
+
| POST | `/api/issues/:key/comments` | Add comment |
|
|
187
|
+
| POST | `/api/issues/:key/move` | Move to column |
|
|
188
|
+
| POST | `/api/issues/:key/next` | Advance to next column |
|
|
189
|
+
| POST | `/api/issues/:key/archive` | Archive issue (move to Done) |
|
|
190
|
+
| GET | `/api/issues/:key/log` | Get claude-code.log for issue |
|
|
191
|
+
| GET | `/api/issues/:key/log/:columnSlug` | Get column-specific log |
|
|
192
|
+
| GET | `/api/issues/:key/prompt/:columnSlug` | Get Claude prompt for column |
|
|
193
|
+
| GET | `/api/issues/:key/attachments` | List issue attachments |
|
|
194
|
+
| POST | `/api/issues/:key/attachments` | Upload attachment |
|
|
195
|
+
| DELETE | `/api/issues/:key/attachments/:filename` | Delete attachment |
|
|
196
196
|
| GET | `/api/columns` | List all columns |
|
|
197
197
|
| GET | `/api/columns/:slug/actions` | Get column ACTION content |
|
|
198
198
|
| POST | `/api/columns/:slug/actions` | Update column ACTION content |
|
|
@@ -202,8 +202,8 @@ When running `autocode serve`:
|
|
|
202
202
|
|
|
203
203
|
| Variable | Description | Default |
|
|
204
204
|
|----------|-------------|---------|
|
|
205
|
-
| `AUTOCODE_ROOT` | Root directory for
|
|
205
|
+
| `AUTOCODE_ROOT` | Root directory for issues | `autodoc` |
|
|
206
206
|
| `AUTOCODE_LANG` | Language (en/fr) | `fr` |
|
|
207
207
|
| `AUTOCODE_PORT` | Dashboard port | `3333` |
|
|
208
208
|
| `AUTOCODE_CLAUDE` | Enable Claude integration | `true` |
|
|
209
|
-
| `AUTOCODE_CLAUDE_TIMEOUT` | Claude timeout (ms) | `900000` |
|
|
209
|
+
| `AUTOCODE_CLAUDE_TIMEOUT` | Claude timeout (ms) | `900000` |
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* comment command - Add comment to
|
|
2
|
+
* comment command - Add comment to issue
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from 'commander';
|
|
5
|
-
import { addComment,
|
|
5
|
+
import { addComment, getIssue } from '../../core/issue.js';
|
|
6
6
|
import { getConfig } from '../../utils/config.js';
|
|
7
7
|
import { logger } from '../../utils/logger.js';
|
|
8
8
|
/**
|
|
@@ -11,27 +11,27 @@ import { logger } from '../../utils/logger.js';
|
|
|
11
11
|
export function commentCommand() {
|
|
12
12
|
const cmd = new Command('comment');
|
|
13
13
|
cmd
|
|
14
|
-
.description('Add a comment to
|
|
15
|
-
.argument('<
|
|
14
|
+
.description('Add a comment to an issue')
|
|
15
|
+
.argument('<issue-key>', 'Issue key (e.g., AC-000001)')
|
|
16
16
|
.argument('<text>', 'Comment text')
|
|
17
17
|
.option('--source <source>', 'Comment source (user or claude)', 'claude')
|
|
18
18
|
.action((key, text, options) => {
|
|
19
19
|
const config = getConfig();
|
|
20
20
|
const source = options.source === 'user' ? 'user' : 'claude';
|
|
21
|
-
// Get current
|
|
22
|
-
const
|
|
23
|
-
if (!
|
|
24
|
-
logger.error(`
|
|
21
|
+
// Get current issue
|
|
22
|
+
const issue = getIssue(config.root, key);
|
|
23
|
+
if (!issue) {
|
|
24
|
+
logger.error(`Issue '${key}' not found`);
|
|
25
25
|
process.exit(1);
|
|
26
26
|
}
|
|
27
27
|
// Add comment with source
|
|
28
|
-
const updated = addComment(config.root, key, text,
|
|
28
|
+
const updated = addComment(config.root, key, text, issue.status, source);
|
|
29
29
|
if (!updated) {
|
|
30
|
-
logger.error(`Failed to add comment to
|
|
30
|
+
logger.error(`Failed to add comment to issue '${key}'`);
|
|
31
31
|
process.exit(1);
|
|
32
32
|
}
|
|
33
33
|
logger.success(`Added comment to ${logger.bold(key)}`);
|
|
34
|
-
logger.row('Column',
|
|
34
|
+
logger.row('Column', issue.status);
|
|
35
35
|
logger.row('Source', source);
|
|
36
36
|
logger.row('Comments', String(updated.comments.length));
|
|
37
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../src/cli/commands/comment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"comment.js","sourceRoot":"","sources":["../../../src/cli/commands/comment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnC,GAAG;SACA,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,aAAa,EAAE,6BAA6B,CAAC;SACtD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;SAClC,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,EAAE,QAAQ,CAAC;SACxE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE7D,oBAAoB;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -56,7 +56,7 @@ export function initCommand() {
|
|
|
56
56
|
// Setup gitignore
|
|
57
57
|
setupGitignore(rootDir);
|
|
58
58
|
logger.success(`Autocode initialized in ${rootDir}`);
|
|
59
|
-
logger.info('Run `autocode new "Your
|
|
59
|
+
logger.info('Run `autocode new "Your issue title" "Description" --priority P1 --labels "labels" --acceptance "criteria" --semver minor --column backlog` to create your first issue');
|
|
60
60
|
});
|
|
61
61
|
return cmd;
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAa,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,OAAO,wBAAwB,CAAC;IAEpD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,qBAAqB;QAC/B,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE;QAC/B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,mCAAmC,OAAO,IAAI;QACjE,CAAC,CAAC,+BAA+B,OAAO,IAAI,CAAC;IAE/C,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC,GAAG;SACA,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QAE5B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,kBAAkB,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,KAAK,CAAC,CAAC;QAEtD,wBAAwB;QACxB,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnB,0BAA0B;QAC1B,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE/B,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,2CAA2C;QAC3C,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAgB,CAAC,CAAC;QAEvD,kBAAkB;QAClB,cAAc,CAAC,OAAO,CAAC,CAAC;QAExB,MAAM,CAAC,OAAO,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAa,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,OAAO,wBAAwB,CAAC;IAEpD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,qBAAqB;QAC/B,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE;QAC/B,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,mCAAmC,OAAO,IAAI;QACjE,CAAC,CAAC,+BAA+B,OAAO,IAAI,CAAC;IAE/C,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC,GAAG;SACA,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QAE5B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,kBAAkB,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,KAAK,CAAC,CAAC;QAEtD,wBAAwB;QACxB,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnB,0BAA0B;QAC1B,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE/B,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,2CAA2C;QAC3C,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAgB,CAAC,CAAC;QAEvD,kBAAkB;QAClB,cAAc,CAAC,OAAO,CAAC,CAAC;QAExB,MAAM,CAAC,OAAO,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,wKAAwK,CAAC,CAAC;IACxL,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAoFrC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* list command - List
|
|
2
|
+
* list command - List issues
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from 'commander';
|
|
5
|
-
import {
|
|
5
|
+
import { listIssues, listIssuesInColumn, getIssue } from '../../core/issue.js';
|
|
6
6
|
import { getColumnBySlug } from '../../core/column.js';
|
|
7
7
|
import { getConfig } from '../../utils/config.js';
|
|
8
8
|
import { logger } from '../../utils/logger.js';
|
|
@@ -12,36 +12,47 @@ import { logger } from '../../utils/logger.js';
|
|
|
12
12
|
export function listCommand() {
|
|
13
13
|
const cmd = new Command('list');
|
|
14
14
|
cmd
|
|
15
|
-
.description('List
|
|
15
|
+
.description('List issues')
|
|
16
16
|
.option('-c, --column <column-slug>', 'Filter by column (name or slug)')
|
|
17
17
|
.option('-p, --priority <priority>', 'Filter by priority (P0-P3)')
|
|
18
18
|
.option('-l, --label <label>', 'Filter by label')
|
|
19
|
+
.option('--parent <key>', 'Filter by parent issue key')
|
|
20
|
+
.option('--tree', 'Display as tree hierarchy')
|
|
19
21
|
.option('--json', 'Output as JSON')
|
|
20
22
|
.action((options) => {
|
|
21
23
|
const config = getConfig();
|
|
22
|
-
let
|
|
23
|
-
// Get
|
|
24
|
+
let issues;
|
|
25
|
+
// Get issues
|
|
24
26
|
if (options.column) {
|
|
25
27
|
const column = getColumnBySlug(options.column);
|
|
26
28
|
if (!column) {
|
|
27
29
|
logger.error(`Column '${options.column}' not found`);
|
|
28
30
|
process.exit(1);
|
|
29
31
|
}
|
|
30
|
-
|
|
32
|
+
issues = listIssuesInColumn(config.root, column.slug);
|
|
31
33
|
}
|
|
32
34
|
else {
|
|
33
|
-
|
|
35
|
+
issues = listIssues(config.root);
|
|
34
36
|
}
|
|
35
37
|
// Apply filters
|
|
36
38
|
if (options.priority) {
|
|
37
39
|
const p = options.priority.toUpperCase();
|
|
38
|
-
|
|
40
|
+
issues = issues.filter(t => t.priority === p);
|
|
39
41
|
}
|
|
40
42
|
if (options.label) {
|
|
41
|
-
|
|
43
|
+
issues = issues.filter(t => t.labels.includes(options.label));
|
|
44
|
+
}
|
|
45
|
+
// Filter by parent
|
|
46
|
+
if (options.parent) {
|
|
47
|
+
const parent = getIssue(config.root, options.parent);
|
|
48
|
+
if (!parent) {
|
|
49
|
+
logger.error(`Parent issue '${options.parent}' not found`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
issues = issues.filter(t => t.parent_key === options.parent);
|
|
42
53
|
}
|
|
43
54
|
// Sort by priority then by key
|
|
44
|
-
|
|
55
|
+
issues.sort((a, b) => {
|
|
45
56
|
const priorityOrder = { P0: 0, P1: 1, P2: 2, P3: 3 };
|
|
46
57
|
const pDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
|
|
47
58
|
if (pDiff !== 0)
|
|
@@ -50,29 +61,61 @@ export function listCommand() {
|
|
|
50
61
|
});
|
|
51
62
|
// Output
|
|
52
63
|
if (options.json) {
|
|
53
|
-
console.log(JSON.stringify(
|
|
64
|
+
console.log(JSON.stringify(issues, null, 2));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (issues.length === 0) {
|
|
68
|
+
logger.info('No issues found');
|
|
54
69
|
return;
|
|
55
70
|
}
|
|
56
|
-
|
|
57
|
-
|
|
71
|
+
// Tree display
|
|
72
|
+
if (options.tree) {
|
|
73
|
+
const allIssues = listIssues(config.root);
|
|
74
|
+
logger.info(`Issue hierarchy:`);
|
|
75
|
+
logger.separator();
|
|
76
|
+
printIssueTree(allIssues, null, 0);
|
|
58
77
|
return;
|
|
59
78
|
}
|
|
60
|
-
logger.info(`Found ${
|
|
79
|
+
logger.info(`Found ${issues.length} issue(s)`);
|
|
61
80
|
logger.separator();
|
|
62
|
-
for (const
|
|
63
|
-
|
|
81
|
+
for (const issue of issues) {
|
|
82
|
+
printIssueSummary(issue);
|
|
64
83
|
}
|
|
65
84
|
});
|
|
66
85
|
return cmd;
|
|
67
86
|
}
|
|
68
87
|
/**
|
|
69
|
-
* Print a single
|
|
88
|
+
* Print a single issue summary line
|
|
70
89
|
*/
|
|
71
|
-
function
|
|
72
|
-
const key = logger.cyan(
|
|
73
|
-
const priority = logger.priority(
|
|
74
|
-
const title =
|
|
75
|
-
const status = logger.dim(`[${
|
|
90
|
+
function printIssueSummary(issue) {
|
|
91
|
+
const key = logger.cyan(issue.key);
|
|
92
|
+
const priority = logger.priority(issue.priority);
|
|
93
|
+
const title = issue.title.substring(0, 50) + (issue.title.length > 50 ? '...' : '');
|
|
94
|
+
const status = logger.dim(`[${issue.status}]`);
|
|
76
95
|
console.log(`${key} ${priority} ${title} ${status}`);
|
|
77
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Print issues as a tree hierarchy
|
|
99
|
+
*/
|
|
100
|
+
function printIssueTree(issues, parentKey, indent) {
|
|
101
|
+
const children = issues.filter(t => t.parent_key === parentKey);
|
|
102
|
+
// Sort by priority then key
|
|
103
|
+
children.sort((a, b) => {
|
|
104
|
+
const priorityOrder = { P0: 0, P1: 1, P2: 2, P3: 3 };
|
|
105
|
+
const pDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
|
|
106
|
+
if (pDiff !== 0)
|
|
107
|
+
return pDiff;
|
|
108
|
+
return a.key.localeCompare(b.key);
|
|
109
|
+
});
|
|
110
|
+
for (const issue of children) {
|
|
111
|
+
const prefix = indent > 0 ? ' '.repeat(indent - 1) + '└─ ' : '';
|
|
112
|
+
const key = logger.cyan(issue.key);
|
|
113
|
+
const priority = logger.priority(issue.priority);
|
|
114
|
+
const title = issue.title.substring(0, 40) + (issue.title.length > 40 ? '...' : '');
|
|
115
|
+
const status = logger.dim(`[${issue.status.substring(0, 12)}]`);
|
|
116
|
+
console.log(`${prefix}${key} ${priority} ${title} ${status}`);
|
|
117
|
+
// Recurse for children
|
|
118
|
+
printIssueTree(issues, issue.key, indent + 1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
78
121
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* move command - Move
|
|
2
|
+
* move command - Move issue to a different column
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from 'commander';
|
|
5
|
-
import {
|
|
5
|
+
import { moveIssue, getIssue } from '../../core/issue.js';
|
|
6
6
|
import { getColumnBySlug, getColumns } from '../../core/column.js';
|
|
7
7
|
import { validateTransition } from '../../core/workflow.js';
|
|
8
8
|
import { getConfig } from '../../utils/config.js';
|
|
@@ -13,16 +13,16 @@ import { logger } from '../../utils/logger.js';
|
|
|
13
13
|
export function moveCommand() {
|
|
14
14
|
const cmd = new Command('move');
|
|
15
15
|
cmd
|
|
16
|
-
.description('Move
|
|
17
|
-
.argument('<
|
|
16
|
+
.description('Move issue to a different column')
|
|
17
|
+
.argument('<issue-key>', 'Issue key (e.g., AC-000001)')
|
|
18
18
|
.argument('<column-slug>', 'Target column (name or slug)')
|
|
19
19
|
.option('-f, --force', 'Force move (skip validation)')
|
|
20
20
|
.action((key, column, options) => {
|
|
21
21
|
const config = getConfig();
|
|
22
|
-
// Get current
|
|
23
|
-
const
|
|
24
|
-
if (!
|
|
25
|
-
logger.error(`
|
|
22
|
+
// Get current issue
|
|
23
|
+
const issue = getIssue(config.root, key);
|
|
24
|
+
if (!issue) {
|
|
25
|
+
logger.error(`Issue '${key}' not found`);
|
|
26
26
|
process.exit(1);
|
|
27
27
|
}
|
|
28
28
|
// Resolve target column
|
|
@@ -37,7 +37,7 @@ export function moveCommand() {
|
|
|
37
37
|
}
|
|
38
38
|
// Validate transition
|
|
39
39
|
if (!options.force) {
|
|
40
|
-
const validation = validateTransition(
|
|
40
|
+
const validation = validateTransition(issue.column_slug, targetColumn.slug);
|
|
41
41
|
if (!validation.valid) {
|
|
42
42
|
logger.error(validation.reason || 'Invalid transition');
|
|
43
43
|
logger.info('Use --force to override');
|
|
@@ -45,13 +45,13 @@ export function moveCommand() {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
// Perform move
|
|
48
|
-
const updated =
|
|
48
|
+
const updated = moveIssue(config.root, key, targetColumn.slug, options.force);
|
|
49
49
|
if (!updated) {
|
|
50
|
-
logger.error(`Failed to move
|
|
50
|
+
logger.error(`Failed to move issue '${key}'`);
|
|
51
51
|
process.exit(1);
|
|
52
52
|
}
|
|
53
53
|
logger.success(`Moved ${logger.bold(key)} to ${logger.cyan(targetColumn.name)}`);
|
|
54
|
-
logger.row('From',
|
|
54
|
+
logger.row('From', issue.status);
|
|
55
55
|
logger.row('To', updated.status);
|
|
56
56
|
});
|
|
57
57
|
return cmd;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/cli/commands/move.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/cli/commands/move.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAgFpC"}
|
package/dist/cli/commands/new.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* new command - Create a new
|
|
2
|
+
* new command - Create a new issue
|
|
3
3
|
*/
|
|
4
4
|
import { Command } from 'commander';
|
|
5
|
-
import {
|
|
5
|
+
import { createIssue, moveIssue, getIssue } from '../../core/issue.js';
|
|
6
6
|
import { getColumnBySlug, getColumns } from '../../core/column.js';
|
|
7
7
|
import { getConfig } from '../../utils/config.js';
|
|
8
8
|
import { logger } from '../../utils/logger.js';
|
|
@@ -12,27 +12,37 @@ import { logger } from '../../utils/logger.js';
|
|
|
12
12
|
export function newCommand() {
|
|
13
13
|
const cmd = new Command('new');
|
|
14
14
|
cmd
|
|
15
|
-
.description('Create a new
|
|
16
|
-
.argument('<title>', '
|
|
17
|
-
.argument('[description]', '
|
|
15
|
+
.description('Create a new issue')
|
|
16
|
+
.argument('<title>', 'Issue title')
|
|
17
|
+
.argument('[description]', 'Issue description')
|
|
18
18
|
.option('-p, --priority <priority>', 'Priority (P0-P3)', 'P2')
|
|
19
19
|
.option('-l, --labels <labels>', 'Comma-separated labels')
|
|
20
20
|
.option('-a, --acceptance <criteria>', 'Comma-separated acceptance criteria')
|
|
21
21
|
.option('-s, --semver <type>', 'Semver type (major/minor/patch/none)', 'patch')
|
|
22
22
|
.option('-c, --column <column-slug>', 'Target column (default: backlog)')
|
|
23
|
+
.option('--parent <key>', 'Parent issue key (creates child issue)')
|
|
23
24
|
.action((title, description, options) => {
|
|
24
25
|
const config = getConfig();
|
|
26
|
+
// Validate parent if provided
|
|
27
|
+
if (options.parent) {
|
|
28
|
+
const parent = getIssue(config.root, options.parent);
|
|
29
|
+
if (!parent) {
|
|
30
|
+
logger.error(`Parent issue '${options.parent}' not found`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
25
34
|
const priority = validatePriority(options.priority);
|
|
26
35
|
const semver = validateSemver(options.semver);
|
|
27
36
|
const labels = options.labels ? options.labels.split(',').map((l) => l.trim()) : [];
|
|
28
37
|
const acceptanceCriteria = options.acceptance ? options.acceptance.split(',').map((c) => c.trim()) : [];
|
|
29
|
-
let
|
|
38
|
+
let issue = createIssue(config.root, {
|
|
30
39
|
title,
|
|
31
40
|
priority,
|
|
32
41
|
labels,
|
|
33
42
|
description: description || '',
|
|
34
43
|
acceptance_criteria: acceptanceCriteria,
|
|
35
44
|
semver,
|
|
45
|
+
parent_key: options.parent,
|
|
36
46
|
});
|
|
37
47
|
// Move to target column if specified
|
|
38
48
|
if (options.column) {
|
|
@@ -45,15 +55,18 @@ export function newCommand() {
|
|
|
45
55
|
}
|
|
46
56
|
process.exit(1);
|
|
47
57
|
}
|
|
48
|
-
const moved =
|
|
58
|
+
const moved = moveIssue(config.root, issue.key, targetColumn.slug, true);
|
|
49
59
|
if (moved) {
|
|
50
|
-
|
|
60
|
+
issue = moved;
|
|
51
61
|
}
|
|
52
62
|
}
|
|
53
|
-
logger.success(`Created
|
|
54
|
-
logger.row('Title',
|
|
55
|
-
logger.row('Priority', logger.priority(
|
|
56
|
-
logger.row('Status',
|
|
63
|
+
logger.success(`Created issue ${logger.bold(issue.key)}`);
|
|
64
|
+
logger.row('Title', issue.title);
|
|
65
|
+
logger.row('Priority', logger.priority(issue.priority));
|
|
66
|
+
logger.row('Status', issue.status);
|
|
67
|
+
if (issue.parent_key) {
|
|
68
|
+
logger.row('Parent', issue.parent_key);
|
|
69
|
+
}
|
|
57
70
|
if (labels.length > 0) {
|
|
58
71
|
logger.row('Labels', labels.join(', '));
|
|
59
72
|
}
|
|
@@ -61,7 +74,7 @@ export function newCommand() {
|
|
|
61
74
|
logger.row('Acceptance', acceptanceCriteria.length + ' criteria');
|
|
62
75
|
}
|
|
63
76
|
logger.blank();
|
|
64
|
-
logger.info(`View with: autocode show ${
|
|
77
|
+
logger.info(`View with: autocode show ${issue.key}`);
|
|
65
78
|
});
|
|
66
79
|
return cmd;
|
|
67
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"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"}
|