specweave 0.21.0 → 0.21.1
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/.claude-plugin/marketplace.json +44 -0
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +108 -0
- package/dist/locales/en/cli.json +287 -0
- package/dist/locales/en/errors.json +7 -0
- package/dist/locales/en/templates.json +6 -0
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +41 -0
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +108 -0
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +108 -0
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +108 -0
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +108 -0
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +269 -0
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +108 -0
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +25 -0
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +191 -0
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
- package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
- package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
- package/dist/spec-parser.js +629 -0
- package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -1
- package/dist/src/core/increment/conflict-resolver.js +4 -1
- package/dist/src/core/increment/conflict-resolver.js.map +1 -1
- package/dist/src/core/increment/duplicate-detector.d.ts +3 -0
- package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -1
- package/dist/src/core/increment/duplicate-detector.js +22 -4
- package/dist/src/core/increment/duplicate-detector.js.map +1 -1
- package/dist/src/core/sync/spec-content-sync.d.ts +88 -0
- package/dist/src/core/sync/spec-content-sync.d.ts.map +1 -0
- package/dist/src/core/sync/spec-content-sync.js +5 -0
- package/dist/src/core/sync/spec-content-sync.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
- package/src/templates/AGENTS.md.template +41 -6
|
@@ -44,6 +44,9 @@ export interface IncrementLocation {
|
|
|
44
44
|
export declare function detectAllDuplicates(rootDir: string): Promise<DuplicateReport>;
|
|
45
45
|
/**
|
|
46
46
|
* Detect duplicates for a specific increment number
|
|
47
|
+
*
|
|
48
|
+
* Returns ALL increments that have the given number, even if there's only one.
|
|
49
|
+
* This is used for validation before creating a new increment.
|
|
47
50
|
*/
|
|
48
51
|
export declare function detectDuplicatesByNumber(incrementNumber: string, rootDir: string): Promise<IncrementLocation[]>;
|
|
49
52
|
//# sourceMappingURL=duplicate-detector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-detector.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/duplicate-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAsD1B;AAED
|
|
1
|
+
{"version":3,"file":"duplicate-detector.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/duplicate-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAsD1B;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B"}
|
|
@@ -63,13 +63,31 @@ export async function detectAllDuplicates(rootDir) {
|
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Detect duplicates for a specific increment number
|
|
66
|
+
*
|
|
67
|
+
* Returns ALL increments that have the given number, even if there's only one.
|
|
68
|
+
* This is used for validation before creating a new increment.
|
|
66
69
|
*/
|
|
67
70
|
export async function detectDuplicatesByNumber(incrementNumber, rootDir) {
|
|
68
|
-
const
|
|
69
|
-
//
|
|
71
|
+
const incrementsDir = path.join(rootDir, '.specweave', 'increments');
|
|
72
|
+
// Check if increments directory exists
|
|
73
|
+
if (!await fs.pathExists(incrementsDir)) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
// Normalize increment number (pad to 4 digits)
|
|
70
77
|
const normalizedNumber = incrementNumber.padStart(4, '0');
|
|
71
|
-
|
|
72
|
-
|
|
78
|
+
// Scan all locations in parallel
|
|
79
|
+
const [active, archived, abandoned] = await Promise.all([
|
|
80
|
+
scanDirectory(incrementsDir, false),
|
|
81
|
+
scanDirectory(path.join(incrementsDir, '_archive'), false),
|
|
82
|
+
scanDirectory(path.join(incrementsDir, '_abandoned'), false)
|
|
83
|
+
]);
|
|
84
|
+
// Combine all increments and filter by number
|
|
85
|
+
const allIncrements = [...active, ...archived, ...abandoned];
|
|
86
|
+
const matchingIncrements = allIncrements.filter(inc => {
|
|
87
|
+
const number = extractIncrementNumber(inc.name);
|
|
88
|
+
return number === normalizedNumber;
|
|
89
|
+
});
|
|
90
|
+
return matchingIncrements;
|
|
73
91
|
}
|
|
74
92
|
/**
|
|
75
93
|
* Scan a directory for increment folders
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-detector.js","sourceRoot":"","sources":["../../../../src/core/increment/duplicate-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAqC5B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe;IAEf,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAErE,uCAAuC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC;QACnC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC;QAC1D,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC;KAC7D,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACxD,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;IAE7D,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,6BAA6B;QAEpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,sEAAsE;IACtE,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,mBAAmB;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACvC,UAAU,CAAC,IAAI,CAAC;gBACd,eAAe,EAAE,MAAM;gBACvB,SAAS;gBACT,iBAAiB,EAAE,MAAM;gBACzB,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;gBACnD,gBAAgB,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QACV,YAAY,EAAE,aAAa,CAAC,MAAM;QAClC,cAAc,EAAE,UAAU,CAAC,MAAM;KAClC,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"duplicate-detector.js","sourceRoot":"","sources":["../../../../src/core/increment/duplicate-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for spec content synchronization with external tools
|
|
3
|
+
*/
|
|
4
|
+
export interface SpecIdentifier {
|
|
5
|
+
/** Compact format: SPEC-0031 */
|
|
6
|
+
compact: string;
|
|
7
|
+
/** Full format: spec-0031-external-tool-status-sync */
|
|
8
|
+
full: string;
|
|
9
|
+
}
|
|
10
|
+
export interface AcceptanceCriterion {
|
|
11
|
+
/** AC identifier: AC-US1-01 */
|
|
12
|
+
id: string;
|
|
13
|
+
/** Description of the acceptance criterion */
|
|
14
|
+
description: string;
|
|
15
|
+
/** Priority: P1, P2, P3 */
|
|
16
|
+
priority?: string;
|
|
17
|
+
/** Whether this criterion is testable */
|
|
18
|
+
testable?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface UserStory {
|
|
21
|
+
/** User story ID: 001, 002, etc. */
|
|
22
|
+
id: string;
|
|
23
|
+
/** Title of the user story */
|
|
24
|
+
title: string;
|
|
25
|
+
/** As a... (role) */
|
|
26
|
+
asA: string;
|
|
27
|
+
/** I want... (action) */
|
|
28
|
+
iWant: string;
|
|
29
|
+
/** So that... (benefit) */
|
|
30
|
+
soThat: string;
|
|
31
|
+
/** Acceptance criteria for this user story */
|
|
32
|
+
acceptanceCriteria: AcceptanceCriterion[];
|
|
33
|
+
}
|
|
34
|
+
export interface Task {
|
|
35
|
+
/** Task ID: T-001, T-002, etc. */
|
|
36
|
+
id: string;
|
|
37
|
+
/** Title of the task */
|
|
38
|
+
title: string;
|
|
39
|
+
/** User stories this task implements */
|
|
40
|
+
userStories: string[];
|
|
41
|
+
/** GitHub issue number (if synced) */
|
|
42
|
+
githubIssue?: number;
|
|
43
|
+
}
|
|
44
|
+
export interface TaskMapping {
|
|
45
|
+
/** Increment ID this mapping belongs to */
|
|
46
|
+
incrementId: string;
|
|
47
|
+
/** Tasks from the increment */
|
|
48
|
+
tasks: Task[];
|
|
49
|
+
/** URL to tasks.md file */
|
|
50
|
+
tasksUrl: string;
|
|
51
|
+
}
|
|
52
|
+
export interface ArchitectureDoc {
|
|
53
|
+
/** Type of architecture document */
|
|
54
|
+
type: 'adr' | 'hld' | 'diagram';
|
|
55
|
+
/** Path to the document */
|
|
56
|
+
path: string;
|
|
57
|
+
/** Title/description of the document */
|
|
58
|
+
title: string;
|
|
59
|
+
}
|
|
60
|
+
export interface SourceLinks {
|
|
61
|
+
/** Link to spec.md */
|
|
62
|
+
spec?: string;
|
|
63
|
+
/** Link to plan.md */
|
|
64
|
+
plan?: string;
|
|
65
|
+
/** Link to tasks.md */
|
|
66
|
+
tasks?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface SpecContent {
|
|
69
|
+
/** Spec identifier */
|
|
70
|
+
identifier: SpecIdentifier;
|
|
71
|
+
/** Title of the spec */
|
|
72
|
+
title: string;
|
|
73
|
+
/** Project this spec belongs to */
|
|
74
|
+
project: string;
|
|
75
|
+
/** Executive summary */
|
|
76
|
+
summary: string;
|
|
77
|
+
/** User stories */
|
|
78
|
+
userStories: UserStory[];
|
|
79
|
+
/** Metadata (priority, etc.) */
|
|
80
|
+
metadata: Record<string, any>;
|
|
81
|
+
/** Task mapping (optional) */
|
|
82
|
+
taskMapping?: TaskMapping;
|
|
83
|
+
/** Architecture documents (optional) */
|
|
84
|
+
architectureDocs?: ArchitectureDoc[];
|
|
85
|
+
/** Source links (optional) */
|
|
86
|
+
sourceLinks?: SourceLinks;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=spec-content-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-content-sync.d.ts","sourceRoot":"","sources":["../../../../src/core/sync/spec-content-sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,IAAI;IACnB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IAChC,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,sBAAsB;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-content-sync.js","sourceRoot":"","sources":["../../../../src/core/sync/spec-content-sync.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/adapters/adapter-base.ts","../src/adapters/adapter-interface.ts","../src/adapters/adapter-loader.ts","../src/adapters/agents-md-generator.ts","../src/adapters/claude-md-generator.ts","../src/adapters/doc-generator.ts","../src/adapters/claude/adapter.ts","../src/adapters/codex/adapter.ts","../src/adapters/cursor/adapter.ts","../src/adapters/gemini/adapter.ts","../src/adapters/generic/adapter.ts","../src/cli/commands/abandon.ts","../src/cli/commands/check-discipline.ts","../src/cli/commands/cicd-monitor.ts","../src/cli/commands/detect-project.ts","../src/cli/commands/detect-specs.ts","../src/cli/commands/import-docs.ts","../src/cli/commands/init-multiproject.ts","../src/cli/commands/init.ts","../src/cli/commands/install.ts","../src/cli/commands/list.ts","../src/cli/commands/migrate-to-multiproject.ts","../src/cli/commands/migrate-to-profiles.ts","../src/cli/commands/pause.ts","../src/cli/commands/qa.ts","../src/cli/commands/resume.ts","../src/cli/commands/revert-wip-limit.ts","../src/cli/commands/status-line.ts","../src/cli/commands/status.ts","../src/cli/commands/switch-project.ts","../src/cli/commands/sync-spec-commits.ts","../src/cli/commands/sync-spec-content.ts","../src/cli/commands/validate-jira.ts","../src/cli/commands/validate-parent-repo.ts","../src/cli/commands/validate-plugins.ts","../src/cli/helpers/github/increment-profile-selector.ts","../src/cli/helpers/github/profile-manager.ts","../src/cli/helpers/issue-tracker/ado.ts","../src/cli/helpers/issue-tracker/github-multi-repo.ts","../src/cli/helpers/issue-tracker/github.ts","../src/cli/helpers/issue-tracker/index.ts","../src/cli/helpers/issue-tracker/jira.ts","../src/cli/helpers/issue-tracker/types.ts","../src/cli/helpers/issue-tracker/utils.ts","../src/core/comment-builder.ts","../src/core/config-manager.ts","../src/core/cost-tracker.ts","../src/core/credentials-manager.ts","../src/core/increment-status.ts","../src/core/plugin-loader.ts","../src/core/project-manager.ts","../src/core/project-structure-detector.ts","../src/core/rfc-generator-v2.ts","../src/core/spec-content-sync.ts","../src/core/spec-detector.ts","../src/core/spec-identifier-detector.ts","../src/core/spec-task-mapper.ts","../src/core/brownfield/analyzer.ts","../src/core/brownfield/importer.ts","../src/core/cicd/config-loader.ts","../src/core/cicd/index.ts","../src/core/cicd/monitor-service.ts","../src/core/cicd/notifier.ts","../src/core/cicd/parent-repo-validator.ts","../src/core/cicd/state-manager.ts","../src/core/cicd/types.ts","../src/core/cicd/workflow-monitor.ts","../src/core/i18n/language-detector.ts","../src/core/i18n/language-manager.ts","../src/core/i18n/language-registry.ts","../src/core/i18n/locale-manager.ts","../src/core/i18n/system-prompt-injector.ts","../src/core/i18n/types.ts","../src/core/increment/active-increment-manager.ts","../src/core/increment/discipline-checker.ts","../src/core/increment/limits.ts","../src/core/increment/metadata-manager.ts","../src/core/increment/metadata-validator.ts","../src/core/increment/status-commands.ts","../src/core/increment/types.ts","../src/core/living-docs/content-classifier.ts","../src/core/living-docs/content-distributor.ts","../src/core/living-docs/content-parser.ts","../src/core/living-docs/cross-linker.ts","../src/core/living-docs/index.ts","../src/core/living-docs/project-detector.ts","../src/core/living-docs/spec-distributor.ts","../src/core/living-docs/types.ts","../src/core/qa/qa-runner.ts","../src/core/qa/quality-gate-decider.ts","../src/core/qa/risk-calculator.ts","../src/core/qa/types.ts","../src/core/repo-structure/folder-detector.ts","../src/core/repo-structure/github-validator.ts","../src/core/repo-structure/prompt-consolidator.ts","../src/core/repo-structure/repo-id-generator.ts","../src/core/repo-structure/repo-structure-manager.ts","../src/core/repo-structure/setup-state-manager.ts","../src/core/repo-structure/setup-summary.ts","../src/core/specs/spec-metadata-manager.ts","../src/core/specs/spec-parser.ts","../src/core/status-line/status-line-manager.ts","../src/core/status-line/types.ts","../src/core/sync/bidirectional-engine.ts","../src/core/sync/conflict-resolver.ts","../src/core/sync/enhanced-content-builder.ts","../src/core/sync/folder-mapper.ts","../src/core/sync/profile-manager.ts","../src/core/sync/profile-selector.ts","../src/core/sync/profile-validator.ts","../src/core/sync/project-context.ts","../src/core/sync/rate-limiter.ts","../src/core/sync/retry-logic.ts","../src/core/sync/spec-increment-mapper.ts","../src/core/sync/status-cache.ts","../src/core/sync/status-mapper.ts","../src/core/sync/status-sync-engine.ts","../src/core/sync/sync-event-logger.ts","../src/core/sync/time-range-selector.ts","../src/core/sync/workflow-detector.ts","../src/core/types/config.ts","../src/core/types/increment-metadata.ts","../src/core/types/plugin.ts","../src/core/types/spec-identifier.ts","../src/core/types/spec-metadata.ts","../src/core/types/sync-profile.ts","../src/integrations/ado/ado-client.ts","../src/integrations/jira/jira-client.ts","../src/integrations/jira/jira-incremental-mapper.ts","../src/integrations/jira/jira-mapper.ts","../src/metrics/dora-calculator.ts","../src/metrics/github-client.ts","../src/metrics/report-generator.ts","../src/metrics/types.ts","../src/metrics/calculators/change-failure-rate.ts","../src/metrics/calculators/deployment-frequency.ts","../src/metrics/calculators/lead-time.ts","../src/metrics/calculators/mttr.ts","../src/metrics/utils/percentile.ts","../src/metrics/utils/tier-classifier.ts","../src/testing/test-generator.ts","../src/types/cost-tracking.ts","../src/types/model-selection.ts","../src/utils/agents-md-compiler.ts","../src/utils/auth-helpers.ts","../src/utils/auto-install.ts","../src/utils/claude-cli-detector.ts","../src/utils/cost-reporter.ts","../src/utils/env-file-generator.ts","../src/utils/env-file.ts","../src/utils/env-multi-project-parser.ts","../src/utils/esm-helpers.ts","../src/utils/execfilenothrow.ts","../src/utils/external-resource-validator.ts","../src/utils/generate-skills-index.ts","../src/utils/git-detector.ts","../src/utils/git-utils.ts","../src/utils/model-selection.ts","../src/utils/plugin-validator.ts","../src/utils/pricing-constants.ts","../src/utils/project-detection.ts","../src/utils/project-mapper.ts","../src/utils/project-validator.ts","../src/utils/spec-parser.ts","../src/utils/spec-splitter.ts","../src/utils/string-utils.ts","../src/utils/translation.ts","../src/utils/docs-preview/config-generator.ts","../src/utils/docs-preview/docusaurus-setup.ts","../src/utils/docs-preview/index.ts","../src/utils/docs-preview/package-installer.ts","../src/utils/docs-preview/server-manager.ts","../src/utils/docs-preview/sidebar-builder.ts","../src/utils/docs-preview/types.ts","../plugins/specweave/lib/hooks/git-diff-analyzer.ts","../plugins/specweave/lib/hooks/invoke-translator-skill.ts","../plugins/specweave/lib/hooks/prepare-reflection-context.ts","../plugins/specweave/lib/hooks/reflection-config-loader.ts","../plugins/specweave/lib/hooks/reflection-parser.ts","../plugins/specweave/lib/hooks/reflection-prompt-builder.ts","../plugins/specweave/lib/hooks/reflection-storage.ts","../plugins/specweave/lib/hooks/run-self-reflection.ts","../plugins/specweave/lib/hooks/sync-living-docs.ts","../plugins/specweave/lib/hooks/translate-file.ts","../plugins/specweave/lib/hooks/translate-living-docs.ts","../plugins/specweave/lib/hooks/update-tasks-md.ts","../plugins/specweave/lib/hooks/types/reflection-types.ts","../plugins/specweave-ado/lib/ado-board-resolver.d.ts","../plugins/specweave-ado/lib/ado-client-v2.ts","../plugins/specweave-ado/lib/ado-client.ts","../plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts","../plugins/specweave-ado/lib/ado-spec-commit-sync.ts","../plugins/specweave-ado/lib/ado-spec-content-sync.ts","../plugins/specweave-ado/lib/ado-spec-sync.ts","../plugins/specweave-ado/lib/ado-status-sync.ts","../plugins/specweave-ado/lib/enhanced-ado-sync.ts","../plugins/specweave-ado/lib/project-selector.d.ts","../plugins/specweave-github/lib/cli-sync-increment-changes.ts","../plugins/specweave-github/lib/enhanced-github-sync.ts","../plugins/specweave-github/lib/github-board-resolver.d.ts","../plugins/specweave-github/lib/github-client-v2.ts","../plugins/specweave-github/lib/github-client.ts","../plugins/specweave-github/lib/github-epic-sync.ts","../plugins/specweave-github/lib/github-hierarchical-sync.d.ts","../plugins/specweave-github/lib/github-issue-updater.ts","../plugins/specweave-github/lib/github-spec-commit-sync.ts","../plugins/specweave-github/lib/github-spec-content-sync.ts","../plugins/specweave-github/lib/github-spec-sync.ts","../plugins/specweave-github/lib/github-status-sync.ts","../plugins/specweave-github/lib/github-sync-bidirectional.ts","../plugins/specweave-github/lib/github-sync-increment-changes.ts","../plugins/specweave-github/lib/index.ts","../plugins/specweave-github/lib/repo-selector.d.ts","../plugins/specweave-github/lib/subtask-sync.ts","../plugins/specweave-github/lib/task-parser.ts","../plugins/specweave-github/lib/task-sync.ts","../plugins/specweave-github/lib/types.ts","../plugins/specweave-jira/lib/enhanced-jira-sync.ts","../plugins/specweave-jira/lib/jira-board-resolver.d.ts","../plugins/specweave-jira/lib/jira-epic-sync.ts","../plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts","../plugins/specweave-jira/lib/jira-spec-commit-sync.ts","../plugins/specweave-jira/lib/jira-spec-content-sync.ts","../plugins/specweave-jira/lib/jira-spec-sync.ts","../plugins/specweave-jira/lib/jira-status-sync.ts","../plugins/specweave-jira/lib/project-selector.d.ts","../plugins/specweave-jira/lib/reorganization-detector.ts","../plugins/specweave-jira/lib/setup-wizard.ts","../plugins/specweave-release/lib/dashboard-generator.ts","../plugins/specweave-release/lib/dora-tracker.ts"],"errors":true,"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.1",
|
|
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",
|
|
@@ -0,0 +1,170 @@
|
|
|
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
|
+
return {
|
|
134
|
+
incrementId: firstIncrement.id,
|
|
135
|
+
tasks,
|
|
136
|
+
tasksUrl: `https://dev.azure.com/${organization}/${project}/_git/repo?path=/.specweave/increments/${firstIncrement.id}/tasks.md`
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
async function findArchitectureDocs(rootDir, specId) {
|
|
140
|
+
const docs = [];
|
|
141
|
+
const archDir = path.join(rootDir, ".specweave/docs/internal/architecture");
|
|
142
|
+
try {
|
|
143
|
+
const adrDir = path.join(archDir, "adr");
|
|
144
|
+
try {
|
|
145
|
+
const adrs = await fs.readdir(adrDir);
|
|
146
|
+
const relatedAdrs = adrs.filter((file) => file.includes(specId.replace("spec-", "")));
|
|
147
|
+
for (const adr of relatedAdrs) {
|
|
148
|
+
docs.push({
|
|
149
|
+
type: "adr",
|
|
150
|
+
path: path.join(adrDir, adr),
|
|
151
|
+
title: adr.replace(".md", "").replace(/-/g, " ")
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
} catch {
|
|
155
|
+
}
|
|
156
|
+
} catch {
|
|
157
|
+
}
|
|
158
|
+
return docs;
|
|
159
|
+
}
|
|
160
|
+
async function findExistingFeature(client, specId) {
|
|
161
|
+
try {
|
|
162
|
+
const features = await client.queryWorkItems(`[System.Title] Contains '[${specId}]' AND [System.WorkItemType] = 'Feature'`);
|
|
163
|
+
return features[0] || null;
|
|
164
|
+
} catch {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
export {
|
|
169
|
+
syncSpecToAdoWithEnhancedContent
|
|
170
|
+
};
|
|
@@ -127,7 +127,7 @@ Search pattern: `#workflow-{name}`
|
|
|
127
127
|
- [Increment Closure](#workflow-increment-closure)
|
|
128
128
|
- [Documentation Updates](#workflow-documentation-updates)
|
|
129
129
|
|
|
130
|
-
### 🆘
|
|
130
|
+
### 🆘 Common Issues (When Stuck)
|
|
131
131
|
Search pattern: `#troubleshoot-{topic}`
|
|
132
132
|
|
|
133
133
|
- [Skills Not Working](#troubleshoot-skills)
|
|
@@ -2365,7 +2365,7 @@ When you encounter a new task:
|
|
|
2365
2365
|
|
|
2366
2366
|
**Symptoms**: Command workflows seem to take forever
|
|
2367
2367
|
|
|
2368
|
-
**
|
|
2368
|
+
**Solutions**:
|
|
2369
2369
|
1. **Loading entire AGENTS.md** - This is normal!
|
|
2370
2370
|
- File is 2000+ lines (comprehensive)
|
|
2371
2371
|
- Use search (Ctrl+F) to jump to relevant sections
|
|
@@ -2417,7 +2417,9 @@ When you encounter a new task:
|
|
|
2417
2417
|
|
|
2418
2418
|
**Symptoms**: GitHub/Jira sync fails with auth errors
|
|
2419
2419
|
|
|
2420
|
-
**Solutions
|
|
2420
|
+
**Solutions**:
|
|
2421
|
+
|
|
2422
|
+
**For GitHub**:
|
|
2421
2423
|
```bash
|
|
2422
2424
|
# Check auth status
|
|
2423
2425
|
gh auth status
|
|
@@ -2429,7 +2431,7 @@ gh auth login
|
|
|
2429
2431
|
gh repo view
|
|
2430
2432
|
```
|
|
2431
2433
|
|
|
2432
|
-
**
|
|
2434
|
+
**For Jira**:
|
|
2433
2435
|
```bash
|
|
2434
2436
|
# Check config
|
|
2435
2437
|
jira config list
|
|
@@ -2441,7 +2443,7 @@ jira init
|
|
|
2441
2443
|
jira issue list --project PROJ
|
|
2442
2444
|
```
|
|
2443
2445
|
|
|
2444
|
-
**
|
|
2446
|
+
**For Azure DevOps**:
|
|
2445
2447
|
```bash
|
|
2446
2448
|
# Check auth
|
|
2447
2449
|
az account show
|
|
@@ -2484,6 +2486,39 @@ az devops configure --defaults organization=https://dev.azure.com/YOUR_ORG proje
|
|
|
2484
2486
|
|
|
2485
2487
|
---
|
|
2486
2488
|
|
|
2489
|
+
### Version Conflicts {#troubleshoot-version-conflicts}
|
|
2490
|
+
|
|
2491
|
+
**Symptoms**: SpecWeave commands fail with unexpected errors, missing files, or format incompatibilities
|
|
2492
|
+
|
|
2493
|
+
**Solutions**:
|
|
2494
|
+
1. **Check SpecWeave version**:
|
|
2495
|
+
```bash
|
|
2496
|
+
specweave --version
|
|
2497
|
+
# Compare with project requirements
|
|
2498
|
+
```
|
|
2499
|
+
|
|
2500
|
+
2. **Update SpecWeave CLI**:
|
|
2501
|
+
```bash
|
|
2502
|
+
npm install -g specweave@latest
|
|
2503
|
+
# Or for local project:
|
|
2504
|
+
npm install specweave@latest
|
|
2505
|
+
```
|
|
2506
|
+
|
|
2507
|
+
3. **Check project `.specweave/config.json`**:
|
|
2508
|
+
```bash
|
|
2509
|
+
cat .specweave/config.json | grep version
|
|
2510
|
+
# Verify compatible with CLI version
|
|
2511
|
+
```
|
|
2512
|
+
|
|
2513
|
+
4. **Migrate if needed**:
|
|
2514
|
+
- Check CHANGELOG.md for breaking changes
|
|
2515
|
+
- Follow migration guide for your version
|
|
2516
|
+
- Update templates and plugins
|
|
2517
|
+
|
|
2518
|
+
**Prevention**: Pin SpecWeave version in package.json and update intentionally
|
|
2519
|
+
|
|
2520
|
+
---
|
|
2521
|
+
|
|
2487
2522
|
### Multi-Tool Confusion {#troubleshoot-multi-tool}
|
|
2488
2523
|
|
|
2489
2524
|
**Symptoms**: Instructions mention Claude Code but I'm using Cursor/Copilot
|
|
@@ -2492,7 +2527,7 @@ az devops configure --defaults organization=https://dev.azure.com/YOUR_ORG proje
|
|
|
2492
2527
|
1. **Look for multi-tool callouts**:
|
|
2493
2528
|
```markdown
|
|
2494
2529
|
**For Claude Code**: ✅ Automatic via hooks
|
|
2495
|
-
**For Other Tools**: ⚠️
|
|
2530
|
+
**For Other Tools**: ⚠️ manual sync required
|
|
2496
2531
|
```
|
|
2497
2532
|
|
|
2498
2533
|
2. **If instruction says "automatic"**:
|