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.
Files changed (64) hide show
  1. package/.claude-plugin/marketplace.json +44 -0
  2. package/dist/locales/de/.gitkeep +0 -0
  3. package/dist/locales/de/cli.json +108 -0
  4. package/dist/locales/en/cli.json +287 -0
  5. package/dist/locales/en/errors.json +7 -0
  6. package/dist/locales/en/templates.json +6 -0
  7. package/dist/locales/es/.gitkeep +0 -0
  8. package/dist/locales/es/cli.json +41 -0
  9. package/dist/locales/fr/.gitkeep +0 -0
  10. package/dist/locales/fr/cli.json +108 -0
  11. package/dist/locales/ja/.gitkeep +0 -0
  12. package/dist/locales/ja/cli.json +108 -0
  13. package/dist/locales/ko/.gitkeep +0 -0
  14. package/dist/locales/ko/cli.json +108 -0
  15. package/dist/locales/pt/.gitkeep +0 -0
  16. package/dist/locales/pt/cli.json +108 -0
  17. package/dist/locales/ru/.gitkeep +0 -0
  18. package/dist/locales/ru/cli.json +269 -0
  19. package/dist/locales/zh/.gitkeep +0 -0
  20. package/dist/locales/zh/cli.json +108 -0
  21. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +25 -0
  22. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +1 -0
  23. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +191 -0
  24. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +1 -0
  25. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  26. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  27. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  28. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  29. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  30. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  31. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  32. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  33. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  34. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  35. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  36. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  37. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  38. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  39. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  40. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  41. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  42. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  43. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  44. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  45. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  46. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  47. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  48. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  49. package/dist/spec-parser.js +629 -0
  50. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -1
  51. package/dist/src/core/increment/conflict-resolver.js +4 -1
  52. package/dist/src/core/increment/conflict-resolver.js.map +1 -1
  53. package/dist/src/core/increment/duplicate-detector.d.ts +3 -0
  54. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -1
  55. package/dist/src/core/increment/duplicate-detector.js +22 -4
  56. package/dist/src/core/increment/duplicate-detector.js.map +1 -1
  57. package/dist/src/core/sync/spec-content-sync.d.ts +88 -0
  58. package/dist/src/core/sync/spec-content-sync.d.ts.map +1 -0
  59. package/dist/src/core/sync/spec-content-sync.js +5 -0
  60. package/dist/src/core/sync/spec-content-sync.js.map +1 -0
  61. package/dist/tsconfig.tsbuildinfo +1 -0
  62. package/package.json +1 -1
  63. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  64. 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;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAW9B"}
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 report = await detectAllDuplicates(rootDir);
69
- // Normalize increment number (remove leading zeros if present)
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
- const duplicate = report.duplicates.find(d => d.incrementNumber === normalizedNumber);
72
- return duplicate ? duplicate.locations : [];
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":"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"}
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,5 @@
1
+ /**
2
+ * Type definitions for spec content synchronization with external tools
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=spec-content-sync.js.map
@@ -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.0",
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
- ### 🆘 Troubleshooting (When Stuck)
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
- **Causes & Solutions**:
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 (GitHub)**:
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
- **Solutions (Jira)**:
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
- **Solutions (Azure DevOps)**:
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**: ⚠️ Manual sync required
2530
+ **For Other Tools**: ⚠️ manual sync required
2496
2531
  ```
2497
2532
 
2498
2533
  2. **If instruction says "automatic"**: