specweave 0.28.56 → 0.28.59
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/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +8 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/init/external-import.d.ts +18 -1
- package/dist/src/cli/helpers/init/external-import.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/external-import.js +61 -21
- package/dist/src/cli/helpers/init/external-import.js.map +1 -1
- package/dist/src/cli/workers/import-worker.d.ts +18 -0
- package/dist/src/cli/workers/import-worker.d.ts.map +1 -0
- package/dist/src/cli/workers/import-worker.js +154 -0
- package/dist/src/cli/workers/import-worker.js.map +1 -0
- package/dist/src/core/background/index.d.ts +8 -0
- package/dist/src/core/background/index.d.ts.map +1 -1
- package/dist/src/core/background/index.js +8 -0
- package/dist/src/core/background/index.js.map +1 -1
- package/dist/src/core/background/job-launcher.d.ts +54 -0
- package/dist/src/core/background/job-launcher.d.ts.map +1 -0
- package/dist/src/core/background/job-launcher.js +206 -0
- package/dist/src/core/background/job-launcher.js.map +1 -0
- package/dist/src/importers/ado-importer.d.ts +7 -1
- package/dist/src/importers/ado-importer.d.ts.map +1 -1
- package/dist/src/importers/ado-importer.js +108 -61
- package/dist/src/importers/ado-importer.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/commands/specweave-jobs.md +133 -29
|
@@ -28,79 +28,125 @@ export class ADOImporter {
|
|
|
28
28
|
return items;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* Paginate through work items using WIQL
|
|
31
|
+
* Paginate through work items using WIQL with date-based pagination for 100K+ items
|
|
32
32
|
*
|
|
33
33
|
* CRITICAL FIX (2025-12-01): Also fetch missing parent items (Epics/Capabilities)
|
|
34
34
|
* Problem: If a parent Epic wasn't modified recently, it won't be in the WIQL results,
|
|
35
35
|
* causing all its child User Stories to be grouped into one generic folder.
|
|
36
36
|
* Solution: After fetching all items, identify missing parents and fetch them separately.
|
|
37
|
+
*
|
|
38
|
+
* ENHANCEMENT (2025-12-01): Date-based pagination to handle 100K+ items
|
|
39
|
+
* ADO WIQL has a 20K ID limit per query. For larger projects, we need to:
|
|
40
|
+
* 1. Run initial WIQL query (up to 20K IDs)
|
|
41
|
+
* 2. If we hit the limit, run another query with older date range
|
|
42
|
+
* 3. Keep paginating by date until we have all items or hit maxItems
|
|
37
43
|
*/
|
|
38
44
|
async *paginate(config = {}) {
|
|
39
45
|
const { timeRangeMonths = 3, includeClosed = false, labels = [], maxItems = Infinity, } = config;
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
`WHERE [System.TeamProject] = '${this.project}'`,
|
|
51
|
-
// Use ChangedDate to include active items that were created earlier
|
|
52
|
-
`AND [System.ChangedDate] >= '${sinceStr}'`,
|
|
53
|
-
// Filter for relevant work item types (includes Capability for enterprise setups)
|
|
54
|
-
`AND [System.WorkItemType] IN ('Capability', 'Epic', 'Feature', 'User Story', 'Product Backlog Item', 'Bug', 'Task')`,
|
|
55
|
-
];
|
|
56
|
-
// Status filter
|
|
57
|
-
if (!includeClosed) {
|
|
58
|
-
wiqlParts.push(`AND [System.State] <> 'Closed' AND [System.State] <> 'Removed'`);
|
|
59
|
-
}
|
|
60
|
-
// Tags filter (ADO uses semicolon-separated tags)
|
|
61
|
-
if (labels.length > 0) {
|
|
62
|
-
const tagsCondition = labels.map((tag) => `[System.Tags] CONTAINS '${tag}'`).join(' OR ');
|
|
63
|
-
wiqlParts.push(`AND (${tagsCondition})`);
|
|
64
|
-
}
|
|
65
|
-
wiqlParts.push(`ORDER BY [System.ChangedDate] DESC`);
|
|
66
|
-
const wiql = wiqlParts.join(' ');
|
|
46
|
+
// Collect all items to find missing parents after pagination
|
|
47
|
+
const allFetchedItems = [];
|
|
48
|
+
const fetchedIds = new Set();
|
|
49
|
+
const top = 200; // ADO pagination size (max 200)
|
|
50
|
+
let totalFetched = 0;
|
|
51
|
+
// WIQL has a 20K limit per query - use date-based pagination for larger datasets
|
|
52
|
+
const WIQL_LIMIT = 20000;
|
|
53
|
+
let currentEndDate = new Date(); // Start from now
|
|
54
|
+
const sinceDate = new Date();
|
|
55
|
+
sinceDate.setMonth(sinceDate.getMonth() - timeRangeMonths);
|
|
67
56
|
try {
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
57
|
+
// Date-based pagination loop
|
|
58
|
+
let dateRangeIteration = 0;
|
|
59
|
+
let hasMoreItems = true;
|
|
60
|
+
while (hasMoreItems && totalFetched < maxItems && currentEndDate > sinceDate) {
|
|
61
|
+
dateRangeIteration++;
|
|
62
|
+
// Build WIQL query for this date range
|
|
63
|
+
const sinceDateStr = sinceDate.toISOString().split('T')[0];
|
|
64
|
+
const untilDateStr = currentEndDate.toISOString().split('T')[0];
|
|
65
|
+
const wiqlParts = [
|
|
66
|
+
`SELECT [System.Id], [System.Title], [System.WorkItemType], [System.State], [System.ChangedDate]`,
|
|
67
|
+
`FROM WorkItems`,
|
|
68
|
+
`WHERE [System.TeamProject] = '${this.project}'`,
|
|
69
|
+
// Use ChangedDate range for pagination
|
|
70
|
+
`AND [System.ChangedDate] >= '${sinceDateStr}'`,
|
|
71
|
+
];
|
|
72
|
+
// For subsequent iterations, add upper bound to avoid duplicates
|
|
73
|
+
if (dateRangeIteration > 1) {
|
|
74
|
+
wiqlParts.push(`AND [System.ChangedDate] < '${untilDateStr}'`);
|
|
75
|
+
}
|
|
76
|
+
wiqlParts.push(
|
|
77
|
+
// Filter for relevant work item types (includes Capability for enterprise setups)
|
|
78
|
+
`AND [System.WorkItemType] IN ('Capability', 'Epic', 'Feature', 'User Story', 'Product Backlog Item', 'Bug', 'Task')`);
|
|
79
|
+
// Status filter
|
|
80
|
+
if (!includeClosed) {
|
|
81
|
+
wiqlParts.push(`AND [System.State] <> 'Closed' AND [System.State] <> 'Removed'`);
|
|
82
|
+
}
|
|
83
|
+
// Tags filter (ADO uses semicolon-separated tags)
|
|
84
|
+
if (labels.length > 0) {
|
|
85
|
+
const tagsCondition = labels.map((tag) => `[System.Tags] CONTAINS '${tag}'`).join(' OR ');
|
|
86
|
+
wiqlParts.push(`AND (${tagsCondition})`);
|
|
87
|
+
}
|
|
88
|
+
wiqlParts.push(`ORDER BY [System.ChangedDate] DESC`);
|
|
89
|
+
const wiql = wiqlParts.join(' ');
|
|
90
|
+
// Execute WIQL query - use high limit to maximize items per query
|
|
91
|
+
const queryResult = await this.makeADORequest(`/_apis/wit/wiql?$top=20000&api-version=7.0`, {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
body: JSON.stringify({ query: wiql }),
|
|
94
|
+
});
|
|
95
|
+
const workItemIds = queryResult.workItems.map((wi) => wi.id);
|
|
96
|
+
// Filter out already fetched IDs (avoid duplicates across date ranges)
|
|
97
|
+
const newIds = workItemIds.filter(id => !fetchedIds.has(id));
|
|
98
|
+
console.log(` 📊 WIQL iteration ${dateRangeIteration}: ${workItemIds.length} IDs found (${newIds.length} new)`);
|
|
99
|
+
if (newIds.length === 0) {
|
|
100
|
+
// No new items - we're done or need to go further back in time
|
|
101
|
+
if (workItemIds.length >= WIQL_LIMIT) {
|
|
102
|
+
// Hit the limit but all were duplicates - shouldn't happen, but handle it
|
|
103
|
+
hasMoreItems = false;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
hasMoreItems = false;
|
|
107
|
+
}
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
// Paginate through work item IDs
|
|
111
|
+
let skip = 0;
|
|
112
|
+
let oldestChangedDate = null;
|
|
113
|
+
while (skip < newIds.length && totalFetched < maxItems) {
|
|
114
|
+
const ids = newIds.slice(skip, skip + top);
|
|
115
|
+
if (ids.length === 0) {
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
// Fetch full work item details
|
|
119
|
+
const workItems = await this.getWorkItemsBatch(ids);
|
|
120
|
+
// Track fetched IDs and find oldest date for next iteration
|
|
121
|
+
for (const wi of workItems) {
|
|
122
|
+
fetchedIds.add(wi.fields['System.Id']);
|
|
123
|
+
const changedDate = new Date(wi.fields['System.ChangedDate']);
|
|
124
|
+
if (!oldestChangedDate || changedDate < oldestChangedDate) {
|
|
125
|
+
oldestChangedDate = changedDate;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Convert to ExternalItems
|
|
129
|
+
const items = workItems.map((wi) => this.convertToExternalItem(wi));
|
|
130
|
+
allFetchedItems.push(...items);
|
|
131
|
+
// Yield page
|
|
132
|
+
if (items.length > 0) {
|
|
133
|
+
const itemsToYield = items.slice(0, maxItems - totalFetched);
|
|
134
|
+
yield itemsToYield;
|
|
135
|
+
totalFetched += itemsToYield.length;
|
|
136
|
+
}
|
|
137
|
+
skip += top;
|
|
87
138
|
}
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
139
|
+
// Check if we hit the WIQL limit and need another date range iteration
|
|
140
|
+
if (workItemIds.length >= WIQL_LIMIT && oldestChangedDate && totalFetched < maxItems) {
|
|
141
|
+
// Move date window back to continue fetching older items
|
|
142
|
+
currentEndDate = oldestChangedDate;
|
|
143
|
+
console.log(` 📅 Hit WIQL limit, continuing with items before ${currentEndDate.toISOString().split('T')[0]}...`);
|
|
93
144
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
allFetchedItems.push(...items);
|
|
97
|
-
// Yield page
|
|
98
|
-
if (items.length > 0) {
|
|
99
|
-
yield items.slice(0, maxItems - totalFetched);
|
|
100
|
-
totalFetched += items.length;
|
|
145
|
+
else {
|
|
146
|
+
hasMoreItems = false;
|
|
101
147
|
}
|
|
102
|
-
skip += top;
|
|
103
148
|
}
|
|
149
|
+
console.log(` ✅ Total items fetched: ${totalFetched}`);
|
|
104
150
|
// Step 3: CRITICAL - Fetch missing parent items (Epics/Capabilities not in time range)
|
|
105
151
|
// This ensures proper hierarchy grouping even for old parent items
|
|
106
152
|
const missingParentIds = this.findMissingParentIds(allFetchedItems, fetchedIds);
|
|
@@ -264,8 +310,9 @@ export class ADOImporter {
|
|
|
264
310
|
url: workItem._links.html.href,
|
|
265
311
|
labels: tags,
|
|
266
312
|
acceptanceCriteria,
|
|
313
|
+
// CRITICAL FIX (2025-12-01): System.Parent is a number, not object
|
|
267
314
|
parentId: workItem.fields['System.Parent']
|
|
268
|
-
? `ADO-${workItem.fields['System.Parent']
|
|
315
|
+
? `ADO-${workItem.fields['System.Parent']}`
|
|
269
316
|
: undefined,
|
|
270
317
|
platform: 'ado',
|
|
271
318
|
adoProjectName: this.project,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ado-importer.js","sourceRoot":"","sources":["../../../src/importers/ado-importer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ado-importer.js","sourceRoot":"","sources":["../../../src/importers/ado-importer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.59",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: specweave:jobs
|
|
3
|
-
description: Monitor background jobs (repo cloning, issue import). Shows progress, allows pause/resume.
|
|
4
|
-
usage: /specweave:jobs [--active|--all|--id <job-id>] [--resume <job-id>]
|
|
3
|
+
description: Monitor background jobs (repo cloning, issue import). Shows progress, allows pause/resume/kill.
|
|
4
|
+
usage: /specweave:jobs [--active|--all|--id <job-id>] [--resume <job-id>] [--kill <job-id>] [--follow <job-id>] [--logs <job-id>]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Background Jobs Monitor
|
|
@@ -17,6 +17,25 @@ Monitor and manage long-running background operations:
|
|
|
17
17
|
- **Issue import** (10K+ items from GitHub/JIRA/ADO)
|
|
18
18
|
- **External sync** operations
|
|
19
19
|
|
|
20
|
+
**ASYNC ARCHITECTURE (2025-12-01)**:
|
|
21
|
+
- Jobs run as **detached processes** that survive terminal close
|
|
22
|
+
- Progress tracked via filesystem (`.specweave/state/jobs/`)
|
|
23
|
+
- Can check status anytime with `/specweave:jobs`
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Command Options
|
|
28
|
+
|
|
29
|
+
| Option | Description |
|
|
30
|
+
|--------|-------------|
|
|
31
|
+
| (none) | Show active jobs |
|
|
32
|
+
| `--all` | Show all jobs (including completed) |
|
|
33
|
+
| `--id <jobId>` | Show details for specific job |
|
|
34
|
+
| `--follow <jobId>` | Follow job progress in real-time |
|
|
35
|
+
| `--logs <jobId>` | Show worker log output |
|
|
36
|
+
| `--resume <jobId>` | Resume paused job |
|
|
37
|
+
| `--kill <jobId>` | Kill running background job |
|
|
38
|
+
|
|
20
39
|
---
|
|
21
40
|
|
|
22
41
|
## Check Job Status
|
|
@@ -26,6 +45,12 @@ Read the background jobs state file and display status:
|
|
|
26
45
|
```bash
|
|
27
46
|
# Find and read the state file
|
|
28
47
|
STATE_FILE=".specweave/state/background-jobs.json"
|
|
48
|
+
|
|
49
|
+
# Also check job-specific files:
|
|
50
|
+
# .specweave/state/jobs/<jobId>/config.json - Job configuration
|
|
51
|
+
# .specweave/state/jobs/<jobId>/worker.pid - Process ID (if running)
|
|
52
|
+
# .specweave/state/jobs/<jobId>/worker.log - Worker output log
|
|
53
|
+
# .specweave/state/jobs/<jobId>/result.json - Results (when complete)
|
|
29
54
|
```
|
|
30
55
|
|
|
31
56
|
### Display Format
|
|
@@ -34,25 +59,28 @@ STATE_FILE=".specweave/state/background-jobs.json"
|
|
|
34
59
|
📋 Background Jobs
|
|
35
60
|
|
|
36
61
|
🔄 Running (1):
|
|
37
|
-
[abc12345]
|
|
38
|
-
Progress: 2/
|
|
39
|
-
Rate:
|
|
40
|
-
Started: 2 mins ago
|
|
62
|
+
[abc12345] import-issues (ADO)
|
|
63
|
+
Progress: 2,500/10,000 (25%)
|
|
64
|
+
Rate: 15.2/s | ETA: ~8m 14s
|
|
65
|
+
PID: 45678 | Started: 2 mins ago
|
|
41
66
|
|
|
42
67
|
⏸️ Paused (1):
|
|
43
68
|
[def67890] import-issues (GitHub)
|
|
44
69
|
Progress: 1,234/10,000 (12%)
|
|
45
|
-
Reason: Rate limited
|
|
70
|
+
Reason: Rate limited (resumes in 45s)
|
|
46
71
|
Resume: /specweave:jobs --resume def67890
|
|
47
72
|
|
|
48
73
|
✅ Completed (2):
|
|
49
|
-
[ghi11111]
|
|
50
|
-
[jkl22222]
|
|
74
|
+
[ghi11111] import-issues - 4,500 items - 5 mins ago
|
|
75
|
+
[jkl22222] clone-repos - 4/4 repos - 1 hour ago
|
|
51
76
|
|
|
52
77
|
💡 Commands:
|
|
53
|
-
/specweave:jobs --id abc12345
|
|
54
|
-
/specweave:jobs --
|
|
55
|
-
/specweave:jobs --
|
|
78
|
+
/specweave:jobs --id abc12345 → Details for specific job
|
|
79
|
+
/specweave:jobs --follow abc12345 → Follow progress live
|
|
80
|
+
/specweave:jobs --logs abc12345 → View worker logs
|
|
81
|
+
/specweave:jobs --resume def67890 → Resume paused job
|
|
82
|
+
/specweave:jobs --kill abc12345 → Kill running job
|
|
83
|
+
/specweave:jobs --all → Show all jobs (including old)
|
|
56
84
|
```
|
|
57
85
|
|
|
58
86
|
---
|
|
@@ -66,32 +94,92 @@ STATE_FILE=".specweave/state/background-jobs.json"
|
|
|
66
94
|
|
|
67
95
|
📦 Job Details: abc12345
|
|
68
96
|
|
|
69
|
-
Type:
|
|
97
|
+
Type: import-issues
|
|
70
98
|
Status: running
|
|
99
|
+
Provider: ADO
|
|
100
|
+
PID: 45678
|
|
101
|
+
|
|
71
102
|
Started: 2024-01-15 10:30:00
|
|
72
103
|
Updated: 2024-01-15 10:32:15
|
|
73
104
|
|
|
74
|
-
Progress: 2/
|
|
75
|
-
Current:
|
|
76
|
-
Rate:
|
|
77
|
-
ETA: ~
|
|
105
|
+
Progress: 2,500/10,000 (25%)
|
|
106
|
+
Current: OlySense\Core-Operations
|
|
107
|
+
Rate: 15.2 items/sec
|
|
108
|
+
ETA: ~8 minutes
|
|
109
|
+
|
|
110
|
+
Files:
|
|
111
|
+
Config: .specweave/state/jobs/abc12345/config.json
|
|
112
|
+
Logs: .specweave/state/jobs/abc12345/worker.log
|
|
113
|
+
PID: .specweave/state/jobs/abc12345/worker.pid
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Follow Job Progress Live
|
|
117
|
+
|
|
118
|
+
Watch job progress in real-time (like `tail -f`):
|
|
78
119
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
✅ sw-meeting-cost-shared
|
|
120
|
+
```
|
|
121
|
+
/specweave:jobs --follow abc12345
|
|
82
122
|
|
|
83
|
-
|
|
84
|
-
⏳ sw-meeting-cost-be
|
|
85
|
-
⏳ sw-meeting-cost
|
|
123
|
+
📦 Following job abc12345 (Ctrl+C to stop)
|
|
86
124
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
125
|
+
[10:30:15] Progress: 2,500/10,000 (25%) - OlySense\Core-Operations
|
|
126
|
+
[10:30:16] Progress: 2,520/10,000 (25%) - OlySense\Core-Operations
|
|
127
|
+
[10:30:17] Progress: 2,545/10,000 (25%) - OlySense\AI-Platform
|
|
128
|
+
[10:30:18] Progress: 2,570/10,000 (26%) - OlySense\AI-Platform
|
|
129
|
+
...
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Implementation**: Read `.specweave/state/jobs/<jobId>/worker.log` with tail-like behavior, or poll the job state file every second.
|
|
133
|
+
|
|
134
|
+
### View Worker Logs
|
|
135
|
+
|
|
136
|
+
Show detailed worker output:
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
/specweave:jobs --logs abc12345
|
|
140
|
+
|
|
141
|
+
📋 Worker Logs for abc12345 (last 50 lines):
|
|
142
|
+
|
|
143
|
+
[2024-01-15T10:30:00.123Z] Worker started for job abc12345
|
|
144
|
+
[2024-01-15T10:30:00.456Z] Project path: /Users/dev/my-project
|
|
145
|
+
[2024-01-15T10:30:00.789Z] PID: 45678
|
|
146
|
+
[2024-01-15T10:30:01.234Z] Dependencies loaded, starting import...
|
|
147
|
+
[2024-01-15T10:30:02.567Z] Progress: 100/10000 - ado OlySense\Core-Operations
|
|
148
|
+
[2024-01-15T10:30:03.890Z] Progress: 200/10000 - ado OlySense\Core-Operations
|
|
149
|
+
...
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Implementation**: Read `.specweave/state/jobs/<jobId>/worker.log`
|
|
153
|
+
|
|
154
|
+
### Kill Running Job
|
|
155
|
+
|
|
156
|
+
Stop a background job:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
/specweave:jobs --kill abc12345
|
|
160
|
+
|
|
161
|
+
⚠️ Killing job abc12345...
|
|
162
|
+
Type: import-issues
|
|
163
|
+
PID: 45678
|
|
164
|
+
Progress: 2,500/10,000 (25%)
|
|
165
|
+
|
|
166
|
+
✅ Job killed. Status changed to 'paused'.
|
|
167
|
+
Resume later: /specweave:jobs --resume abc12345
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Implementation**:
|
|
171
|
+
```typescript
|
|
172
|
+
import { killJob } from '../../../src/core/background/job-launcher.js';
|
|
173
|
+
|
|
174
|
+
const success = killJob(projectPath, jobId);
|
|
175
|
+
if (success) {
|
|
176
|
+
console.log('Job killed successfully');
|
|
177
|
+
}
|
|
90
178
|
```
|
|
91
179
|
|
|
92
180
|
### Resume Paused Job
|
|
93
181
|
|
|
94
|
-
When a job is paused (rate limited, user requested), resume it:
|
|
182
|
+
When a job is paused (rate limited, killed, or user requested), resume it:
|
|
95
183
|
|
|
96
184
|
```
|
|
97
185
|
/specweave:jobs --resume def67890
|
|
@@ -101,8 +189,24 @@ When a job is paused (rate limited, user requested), resume it:
|
|
|
101
189
|
Provider: GitHub
|
|
102
190
|
Resuming from: item 1,234 of 10,000
|
|
103
191
|
|
|
104
|
-
⏳
|
|
105
|
-
|
|
192
|
+
⏳ Spawning background worker...
|
|
193
|
+
New PID: 45679
|
|
194
|
+
|
|
195
|
+
✅ Job resumed in background.
|
|
196
|
+
Check progress: /specweave:jobs --follow def67890
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Implementation**:
|
|
200
|
+
```typescript
|
|
201
|
+
import { launchImportJob } from '../../../src/core/background/job-launcher.js';
|
|
202
|
+
|
|
203
|
+
// Re-launch the worker with existing config
|
|
204
|
+
const result = await launchImportJob({
|
|
205
|
+
type: 'import-issues',
|
|
206
|
+
projectPath,
|
|
207
|
+
coordinatorConfig: existingConfig,
|
|
208
|
+
estimatedTotal: job.progress.total
|
|
209
|
+
});
|
|
106
210
|
```
|
|
107
211
|
|
|
108
212
|
---
|