specweave 0.17.16 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CLAUDE.md +405 -2495
  2. package/README.md +92 -2
  3. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  4. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +188 -36
  5. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  6. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts +54 -0
  7. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts.map +1 -0
  8. package/dist/plugins/specweave-ado/lib/ado-status-sync.js +86 -0
  9. package/dist/plugins/specweave-ado/lib/ado-status-sync.js.map +1 -0
  10. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +139 -0
  11. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts.map +1 -0
  12. package/dist/plugins/specweave-github/lib/duplicate-detector.js +389 -0
  13. package/dist/plugins/specweave-github/lib/duplicate-detector.js.map +1 -0
  14. package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts +26 -0
  15. package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/enhanced-github-sync.js +249 -0
  17. package/dist/plugins/specweave-github/lib/enhanced-github-sync.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/github-client.d.ts +1 -1
  19. package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -1
  20. package/dist/plugins/specweave-github/lib/github-client.js +25 -13
  21. package/dist/plugins/specweave-github/lib/github-client.js.map +1 -1
  22. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts +83 -0
  23. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts.map +1 -0
  24. package/dist/plugins/specweave-github/lib/github-epic-sync.js +451 -0
  25. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -0
  26. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts +43 -0
  27. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts.map +1 -0
  28. package/dist/plugins/specweave-github/lib/github-status-sync.js +82 -0
  29. package/dist/plugins/specweave-github/lib/github-status-sync.js.map +1 -0
  30. package/dist/plugins/specweave-github/lib/task-sync.d.ts +5 -0
  31. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -1
  32. package/dist/plugins/specweave-github/lib/task-sync.js +38 -2
  33. package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -1
  34. package/dist/plugins/specweave-jira/lib/jira-epic-sync.d.ts +66 -0
  35. package/dist/plugins/specweave-jira/lib/jira-epic-sync.d.ts.map +1 -0
  36. package/dist/plugins/specweave-jira/lib/jira-epic-sync.js +274 -0
  37. package/dist/plugins/specweave-jira/lib/jira-epic-sync.js.map +1 -0
  38. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts +56 -0
  39. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts.map +1 -0
  40. package/dist/plugins/specweave-jira/lib/jira-status-sync.js +93 -0
  41. package/dist/plugins/specweave-jira/lib/jira-status-sync.js.map +1 -0
  42. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  43. package/dist/src/cli/helpers/issue-tracker/index.js +48 -3
  44. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  45. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +142 -0
  46. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -0
  47. package/dist/src/core/living-docs/hierarchy-mapper.js +453 -0
  48. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -0
  49. package/dist/src/core/living-docs/index.d.ts +10 -84
  50. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  51. package/dist/src/core/living-docs/index.js +10 -164
  52. package/dist/src/core/living-docs/index.js.map +1 -1
  53. package/dist/src/core/living-docs/spec-distributor.d.ts +106 -0
  54. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -0
  55. package/dist/src/core/living-docs/spec-distributor.js +823 -0
  56. package/dist/src/core/living-docs/spec-distributor.js.map +1 -0
  57. package/dist/src/core/living-docs/types.d.ts +201 -0
  58. package/dist/src/core/living-docs/types.d.ts.map +1 -0
  59. package/dist/src/core/living-docs/types.js +15 -0
  60. package/dist/src/core/living-docs/types.js.map +1 -0
  61. package/dist/src/core/logging/prompt-logger.d.ts +70 -0
  62. package/dist/src/core/logging/prompt-logger.d.ts.map +1 -0
  63. package/dist/src/core/logging/prompt-logger.js +247 -0
  64. package/dist/src/core/logging/prompt-logger.js.map +1 -0
  65. package/dist/src/core/status-line/status-line-manager.d.ts +15 -24
  66. package/dist/src/core/status-line/status-line-manager.d.ts.map +1 -1
  67. package/dist/src/core/status-line/status-line-manager.js +33 -70
  68. package/dist/src/core/status-line/status-line-manager.js.map +1 -1
  69. package/dist/src/core/status-line/types.d.ts +19 -31
  70. package/dist/src/core/status-line/types.d.ts.map +1 -1
  71. package/dist/src/core/status-line/types.js +5 -9
  72. package/dist/src/core/status-line/types.js.map +1 -1
  73. package/dist/src/core/sync/conflict-resolver.d.ts +66 -0
  74. package/dist/src/core/sync/conflict-resolver.d.ts.map +1 -0
  75. package/dist/src/core/sync/conflict-resolver.js +108 -0
  76. package/dist/src/core/sync/conflict-resolver.js.map +1 -0
  77. package/dist/src/core/sync/enhanced-content-builder.d.ts +77 -0
  78. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -0
  79. package/dist/src/core/sync/enhanced-content-builder.js +199 -0
  80. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -0
  81. package/dist/src/core/sync/label-detector.d.ts +66 -0
  82. package/dist/src/core/sync/label-detector.d.ts.map +1 -0
  83. package/dist/src/core/sync/label-detector.js +211 -0
  84. package/dist/src/core/sync/label-detector.js.map +1 -0
  85. package/dist/src/core/sync/retry-logic.d.ts +64 -0
  86. package/dist/src/core/sync/retry-logic.d.ts.map +1 -0
  87. package/dist/src/core/sync/retry-logic.js +165 -0
  88. package/dist/src/core/sync/retry-logic.js.map +1 -0
  89. package/dist/src/core/sync/spec-increment-mapper.d.ts +100 -0
  90. package/dist/src/core/sync/spec-increment-mapper.d.ts.map +1 -0
  91. package/dist/src/core/sync/spec-increment-mapper.js +424 -0
  92. package/dist/src/core/sync/spec-increment-mapper.js.map +1 -0
  93. package/dist/src/core/sync/status-cache.d.ts +91 -0
  94. package/dist/src/core/sync/status-cache.d.ts.map +1 -0
  95. package/dist/src/core/sync/status-cache.js +140 -0
  96. package/dist/src/core/sync/status-cache.js.map +1 -0
  97. package/dist/src/core/sync/status-mapper.d.ts +69 -0
  98. package/dist/src/core/sync/status-mapper.d.ts.map +1 -0
  99. package/dist/src/core/sync/status-mapper.js +90 -0
  100. package/dist/src/core/sync/status-mapper.js.map +1 -0
  101. package/dist/src/core/sync/status-sync-engine.d.ts +162 -0
  102. package/dist/src/core/sync/status-sync-engine.d.ts.map +1 -0
  103. package/dist/src/core/sync/status-sync-engine.js +347 -0
  104. package/dist/src/core/sync/status-sync-engine.js.map +1 -0
  105. package/dist/src/core/sync/sync-event-logger.d.ts +99 -0
  106. package/dist/src/core/sync/sync-event-logger.d.ts.map +1 -0
  107. package/dist/src/core/sync/sync-event-logger.js +103 -0
  108. package/dist/src/core/sync/sync-event-logger.js.map +1 -0
  109. package/dist/src/core/sync/workflow-detector.d.ts +95 -0
  110. package/dist/src/core/sync/workflow-detector.d.ts.map +1 -0
  111. package/dist/src/core/sync/workflow-detector.js +175 -0
  112. package/dist/src/core/sync/workflow-detector.js.map +1 -0
  113. package/dist/src/core/types/config.d.ts.map +1 -1
  114. package/dist/src/core/types/config.js +31 -0
  115. package/dist/src/core/types/config.js.map +1 -1
  116. package/dist/src/utils/github-url.d.ts +53 -0
  117. package/dist/src/utils/github-url.d.ts.map +1 -0
  118. package/dist/src/utils/github-url.js +90 -0
  119. package/dist/src/utils/github-url.js.map +1 -0
  120. package/dist/src/utils/spec-parser.d.ts +145 -0
  121. package/dist/src/utils/spec-parser.d.ts.map +1 -0
  122. package/dist/src/utils/spec-parser.js +640 -0
  123. package/dist/src/utils/spec-parser.js.map +1 -0
  124. package/package.json +1 -1
  125. package/plugins/specweave/agents/pm/AGENT.md +1 -1
  126. package/plugins/specweave/agents/pm/templates/increment-spec.md +158 -0
  127. package/plugins/specweave/agents/pm/templates/living-docs-spec.md +113 -0
  128. package/plugins/specweave/commands/specweave-done.md +163 -0
  129. package/plugins/specweave/hooks/lib/update-status-line.sh +79 -111
  130. package/plugins/specweave/hooks/post-increment-planning.sh +107 -35
  131. package/plugins/specweave/lib/hooks/sync-living-docs.js +139 -34
  132. package/plugins/specweave/lib/hooks/sync-living-docs.ts +234 -38
  133. package/plugins/specweave/skills/SKILLS-INDEX.md +4 -24
  134. package/plugins/specweave/skills/increment-planner/SKILL.md +94 -0
  135. package/plugins/specweave/skills/increment-work-router/SKILL.md +466 -0
  136. package/plugins/specweave-ado/lib/ado-status-sync.js +80 -0
  137. package/plugins/specweave-ado/lib/ado-status-sync.ts +121 -0
  138. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +205 -0
  139. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +248 -0
  140. package/plugins/specweave-github/lib/duplicate-detector.js +370 -0
  141. package/plugins/specweave-github/lib/duplicate-detector.ts +525 -0
  142. package/plugins/specweave-github/lib/enhanced-github-sync.js +220 -0
  143. package/plugins/specweave-github/lib/enhanced-github-sync.ts +322 -0
  144. package/plugins/specweave-github/lib/github-client.js +21 -10
  145. package/plugins/specweave-github/lib/github-client.ts +27 -16
  146. package/plugins/specweave-github/lib/github-epic-sync.js +489 -0
  147. package/plugins/specweave-github/lib/github-epic-sync.ts +690 -0
  148. package/plugins/specweave-github/lib/github-status-sync.js +71 -0
  149. package/plugins/specweave-github/lib/github-status-sync.ts +107 -0
  150. package/plugins/specweave-github/lib/task-sync.js +33 -2
  151. package/plugins/specweave-github/lib/task-sync.ts +44 -2
  152. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +267 -0
  153. package/plugins/specweave-jira/lib/enhanced-jira-sync.ts.disabled +222 -0
  154. package/plugins/specweave-jira/lib/jira-epic-sync.js +304 -0
  155. package/plugins/specweave-jira/lib/jira-epic-sync.ts +459 -0
  156. package/plugins/specweave-jira/lib/jira-status-sync.js +79 -0
  157. package/plugins/specweave-jira/lib/jira-status-sync.ts +139 -0
  158. package/src/templates/AGENTS.md.template +88 -1
  159. package/src/templates/CLAUDE.md.template +49 -0
  160. package/plugins/specweave/skills/increment-quality-judge/SKILL.md +0 -524
  161. package/plugins/specweave/skills/plugin-installer/SKILL.md +0 -353
