@sudocode-ai/integration-openspec 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/id-generator.d.ts +114 -0
- package/dist/id-generator.d.ts.map +1 -0
- package/dist/id-generator.js +165 -0
- package/dist/id-generator.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +692 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/change-parser.d.ts +164 -0
- package/dist/parser/change-parser.d.ts.map +1 -0
- package/dist/parser/change-parser.js +339 -0
- package/dist/parser/change-parser.js.map +1 -0
- package/dist/parser/markdown-utils.d.ts +138 -0
- package/dist/parser/markdown-utils.d.ts.map +1 -0
- package/dist/parser/markdown-utils.js +283 -0
- package/dist/parser/markdown-utils.js.map +1 -0
- package/dist/parser/spec-parser.d.ts +116 -0
- package/dist/parser/spec-parser.d.ts.map +1 -0
- package/dist/parser/spec-parser.js +204 -0
- package/dist/parser/spec-parser.js.map +1 -0
- package/dist/parser/tasks-parser.d.ts +120 -0
- package/dist/parser/tasks-parser.d.ts.map +1 -0
- package/dist/parser/tasks-parser.js +176 -0
- package/dist/parser/tasks-parser.js.map +1 -0
- package/dist/watcher.d.ts +160 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +614 -0
- package/dist/watcher.js.map +1 -0
- package/dist/writer/index.d.ts +9 -0
- package/dist/writer/index.d.ts.map +1 -0
- package/dist/writer/index.js +9 -0
- package/dist/writer/index.js.map +1 -0
- package/dist/writer/spec-writer.d.ts +24 -0
- package/dist/writer/spec-writer.d.ts.map +1 -0
- package/dist/writer/spec-writer.js +75 -0
- package/dist/writer/spec-writer.js.map +1 -0
- package/dist/writer/tasks-writer.d.ts +33 -0
- package/dist/writer/tasks-writer.d.ts.map +1 -0
- package/dist/writer/tasks-writer.js +144 -0
- package/dist/writer/tasks-writer.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenSpec Change Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses OpenSpec change directories from `openspec/changes/[name]/`.
|
|
5
|
+
*
|
|
6
|
+
* OpenSpec change directory structure:
|
|
7
|
+
* ```
|
|
8
|
+
* changes/add-scaffold-command/
|
|
9
|
+
* ├── proposal.md # ## Why, ## What Changes, ## Impact
|
|
10
|
+
* ├── tasks.md # Checkbox tasks
|
|
11
|
+
* └── specs/ # Delta directories for affected specs
|
|
12
|
+
* └── cli-scaffold/
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Archive directory pattern:
|
|
16
|
+
* ```
|
|
17
|
+
* changes/archive/YYYY-MM-DD-[name]/
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import { type ParsedTask } from "./tasks-parser.js";
|
|
21
|
+
/**
|
|
22
|
+
* A fully parsed OpenSpec change
|
|
23
|
+
*/
|
|
24
|
+
export interface ParsedOpenSpecChange {
|
|
25
|
+
/** Directory name (e.g., "add-scaffold-command") */
|
|
26
|
+
name: string;
|
|
27
|
+
/** From "## What Changes" first line or dir name */
|
|
28
|
+
title: string;
|
|
29
|
+
/** From ## Why section */
|
|
30
|
+
why?: string;
|
|
31
|
+
/** From ## What Changes section */
|
|
32
|
+
whatChanges?: string;
|
|
33
|
+
/** From ## Impact section */
|
|
34
|
+
impact?: string;
|
|
35
|
+
/** From tasks.md */
|
|
36
|
+
tasks: ParsedTask[];
|
|
37
|
+
/** 0-100 percentage */
|
|
38
|
+
taskCompletion: number;
|
|
39
|
+
/** From specs/[cap]/ delta directories */
|
|
40
|
+
affectedSpecs: string[];
|
|
41
|
+
/** Whether the change is in the archive directory */
|
|
42
|
+
isArchived: boolean;
|
|
43
|
+
/** From archive/YYYY-MM-DD-name/ pattern */
|
|
44
|
+
archivedAt?: Date;
|
|
45
|
+
/** Absolute path to the change directory */
|
|
46
|
+
filePath: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* OpenSpec change-specific patterns
|
|
50
|
+
*/
|
|
51
|
+
export declare const CHANGE_PATTERNS: {
|
|
52
|
+
/** Match archive directory pattern: YYYY-MM-DD-name */
|
|
53
|
+
ARCHIVE_DATE: RegExp;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Parse an OpenSpec change directory
|
|
57
|
+
*
|
|
58
|
+
* @param dirPath - Absolute path to the change directory
|
|
59
|
+
* @returns Parsed change object
|
|
60
|
+
* @throws Error if directory does not exist
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* const change = parseChangeDirectory("/path/to/openspec/changes/add-feature");
|
|
64
|
+
* console.log(change.title); // "Add scaffold command"
|
|
65
|
+
* console.log(change.taskCompletion); // 75
|
|
66
|
+
* console.log(change.affectedSpecs); // ["cli-scaffold"]
|
|
67
|
+
*/
|
|
68
|
+
export declare function parseChangeDirectory(dirPath: string): ParsedOpenSpecChange;
|
|
69
|
+
/**
|
|
70
|
+
* Extract the change name from the directory path
|
|
71
|
+
*
|
|
72
|
+
* Handles both active changes and archived changes:
|
|
73
|
+
* - changes/add-feature/ → "add-feature"
|
|
74
|
+
* - changes/archive/2024-01-15-add-feature/ → "add-feature"
|
|
75
|
+
*
|
|
76
|
+
* @param dirPath - Path to the change directory
|
|
77
|
+
* @returns Change name
|
|
78
|
+
*/
|
|
79
|
+
export declare function extractChangeName(dirPath: string): string;
|
|
80
|
+
/**
|
|
81
|
+
* Detect if a change is archived and extract archive date
|
|
82
|
+
*
|
|
83
|
+
* @param dirPath - Path to the change directory
|
|
84
|
+
* @returns Archive status and date
|
|
85
|
+
*/
|
|
86
|
+
export declare function detectArchiveStatus(dirPath: string): {
|
|
87
|
+
isArchived: boolean;
|
|
88
|
+
archivedAt?: Date;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Parse the proposal.md file for a change
|
|
92
|
+
*
|
|
93
|
+
* @param filePath - Path to proposal.md
|
|
94
|
+
* @param fallbackName - Name to use as title fallback
|
|
95
|
+
* @returns Extracted sections
|
|
96
|
+
*/
|
|
97
|
+
export declare function parseProposal(filePath: string, fallbackName: string): {
|
|
98
|
+
why?: string;
|
|
99
|
+
whatChanges?: string;
|
|
100
|
+
impact?: string;
|
|
101
|
+
title: string;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Extract title from the "What Changes" section
|
|
105
|
+
*
|
|
106
|
+
* The title is the first non-empty line, with bullet prefix removed
|
|
107
|
+
*
|
|
108
|
+
* @param whatChanges - Content of the What Changes section
|
|
109
|
+
* @returns Extracted title or undefined
|
|
110
|
+
*/
|
|
111
|
+
export declare function extractTitleFromWhatChanges(whatChanges?: string): string | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Format a directory name as a human-readable title
|
|
114
|
+
*
|
|
115
|
+
* @param name - Directory name (e.g., "add-scaffold-command")
|
|
116
|
+
* @returns Formatted title (e.g., "Add scaffold command")
|
|
117
|
+
*/
|
|
118
|
+
export declare function formatTitle(name: string): string;
|
|
119
|
+
/**
|
|
120
|
+
* Parse tasks.md file for a change
|
|
121
|
+
*
|
|
122
|
+
* @param filePath - Path to tasks.md
|
|
123
|
+
* @returns Tasks and completion percentage
|
|
124
|
+
*/
|
|
125
|
+
export declare function parseChangeTasks(filePath: string): {
|
|
126
|
+
tasks: ParsedTask[];
|
|
127
|
+
taskCompletion: number;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Scan the specs/ subdirectory for affected spec delta directories
|
|
131
|
+
*
|
|
132
|
+
* @param dirPath - Path to the change directory
|
|
133
|
+
* @returns Array of affected spec names
|
|
134
|
+
*/
|
|
135
|
+
export declare function scanAffectedSpecs(dirPath: string): string[];
|
|
136
|
+
/**
|
|
137
|
+
* Check if a directory appears to be a valid OpenSpec change directory
|
|
138
|
+
*
|
|
139
|
+
* A valid change directory contains at least one of:
|
|
140
|
+
* - proposal.md
|
|
141
|
+
* - tasks.md
|
|
142
|
+
* - design.md
|
|
143
|
+
*
|
|
144
|
+
* @param dirPath - Path to check
|
|
145
|
+
* @returns true if the directory looks like a change directory
|
|
146
|
+
*/
|
|
147
|
+
export declare function isChangeDirectory(dirPath: string): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Scan a directory for all change directories
|
|
150
|
+
*
|
|
151
|
+
* @param basePath - Path to the changes/ directory
|
|
152
|
+
* @param includeArchived - Whether to include archived changes
|
|
153
|
+
* @returns Array of change directory paths
|
|
154
|
+
*/
|
|
155
|
+
export declare function scanChangeDirectories(basePath: string, includeArchived?: boolean): string[];
|
|
156
|
+
/**
|
|
157
|
+
* Parse all changes in a directory
|
|
158
|
+
*
|
|
159
|
+
* @param basePath - Path to the changes/ directory
|
|
160
|
+
* @param includeArchived - Whether to include archived changes
|
|
161
|
+
* @returns Array of parsed changes
|
|
162
|
+
*/
|
|
163
|
+
export declare function parseAllChanges(basePath: string, includeArchived?: boolean): ParsedOpenSpecChange[];
|
|
164
|
+
//# sourceMappingURL=change-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-parser.d.ts","sourceRoot":"","sources":["../../src/parser/change-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAM3B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B,uDAAuD;;CAExD,CAAC;AAMF;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAmC1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB,CAsBA;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CA+BA;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAkBpB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAClD,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAWA;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAW1D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,OAAc,GAC9B,MAAM,EAAE,CA8BV;AAyBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,eAAe,GAAE,OAAc,GAC9B,oBAAoB,EAAE,CAuBxB"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenSpec Change Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses OpenSpec change directories from `openspec/changes/[name]/`.
|
|
5
|
+
*
|
|
6
|
+
* OpenSpec change directory structure:
|
|
7
|
+
* ```
|
|
8
|
+
* changes/add-scaffold-command/
|
|
9
|
+
* ├── proposal.md # ## Why, ## What Changes, ## Impact
|
|
10
|
+
* ├── tasks.md # Checkbox tasks
|
|
11
|
+
* └── specs/ # Delta directories for affected specs
|
|
12
|
+
* └── cli-scaffold/
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Archive directory pattern:
|
|
16
|
+
* ```
|
|
17
|
+
* changes/archive/YYYY-MM-DD-[name]/
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
21
|
+
import * as path from "path";
|
|
22
|
+
import { extractSection } from "./markdown-utils.js";
|
|
23
|
+
import { parseTasks as parseTasksFile, } from "./tasks-parser.js";
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Regex Patterns
|
|
26
|
+
// ============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* OpenSpec change-specific patterns
|
|
29
|
+
*/
|
|
30
|
+
export const CHANGE_PATTERNS = {
|
|
31
|
+
/** Match archive directory pattern: YYYY-MM-DD-name */
|
|
32
|
+
ARCHIVE_DATE: /^(\d{4}-\d{2}-\d{2})-(.+)$/,
|
|
33
|
+
};
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Parser Functions
|
|
36
|
+
// ============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* Parse an OpenSpec change directory
|
|
39
|
+
*
|
|
40
|
+
* @param dirPath - Absolute path to the change directory
|
|
41
|
+
* @returns Parsed change object
|
|
42
|
+
* @throws Error if directory does not exist
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* const change = parseChangeDirectory("/path/to/openspec/changes/add-feature");
|
|
46
|
+
* console.log(change.title); // "Add scaffold command"
|
|
47
|
+
* console.log(change.taskCompletion); // 75
|
|
48
|
+
* console.log(change.affectedSpecs); // ["cli-scaffold"]
|
|
49
|
+
*/
|
|
50
|
+
export function parseChangeDirectory(dirPath) {
|
|
51
|
+
if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {
|
|
52
|
+
throw new Error(`Change directory not found: ${dirPath}`);
|
|
53
|
+
}
|
|
54
|
+
// Extract name from directory path
|
|
55
|
+
const name = extractChangeName(dirPath);
|
|
56
|
+
// Check if archived
|
|
57
|
+
const { isArchived, archivedAt } = detectArchiveStatus(dirPath);
|
|
58
|
+
// Parse proposal.md
|
|
59
|
+
const proposalPath = path.join(dirPath, "proposal.md");
|
|
60
|
+
const { why, whatChanges, impact, title } = parseProposal(proposalPath, name);
|
|
61
|
+
// Parse tasks.md
|
|
62
|
+
const tasksPath = path.join(dirPath, "tasks.md");
|
|
63
|
+
const { tasks, taskCompletion } = parseChangeTasks(tasksPath);
|
|
64
|
+
// Scan specs/ subdirectory for affected specs
|
|
65
|
+
const affectedSpecs = scanAffectedSpecs(dirPath);
|
|
66
|
+
return {
|
|
67
|
+
name,
|
|
68
|
+
title,
|
|
69
|
+
why,
|
|
70
|
+
whatChanges,
|
|
71
|
+
impact,
|
|
72
|
+
tasks,
|
|
73
|
+
taskCompletion,
|
|
74
|
+
affectedSpecs,
|
|
75
|
+
isArchived,
|
|
76
|
+
archivedAt,
|
|
77
|
+
filePath: dirPath,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extract the change name from the directory path
|
|
82
|
+
*
|
|
83
|
+
* Handles both active changes and archived changes:
|
|
84
|
+
* - changes/add-feature/ → "add-feature"
|
|
85
|
+
* - changes/archive/2024-01-15-add-feature/ → "add-feature"
|
|
86
|
+
*
|
|
87
|
+
* @param dirPath - Path to the change directory
|
|
88
|
+
* @returns Change name
|
|
89
|
+
*/
|
|
90
|
+
export function extractChangeName(dirPath) {
|
|
91
|
+
const dirName = path.basename(dirPath);
|
|
92
|
+
// Check if this is an archived change with date prefix
|
|
93
|
+
const archiveMatch = dirName.match(CHANGE_PATTERNS.ARCHIVE_DATE);
|
|
94
|
+
if (archiveMatch) {
|
|
95
|
+
return archiveMatch[2]; // Return name without date prefix
|
|
96
|
+
}
|
|
97
|
+
return dirName;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Detect if a change is archived and extract archive date
|
|
101
|
+
*
|
|
102
|
+
* @param dirPath - Path to the change directory
|
|
103
|
+
* @returns Archive status and date
|
|
104
|
+
*/
|
|
105
|
+
export function detectArchiveStatus(dirPath) {
|
|
106
|
+
// Check if the path contains /archive/
|
|
107
|
+
const normalizedPath = dirPath.replace(/\\/g, "/");
|
|
108
|
+
const isArchived = normalizedPath.includes("/archive/");
|
|
109
|
+
if (!isArchived) {
|
|
110
|
+
return { isArchived: false };
|
|
111
|
+
}
|
|
112
|
+
// Try to extract date from directory name
|
|
113
|
+
const dirName = path.basename(dirPath);
|
|
114
|
+
const archiveMatch = dirName.match(CHANGE_PATTERNS.ARCHIVE_DATE);
|
|
115
|
+
if (archiveMatch) {
|
|
116
|
+
const dateStr = archiveMatch[1];
|
|
117
|
+
const archivedAt = new Date(dateStr + "T00:00:00");
|
|
118
|
+
if (!isNaN(archivedAt.getTime())) {
|
|
119
|
+
return { isArchived: true, archivedAt };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return { isArchived: true };
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parse the proposal.md file for a change
|
|
126
|
+
*
|
|
127
|
+
* @param filePath - Path to proposal.md
|
|
128
|
+
* @param fallbackName - Name to use as title fallback
|
|
129
|
+
* @returns Extracted sections
|
|
130
|
+
*/
|
|
131
|
+
export function parseProposal(filePath, fallbackName) {
|
|
132
|
+
if (!existsSync(filePath)) {
|
|
133
|
+
return { title: formatTitle(fallbackName) };
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const content = readFileSync(filePath, "utf-8");
|
|
137
|
+
const lines = content.split("\n");
|
|
138
|
+
// Extract ## Why section
|
|
139
|
+
const whyLines = extractSection(lines, "Why", 2);
|
|
140
|
+
const why = whyLines ? whyLines.join("\n").trim() : undefined;
|
|
141
|
+
// Extract ## What Changes section
|
|
142
|
+
const whatChangesLines = extractSection(lines, "What Changes", 2);
|
|
143
|
+
const whatChanges = whatChangesLines
|
|
144
|
+
? whatChangesLines.join("\n").trim()
|
|
145
|
+
: undefined;
|
|
146
|
+
// Extract ## Impact section
|
|
147
|
+
const impactLines = extractSection(lines, "Impact", 2);
|
|
148
|
+
const impact = impactLines ? impactLines.join("\n").trim() : undefined;
|
|
149
|
+
// Extract title from "What Changes" first line, or fall back to dir name
|
|
150
|
+
const title = extractTitleFromWhatChanges(whatChanges) || formatTitle(fallbackName);
|
|
151
|
+
return { why, whatChanges, impact, title };
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
console.error(`[change-parser] Failed to parse ${filePath}:`, error);
|
|
155
|
+
return { title: formatTitle(fallbackName) };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Extract title from the "What Changes" section
|
|
160
|
+
*
|
|
161
|
+
* The title is the first non-empty line, with bullet prefix removed
|
|
162
|
+
*
|
|
163
|
+
* @param whatChanges - Content of the What Changes section
|
|
164
|
+
* @returns Extracted title or undefined
|
|
165
|
+
*/
|
|
166
|
+
export function extractTitleFromWhatChanges(whatChanges) {
|
|
167
|
+
if (!whatChanges)
|
|
168
|
+
return undefined;
|
|
169
|
+
const lines = whatChanges.split("\n");
|
|
170
|
+
for (const line of lines) {
|
|
171
|
+
const trimmed = line.trim();
|
|
172
|
+
if (!trimmed)
|
|
173
|
+
continue;
|
|
174
|
+
// Remove bullet prefix if present (- or *)
|
|
175
|
+
const withoutBullet = trimmed.replace(/^[-*]\s*/, "");
|
|
176
|
+
// Return first meaningful content
|
|
177
|
+
if (withoutBullet.length > 0) {
|
|
178
|
+
return withoutBullet;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Format a directory name as a human-readable title
|
|
185
|
+
*
|
|
186
|
+
* @param name - Directory name (e.g., "add-scaffold-command")
|
|
187
|
+
* @returns Formatted title (e.g., "Add scaffold command")
|
|
188
|
+
*/
|
|
189
|
+
export function formatTitle(name) {
|
|
190
|
+
// Replace hyphens and underscores with spaces
|
|
191
|
+
const spaced = name.replace(/[-_]/g, " ");
|
|
192
|
+
// Capitalize first letter
|
|
193
|
+
return spaced.charAt(0).toUpperCase() + spaced.slice(1);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Parse tasks.md file for a change
|
|
197
|
+
*
|
|
198
|
+
* @param filePath - Path to tasks.md
|
|
199
|
+
* @returns Tasks and completion percentage
|
|
200
|
+
*/
|
|
201
|
+
export function parseChangeTasks(filePath) {
|
|
202
|
+
const result = parseTasksFile(filePath);
|
|
203
|
+
if (!result) {
|
|
204
|
+
return { tasks: [], taskCompletion: 0 };
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
tasks: result.tasks,
|
|
208
|
+
taskCompletion: result.completionPercentage,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Scan the specs/ subdirectory for affected spec delta directories
|
|
213
|
+
*
|
|
214
|
+
* @param dirPath - Path to the change directory
|
|
215
|
+
* @returns Array of affected spec names
|
|
216
|
+
*/
|
|
217
|
+
export function scanAffectedSpecs(dirPath) {
|
|
218
|
+
const specsDir = path.join(dirPath, "specs");
|
|
219
|
+
if (!existsSync(specsDir) || !statSync(specsDir).isDirectory()) {
|
|
220
|
+
return [];
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
const entries = readdirSync(specsDir, { withFileTypes: true });
|
|
224
|
+
return entries
|
|
225
|
+
.filter((entry) => entry.isDirectory())
|
|
226
|
+
.map((entry) => entry.name);
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
console.error(`[change-parser] Failed to scan specs directory:`, error);
|
|
230
|
+
return [];
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Check if a directory appears to be a valid OpenSpec change directory
|
|
235
|
+
*
|
|
236
|
+
* A valid change directory contains at least one of:
|
|
237
|
+
* - proposal.md
|
|
238
|
+
* - tasks.md
|
|
239
|
+
* - design.md
|
|
240
|
+
*
|
|
241
|
+
* @param dirPath - Path to check
|
|
242
|
+
* @returns true if the directory looks like a change directory
|
|
243
|
+
*/
|
|
244
|
+
export function isChangeDirectory(dirPath) {
|
|
245
|
+
if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
// Check for characteristic files
|
|
249
|
+
const hasProposal = existsSync(path.join(dirPath, "proposal.md"));
|
|
250
|
+
const hasTasks = existsSync(path.join(dirPath, "tasks.md"));
|
|
251
|
+
const hasDesign = existsSync(path.join(dirPath, "design.md"));
|
|
252
|
+
return hasProposal || hasTasks || hasDesign;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Scan a directory for all change directories
|
|
256
|
+
*
|
|
257
|
+
* @param basePath - Path to the changes/ directory
|
|
258
|
+
* @param includeArchived - Whether to include archived changes
|
|
259
|
+
* @returns Array of change directory paths
|
|
260
|
+
*/
|
|
261
|
+
export function scanChangeDirectories(basePath, includeArchived = true) {
|
|
262
|
+
if (!existsSync(basePath) || !statSync(basePath).isDirectory()) {
|
|
263
|
+
return [];
|
|
264
|
+
}
|
|
265
|
+
const changes = [];
|
|
266
|
+
try {
|
|
267
|
+
const entries = readdirSync(basePath, { withFileTypes: true });
|
|
268
|
+
for (const entry of entries) {
|
|
269
|
+
if (!entry.isDirectory())
|
|
270
|
+
continue;
|
|
271
|
+
const entryPath = path.join(basePath, entry.name);
|
|
272
|
+
if (entry.name === "archive") {
|
|
273
|
+
// Scan archive subdirectory
|
|
274
|
+
if (includeArchived) {
|
|
275
|
+
const archivedChanges = scanArchivedChanges(entryPath);
|
|
276
|
+
changes.push(...archivedChanges);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else if (isChangeDirectory(entryPath)) {
|
|
280
|
+
changes.push(entryPath);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
console.error(`[change-parser] Failed to scan changes directory:`, error);
|
|
286
|
+
}
|
|
287
|
+
return changes;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Scan the archive directory for archived changes
|
|
291
|
+
*
|
|
292
|
+
* @param archivePath - Path to the archive/ directory
|
|
293
|
+
* @returns Array of archived change directory paths
|
|
294
|
+
*/
|
|
295
|
+
function scanArchivedChanges(archivePath) {
|
|
296
|
+
if (!existsSync(archivePath) || !statSync(archivePath).isDirectory()) {
|
|
297
|
+
return [];
|
|
298
|
+
}
|
|
299
|
+
try {
|
|
300
|
+
const entries = readdirSync(archivePath, { withFileTypes: true });
|
|
301
|
+
return entries
|
|
302
|
+
.filter((entry) => entry.isDirectory())
|
|
303
|
+
.filter((entry) => isChangeDirectory(path.join(archivePath, entry.name)))
|
|
304
|
+
.map((entry) => path.join(archivePath, entry.name));
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
console.error(`[change-parser] Failed to scan archive directory:`, error);
|
|
308
|
+
return [];
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Parse all changes in a directory
|
|
313
|
+
*
|
|
314
|
+
* @param basePath - Path to the changes/ directory
|
|
315
|
+
* @param includeArchived - Whether to include archived changes
|
|
316
|
+
* @returns Array of parsed changes
|
|
317
|
+
*/
|
|
318
|
+
export function parseAllChanges(basePath, includeArchived = true) {
|
|
319
|
+
const changePaths = scanChangeDirectories(basePath, includeArchived);
|
|
320
|
+
return changePaths.map((changePath) => {
|
|
321
|
+
try {
|
|
322
|
+
return parseChangeDirectory(changePath);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
console.error(`[change-parser] Failed to parse change at ${changePath}:`, error);
|
|
326
|
+
// Return a minimal change object for failed parses
|
|
327
|
+
return {
|
|
328
|
+
name: path.basename(changePath),
|
|
329
|
+
title: formatTitle(path.basename(changePath)),
|
|
330
|
+
tasks: [],
|
|
331
|
+
taskCompletion: 0,
|
|
332
|
+
affectedSpecs: [],
|
|
333
|
+
isArchived: changePath.includes("/archive/"),
|
|
334
|
+
filePath: changePath,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
//# sourceMappingURL=change-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-parser.js","sourceRoot":"","sources":["../../src/parser/change-parser.ts"],"names":[],"mappings":"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"}
|