specweave 1.0.450 → 1.0.451
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/bin/specweave.js +1 -1
- package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-jira/lib/jira-spec-sync.js +15 -2
- package/dist/plugins/specweave-jira/lib/jira-spec-sync.js.map +1 -1
- package/dist/src/cli/commands/validate-jira.js +1 -1
- package/dist/src/cli/commands/validate-jira.js.map +1 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts.map +1 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.js +25 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.js.map +1 -1
- package/dist/src/core/increment/completion-validator.js +5 -5
- package/dist/src/core/increment/completion-validator.js.map +1 -1
- package/dist/src/core/increment/status-commands.d.ts.map +1 -1
- package/dist/src/core/increment/status-commands.js +9 -14
- package/dist/src/core/increment/status-commands.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +10 -5
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +50 -151
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/project/project-resolution.d.ts +1 -1
- package/dist/src/core/project/project-resolution.js +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +2 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/package.json +2 -2
- package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +2 -0
- package/plugins/specweave-ado/lib/ado-multi-project-sync.js +1 -0
- package/plugins/specweave-jira/lib/jira-spec-sync.js +17 -1
- package/plugins/specweave-jira/lib/jira-spec-sync.ts +20 -3
- package/plugins/specweave/hooks/.specweave/logs/auto-iterations.log +0 -1
- package/plugins/specweave/hooks/.specweave/logs/auto-stop-reasons.log +0 -1
- package/plugins/specweave/skills/.specweave/logs/reflect/auto-reflect.log +0 -15
- package/plugins/specweave/skills/.specweave/logs/reflect/reflect.log +0 -3
- package/plugins/specweave/skills/.specweave/logs/stop-auto.log +0 -1
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -180
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -1266
- package/plugins/specweave-github/lib/enhanced-github-sync.js +0 -249
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +0 -150
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -1260
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"increment-metadata.d.ts","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"increment-metadata.d.ts","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.451",
|
|
4
4
|
"description": "100+ domain-expert AI skills — PM, Architect, Frontend, QA, Security and more. Skills learn your team's patterns permanently. Spec-first planning, autonomous execution, multi-agent teams, synced to GitHub/JIRA. Claude Code, Cursor, Copilot & more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"bugs": {
|
|
74
74
|
"url": "https://github.com/anton-abyzov/specweave/issues"
|
|
75
75
|
},
|
|
76
|
-
"homepage": "https://
|
|
76
|
+
"homepage": "https://spec-weave.com",
|
|
77
77
|
"engines": {
|
|
78
78
|
"node": ">=20.12.0"
|
|
79
79
|
},
|
|
@@ -419,6 +419,8 @@ export interface IncrementMetadataV2 extends IncrementMetadata {
|
|
|
419
419
|
* ```
|
|
420
420
|
*/
|
|
421
421
|
prRefs?: PrRef[];
|
|
422
|
+
/** When true, skip living docs sync for this increment (per-increment override) */
|
|
423
|
+
skipLivingDocsSync?: boolean;
|
|
422
424
|
}
|
|
423
425
|
/**
|
|
424
426
|
* Pull request reference for a single repository (v1.0.437+)
|
|
@@ -229,7 +229,8 @@ class JiraSpecSync {
|
|
|
229
229
|
await this.updateStory(existingStory.key, {
|
|
230
230
|
summary: storySummary,
|
|
231
231
|
description: storyDescription,
|
|
232
|
-
status: us.status === "done" ? "Done" : us.status === "in-progress" ? "In Progress" : "To Do"
|
|
232
|
+
status: us.status === "done" ? "Done" : us.status === "in-progress" ? "In Progress" : "To Do",
|
|
233
|
+
epicLink: epicKey
|
|
233
234
|
});
|
|
234
235
|
updated.push(us.id);
|
|
235
236
|
console.log(` \u2705 Updated ${us.id}`);
|
|
@@ -257,8 +258,11 @@ class JiraSpecSync {
|
|
|
257
258
|
h1. ${spec.metadata.title}
|
|
258
259
|
|
|
259
260
|
*Spec ID*: ${spec.metadata.id}
|
|
261
|
+
|
|
260
262
|
*Priority*: ${spec.metadata.priority}
|
|
263
|
+
|
|
261
264
|
*Status*: ${spec.metadata.status}
|
|
265
|
+
|
|
262
266
|
${progressText}
|
|
263
267
|
|
|
264
268
|
----
|
|
@@ -470,6 +474,18 @@ ${acList}
|
|
|
470
474
|
if (updates.description) {
|
|
471
475
|
payload.fields.description = toDescription(updates.description, this.config.domain);
|
|
472
476
|
}
|
|
477
|
+
if (updates.epicLink) {
|
|
478
|
+
const { field: epicField, style } = await getEpicLinkFieldForProject(
|
|
479
|
+
this.config.domain,
|
|
480
|
+
this.config.projectKey,
|
|
481
|
+
{ email: this.config.email, apiToken: this.config.apiToken }
|
|
482
|
+
);
|
|
483
|
+
if (style === "next-gen") {
|
|
484
|
+
payload.fields.parent = { key: updates.epicLink };
|
|
485
|
+
} else {
|
|
486
|
+
payload.fields[epicField] = updates.epicLink;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
473
489
|
await this.client.put(`/issue/${storyKey}`, payload);
|
|
474
490
|
if (updates.status) {
|
|
475
491
|
await this.transitionIssue(storyKey, updates.status);
|
|
@@ -352,11 +352,12 @@ export class JiraSpecSync {
|
|
|
352
352
|
const existingStory = await this.findStoryByTitle(us.id);
|
|
353
353
|
|
|
354
354
|
if (existingStory) {
|
|
355
|
-
// UPDATE existing story
|
|
355
|
+
// UPDATE existing story (also set epicLink to fix orphaned stories)
|
|
356
356
|
await this.updateStory(existingStory.key, {
|
|
357
357
|
summary: storySummary,
|
|
358
358
|
description: storyDescription,
|
|
359
|
-
status: us.status === 'done' ? 'Done' : us.status === 'in-progress' ? 'In Progress' : 'To Do'
|
|
359
|
+
status: us.status === 'done' ? 'Done' : us.status === 'in-progress' ? 'In Progress' : 'To Do',
|
|
360
|
+
epicLink: epicKey
|
|
360
361
|
});
|
|
361
362
|
|
|
362
363
|
updated.push(us.id);
|
|
@@ -392,8 +393,11 @@ export class JiraSpecSync {
|
|
|
392
393
|
h1. ${spec.metadata.title}
|
|
393
394
|
|
|
394
395
|
*Spec ID*: ${spec.metadata.id}
|
|
396
|
+
|
|
395
397
|
*Priority*: ${spec.metadata.priority}
|
|
398
|
+
|
|
396
399
|
*Status*: ${spec.metadata.status}
|
|
400
|
+
|
|
397
401
|
${progressText}
|
|
398
402
|
|
|
399
403
|
----
|
|
@@ -649,7 +653,7 @@ ${acList}
|
|
|
649
653
|
*/
|
|
650
654
|
private async updateStory(
|
|
651
655
|
storyKey: string,
|
|
652
|
-
updates: { summary?: string; description?: string; status?: string }
|
|
656
|
+
updates: { summary?: string; description?: string; status?: string; epicLink?: string }
|
|
653
657
|
): Promise<void> {
|
|
654
658
|
const payload: any = {
|
|
655
659
|
fields: {}
|
|
@@ -663,6 +667,19 @@ ${acList}
|
|
|
663
667
|
payload.fields.description = toDescription(updates.description, this.config.domain);
|
|
664
668
|
}
|
|
665
669
|
|
|
670
|
+
if (updates.epicLink) {
|
|
671
|
+
const { field: epicField, style } = await getEpicLinkFieldForProject(
|
|
672
|
+
this.config.domain,
|
|
673
|
+
this.config.projectKey,
|
|
674
|
+
{ email: this.config.email, apiToken: this.config.apiToken }
|
|
675
|
+
);
|
|
676
|
+
if (style === 'next-gen') {
|
|
677
|
+
payload.fields.parent = { key: updates.epicLink };
|
|
678
|
+
} else {
|
|
679
|
+
payload.fields[epicField] = updates.epicLink;
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
|
|
666
683
|
await this.client.put(`/issue/${storyKey}`, payload);
|
|
667
684
|
|
|
668
685
|
// Handle status transition if needed
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"timestamp":"2026-01-04T16:11:43Z","event":"session_stop","reason":"No auto session active","details":"approve_called:main","success":false,"iteration":0,"increment":"none"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"timestamp":"2026-01-04T16:11:43Z","sessionId":"unknown","reason":"No auto session active","details":"approve_called:main","success":false,"iteration":0,"increment":"none","testsRun":false,"testsPassed":0,"testsFailed":0}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"ran": false,
|
|
3
|
-
"inputSummary": {
|
|
4
|
-
"transcriptLines": 266
|
|
5
|
-
},
|
|
6
|
-
"extracted": {
|
|
7
|
-
"skillLearnings": []
|
|
8
|
-
},
|
|
9
|
-
"written": {
|
|
10
|
-
"learningsAdded": 0,
|
|
11
|
-
"learningsSkippedDuplicate": 0
|
|
12
|
-
},
|
|
13
|
-
"durationMs": 1.4448749999999997,
|
|
14
|
-
"reason": "CLAUDE.md not found in project"
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[2026-02-03T22:03:06Z] APPROVE: No increments directory
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import { AdoClientV2 } from "./ado-client-v2.js";
|
|
2
|
-
import { EnhancedContentBuilder } from "../../../src/core/sync/enhanced-content-builder.js";
|
|
3
|
-
import { SpecIncrementMapper } from "../../../src/core/sync/spec-increment-mapper.js";
|
|
4
|
-
import { parseSpecContent } from "../../../src/core/spec-content-sync.js";
|
|
5
|
-
import path from "path";
|
|
6
|
-
import fs from "fs/promises";
|
|
7
|
-
async function syncSpecToAdoWithEnhancedContent(options) {
|
|
8
|
-
const { specPath, organization, project, dryRun = false, verbose = false } = options;
|
|
9
|
-
try {
|
|
10
|
-
const baseSpec = await parseSpecContent(specPath);
|
|
11
|
-
if (!baseSpec) {
|
|
12
|
-
return {
|
|
13
|
-
success: false,
|
|
14
|
-
action: "error",
|
|
15
|
-
error: "Failed to parse spec content"
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
if (verbose) {
|
|
19
|
-
console.log(`\u{1F4C4} Parsed spec: ${baseSpec.identifier.compact}`);
|
|
20
|
-
}
|
|
21
|
-
const specId = baseSpec.identifier.full || baseSpec.identifier.compact;
|
|
22
|
-
const rootDir = await findSpecWeaveRoot(specPath);
|
|
23
|
-
const mapper = new SpecIncrementMapper(rootDir);
|
|
24
|
-
const mapping = await mapper.mapSpecToIncrements(specId);
|
|
25
|
-
if (verbose) {
|
|
26
|
-
console.log(`\u{1F517} Found ${mapping.increments.length} related increments`);
|
|
27
|
-
}
|
|
28
|
-
const taskMapping = buildTaskMapping(mapping.increments, organization, project);
|
|
29
|
-
const architectureDocs = await findArchitectureDocs(rootDir, specId);
|
|
30
|
-
const enhancedSpec = {
|
|
31
|
-
...baseSpec,
|
|
32
|
-
summary: baseSpec.description,
|
|
33
|
-
taskMapping,
|
|
34
|
-
architectureDocs
|
|
35
|
-
};
|
|
36
|
-
const builder = new EnhancedContentBuilder();
|
|
37
|
-
const description = builder.buildExternalDescription(enhancedSpec);
|
|
38
|
-
if (verbose) {
|
|
39
|
-
console.log(`\u{1F4DD} Generated description: ${description.length} characters`);
|
|
40
|
-
}
|
|
41
|
-
if (dryRun) {
|
|
42
|
-
console.log("\u{1F50D} DRY RUN - Would create/update feature with:");
|
|
43
|
-
console.log(` Title: ${baseSpec.title}`);
|
|
44
|
-
console.log(` Description length: ${description.length}`);
|
|
45
|
-
return {
|
|
46
|
-
success: true,
|
|
47
|
-
action: "no-change",
|
|
48
|
-
tasksLinked: taskMapping?.tasks.length || 0
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
if (!organization || !project) {
|
|
52
|
-
return {
|
|
53
|
-
success: false,
|
|
54
|
-
action: "error",
|
|
55
|
-
error: "Azure DevOps organization/project not specified"
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
const profile = {
|
|
59
|
-
provider: "ado",
|
|
60
|
-
displayName: `${organization}/${project}`,
|
|
61
|
-
config: {
|
|
62
|
-
organization,
|
|
63
|
-
project
|
|
64
|
-
},
|
|
65
|
-
timeRange: { default: "1M", max: "6M" }
|
|
66
|
-
};
|
|
67
|
-
const pat = process.env.AZURE_DEVOPS_PAT || "";
|
|
68
|
-
const client = new AdoClientV2(profile, pat);
|
|
69
|
-
const existingFeature = await findExistingFeature(client, baseSpec.identifier.compact);
|
|
70
|
-
let result;
|
|
71
|
-
if (existingFeature) {
|
|
72
|
-
await client.updateWorkItem(existingFeature.id, {
|
|
73
|
-
title: `[${baseSpec.identifier.compact}] ${baseSpec.title}`,
|
|
74
|
-
description
|
|
75
|
-
});
|
|
76
|
-
result = {
|
|
77
|
-
success: true,
|
|
78
|
-
action: "updated",
|
|
79
|
-
featureId: existingFeature.id,
|
|
80
|
-
featureUrl: `https://dev.azure.com/${organization}/${project}/_workitems/edit/${existingFeature.id}`,
|
|
81
|
-
tasksLinked: taskMapping?.tasks.length || 0
|
|
82
|
-
};
|
|
83
|
-
} else {
|
|
84
|
-
const feature = await client.createEpic({
|
|
85
|
-
title: `[${baseSpec.identifier.compact}] ${baseSpec.title}`,
|
|
86
|
-
description,
|
|
87
|
-
tags: ["spec", "external-tool-sync"]
|
|
88
|
-
});
|
|
89
|
-
result = {
|
|
90
|
-
success: true,
|
|
91
|
-
action: "created",
|
|
92
|
-
featureId: feature.id,
|
|
93
|
-
featureUrl: `https://dev.azure.com/${organization}/${project}/_workitems/edit/${feature.id}`,
|
|
94
|
-
tasksLinked: taskMapping?.tasks.length || 0
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
if (verbose) {
|
|
98
|
-
console.log(`\u2705 ${result.action === "created" ? "Created" : "Updated"} feature #${result.featureId}`);
|
|
99
|
-
}
|
|
100
|
-
return result;
|
|
101
|
-
} catch (error) {
|
|
102
|
-
return {
|
|
103
|
-
success: false,
|
|
104
|
-
action: "error",
|
|
105
|
-
error: error.message
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
async function findSpecWeaveRoot(specPath) {
|
|
110
|
-
let currentDir = path.dirname(specPath);
|
|
111
|
-
while (true) {
|
|
112
|
-
const specweaveDir = path.join(currentDir, ".specweave");
|
|
113
|
-
try {
|
|
114
|
-
await fs.access(specweaveDir);
|
|
115
|
-
return currentDir;
|
|
116
|
-
} catch {
|
|
117
|
-
const parentDir = path.dirname(currentDir);
|
|
118
|
-
if (parentDir === currentDir) {
|
|
119
|
-
throw new Error(".specweave directory not found");
|
|
120
|
-
}
|
|
121
|
-
currentDir = parentDir;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
function buildTaskMapping(increments, organization, project) {
|
|
126
|
-
if (increments.length === 0) return void 0;
|
|
127
|
-
const firstIncrement = increments[0];
|
|
128
|
-
const tasks = firstIncrement.tasks.map((task) => ({
|
|
129
|
-
id: task.id,
|
|
130
|
-
title: task.title,
|
|
131
|
-
userStories: task.userStories
|
|
132
|
-
}));
|
|
133
|
-
// Derive repository name from git remote or fall back to project name
|
|
134
|
-
let repoName = project;
|
|
135
|
-
try {
|
|
136
|
-
const { execSync } = require("child_process");
|
|
137
|
-
const remoteUrl = execSync("git remote get-url origin", { encoding: "utf-8" }).trim();
|
|
138
|
-
const match = remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);
|
|
139
|
-
if (match) repoName = match[1];
|
|
140
|
-
} catch {
|
|
141
|
-
// Fallback to project name if git is unavailable
|
|
142
|
-
}
|
|
143
|
-
return {
|
|
144
|
-
incrementId: firstIncrement.id,
|
|
145
|
-
tasks,
|
|
146
|
-
tasksUrl: `https://dev.azure.com/${organization}/${project}/_git/${repoName}?path=/.specweave/increments/${firstIncrement.id}/tasks.md`
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
async function findArchitectureDocs(rootDir, specId) {
|
|
150
|
-
const docs = [];
|
|
151
|
-
const archDir = path.join(rootDir, ".specweave/docs/internal/architecture");
|
|
152
|
-
try {
|
|
153
|
-
const adrDir = path.join(archDir, "adr");
|
|
154
|
-
try {
|
|
155
|
-
const adrs = await fs.readdir(adrDir);
|
|
156
|
-
const relatedAdrs = adrs.filter((file) => file.includes(specId.replace("spec-", "")));
|
|
157
|
-
for (const adr of relatedAdrs) {
|
|
158
|
-
docs.push({
|
|
159
|
-
type: "adr",
|
|
160
|
-
path: path.join(adrDir, adr),
|
|
161
|
-
title: adr.replace(".md", "").replace(/-/g, " ")
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
} catch {
|
|
165
|
-
}
|
|
166
|
-
} catch {
|
|
167
|
-
}
|
|
168
|
-
return docs;
|
|
169
|
-
}
|
|
170
|
-
async function findExistingFeature(client, specId) {
|
|
171
|
-
try {
|
|
172
|
-
const features = await client.queryWorkItems(`[System.Title] Contains '[${specId}]' AND [System.WorkItemType] = 'Feature'`);
|
|
173
|
-
return features[0] || null;
|
|
174
|
-
} catch {
|
|
175
|
-
return null;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
export {
|
|
179
|
-
syncSpecToAdoWithEnhancedContent
|
|
180
|
-
};
|