@@ -0,0 +1,90 @@
1
+ /**
2
+ * GitHub URL Utilities
3
+ *
4
+ * Utilities for converting local file paths to GitHub URLs.
5
+ */
6
+ /**
7
+ * Convert local file path to GitHub URL
8
+ *
9
+ * @param localPath - Local file path (can start with ./ or be absolute)
10
+ * @param options - GitHub repository options
11
+ * @returns Full GitHub URL
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * toGitHubUrl('.specweave/docs/internal/specs/default/FS-001/FEATURE.md', {
16
+ * owner: 'anton-abyzov',
17
+ * repo: 'specweave',
18
+ * branch: 'develop'
19
+ * });
20
+ * // => 'https://github.com/anton-abyzov/specweave/blob/develop/.specweave/docs/internal/specs/default/FS-001/FEATURE.md'
21
+ * ```
22
+ */
23
+ export function toGitHubUrl(localPath, options) {
24
+ const { owner, repo, branch = 'develop' } = options;
25
+ // Remove leading ./ but keep .specweave folder name
26
+ let cleanPath = localPath.replace(/^\.\//, '');
27
+ // If path doesn't start with .specweave, add it
28
+ if (!cleanPath.startsWith('.specweave')) {
29
+ cleanPath = `.specweave/${cleanPath}`;
30
+ }
31
+ return `https://github.com/${owner}/${repo}/blob/${branch}/${cleanPath}`;
32
+ }
33
+ /**
34
+ * Convert local directory path to GitHub tree URL
35
+ *
36
+ * @param localPath - Local directory path
37
+ * @param options - GitHub repository options
38
+ * @returns Full GitHub tree URL
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * toGitHubTreeUrl('.specweave/increments/0001-feature', {
43
+ * owner: 'anton-abyzov',
44
+ * repo: 'specweave',
45
+ * branch: 'develop'
46
+ * });
47
+ * // => 'https://github.com/anton-abyzov/specweave/tree/develop/.specweave/increments/0001-feature'
48
+ * ```
49
+ */
50
+ export function toGitHubTreeUrl(localPath, options) {
51
+ const { owner, repo, branch = 'develop' } = options;
52
+ // Remove leading ./ but keep .specweave folder name
53
+ let cleanPath = localPath.replace(/^\.\//, '');
54
+ // If path doesn't start with .specweave, add it
55
+ if (!cleanPath.startsWith('.specweave')) {
56
+ cleanPath = `.specweave/${cleanPath}`;
57
+ }
58
+ return `https://github.com/${owner}/${repo}/tree/${branch}/${cleanPath}`;
59
+ }
60
+ /**
61
+ * Get GitHub URL options from git remote
62
+ *
63
+ * @returns GitHub URL options or null if not a GitHub repository
64
+ */
65
+ export async function getGitHubOptions() {
66
+ try {
67
+ const { execFile } = await import('child_process');
68
+ const { promisify } = await import('util');
69
+ const execFileAsync = promisify(execFile);
70
+ // Get remote URL
71
+ const { stdout } = await execFileAsync('git', ['remote', 'get-url', 'origin']);
72
+ const remoteUrl = stdout.trim();
73
+ // Parse GitHub URL (supports both HTTPS and SSH)
74
+ // HTTPS: https://github.com/owner/repo.git
75
+ // SSH: git@github.com:owner/repo.git
76
+ const match = remoteUrl.match(/github\.com[:/]([^/]+)\/(.+?)(?:\.git)?$/);
77
+ if (!match) {
78
+ return null;
79
+ }
80
+ const [, owner, repo] = match;
81
+ // Get current branch
82
+ const { stdout: branchOutput } = await execFileAsync('git', ['branch', '--show-current']);
83
+ const branch = branchOutput.trim() || 'develop';
84
+ return { owner, repo, branch };
85
+ }
86
+ catch (error) {
87
+ return null;
88
+ }
89
+ }
90
+ //# sourceMappingURL=github-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-url.js","sourceRoot":"","sources":["../../../src/utils/github-url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,OAAyB;IACtE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;IAEpD,oDAAoD;IACpD,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE/C,gDAAgD;IAChD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,SAAS,GAAG,cAAc,SAAS,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,sBAAsB,KAAK,IAAI,IAAI,SAAS,MAAM,IAAI,SAAS,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,OAAyB;IAC1E,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;IAEpD,oDAAoD;IACpD,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE/C,gDAAgD;IAChD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,SAAS,GAAG,cAAc,SAAS,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,sBAAsB,KAAK,IAAI,IAAI,SAAS,MAAM,IAAI,SAAS,EAAE,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE1C,iBAAiB;QACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAEhC,iDAAiD;QACjD,2CAA2C;QAC3C,qCAAqC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAE1E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAE9B,qBAAqB;QACrB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QAEhD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * SpecWeave Spec Parser Utilities
3
+ *
4
+ * Parses increment and living docs specifications to extract structured data.
5
+ *
6
+ * Key responsibilities:
7
+ * - Extract user stories from markdown
8
+ * - Parse increment specs (temporary, implementation-focused)
9
+ * - Parse living docs specs (permanent, epic-level)
10
+ * - Generate links to related documentation (avoid duplication)
11
+ * - Merge user stories intelligently
12
+ *
13
+ * @author SpecWeave Team
14
+ * @version 2.0.0
15
+ */
16
+ /**
17
+ * User story with acceptance criteria
18
+ */
19
+ export interface UserStory {
20
+ id: string;
21
+ title: string;
22
+ description: string;
23
+ acceptanceCriteria: AcceptanceCriterion[];
24
+ implementedIn?: string;
25
+ status: 'pending' | 'in-progress' | 'complete';
26
+ epic?: string;
27
+ priority?: string;
28
+ }
29
+ /**
30
+ * Acceptance criterion
31
+ */
32
+ export interface AcceptanceCriterion {
33
+ id: string;
34
+ description: string;
35
+ priority?: string;
36
+ testable: boolean;
37
+ completed: boolean;
38
+ }
39
+ /**
40
+ * Implementation history entry
41
+ */
42
+ export interface ImplementationHistoryEntry {
43
+ increment: string;
44
+ stories: string[];
45
+ status: 'complete' | 'in-progress' | 'planned';
46
+ date?: string;
47
+ notes?: string;
48
+ }
49
+ /**
50
+ * Related documentation links
51
+ */
52
+ export interface RelatedDocs {
53
+ architecture: string[];
54
+ adrs: string[];
55
+ strategy: string[];
56
+ operations: string[];
57
+ delivery: string[];
58
+ }
59
+ /**
60
+ * External tool links
61
+ */
62
+ export interface ExternalLinks {
63
+ github?: string;
64
+ jira?: string;
65
+ ado?: string;
66
+ }
67
+ /**
68
+ * Increment spec structure (temporary, implementation-focused)
69
+ */
70
+ export interface IncrementSpec {
71
+ id: string;
72
+ title: string;
73
+ overview: string;
74
+ implementsSpec?: string;
75
+ userStories: UserStory[];
76
+ outOfScope?: string[];
77
+ architecture?: string;
78
+ adrs?: string[];
79
+ priority?: string;
80
+ status?: string;
81
+ }
82
+ /**
83
+ * Living docs spec structure (permanent, epic-level)
84
+ */
85
+ export interface LivingDocsSpec {
86
+ id: string;
87
+ title: string;
88
+ featureArea: string;
89
+ overview: string;
90
+ userStories: UserStory[];
91
+ implementationHistory: ImplementationHistoryEntry[];
92
+ relatedDocs: RelatedDocs;
93
+ externalLinks: ExternalLinks;
94
+ priority?: string;
95
+ status?: string;
96
+ created?: string;
97
+ lastUpdated?: string;
98
+ }
99
+ /**
100
+ * Parse increment spec.md into structured data
101
+ *
102
+ * Extracts user stories, acceptance criteria, and metadata.
103
+ * Discards architecture details (those belong in architecture/ folder).
104
+ */
105
+ export declare function parseIncrementSpec(filePath: string): Promise<IncrementSpec>;
106
+ /**
107
+ * Parse living docs spec.md into structured data
108
+ */
109
+ export declare function parseLivingDocsSpec(filePath: string): Promise<LivingDocsSpec>;
110
+ /**
111
+ * Extract user stories from markdown content
112
+ *
113
+ * Supports formats:
114
+ * - **US-001**: Description
115
+ * - ### US-001: Title
116
+ * - **US1**: Description (legacy)
117
+ */
118
+ export declare function extractUserStories(markdown: string): UserStory[];
119
+ /**
120
+ * Generate links to related documentation (avoid duplication)
121
+ *
122
+ * Analyzes increment spec to find architecture references and generates
123
+ * proper links instead of duplicating content.
124
+ */
125
+ export declare function generateRelatedDocsLinks(spec: IncrementSpec, projectRoot?: string): RelatedDocs;
126
+ /**
127
+ * Extract spec ID from increment ID
128
+ *
129
+ * Examples:
130
+ * - 0001-core-framework → SPEC-001
131
+ * - 0002-core-enhancements → SPEC-002 (if part of same spec)
132
+ * - 0005-cross-platform-cli → SPEC-001 (if part of core spec)
133
+ */
134
+ export declare function extractSpecId(incrementId: string): string;
135
+ /**
136
+ * Merge user stories from increment into living docs
137
+ *
138
+ * Adds new stories, updates existing stories with completion status.
139
+ */
140
+ export declare function mergeUserStories(existingStories: UserStory[], newStories: UserStory[], incrementId: string): UserStory[];
141
+ /**
142
+ * Write living docs spec to file
143
+ */
144
+ export declare function writeLivingDocsSpec(filePath: string, spec: LivingDocsSpec): Promise<void>;
145
+ //# sourceMappingURL=spec-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-parser.d.ts","sourceRoot":"","sources":["../../../src/utils/spec-parser.ts"],"names":[],"mappings":"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"}