@lucasviola/specwiki 1.0.0 → 1.0.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/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/output/html/assets/specwiki.css +0 -1
- package/dist/output/html/nav-grouping.d.ts +46 -0
- package/dist/output/html/nav-grouping.d.ts.map +1 -0
- package/dist/output/html/nav-grouping.js +608 -0
- package/dist/output/html/nav-grouping.js.map +1 -0
- package/dist/output/html/templates/partials/nav-subgroup-leaf.mustache +23 -0
- package/dist/output/html/templates/partials/nav-subgroup.mustache +41 -0
- package/dist/output/html/templates/partials/portal-subgroup-leaf.mustache +23 -0
- package/dist/output/html/templates/partials/portal-subgroup.mustache +41 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +13 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import { isOpenErrorLogged, openWiki } from "./commands/open.js";
|
|
|
7
7
|
import { parsePatternList } from "./config/patterns.js";
|
|
8
8
|
import { ConfigError, resolveEffectivePatterns } from "./config/loader.js";
|
|
9
9
|
import { log } from "./core/Logger.js";
|
|
10
|
+
import { readPackageVersion } from "./version.js";
|
|
10
11
|
const USAGE_ERROR_CODES = new Set([
|
|
11
12
|
"commander.unknownOption",
|
|
12
13
|
"commander.unknownCommand",
|
|
@@ -96,7 +97,7 @@ program.exitOverride();
|
|
|
96
97
|
program
|
|
97
98
|
.name("specwiki")
|
|
98
99
|
.description("Transform AI specs into structured wiki-like documentation")
|
|
99
|
-
.version(
|
|
100
|
+
.version(readPackageVersion());
|
|
100
101
|
program
|
|
101
102
|
.command("generate")
|
|
102
103
|
.description("Discover specs and generate wiki documentation")
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,UAAU,EACV,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { WikiPage } from "../../types.js";
|
|
2
|
+
export interface NavPage {
|
|
3
|
+
title: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
href: string;
|
|
6
|
+
sourcePath: string;
|
|
7
|
+
}
|
|
8
|
+
export interface NavSubgroup {
|
|
9
|
+
key: string;
|
|
10
|
+
label: string;
|
|
11
|
+
anchor: string;
|
|
12
|
+
pageCount: number;
|
|
13
|
+
collapsible: boolean;
|
|
14
|
+
open: boolean;
|
|
15
|
+
active: boolean;
|
|
16
|
+
pages: NavPage[];
|
|
17
|
+
subgroups: NavSubgroup[];
|
|
18
|
+
hasNestedSubgroups: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface NavGroupingContext {
|
|
21
|
+
bmadCatalog: BmadCatalog | null;
|
|
22
|
+
}
|
|
23
|
+
export interface BmadSkillEntry {
|
|
24
|
+
skill: string;
|
|
25
|
+
displayName: string;
|
|
26
|
+
phase: string;
|
|
27
|
+
module: string;
|
|
28
|
+
deprecated: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface BmadAgentEntry {
|
|
31
|
+
skill: string;
|
|
32
|
+
name: string;
|
|
33
|
+
title: string;
|
|
34
|
+
icon: string;
|
|
35
|
+
}
|
|
36
|
+
export interface BmadCatalog {
|
|
37
|
+
skills: Map<string, BmadSkillEntry>;
|
|
38
|
+
agents: Map<string, BmadAgentEntry>;
|
|
39
|
+
}
|
|
40
|
+
export declare function loadNavGroupingContext(projectRoot?: string): Promise<NavGroupingContext>;
|
|
41
|
+
export declare function buildCategoryNavSubgroups(category: string, pages: WikiPage[], context: NavGroupingContext, activePageSlug?: string): {
|
|
42
|
+
subgroups: NavSubgroup[];
|
|
43
|
+
pages: NavPage[];
|
|
44
|
+
};
|
|
45
|
+
export declare function resolveNavSubgroupLabel(page: WikiPage, category: string, context: NavGroupingContext): string | undefined;
|
|
46
|
+
//# sourceMappingURL=nav-grouping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-grouping.d.ts","sourceRoot":"","sources":["../../../src/output/html/nav-grouping.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACrC;AAuFD,wBAAsB,sBAAsB,CAC1C,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAa7B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,EAAE,kBAAkB,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAkDhD;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,MAAM,GAAG,SAAS,CAMpB"}
|
|
@@ -0,0 +1,608 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const BMAD_HELP_PATH = "_bmad/_config/bmad-help.csv";
|
|
4
|
+
const CATEGORY_PATH_PREFIXES = {
|
|
5
|
+
"agent-skills": ".agents/skills/",
|
|
6
|
+
"cursor-skills": ".cursor/skills/",
|
|
7
|
+
"cursor-rules": ".cursor/rules/",
|
|
8
|
+
"bmad-output": "_bmad-output/",
|
|
9
|
+
specs: "specs/",
|
|
10
|
+
spec: "spec/",
|
|
11
|
+
openspec: "openspec/",
|
|
12
|
+
kiro: ".kiro/specs/",
|
|
13
|
+
"docs-specs": "docs/specs/",
|
|
14
|
+
plans: "docs/plans/",
|
|
15
|
+
requirements: "requirements/",
|
|
16
|
+
github: ".github/",
|
|
17
|
+
};
|
|
18
|
+
const FOLDER_LABELS = {
|
|
19
|
+
"planning-artifacts": "Planning",
|
|
20
|
+
"implementation-artifacts": "Implementation Stories",
|
|
21
|
+
discovery: "Discovery",
|
|
22
|
+
research: "Research",
|
|
23
|
+
prd: "PRD",
|
|
24
|
+
architecture: "Architecture",
|
|
25
|
+
readiness: "Readiness",
|
|
26
|
+
epics: "Epics",
|
|
27
|
+
};
|
|
28
|
+
const PHASE_GROUPS = {
|
|
29
|
+
"1-analysis": { key: "phase-analysis", label: "Analysis", sortOrder: 1 },
|
|
30
|
+
"2-planning": { key: "phase-planning", label: "Planning", sortOrder: 2 },
|
|
31
|
+
"3-solutioning": {
|
|
32
|
+
key: "phase-solutioning",
|
|
33
|
+
label: "Solutioning",
|
|
34
|
+
sortOrder: 3,
|
|
35
|
+
},
|
|
36
|
+
"4-implementation": {
|
|
37
|
+
key: "phase-implementation",
|
|
38
|
+
label: "Implementation",
|
|
39
|
+
sortOrder: 4,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
const YOUR_TEAM_GROUP = {
|
|
43
|
+
key: "your-team",
|
|
44
|
+
label: "Your team",
|
|
45
|
+
sortOrder: 0,
|
|
46
|
+
};
|
|
47
|
+
const CORE_UTILITIES_GROUP = {
|
|
48
|
+
key: "core-utilities",
|
|
49
|
+
label: "Core utilities",
|
|
50
|
+
sortOrder: 5,
|
|
51
|
+
};
|
|
52
|
+
const DEPRECATED_GROUP = {
|
|
53
|
+
key: "deprecated",
|
|
54
|
+
label: "Deprecated",
|
|
55
|
+
sortOrder: 6,
|
|
56
|
+
};
|
|
57
|
+
const UNCATALOGUED_GROUP = {
|
|
58
|
+
key: "uncatalogued",
|
|
59
|
+
label: "Uncatalogued",
|
|
60
|
+
sortOrder: 7,
|
|
61
|
+
};
|
|
62
|
+
const PROJECT_DOCS_GROUP = {
|
|
63
|
+
key: "project-docs",
|
|
64
|
+
label: "Project docs",
|
|
65
|
+
sortOrder: 0,
|
|
66
|
+
};
|
|
67
|
+
export async function loadNavGroupingContext(projectRoot) {
|
|
68
|
+
if (!projectRoot) {
|
|
69
|
+
return { bmadCatalog: null };
|
|
70
|
+
}
|
|
71
|
+
const csvPath = path.join(projectRoot, BMAD_HELP_PATH);
|
|
72
|
+
try {
|
|
73
|
+
const csvContent = await fs.readFile(csvPath, "utf-8");
|
|
74
|
+
const catalog = await parseBmadHelpCsv(csvContent, projectRoot);
|
|
75
|
+
return { bmadCatalog: catalog };
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return { bmadCatalog: null };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function buildCategoryNavSubgroups(category, pages, context, activePageSlug) {
|
|
82
|
+
const assignments = pages.map((page) => ({
|
|
83
|
+
page,
|
|
84
|
+
assignment: assignPageGroups(page, category, context),
|
|
85
|
+
}));
|
|
86
|
+
const hasGrouping = assignments.some(({ assignment }) => assignment.segments.length > 0);
|
|
87
|
+
if (!hasGrouping) {
|
|
88
|
+
return {
|
|
89
|
+
subgroups: [],
|
|
90
|
+
pages: sortNavPages(assignments.map(({ page, assignment }) => toNavPage(page, assignment.displayTitle))),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const tree = buildTreeFromAssignments(assignments);
|
|
94
|
+
const flattened = flattenSingletonSubgroups(tree);
|
|
95
|
+
const promoted = promoteSingletonPages(flattened);
|
|
96
|
+
const withState = applyNavSubgroupState(promoted.subgroups, category, activePageSlug);
|
|
97
|
+
if (withState.length === 0 && promoted.pages.length > 0) {
|
|
98
|
+
return {
|
|
99
|
+
subgroups: [],
|
|
100
|
+
pages: sortNavPages(promoted.pages),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (withState.length === 1 && withState[0].pages.length === 0) {
|
|
104
|
+
return {
|
|
105
|
+
subgroups: [],
|
|
106
|
+
pages: sortNavPages([
|
|
107
|
+
...promoted.pages,
|
|
108
|
+
...withState[0].subgroups.flatMap(collectPages),
|
|
109
|
+
]),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
subgroups: withState,
|
|
114
|
+
pages: sortNavPages(promoted.pages),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export function resolveNavSubgroupLabel(page, category, context) {
|
|
118
|
+
const assignment = assignPageGroups(page, category, context);
|
|
119
|
+
if (assignment.segments.length === 0) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
return assignment.segments.map((segment) => segment.label).join(" › ");
|
|
123
|
+
}
|
|
124
|
+
function assignPageGroups(page, category, context) {
|
|
125
|
+
if (category === "agent-skills" && context.bmadCatalog) {
|
|
126
|
+
const bmadAssignment = assignAgentSkillGroups(page, context.bmadCatalog);
|
|
127
|
+
if (bmadAssignment) {
|
|
128
|
+
return bmadAssignment;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (category === "bmad-output") {
|
|
132
|
+
const bmadOutputAssignment = assignBmadOutputGroups(page);
|
|
133
|
+
if (bmadOutputAssignment) {
|
|
134
|
+
return bmadOutputAssignment;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return assignPathSegmentGroups(page, category);
|
|
138
|
+
}
|
|
139
|
+
function assignAgentSkillGroups(page, catalog) {
|
|
140
|
+
const skillFolder = extractSkillFolder(page.sourcePath);
|
|
141
|
+
if (!skillFolder) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
const agent = catalog.agents.get(skillFolder);
|
|
145
|
+
if (agent) {
|
|
146
|
+
const displayTitle = formatAgentTitle(agent);
|
|
147
|
+
return {
|
|
148
|
+
segments: [YOUR_TEAM_GROUP],
|
|
149
|
+
pageSortKey: `00-${agent.name.toLowerCase()}`,
|
|
150
|
+
displayTitle,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const entry = catalog.skills.get(skillFolder);
|
|
154
|
+
if (!entry) {
|
|
155
|
+
return {
|
|
156
|
+
segments: [UNCATALOGUED_GROUP],
|
|
157
|
+
pageSortKey: `99-${page.title.toLowerCase()}`,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (entry.deprecated) {
|
|
161
|
+
return {
|
|
162
|
+
segments: [DEPRECATED_GROUP],
|
|
163
|
+
pageSortKey: `98-${entry.displayName.toLowerCase()}`,
|
|
164
|
+
displayTitle: entry.displayName,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const segment = resolveSkillPhaseGroup(entry);
|
|
168
|
+
return {
|
|
169
|
+
segments: [segment],
|
|
170
|
+
pageSortKey: `${String(segment.sortOrder).padStart(2, "0")}-${entry.displayName.toLowerCase()}`,
|
|
171
|
+
displayTitle: entry.displayName,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function resolveSkillPhaseGroup(entry) {
|
|
175
|
+
if (entry.module === "Core" || entry.phase === "anytime") {
|
|
176
|
+
return CORE_UTILITIES_GROUP;
|
|
177
|
+
}
|
|
178
|
+
return PHASE_GROUPS[entry.phase] ?? UNCATALOGUED_GROUP;
|
|
179
|
+
}
|
|
180
|
+
function assignBmadOutputGroups(page) {
|
|
181
|
+
const normalized = page.sourcePath.replace(/\\/g, "/");
|
|
182
|
+
if (!normalized.startsWith("_bmad-output/")) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
const remainder = normalized.slice("_bmad-output/".length);
|
|
186
|
+
const basename = path.posix.basename(remainder);
|
|
187
|
+
if (remainder.startsWith("planning-artifacts/")) {
|
|
188
|
+
const relativeDir = path.posix.dirname(remainder);
|
|
189
|
+
const dirParts = relativeDir.split("/").filter(Boolean);
|
|
190
|
+
const planning = {
|
|
191
|
+
key: "planning",
|
|
192
|
+
label: "Planning",
|
|
193
|
+
sortOrder: 0,
|
|
194
|
+
};
|
|
195
|
+
if (dirParts.length <= 1) {
|
|
196
|
+
return {
|
|
197
|
+
segments: [planning],
|
|
198
|
+
pageSortKey: basename,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
const subKey = dirParts.slice(1).join("/");
|
|
202
|
+
const subLabel = labelForPathSegment(dirParts[1]);
|
|
203
|
+
return {
|
|
204
|
+
segments: [
|
|
205
|
+
planning,
|
|
206
|
+
{
|
|
207
|
+
key: `planning-${subKey}`,
|
|
208
|
+
label: subLabel,
|
|
209
|
+
sortOrder: 0,
|
|
210
|
+
},
|
|
211
|
+
],
|
|
212
|
+
pageSortKey: basename,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
if (remainder.startsWith("implementation-artifacts/")) {
|
|
216
|
+
const implementation = {
|
|
217
|
+
key: "implementation",
|
|
218
|
+
label: "Implementation Stories",
|
|
219
|
+
sortOrder: 1,
|
|
220
|
+
};
|
|
221
|
+
if (basename.startsWith("epic-")) {
|
|
222
|
+
return {
|
|
223
|
+
segments: [
|
|
224
|
+
{
|
|
225
|
+
key: "epic-context",
|
|
226
|
+
label: "Epic Context",
|
|
227
|
+
sortOrder: 2,
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
pageSortKey: basename,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
const epicMatch = basename.match(/^(\d+)-(\d+)-/);
|
|
234
|
+
if (epicMatch) {
|
|
235
|
+
const epicNumber = epicMatch[1];
|
|
236
|
+
return {
|
|
237
|
+
segments: [
|
|
238
|
+
implementation,
|
|
239
|
+
{
|
|
240
|
+
key: `epic-${epicNumber}`,
|
|
241
|
+
label: `Epic ${epicNumber}`,
|
|
242
|
+
sortOrder: Number.parseInt(epicNumber, 10),
|
|
243
|
+
},
|
|
244
|
+
],
|
|
245
|
+
pageSortKey: basename,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
segments: [
|
|
250
|
+
implementation,
|
|
251
|
+
{
|
|
252
|
+
key: "other-stories",
|
|
253
|
+
label: "Other Stories",
|
|
254
|
+
sortOrder: 999,
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
pageSortKey: basename,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
return assignPathSegmentGroups(page, "bmad-output");
|
|
261
|
+
}
|
|
262
|
+
function assignPathSegmentGroups(page, category) {
|
|
263
|
+
const normalized = page.sourcePath.replace(/\\/g, "/");
|
|
264
|
+
const prefix = CATEGORY_PATH_PREFIXES[category];
|
|
265
|
+
let remainder = normalized;
|
|
266
|
+
if (prefix && normalized.startsWith(prefix)) {
|
|
267
|
+
remainder = normalized.slice(prefix.length);
|
|
268
|
+
}
|
|
269
|
+
const dirname = path.posix.dirname(remainder);
|
|
270
|
+
if (dirname === ".") {
|
|
271
|
+
if (category === "other" && normalized.includes("/")) {
|
|
272
|
+
const topSegment = normalized.split("/")[0];
|
|
273
|
+
return {
|
|
274
|
+
segments: [
|
|
275
|
+
{
|
|
276
|
+
key: topSegment,
|
|
277
|
+
label: labelForPathSegment(topSegment),
|
|
278
|
+
sortOrder: 0,
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
pageSortKey: normalized,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
if (category === "other" || category === "root") {
|
|
285
|
+
return {
|
|
286
|
+
segments: category === "other" ? [PROJECT_DOCS_GROUP] : [],
|
|
287
|
+
pageSortKey: page.title.toLowerCase(),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
return {
|
|
291
|
+
segments: [],
|
|
292
|
+
pageSortKey: page.title.toLowerCase(),
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
const dirParts = dirname.split("/").filter(Boolean);
|
|
296
|
+
const segments = dirParts.slice(0, 2).map((part, index) => ({
|
|
297
|
+
key: dirParts.slice(0, index + 1).join("/"),
|
|
298
|
+
label: labelForPathSegment(part),
|
|
299
|
+
sortOrder: 0,
|
|
300
|
+
}));
|
|
301
|
+
return {
|
|
302
|
+
segments,
|
|
303
|
+
pageSortKey: normalized,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
function buildTreeFromAssignments(assignments) {
|
|
307
|
+
const roots = new Map();
|
|
308
|
+
for (const { page, assignment } of assignments) {
|
|
309
|
+
if (assignment.segments.length === 0) {
|
|
310
|
+
const rootKey = "__root_pages__";
|
|
311
|
+
const root = roots.get(rootKey) ?? createMutableSubgroup(rootKey, "", 0);
|
|
312
|
+
root.pages.push(toNavPage(page, assignment.displayTitle));
|
|
313
|
+
roots.set(rootKey, root);
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
let level = roots;
|
|
317
|
+
let parent;
|
|
318
|
+
for (const [index, segment] of assignment.segments.entries()) {
|
|
319
|
+
const existing = level.get(segment.key);
|
|
320
|
+
const node = existing ??
|
|
321
|
+
createMutableSubgroup(segment.key, segment.label, segment.sortOrder);
|
|
322
|
+
if (!existing) {
|
|
323
|
+
level.set(segment.key, node);
|
|
324
|
+
if (parent) {
|
|
325
|
+
parent.children.set(segment.key, node);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (index === assignment.segments.length - 1) {
|
|
329
|
+
node.pages.push(toNavPage(page, assignment.displayTitle));
|
|
330
|
+
node.pageSortKeys.push(assignment.pageSortKey);
|
|
331
|
+
}
|
|
332
|
+
parent = node;
|
|
333
|
+
level = node.children;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
const topLevel = [...roots.values()].filter((node) => node.key !== "__root_pages__");
|
|
337
|
+
const rootPages = roots.get("__root_pages__")?.pages.sort(compareNavPages) ?? [];
|
|
338
|
+
const subgroups = sortMutableSubgroups(topLevel).map(finalizeSubgroup);
|
|
339
|
+
if (rootPages.length > 0) {
|
|
340
|
+
return [
|
|
341
|
+
...subgroups,
|
|
342
|
+
{
|
|
343
|
+
key: "ungrouped",
|
|
344
|
+
label: "Ungrouped",
|
|
345
|
+
anchor: "ungrouped",
|
|
346
|
+
pageCount: rootPages.length,
|
|
347
|
+
collapsible: rootPages.length > 1,
|
|
348
|
+
open: false,
|
|
349
|
+
active: false,
|
|
350
|
+
pages: rootPages,
|
|
351
|
+
subgroups: [],
|
|
352
|
+
hasNestedSubgroups: false,
|
|
353
|
+
},
|
|
354
|
+
];
|
|
355
|
+
}
|
|
356
|
+
return subgroups;
|
|
357
|
+
}
|
|
358
|
+
function createMutableSubgroup(key, label, sortOrder) {
|
|
359
|
+
return {
|
|
360
|
+
key,
|
|
361
|
+
label,
|
|
362
|
+
sortOrder,
|
|
363
|
+
pages: [],
|
|
364
|
+
pageSortKeys: [],
|
|
365
|
+
children: new Map(),
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
function finalizeSubgroup(node) {
|
|
369
|
+
const subgroups = sortMutableSubgroups([...node.children.values()]).map(finalizeSubgroup);
|
|
370
|
+
const pages = sortNavPages(node.pages);
|
|
371
|
+
const pageCount = pages.length + subgroups.reduce((sum, child) => sum + child.pageCount, 0);
|
|
372
|
+
return {
|
|
373
|
+
key: node.key,
|
|
374
|
+
label: node.label,
|
|
375
|
+
anchor: slugify(node.key),
|
|
376
|
+
pageCount,
|
|
377
|
+
collapsible: pageCount > 1 || subgroups.length > 0,
|
|
378
|
+
open: false,
|
|
379
|
+
active: false,
|
|
380
|
+
pages,
|
|
381
|
+
subgroups,
|
|
382
|
+
hasNestedSubgroups: subgroups.length > 0,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
function flattenSingletonSubgroups(subgroups) {
|
|
386
|
+
const flattened = [];
|
|
387
|
+
for (const subgroup of subgroups) {
|
|
388
|
+
const nested = flattenSingletonSubgroups(subgroup.subgroups);
|
|
389
|
+
let current = {
|
|
390
|
+
...subgroup,
|
|
391
|
+
subgroups: nested,
|
|
392
|
+
hasNestedSubgroups: nested.length > 0,
|
|
393
|
+
};
|
|
394
|
+
if (current.subgroups.length === 1 &&
|
|
395
|
+
current.pages.length === 0 &&
|
|
396
|
+
current.subgroups[0]) {
|
|
397
|
+
const child = current.subgroups[0];
|
|
398
|
+
current = {
|
|
399
|
+
...child,
|
|
400
|
+
key: `${current.key}-${child.key}`,
|
|
401
|
+
label: `${current.label} › ${child.label}`,
|
|
402
|
+
anchor: slugify(`${current.key}-${child.key}`),
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
if (current.pages.length === 0 && current.subgroups.length === 0) {
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
flattened.push(current);
|
|
409
|
+
}
|
|
410
|
+
return flattened;
|
|
411
|
+
}
|
|
412
|
+
function promoteSingletonPages(subgroups) {
|
|
413
|
+
const promotedPages = [];
|
|
414
|
+
const kept = [];
|
|
415
|
+
for (const subgroup of subgroups) {
|
|
416
|
+
const nested = promoteSingletonPages(subgroup.subgroups);
|
|
417
|
+
const pages = sortNavPages([...subgroup.pages, ...nested.pages]);
|
|
418
|
+
const children = nested.subgroups;
|
|
419
|
+
const pageCount = pages.length + children.reduce((sum, child) => sum + child.pageCount, 0);
|
|
420
|
+
if (pages.length === 1 && children.length === 0) {
|
|
421
|
+
promotedPages.push(pages[0]);
|
|
422
|
+
continue;
|
|
423
|
+
}
|
|
424
|
+
if (pages.length === 0 && children.length === 0) {
|
|
425
|
+
continue;
|
|
426
|
+
}
|
|
427
|
+
kept.push({
|
|
428
|
+
...subgroup,
|
|
429
|
+
pages,
|
|
430
|
+
subgroups: children,
|
|
431
|
+
pageCount,
|
|
432
|
+
collapsible: pageCount > 1 || children.length > 0,
|
|
433
|
+
hasNestedSubgroups: children.length > 0,
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
return {
|
|
437
|
+
subgroups: kept,
|
|
438
|
+
pages: promotedPages,
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
function applyNavSubgroupState(subgroups, category, activePageSlug) {
|
|
442
|
+
return subgroups.map((subgroup) => {
|
|
443
|
+
const nested = applyNavSubgroupState(subgroup.subgroups, category, activePageSlug);
|
|
444
|
+
const containsActivePage = subgroup.pages.some((page) => page.slug === activePageSlug) ||
|
|
445
|
+
nested.some((child) => child.active || child.open);
|
|
446
|
+
return {
|
|
447
|
+
...subgroup,
|
|
448
|
+
subgroups: nested,
|
|
449
|
+
hasNestedSubgroups: nested.length > 0,
|
|
450
|
+
active: containsActivePage,
|
|
451
|
+
open: containsActivePage,
|
|
452
|
+
};
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
function collectPages(subgroup) {
|
|
456
|
+
return [
|
|
457
|
+
...subgroup.pages,
|
|
458
|
+
...subgroup.subgroups.flatMap((child) => collectPages(child)),
|
|
459
|
+
];
|
|
460
|
+
}
|
|
461
|
+
function sortMutableSubgroups(nodes) {
|
|
462
|
+
return [...nodes].sort((left, right) => {
|
|
463
|
+
if (left.sortOrder !== right.sortOrder) {
|
|
464
|
+
return left.sortOrder - right.sortOrder;
|
|
465
|
+
}
|
|
466
|
+
return left.label.localeCompare(right.label);
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
function sortNavPages(pages) {
|
|
470
|
+
return [...pages].sort((left, right) => left.title.localeCompare(right.title));
|
|
471
|
+
}
|
|
472
|
+
function compareNavPages(left, right) {
|
|
473
|
+
return left.title.localeCompare(right.title);
|
|
474
|
+
}
|
|
475
|
+
function toNavPage(page, displayTitle) {
|
|
476
|
+
return {
|
|
477
|
+
title: displayTitle ?? page.title,
|
|
478
|
+
slug: page.slug,
|
|
479
|
+
href: `${page.slug}.html`,
|
|
480
|
+
sourcePath: page.sourcePath,
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
function extractSkillFolder(sourcePath) {
|
|
484
|
+
const normalized = sourcePath.replace(/\\/g, "/");
|
|
485
|
+
const match = normalized.match(/^\.agents\/skills\/([^/]+)\/SKILL\.md$/);
|
|
486
|
+
return match?.[1] ?? null;
|
|
487
|
+
}
|
|
488
|
+
function labelForPathSegment(segment) {
|
|
489
|
+
if (FOLDER_LABELS[segment]) {
|
|
490
|
+
return FOLDER_LABELS[segment];
|
|
491
|
+
}
|
|
492
|
+
return segment
|
|
493
|
+
.split("-")
|
|
494
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
495
|
+
.join(" ");
|
|
496
|
+
}
|
|
497
|
+
function formatAgentTitle(agent) {
|
|
498
|
+
const icon = agent.icon.trim();
|
|
499
|
+
if (icon.length > 0) {
|
|
500
|
+
return `${icon} ${agent.name} — ${agent.title}`;
|
|
501
|
+
}
|
|
502
|
+
return `${agent.name} — ${agent.title}`;
|
|
503
|
+
}
|
|
504
|
+
function slugify(value) {
|
|
505
|
+
return value
|
|
506
|
+
.toLowerCase()
|
|
507
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
508
|
+
.replace(/^-+|-+$/g, "");
|
|
509
|
+
}
|
|
510
|
+
async function parseBmadHelpCsv(csvContent, projectRoot) {
|
|
511
|
+
const skills = new Map();
|
|
512
|
+
const lines = csvContent.split(/\r?\n/).filter(Boolean);
|
|
513
|
+
if (lines.length <= 1) {
|
|
514
|
+
return { skills, agents: new Map() };
|
|
515
|
+
}
|
|
516
|
+
for (const line of lines.slice(1)) {
|
|
517
|
+
const row = parseCsvLine(line);
|
|
518
|
+
if (row.length < 8) {
|
|
519
|
+
continue;
|
|
520
|
+
}
|
|
521
|
+
const module = row[0]?.trim() ?? "";
|
|
522
|
+
const skill = row[1]?.trim() ?? "";
|
|
523
|
+
const displayName = row[2]?.trim() ?? "";
|
|
524
|
+
const description = row[4]?.trim() ?? "";
|
|
525
|
+
const phase = row[7]?.trim() ?? "";
|
|
526
|
+
if (!skill || skill === "_meta" || !displayName) {
|
|
527
|
+
continue;
|
|
528
|
+
}
|
|
529
|
+
if (!skills.has(skill)) {
|
|
530
|
+
skills.set(skill, {
|
|
531
|
+
skill,
|
|
532
|
+
displayName,
|
|
533
|
+
phase,
|
|
534
|
+
module,
|
|
535
|
+
deprecated: /deprecated/i.test(description),
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
const agents = await loadAgentEntries(projectRoot, skills);
|
|
540
|
+
return { skills, agents };
|
|
541
|
+
}
|
|
542
|
+
async function loadAgentEntries(projectRoot, skills) {
|
|
543
|
+
const agents = new Map();
|
|
544
|
+
for (const skillFolder of skills.keys()) {
|
|
545
|
+
if (!skillFolder.startsWith("bmad-agent-")) {
|
|
546
|
+
continue;
|
|
547
|
+
}
|
|
548
|
+
const customizePath = path.join(projectRoot, ".agents/skills", skillFolder, "customize.toml");
|
|
549
|
+
try {
|
|
550
|
+
const toml = await fs.readFile(customizePath, "utf-8");
|
|
551
|
+
const agent = parseAgentCustomize(toml, skillFolder);
|
|
552
|
+
if (agent) {
|
|
553
|
+
agents.set(skillFolder, agent);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
catch {
|
|
557
|
+
continue;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return agents;
|
|
561
|
+
}
|
|
562
|
+
function parseAgentCustomize(toml, skillFolder) {
|
|
563
|
+
if (!/^\[agent\]/m.test(toml)) {
|
|
564
|
+
return null;
|
|
565
|
+
}
|
|
566
|
+
const agentBlock = extractTomlSection(toml, "agent");
|
|
567
|
+
const name = readTomlString(agentBlock, "name") ?? skillFolder;
|
|
568
|
+
const title = readTomlString(agentBlock, "title") ?? name;
|
|
569
|
+
const icon = readTomlString(agentBlock, "icon") ?? "";
|
|
570
|
+
return { skill: skillFolder, name, title, icon };
|
|
571
|
+
}
|
|
572
|
+
function extractTomlSection(content, section) {
|
|
573
|
+
const pattern = new RegExp(`^\\[${section}\\][\\s\\S]*?(?=^\\[[^\\]]+\\]|$)`, "m");
|
|
574
|
+
const match = content.match(pattern);
|
|
575
|
+
return match?.[0] ?? "";
|
|
576
|
+
}
|
|
577
|
+
function readTomlString(section, key) {
|
|
578
|
+
const pattern = new RegExp(`^${key}\\s*=\\s*"([^"]*)"`, "m");
|
|
579
|
+
const match = section.match(pattern);
|
|
580
|
+
return match?.[1];
|
|
581
|
+
}
|
|
582
|
+
function parseCsvLine(line) {
|
|
583
|
+
const values = [];
|
|
584
|
+
let current = "";
|
|
585
|
+
let inQuotes = false;
|
|
586
|
+
for (let index = 0; index < line.length; index += 1) {
|
|
587
|
+
const char = line[index];
|
|
588
|
+
if (char === '"') {
|
|
589
|
+
if (inQuotes && line[index + 1] === '"') {
|
|
590
|
+
current += '"';
|
|
591
|
+
index += 1;
|
|
592
|
+
}
|
|
593
|
+
else {
|
|
594
|
+
inQuotes = !inQuotes;
|
|
595
|
+
}
|
|
596
|
+
continue;
|
|
597
|
+
}
|
|
598
|
+
if (char === "," && !inQuotes) {
|
|
599
|
+
values.push(current);
|
|
600
|
+
current = "";
|
|
601
|
+
continue;
|
|
602
|
+
}
|
|
603
|
+
current += char;
|
|
604
|
+
}
|
|
605
|
+
values.push(current);
|
|
606
|
+
return values;
|
|
607
|
+
}
|
|
608
|
+
//# sourceMappingURL=nav-grouping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-grouping.js","sourceRoot":"","sources":["../../../src/output/html/nav-grouping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{{#collapsible}}
|
|
2
|
+
<details class="category-nav-subgroup category-nav-subgroup-leaf{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}" {{#open}}open{{/open}}>
|
|
3
|
+
<summary class="category-nav-subsummary">
|
|
4
|
+
<span class="category-nav-subheading">{{label}}</span>
|
|
5
|
+
<span class="category-nav-count" aria-label="{{pageCount}} pages">{{pageCount}}</span>
|
|
6
|
+
</summary>
|
|
7
|
+
<ul class="category-nav-pages">
|
|
8
|
+
{{#pages}}
|
|
9
|
+
<li><a href="{{href}}">{{title}}</a></li>
|
|
10
|
+
{{/pages}}
|
|
11
|
+
</ul>
|
|
12
|
+
</details>
|
|
13
|
+
{{/collapsible}}
|
|
14
|
+
{{^collapsible}}
|
|
15
|
+
<div class="category-nav-subgroup category-nav-subgroup-leaf{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}">
|
|
16
|
+
<span class="category-nav-subheading">{{label}}</span>
|
|
17
|
+
<ul class="category-nav-pages">
|
|
18
|
+
{{#pages}}
|
|
19
|
+
<li><a href="{{href}}">{{title}}</a></li>
|
|
20
|
+
{{/pages}}
|
|
21
|
+
</ul>
|
|
22
|
+
</div>
|
|
23
|
+
{{/collapsible}}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{{#collapsible}}
|
|
2
|
+
<details class="category-nav-subgroup{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}" {{#open}}open{{/open}}>
|
|
3
|
+
<summary class="category-nav-subsummary">
|
|
4
|
+
<span class="category-nav-subheading">{{label}}</span>
|
|
5
|
+
<span class="category-nav-count" aria-label="{{pageCount}} pages">{{pageCount}}</span>
|
|
6
|
+
</summary>
|
|
7
|
+
{{#hasNestedSubgroups}}
|
|
8
|
+
<div class="category-nav-subgroups">
|
|
9
|
+
{{#subgroups}}
|
|
10
|
+
{{> nav-subgroup-leaf}}
|
|
11
|
+
{{/subgroups}}
|
|
12
|
+
</div>
|
|
13
|
+
{{/hasNestedSubgroups}}
|
|
14
|
+
{{^hasNestedSubgroups}}
|
|
15
|
+
<ul class="category-nav-pages">
|
|
16
|
+
{{#pages}}
|
|
17
|
+
<li><a href="{{href}}">{{title}}</a></li>
|
|
18
|
+
{{/pages}}
|
|
19
|
+
</ul>
|
|
20
|
+
{{/hasNestedSubgroups}}
|
|
21
|
+
</details>
|
|
22
|
+
{{/collapsible}}
|
|
23
|
+
{{^collapsible}}
|
|
24
|
+
<div class="category-nav-subgroup{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}">
|
|
25
|
+
<span class="category-nav-subheading">{{label}}</span>
|
|
26
|
+
{{#hasNestedSubgroups}}
|
|
27
|
+
<div class="category-nav-subgroups">
|
|
28
|
+
{{#subgroups}}
|
|
29
|
+
{{> nav-subgroup-leaf}}
|
|
30
|
+
{{/subgroups}}
|
|
31
|
+
</div>
|
|
32
|
+
{{/hasNestedSubgroups}}
|
|
33
|
+
{{^hasNestedSubgroups}}
|
|
34
|
+
<ul class="category-nav-pages">
|
|
35
|
+
{{#pages}}
|
|
36
|
+
<li><a href="{{href}}">{{title}}</a></li>
|
|
37
|
+
{{/pages}}
|
|
38
|
+
</ul>
|
|
39
|
+
{{/hasNestedSubgroups}}
|
|
40
|
+
</div>
|
|
41
|
+
{{/collapsible}}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{{#collapsible}}
|
|
2
|
+
<details class="category-nav-subgroup category-nav-subgroup-leaf{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}" {{#open}}open{{/open}}>
|
|
3
|
+
<summary class="category-nav-subsummary">
|
|
4
|
+
<span class="category-nav-subheading">{{label}}</span>
|
|
5
|
+
<span class="category-nav-count" aria-label="{{pageCount}} pages">{{pageCount}}</span>
|
|
6
|
+
</summary>
|
|
7
|
+
<ul class="specwiki-portal-pages">
|
|
8
|
+
{{#pages}}
|
|
9
|
+
<li><a href="{{href}}">{{title}}</a> — <code>{{sourcePath}}</code></li>
|
|
10
|
+
{{/pages}}
|
|
11
|
+
</ul>
|
|
12
|
+
</details>
|
|
13
|
+
{{/collapsible}}
|
|
14
|
+
{{^collapsible}}
|
|
15
|
+
<div class="category-nav-subgroup category-nav-subgroup-leaf{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}">
|
|
16
|
+
<h3 class="specwiki-portal-subheading">{{label}}</h3>
|
|
17
|
+
<ul class="specwiki-portal-pages">
|
|
18
|
+
{{#pages}}
|
|
19
|
+
<li><a href="{{href}}">{{title}}</a> — <code>{{sourcePath}}</code></li>
|
|
20
|
+
{{/pages}}
|
|
21
|
+
</ul>
|
|
22
|
+
</div>
|
|
23
|
+
{{/collapsible}}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{{#collapsible}}
|
|
2
|
+
<details class="category-nav-subgroup{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}" {{#open}}open{{/open}}>
|
|
3
|
+
<summary class="category-nav-subsummary">
|
|
4
|
+
<span class="category-nav-subheading">{{label}}</span>
|
|
5
|
+
<span class="category-nav-count" aria-label="{{pageCount}} pages">{{pageCount}}</span>
|
|
6
|
+
</summary>
|
|
7
|
+
{{#hasNestedSubgroups}}
|
|
8
|
+
<div class="category-nav-subgroups">
|
|
9
|
+
{{#subgroups}}
|
|
10
|
+
{{> portal-subgroup-leaf}}
|
|
11
|
+
{{/subgroups}}
|
|
12
|
+
</div>
|
|
13
|
+
{{/hasNestedSubgroups}}
|
|
14
|
+
{{^hasNestedSubgroups}}
|
|
15
|
+
<ul class="specwiki-portal-pages">
|
|
16
|
+
{{#pages}}
|
|
17
|
+
<li><a href="{{href}}">{{title}}</a> — <code>{{sourcePath}}</code></li>
|
|
18
|
+
{{/pages}}
|
|
19
|
+
</ul>
|
|
20
|
+
{{/hasNestedSubgroups}}
|
|
21
|
+
</details>
|
|
22
|
+
{{/collapsible}}
|
|
23
|
+
{{^collapsible}}
|
|
24
|
+
<div class="category-nav-subgroup{{#active}} category-nav-active{{/active}}" data-subgroup="{{key}}">
|
|
25
|
+
<h3 class="specwiki-portal-subheading">{{label}}</h3>
|
|
26
|
+
{{#hasNestedSubgroups}}
|
|
27
|
+
<div class="category-nav-subgroups">
|
|
28
|
+
{{#subgroups}}
|
|
29
|
+
{{> portal-subgroup-leaf}}
|
|
30
|
+
{{/subgroups}}
|
|
31
|
+
</div>
|
|
32
|
+
{{/hasNestedSubgroups}}
|
|
33
|
+
{{^hasNestedSubgroups}}
|
|
34
|
+
<ul class="specwiki-portal-pages">
|
|
35
|
+
{{#pages}}
|
|
36
|
+
<li><a href="{{href}}">{{title}}</a> — <code>{{sourcePath}}</code></li>
|
|
37
|
+
{{/pages}}
|
|
38
|
+
</ul>
|
|
39
|
+
{{/hasNestedSubgroups}}
|
|
40
|
+
</div>
|
|
41
|
+
{{/collapsible}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
export function readPackageVersion() {
|
|
5
|
+
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const packageJsonPath = path.join(moduleDir, "..", "package.json");
|
|
7
|
+
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
|
|
8
|
+
if (typeof pkg.version !== "string" || pkg.version.length === 0) {
|
|
9
|
+
throw new Error("package.json is missing a valid version field");
|
|
10
|
+
}
|
|
11
|
+
return pkg.version;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,kBAAkB;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAE9D,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC"}
|