claude-gh-ticket-gen 1.0.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/LICENSE +21 -0
- package/README.md +406 -0
- package/bin/claude-ticket-gen.js +6 -0
- package/dist/cli/commands/config.d.ts +8 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +84 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +9 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +243 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +160 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +54 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui.d.ts +38 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +148 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/core/config-manager.d.ts +48 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +165 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/duplicate-detector.d.ts +13 -0
- package/dist/core/duplicate-detector.d.ts.map +1 -0
- package/dist/core/duplicate-detector.js +123 -0
- package/dist/core/duplicate-detector.js.map +1 -0
- package/dist/core/github.d.ts +46 -0
- package/dist/core/github.d.ts.map +1 -0
- package/dist/core/github.js +187 -0
- package/dist/core/github.js.map +1 -0
- package/dist/core/parser.d.ts +17 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +177 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/types.d.ts +89 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +28 -0
- package/dist/core/types.js.map +1 -0
- package/dist/templates/issue-template.d.ts +17 -0
- package/dist/templates/issue-template.d.ts.map +1 -0
- package/dist/templates/issue-template.js +87 -0
- package/dist/templates/issue-template.js.map +1 -0
- package/dist/templates/parsing-prompt.d.ts +5 -0
- package/dist/templates/parsing-prompt.d.ts.map +1 -0
- package/dist/templates/parsing-prompt.js +70 -0
- package/dist/templates/parsing-prompt.js.map +1 -0
- package/dist/utils/logger.d.ts +69 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +136 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/validators.d.ts +45 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +80 -0
- package/dist/utils/validators.js.map +1 -0
- package/examples/ROADMAP.example.md +84 -0
- package/examples/config.example.json +22 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Brett Buskirk
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
# Claude Ticket Generator
|
|
2
|
+
|
|
3
|
+
AI-powered CLI tool to parse roadmap documents and automatically generate GitHub issues using Claude AI.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Claude Ticket Generator is a standalone npm package that uses Claude AI to intelligently parse any planning document, roadmap, or specification and automatically create structured GitHub issues. It understands various document formats and extracts tasks with their priorities, types, labels, and metadata.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **AI-Powered Parsing**: Uses Claude AI to understand document structure and extract tasks
|
|
12
|
+
- **Flexible Format Support**: Works with markdown checklists, bullet points, numbered lists, and plain text
|
|
13
|
+
- **Smart Categorization**: Automatically detects priorities, task types, and labels
|
|
14
|
+
- **Duplicate Detection**: Checks for existing issues to prevent duplicates
|
|
15
|
+
- **Dry Run Mode**: Preview issues before creating them
|
|
16
|
+
- **Label Management**: Automatically creates and manages GitHub labels
|
|
17
|
+
- **Filtering**: Filter by phase, priority, and optional items
|
|
18
|
+
- **Interactive Setup**: Easy configuration wizard
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
- Node.js >= 18.0.0
|
|
23
|
+
- [GitHub CLI](https://cli.github.com/) installed and authenticated
|
|
24
|
+
- Anthropic API key (get one at [anthropic.com](https://www.anthropic.com))
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
### Global Installation (Recommended)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install -g claude-ticket-gen
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Local Installation
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install claude-ticket-gen
|
|
38
|
+
npx claude-ticket-gen --help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### From Source
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
git clone https://github.com/brett-buskirk/claude-ticket-gen.git
|
|
45
|
+
cd claude-ticket-gen
|
|
46
|
+
npm install
|
|
47
|
+
npm run build
|
|
48
|
+
npm link
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
1. **Initialize configuration**
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
claude-ticket-gen init
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This will guide you through setting up your API key and preferences.
|
|
60
|
+
|
|
61
|
+
2. **Create a roadmap document**
|
|
62
|
+
|
|
63
|
+
Create a `ROADMAP.md` file in your project (see [example](examples/ROADMAP.example.md)).
|
|
64
|
+
|
|
65
|
+
3. **Preview issues (dry run)**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
claude-ticket-gen generate --dry-run
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
4. **Generate issues**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
claude-ticket-gen generate
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Usage
|
|
78
|
+
|
|
79
|
+
### Commands
|
|
80
|
+
|
|
81
|
+
#### `generate`
|
|
82
|
+
|
|
83
|
+
Parse a document and generate GitHub issues.
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
claude-ticket-gen generate [file] [options]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Arguments:**
|
|
90
|
+
- `file` - Path to roadmap/planning document (default: ROADMAP.md)
|
|
91
|
+
|
|
92
|
+
**Options:**
|
|
93
|
+
- `--repo <owner/repo>` - Target GitHub repository (default: current repo)
|
|
94
|
+
- `--dry-run` - Preview without creating issues
|
|
95
|
+
- `--filter-phase <name>` - Filter by phase/section
|
|
96
|
+
- `--min-priority <level>` - Minimum priority level (P0-P3)
|
|
97
|
+
- `--include-optional` - Include optional items
|
|
98
|
+
- `--config <path>` - Use specific config file
|
|
99
|
+
|
|
100
|
+
**Examples:**
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Generate from default ROADMAP.md
|
|
104
|
+
claude-ticket-gen generate
|
|
105
|
+
|
|
106
|
+
# Preview without creating
|
|
107
|
+
claude-ticket-gen generate --dry-run
|
|
108
|
+
|
|
109
|
+
# Use specific file
|
|
110
|
+
claude-ticket-gen generate docs/PLANNING.md
|
|
111
|
+
|
|
112
|
+
# Generate for different repo
|
|
113
|
+
claude-ticket-gen generate --repo owner/other-repo
|
|
114
|
+
|
|
115
|
+
# Filter by priority (P0 and P1 only)
|
|
116
|
+
claude-ticket-gen generate --min-priority P1
|
|
117
|
+
|
|
118
|
+
# Filter by phase
|
|
119
|
+
claude-ticket-gen generate --filter-phase "Phase 1"
|
|
120
|
+
|
|
121
|
+
# Include optional tasks
|
|
122
|
+
claude-ticket-gen generate --include-optional
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
#### `config`
|
|
126
|
+
|
|
127
|
+
Manage configuration settings.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# List all configuration
|
|
131
|
+
claude-ticket-gen config list
|
|
132
|
+
|
|
133
|
+
# Get specific value
|
|
134
|
+
claude-ticket-gen config get anthropicApiKey
|
|
135
|
+
|
|
136
|
+
# Set value
|
|
137
|
+
claude-ticket-gen config set anthropicApiKey sk-ant-...
|
|
138
|
+
claude-ticket-gen config set defaultRepo owner/repo
|
|
139
|
+
|
|
140
|
+
# Reset to defaults
|
|
141
|
+
claude-ticket-gen config reset
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### `init`
|
|
145
|
+
|
|
146
|
+
Interactive setup wizard.
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
claude-ticket-gen init
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Configuration
|
|
153
|
+
|
|
154
|
+
Configuration is stored in `~/.config/claude-ticket-gen/config.json`.
|
|
155
|
+
|
|
156
|
+
### Configuration Options
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"anthropicApiKey": "sk-ant-...",
|
|
161
|
+
"defaultRepo": "owner/repo",
|
|
162
|
+
"defaultDocPath": "ROADMAP.md",
|
|
163
|
+
"preferences": {
|
|
164
|
+
"dryRunByDefault": false,
|
|
165
|
+
"autoCreateLabels": true,
|
|
166
|
+
"checkDuplicates": true,
|
|
167
|
+
"duplicateThreshold": 0.8
|
|
168
|
+
},
|
|
169
|
+
"labelColors": {
|
|
170
|
+
"priority-critical": "B60205",
|
|
171
|
+
"priority-high": "D93F0B",
|
|
172
|
+
"priority-medium": "FBCA04",
|
|
173
|
+
"priority-low": "0E8A16",
|
|
174
|
+
"type-feature": "0075CA",
|
|
175
|
+
"type-bug": "D73A4A",
|
|
176
|
+
"type-tech-debt": "F9D0C4",
|
|
177
|
+
"type-documentation": "0E8A16",
|
|
178
|
+
"optional": "E4E669"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Document Format
|
|
184
|
+
|
|
185
|
+
The tool is flexible and can parse various formats. Here's what it looks for:
|
|
186
|
+
|
|
187
|
+
### Task Formats
|
|
188
|
+
|
|
189
|
+
```markdown
|
|
190
|
+
- [ ] Task title (P1)
|
|
191
|
+
- [x] Completed task
|
|
192
|
+
☐ Checkbox task
|
|
193
|
+
✓ Completed checkbox
|
|
194
|
+
1. Numbered task
|
|
195
|
+
* Bullet point task
|
|
196
|
+
We need to implement feature X (plain text)
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Priority Indicators
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
- [ ] Critical task (P0)
|
|
203
|
+
- [ ] High priority task (P1)
|
|
204
|
+
- [ ] Medium priority task (P2)
|
|
205
|
+
- [ ] Low priority task (P3)
|
|
206
|
+
- [ ] Urgent: fix this bug (keywords: urgent, critical)
|
|
207
|
+
- [ ] Nice to have feature (keywords: optional, nice-to-have)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Task Types
|
|
211
|
+
|
|
212
|
+
The tool automatically detects task types based on context:
|
|
213
|
+
- `feature` - New functionality (default)
|
|
214
|
+
- `bug` - Bug fixes (keywords: bug, fix, issue)
|
|
215
|
+
- `tech-debt` - Technical debt (keywords: refactor, cleanup, tech-debt)
|
|
216
|
+
- `documentation` - Documentation tasks (keywords: docs, documentation)
|
|
217
|
+
|
|
218
|
+
### Example Document
|
|
219
|
+
|
|
220
|
+
```markdown
|
|
221
|
+
# Project Roadmap
|
|
222
|
+
|
|
223
|
+
## Phase 1: Foundation
|
|
224
|
+
|
|
225
|
+
### Authentication (Critical)
|
|
226
|
+
- [ ] Implement JWT authentication (P0)
|
|
227
|
+
- [ ] Add OAuth2 support (P1)
|
|
228
|
+
- [ ] Create user registration flow (P1)
|
|
229
|
+
|
|
230
|
+
### Database
|
|
231
|
+
- [ ] Design schema (P0)
|
|
232
|
+
- [ ] Set up migrations (P1)
|
|
233
|
+
|
|
234
|
+
## Phase 2: Features
|
|
235
|
+
|
|
236
|
+
### User Dashboard
|
|
237
|
+
- [ ] Create dashboard UI (P1)
|
|
238
|
+
- [ ] Add analytics widgets (P2, optional)
|
|
239
|
+
|
|
240
|
+
## Bug Fixes
|
|
241
|
+
- [ ] Fix login redirect (P0, bug)
|
|
242
|
+
- [ ] Resolve memory leak (P1, bug)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
See [examples/ROADMAP.example.md](examples/ROADMAP.example.md) for a complete example.
|
|
246
|
+
|
|
247
|
+
## GitHub Labels
|
|
248
|
+
|
|
249
|
+
The tool automatically creates and applies these labels:
|
|
250
|
+
|
|
251
|
+
**Priority Labels:**
|
|
252
|
+
- `priority-critical` (P0) - Red
|
|
253
|
+
- `priority-high` (P1) - Orange
|
|
254
|
+
- `priority-medium` (P2) - Yellow
|
|
255
|
+
- `priority-low` (P3) - Green
|
|
256
|
+
|
|
257
|
+
**Type Labels:**
|
|
258
|
+
- `type-feature` - Blue
|
|
259
|
+
- `type-bug` - Red
|
|
260
|
+
- `type-tech-debt` - Pink
|
|
261
|
+
- `type-documentation` - Green
|
|
262
|
+
|
|
263
|
+
**Other Labels:**
|
|
264
|
+
- `optional` - Yellow
|
|
265
|
+
|
|
266
|
+
You can customize label colors in the configuration.
|
|
267
|
+
|
|
268
|
+
## How It Works
|
|
269
|
+
|
|
270
|
+
1. **Document Parsing**: Sends your document to Claude AI with instructions to extract structured task data
|
|
271
|
+
2. **Task Extraction**: Claude identifies tasks regardless of format and extracts metadata
|
|
272
|
+
3. **Filtering**: Applies your filter criteria (priority, phase, optional)
|
|
273
|
+
4. **Duplicate Detection**: Searches existing issues to prevent duplicates
|
|
274
|
+
5. **Label Creation**: Ensures required labels exist in the repository
|
|
275
|
+
6. **Issue Creation**: Creates GitHub issues via the `gh` CLI
|
|
276
|
+
|
|
277
|
+
## Duplicate Detection
|
|
278
|
+
|
|
279
|
+
The tool uses keyword-based similarity to detect duplicates:
|
|
280
|
+
- Searches existing open issues for similar titles
|
|
281
|
+
- Calculates similarity score (Jaccard similarity)
|
|
282
|
+
- Skips creation if similarity exceeds threshold (default: 80%)
|
|
283
|
+
- Configurable via `preferences.duplicateThreshold`
|
|
284
|
+
|
|
285
|
+
## Troubleshooting
|
|
286
|
+
|
|
287
|
+
### API Key Issues
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Verify API key is set
|
|
291
|
+
claude-ticket-gen config get anthropicApiKey
|
|
292
|
+
|
|
293
|
+
# Set or update API key
|
|
294
|
+
claude-ticket-gen config set anthropicApiKey sk-ant-...
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### GitHub CLI Issues
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
# Check gh is installed
|
|
301
|
+
gh --version
|
|
302
|
+
|
|
303
|
+
# Check authentication
|
|
304
|
+
gh auth status
|
|
305
|
+
|
|
306
|
+
# Re-authenticate if needed
|
|
307
|
+
gh auth login
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Repository Detection
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
# Check current repo
|
|
314
|
+
gh repo view
|
|
315
|
+
|
|
316
|
+
# Specify repo explicitly
|
|
317
|
+
claude-ticket-gen generate --repo owner/repo
|
|
318
|
+
|
|
319
|
+
# Set default repo
|
|
320
|
+
claude-ticket-gen config set defaultRepo owner/repo
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### No Tasks Found
|
|
324
|
+
|
|
325
|
+
- Verify your document contains actionable items
|
|
326
|
+
- Check that tasks aren't all marked as completed
|
|
327
|
+
- Try with `--include-optional` if tasks are marked optional
|
|
328
|
+
- Use `--dry-run` to see what would be created
|
|
329
|
+
|
|
330
|
+
## Examples
|
|
331
|
+
|
|
332
|
+
### Basic Workflow
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
# 1. Setup
|
|
336
|
+
claude-ticket-gen init
|
|
337
|
+
|
|
338
|
+
# 2. Create ROADMAP.md with your tasks
|
|
339
|
+
|
|
340
|
+
# 3. Preview
|
|
341
|
+
claude-ticket-gen generate --dry-run
|
|
342
|
+
|
|
343
|
+
# 4. Generate issues
|
|
344
|
+
claude-ticket-gen generate
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Advanced Usage
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
# Generate from custom file for specific repo
|
|
351
|
+
claude-ticket-gen generate docs/sprint-plan.md --repo owner/repo
|
|
352
|
+
|
|
353
|
+
# Only create high-priority issues
|
|
354
|
+
claude-ticket-gen generate --min-priority P1
|
|
355
|
+
|
|
356
|
+
# Generate for specific phase
|
|
357
|
+
claude-ticket-gen generate --filter-phase "Phase 1: Foundation"
|
|
358
|
+
|
|
359
|
+
# Preview including optional tasks
|
|
360
|
+
claude-ticket-gen generate --dry-run --include-optional
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Development
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
# Clone repository
|
|
367
|
+
git clone https://github.com/brett-buskirk/claude-ticket-gen.git
|
|
368
|
+
cd claude-ticket-gen
|
|
369
|
+
|
|
370
|
+
# Install dependencies
|
|
371
|
+
npm install
|
|
372
|
+
|
|
373
|
+
# Build
|
|
374
|
+
npm run build
|
|
375
|
+
|
|
376
|
+
# Run locally
|
|
377
|
+
npm run dev -- generate --dry-run
|
|
378
|
+
|
|
379
|
+
# Link globally for testing
|
|
380
|
+
npm link
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## Contributing
|
|
384
|
+
|
|
385
|
+
Contributions are welcome! Please:
|
|
386
|
+
|
|
387
|
+
1. Fork the repository
|
|
388
|
+
2. Create a feature branch
|
|
389
|
+
3. Make your changes
|
|
390
|
+
4. Add tests if applicable
|
|
391
|
+
5. Submit a pull request
|
|
392
|
+
|
|
393
|
+
## License
|
|
394
|
+
|
|
395
|
+
MIT
|
|
396
|
+
|
|
397
|
+
## Support
|
|
398
|
+
|
|
399
|
+
- Issues: [GitHub Issues](https://github.com/brett-buskirk/claude-ticket-gen/issues)
|
|
400
|
+
- Documentation: [README.md](README.md)
|
|
401
|
+
|
|
402
|
+
## Acknowledgments
|
|
403
|
+
|
|
404
|
+
- Built with [Claude AI](https://www.anthropic.com/claude)
|
|
405
|
+
- Uses [GitHub CLI](https://cli.github.com/)
|
|
406
|
+
- Powered by [@anthropic-ai/sdk](https://www.npmjs.com/package/@anthropic-ai/sdk)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAiFf"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config command implementation
|
|
3
|
+
*/
|
|
4
|
+
import { getConfigValue, setConfigValue, getAllConfig, resetConfig, getConfigPath, } from '../../core/config-manager.js';
|
|
5
|
+
import { logger } from '../../utils/logger.js';
|
|
6
|
+
import { displayConfig } from '../ui.js';
|
|
7
|
+
/**
|
|
8
|
+
* Config command handler
|
|
9
|
+
*/
|
|
10
|
+
export async function configCommand(action, key, value) {
|
|
11
|
+
try {
|
|
12
|
+
if (!action || action === 'list') {
|
|
13
|
+
// List all config
|
|
14
|
+
const config = getAllConfig();
|
|
15
|
+
console.log();
|
|
16
|
+
logger.header('Configuration');
|
|
17
|
+
displayConfig(config);
|
|
18
|
+
console.log();
|
|
19
|
+
logger.dim(`Config file: ${getConfigPath()}`);
|
|
20
|
+
console.log();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (action === 'get') {
|
|
24
|
+
// Get specific value
|
|
25
|
+
if (!key) {
|
|
26
|
+
logger.error('Key is required for get action');
|
|
27
|
+
console.log('Usage: claude-ticket-gen config get <key>');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const val = getConfigValue(key);
|
|
31
|
+
if (val === undefined) {
|
|
32
|
+
logger.warning(`Key "${key}" not found`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
// Mask API key
|
|
36
|
+
if (key.includes('apiKey') && typeof val === 'string') {
|
|
37
|
+
const masked = val.substring(0, 12) + '...' + val.substring(val.length - 4);
|
|
38
|
+
console.log(masked);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.log(JSON.stringify(val, null, 2));
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (action === 'set') {
|
|
46
|
+
// Set value
|
|
47
|
+
if (!key) {
|
|
48
|
+
logger.error('Key is required for set action');
|
|
49
|
+
console.log('Usage: claude-ticket-gen config set <key> <value>');
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
if (value === undefined) {
|
|
53
|
+
logger.error('Value is required for set action');
|
|
54
|
+
console.log('Usage: claude-ticket-gen config set <key> <value>');
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
setConfigValue(key, value);
|
|
59
|
+
logger.success(`Set ${key} = ${key.includes('apiKey') ? '****' : value}`);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
logger.error(error.message);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (action === 'reset') {
|
|
68
|
+
// Reset to defaults
|
|
69
|
+
resetConfig();
|
|
70
|
+
logger.success('Configuration reset to defaults');
|
|
71
|
+
logger.warning('You will need to set your API key again');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Unknown action
|
|
75
|
+
logger.error(`Unknown action: ${action}`);
|
|
76
|
+
console.log('Available actions: get, set, list, reset');
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger.error(`Config command failed: ${error.message}`);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate command implementation
|
|
3
|
+
*/
|
|
4
|
+
import { GenerateOptions } from '../../core/types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Generate command handler
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateCommand(file?: string, options?: GenerateOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAc,eAAe,EAA+B,MAAM,qBAAqB,CAAC;AAU/F;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0IjG"}
|