@lucasviola/specwiki 1.0.1 → 1.1.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.
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  <br><br>
6
6
 
7
7
  [![CI](https://github.com/lucasviola/specwiki/actions/workflows/ci.yml/badge.svg)](https://github.com/lucasviola/specwiki/actions/workflows/ci.yml)
8
- [![version](https://img.shields.io/badge/version-0.1.0-blue)](package.json)
8
+ [![version](https://img.shields.io/badge/version-1.1.0-blue)](package.json)
9
9
  [![node](https://img.shields.io/badge/node-%3E%3D20-339933?logo=node.js&logoColor=white)](package.json)
10
10
  [![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
11
11
 
@@ -222,6 +222,8 @@ npm run typecheck
222
222
  npm test
223
223
  ```
224
224
 
225
+ See [CHANGELOG.md](CHANGELOG.md) for release history. When shipping user-facing changes, add a bullet under `[Unreleased]` there.
226
+
225
227
  ## License
226
228
 
227
229
  MIT
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,aAAa,CAAC;AAoGrB,wBAAsB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsF1E;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDvE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEtD"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,aAAa,CAAC;AAoGrB,wBAAsB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF1E;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDvE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEtD"}
@@ -126,6 +126,7 @@ export async function generateWiki(options) {
126
126
  const written = await writeWiki(resolvedOutput, wiki);
127
127
  const htmlWritten = await writeHtmlWiki(resolvedOutput, wiki, {
128
128
  noSearch: options.noSearch,
129
+ projectRoot: resolvedProjectRoot,
129
130
  });
130
131
  if (options.emitLlmsTxt) {
131
132
  await writeLlmsTxt(resolvedOutput, wiki.pages);
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AASxE,MAAM,cAAc,GAClB,wIAAwI,CAAC;AAM3I,SAAS,qBAAqB;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAqB;IACjD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgD,CAAC;IAE3E,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;YAChD,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,KAAK,EAAE,EAAE;SACV,CAAC;QACF,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAClB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACxD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CACpC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,SAAiB,EACjB,KAAiB;IAEjB,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,MAAM;QACvB,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YACxE,IAAI;YACJ,KAAK;YACL,QAAQ;YACR,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,OAAmB,EACnB,MAA2C;IAE3C,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;YACP,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM;YACvC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CACjC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAClD,CAAC,CACF;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;YACP,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC9B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,OAAmB,EAAE,OAAwB;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,qBAAqB,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QACtB,OAAO;QACP,WAAW;QACX,GAAG,CAAC,OAAO,KAAK,UAAU;YACxB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACjC,YAAY,EAAE,QAAQ,CAAC,MAAM;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAmB,EAAE,GAAY;IAC1D,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACxE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,MAAM,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAwB;IACzD,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,cAAc,CAAC,UAAU,EAAE;QACzB,GAAG,OAAO;QACV,WAAW,EAAE,mBAAmB;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,IAAI,cAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,0BAA0B,CAC/C,mBAAmB,EACnB,SAAS,CACV,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpD,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GACpB,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3D,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC;YACpC,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;SAC/D,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,eAAe,CAAC,UAAU,EAAE;oBAC1B,SAAS,EAAE,CAAC;oBACZ,SAAS,EAAE,cAAc;oBACzB,KAAK,EAAE,EAAE;iBACV,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,qBAAqB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE;YAC5D,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,mBAAmB;SACjC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC5B,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,SAAS,EAAE,WAAW,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,eAAe,CACb,UAAU,EACV,wBAAwB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CACrD,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,CAClE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,cAAc,GAAG,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,cAAc,QAAQ,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,gBAAgB,CAAC,CACpE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAwB;IACtD,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE9D,cAAc,CAAC,MAAM,EAAE;QACrB,GAAG,OAAO;QACV,WAAW,EAAE,mBAAmB;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC;YACpC,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,eAAe,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,qBAAqB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,eAAe,CAAC,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEvD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC;QAErE,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,GAAG,YAAY,KAAK,IAAK,GAAgB,CAAC,cAAc,KAAK,IAAI,CAAC;AAC3E,CAAC"}
@@ -491,6 +491,89 @@ body.specwiki {
491
491
  text-decoration: underline;
492
492
  }
493
493
 
494
+ /* Subgroup labels are structural (not links): muted section chrome.
495
+ Leaf page links keep --color-base so parents and children read apart. */
496
+ .category-nav-subgroup {
497
+ margin-top: 0.5rem;
498
+ }
499
+
500
+ .category-nav-subgroup:first-child {
501
+ margin-top: 0.25rem;
502
+ }
503
+
504
+ .category-nav-subgroup-summary {
505
+ display: flex;
506
+ align-items: center;
507
+ gap: 0.25rem;
508
+ cursor: pointer;
509
+ list-style: none;
510
+ }
511
+
512
+ .category-nav-subgroup-group > summary::-webkit-details-marker {
513
+ display: none;
514
+ }
515
+
516
+ .category-nav-subgroup-group > summary::marker {
517
+ content: "";
518
+ }
519
+
520
+ .category-nav-subgroup-group > summary::before {
521
+ content: "›";
522
+ color: var(--color-base--subtle);
523
+ font-size: 0.875rem;
524
+ line-height: 1;
525
+ transform: rotate(0deg);
526
+ transition: transform 160ms ease-out;
527
+ }
528
+
529
+ .category-nav-subgroup-group[open] > summary::before {
530
+ transform: rotate(90deg);
531
+ }
532
+
533
+ .category-nav-subgroup-label {
534
+ display: block;
535
+ font-size: 0.6875rem;
536
+ font-weight: var(--font-weight-bold);
537
+ color: var(--color-base--subtle);
538
+ margin: 0 0 0.1875rem;
539
+ text-transform: uppercase;
540
+ letter-spacing: 0.04em;
541
+ }
542
+
543
+ .category-nav-subgroup-summary .category-nav-subgroup-label {
544
+ flex: 1;
545
+ min-width: 0;
546
+ margin-bottom: 0;
547
+ }
548
+
549
+ .category-nav-subgroup-pages {
550
+ list-style: none;
551
+ margin: 0;
552
+ padding: 0 0 0 0.625rem;
553
+ border-left: 1px solid var(--border-color-divider);
554
+ }
555
+
556
+ .category-nav-subgroup-pages > li > a {
557
+ color: var(--color-base);
558
+ }
559
+
560
+ .category-nav-subgroup-nested {
561
+ margin-top: 0.375rem;
562
+ }
563
+
564
+ .category-nav-subgroup-nested .category-nav-subgroup-label {
565
+ font-weight: var(--font-weight-bold);
566
+ font-size: 0.6875rem;
567
+ text-transform: none;
568
+ letter-spacing: normal;
569
+ color: var(--color-base--subtle);
570
+ }
571
+
572
+ .category-nav-subgroup-nested .category-nav-subgroup-pages {
573
+ border-left-color: var(--border-color-divider);
574
+ padding-left: 0.5rem;
575
+ }
576
+
494
577
  .specwiki-center {
495
578
  padding: var(--padding-horizontal-base);
496
579
  min-width: 0;
@@ -898,7 +981,8 @@ body.specwiki {
898
981
 
899
982
  @media (prefers-reduced-motion: reduce) {
900
983
  .specwiki-nav-drawer,
901
- .category-nav-group > summary::before {
984
+ .category-nav-group > summary::before,
985
+ .category-nav-subgroup-group > summary::before {
902
986
  transition: none;
903
987
  }
904
988
  }
@@ -0,0 +1,32 @@
1
+ export interface AgentSkillCatalogEntry {
2
+ skillId: string;
3
+ displayName?: string;
4
+ phase?: string;
5
+ module?: string;
6
+ description?: string;
7
+ isAgent: boolean;
8
+ agentName?: string;
9
+ agentTitle?: string;
10
+ agentIcon?: string;
11
+ /** True when at least one non-_meta CSV row contributed to this entry. */
12
+ inCsv: boolean;
13
+ }
14
+ export interface NavGroupingContext {
15
+ readonly loaded: boolean;
16
+ readonly skillsById: ReadonlyMap<string, AgentSkillCatalogEntry>;
17
+ }
18
+ export declare function loadNavGroupingContext(projectRoot: string): Promise<NavGroupingContext>;
19
+ /** Exported for unit tests — keeps catalog reads under projectRoot. */
20
+ export declare function catalogPath(root: string, ...parts: string[]): string;
21
+ /** Minimal RFC4180 line parser (quoted fields, escaped quotes). */
22
+ export declare function parseCsvLine(line: string): string[];
23
+ interface ParsedSkillToml {
24
+ isAgent: boolean;
25
+ agentName?: string;
26
+ agentTitle?: string;
27
+ agentIcon?: string;
28
+ }
29
+ /** Section detect + scalar extract — not a full TOML AST. */
30
+ export declare function parseSkillCustomizeToml(text: string): ParsedSkillToml;
31
+ export {};
32
+ //# sourceMappingURL=nav-grouping-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-grouping-catalog.d.ts","sourceRoot":"","sources":["../../../src/output/html/nav-grouping-catalog.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAClE;AAqBD,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA2C7B;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAOpE;AA0ED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAqCnD;AAuJD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6DAA6D;AAC7D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAYrE"}
@@ -0,0 +1,294 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { log } from "../../core/Logger.js";
4
+ import { assertRealpathConfinedUnder, PathEscapeError, } from "../../core/paths.js";
5
+ const SDLC_PHASES = new Set([
6
+ "1-analysis",
7
+ "2-planning",
8
+ "3-solutioning",
9
+ "4-implementation",
10
+ ]);
11
+ function emptyContext() {
12
+ return { loaded: false, skillsById: new Map() };
13
+ }
14
+ export async function loadNavGroupingContext(projectRoot) {
15
+ try {
16
+ const resolvedRoot = path.resolve(projectRoot);
17
+ const csvPath = catalogPath(resolvedRoot, "_bmad", "_config", "bmad-help.csv");
18
+ const csvText = await readConfinedFile(resolvedRoot, csvPath, "bmad-help.csv");
19
+ if (csvText === null) {
20
+ return emptyContext();
21
+ }
22
+ const skillsById = new Map();
23
+ for (const row of parseBmadHelpCsv(csvText)) {
24
+ mergeCsvRow(skillsById, row);
25
+ }
26
+ await enrichFromSkillTomls(resolvedRoot, skillsById);
27
+ let agentCount = 0;
28
+ for (const entry of skillsById.values()) {
29
+ if (entry.isAgent) {
30
+ agentCount += 1;
31
+ }
32
+ }
33
+ log.info("output.write", {
34
+ relativePath: "_bmad/_config/bmad-help.csv",
35
+ skillsLoaded: skillsById.size,
36
+ agentsFound: agentCount,
37
+ });
38
+ return { loaded: true, skillsById };
39
+ }
40
+ catch {
41
+ return emptyContext();
42
+ }
43
+ }
44
+ /** Exported for unit tests — keeps catalog reads under projectRoot. */
45
+ export function catalogPath(root, ...parts) {
46
+ const resolved = path.resolve(root, ...parts);
47
+ const relative = path.relative(root, resolved);
48
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
49
+ throw new Error("catalog path escapes project root");
50
+ }
51
+ return resolved;
52
+ }
53
+ async function readConfinedFile(projectRoot, targetPath, label) {
54
+ try {
55
+ await assertRealpathConfinedUnder(projectRoot, targetPath, label);
56
+ }
57
+ catch (err) {
58
+ if (err instanceof PathEscapeError) {
59
+ return null;
60
+ }
61
+ throw err;
62
+ }
63
+ try {
64
+ return await fs.readFile(targetPath, "utf-8");
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ function descriptionLooksDeprecated(description) {
71
+ return (description ?? "").toLowerCase().includes("deprecated");
72
+ }
73
+ function parseBmadHelpCsv(text) {
74
+ const lines = text.split(/\r?\n/);
75
+ const headerFields = parseCsvLine(lines[0] || "");
76
+ const index = {
77
+ module: headerFields.indexOf("module"),
78
+ skill: headerFields.indexOf("skill"),
79
+ displayName: headerFields.indexOf("display-name"),
80
+ description: headerFields.indexOf("description"),
81
+ phase: headerFields.indexOf("phase"),
82
+ };
83
+ if (index.skill < 0) {
84
+ return [];
85
+ }
86
+ const rows = [];
87
+ for (let i = 1; i < lines.length; i++) {
88
+ const line = lines[i];
89
+ if (!line.trim()) {
90
+ continue;
91
+ }
92
+ const fields = parseCsvLine(line);
93
+ const skill = (fields[index.skill] || "").trim();
94
+ if (!skill || skill === "_meta") {
95
+ continue;
96
+ }
97
+ rows.push({
98
+ module: fieldAt(fields, index.module),
99
+ skill,
100
+ displayName: fieldAt(fields, index.displayName),
101
+ description: fieldAt(fields, index.description),
102
+ phase: fieldAt(fields, index.phase),
103
+ });
104
+ }
105
+ return rows;
106
+ }
107
+ function fieldAt(fields, index) {
108
+ if (index < 0 || index >= fields.length) {
109
+ return "";
110
+ }
111
+ return fields[index].trim();
112
+ }
113
+ /** Minimal RFC4180 line parser (quoted fields, escaped quotes). */
114
+ export function parseCsvLine(line) {
115
+ const fields = [];
116
+ let current = "";
117
+ let inQuotes = false;
118
+ for (let i = 0; i < line.length; i++) {
119
+ const ch = line[i];
120
+ if (inQuotes) {
121
+ if (ch === '"') {
122
+ if (line[i + 1] === '"') {
123
+ current += '"';
124
+ i += 1;
125
+ }
126
+ else {
127
+ inQuotes = false;
128
+ }
129
+ }
130
+ else {
131
+ current += ch;
132
+ }
133
+ continue;
134
+ }
135
+ if (ch === '"') {
136
+ inQuotes = true;
137
+ continue;
138
+ }
139
+ if (ch === ",") {
140
+ fields.push(current);
141
+ current = "";
142
+ continue;
143
+ }
144
+ current += ch;
145
+ }
146
+ fields.push(current);
147
+ return fields;
148
+ }
149
+ function csvRowScore(row) {
150
+ let score = 0;
151
+ if (SDLC_PHASES.has(row.phase)) {
152
+ score += 100;
153
+ }
154
+ else if (row.phase === "anytime") {
155
+ score += 10;
156
+ }
157
+ if (row.module.includes("BMad Method") ||
158
+ (row.module && row.module !== "Core")) {
159
+ score += 5;
160
+ }
161
+ else if (row.module === "Core") {
162
+ score += 1;
163
+ }
164
+ return score;
165
+ }
166
+ function mergeCsvRow(skillsById, row) {
167
+ const existing = skillsById.get(row.skill);
168
+ if (!existing) {
169
+ skillsById.set(row.skill, {
170
+ skillId: row.skill,
171
+ displayName: row.displayName || undefined,
172
+ phase: row.phase || undefined,
173
+ module: row.module || undefined,
174
+ description: row.description || undefined,
175
+ isAgent: false,
176
+ inCsv: true,
177
+ });
178
+ return;
179
+ }
180
+ const existingAsRow = {
181
+ module: existing.module || "",
182
+ skill: existing.skillId,
183
+ displayName: existing.displayName || "",
184
+ description: existing.description || "",
185
+ phase: existing.phase || "",
186
+ };
187
+ const priorDeprecatedDescription = descriptionLooksDeprecated(existing.description)
188
+ ? existing.description
189
+ : undefined;
190
+ if (csvRowScore(row) > csvRowScore(existingAsRow)) {
191
+ if (row.displayName) {
192
+ existing.displayName = row.displayName;
193
+ }
194
+ if (row.phase) {
195
+ existing.phase = row.phase;
196
+ }
197
+ if (row.module) {
198
+ existing.module = row.module;
199
+ }
200
+ if (row.description) {
201
+ existing.description = row.description;
202
+ }
203
+ }
204
+ // Any CSV row marking DEPRECATED wins membership, even on score ties / losses.
205
+ if (descriptionLooksDeprecated(row.description)) {
206
+ existing.description = row.description;
207
+ }
208
+ else if (priorDeprecatedDescription) {
209
+ existing.description = priorDeprecatedDescription;
210
+ }
211
+ existing.inCsv = true;
212
+ }
213
+ async function enrichFromSkillTomls(projectRoot, skillsById) {
214
+ const skillsDir = catalogPath(projectRoot, ".agents", "skills");
215
+ try {
216
+ await assertRealpathConfinedUnder(projectRoot, skillsDir, "agent skills directory");
217
+ }
218
+ catch (err) {
219
+ if (err instanceof PathEscapeError) {
220
+ return;
221
+ }
222
+ throw err;
223
+ }
224
+ let entries;
225
+ try {
226
+ entries = await fs.readdir(skillsDir);
227
+ }
228
+ catch {
229
+ return;
230
+ }
231
+ for (const skillId of entries) {
232
+ let tomlPath;
233
+ try {
234
+ tomlPath = catalogPath(projectRoot, ".agents", "skills", skillId, "customize.toml");
235
+ }
236
+ catch {
237
+ continue;
238
+ }
239
+ const tomlText = await readConfinedFile(projectRoot, tomlPath, `customize.toml (${skillId})`);
240
+ if (tomlText === null) {
241
+ continue;
242
+ }
243
+ const parsed = parseSkillCustomizeToml(tomlText);
244
+ const existing = skillsById.get(skillId);
245
+ if (existing) {
246
+ if (parsed.isAgent) {
247
+ existing.isAgent = true;
248
+ existing.agentName = parsed.agentName;
249
+ existing.agentTitle = parsed.agentTitle;
250
+ existing.agentIcon = parsed.agentIcon;
251
+ }
252
+ continue;
253
+ }
254
+ if (parsed.isAgent) {
255
+ skillsById.set(skillId, {
256
+ skillId,
257
+ isAgent: true,
258
+ agentName: parsed.agentName,
259
+ agentTitle: parsed.agentTitle,
260
+ agentIcon: parsed.agentIcon,
261
+ inCsv: false,
262
+ });
263
+ }
264
+ }
265
+ }
266
+ /** Section detect + scalar extract — not a full TOML AST. */
267
+ export function parseSkillCustomizeToml(text) {
268
+ if (!/^\s*\[agent\]\s*$/m.test(text)) {
269
+ return { isAgent: false };
270
+ }
271
+ const agentBody = extractTomlSection(text, "agent");
272
+ return {
273
+ isAgent: true,
274
+ agentName: extractTomlString(agentBody, "name"),
275
+ agentTitle: extractTomlString(agentBody, "title"),
276
+ agentIcon: extractTomlString(agentBody, "icon"),
277
+ };
278
+ }
279
+ function extractTomlSection(text, section) {
280
+ const header = new RegExp(String.raw `^\s*\[${section}\]\s*(?:\r?\n|$)`, "m").exec(text);
281
+ if (!header) {
282
+ return "";
283
+ }
284
+ const rest = text.slice(header.index + header[0].length);
285
+ const nextHeader = rest.search(/^\s*\[[^\]]+\]\s*$/m);
286
+ return nextHeader === -1 ? rest : rest.slice(0, nextHeader);
287
+ }
288
+ function extractTomlString(sectionBody, key) {
289
+ const pattern = new RegExp(String.raw `^\s*${key}\s*=\s*(?:"([^"]*)"|'([^']*)')\s*$`, "m");
290
+ const match = sectionBody.match(pattern);
291
+ const value = match?.[1] ?? match?.[2];
292
+ return value ? value : undefined;
293
+ }
294
+ //# sourceMappingURL=nav-grouping-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-grouping-catalog.js","sourceRoot":"","sources":["../../../src/output/html/nav-grouping-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import type { WikiPage } from "../../types.js";
2
+ import { loadNavGroupingContext, type AgentSkillCatalogEntry, type NavGroupingContext } from "./nav-grouping-catalog.js";
3
+ export type { AgentSkillCatalogEntry, NavGroupingContext };
4
+ export { loadNavGroupingContext };
2
5
  export interface NavPage {
3
6
  title: string;
4
7
  slug: string;
@@ -8,39 +11,37 @@ export interface NavPage {
8
11
  export interface NavSubgroup {
9
12
  key: string;
10
13
  label: string;
11
- anchor: string;
12
14
  pageCount: number;
13
15
  collapsible: boolean;
14
16
  open: boolean;
15
- active: boolean;
16
17
  pages: NavPage[];
17
- subgroups: NavSubgroup[];
18
- hasNestedSubgroups: boolean;
19
- }
20
- export interface NavGroupingContext {
21
- bmadCatalog: BmadCatalog | null;
18
+ subgroups?: NavSubgroup[];
22
19
  }
23
- export interface BmadSkillEntry {
24
- skill: string;
25
- displayName: string;
26
- phase: string;
27
- module: string;
28
- deprecated: boolean;
20
+ export interface CategoryNavGroupingResult {
21
+ pages: NavPage[];
22
+ subgroups: NavSubgroup[];
23
+ hasSubgroups: boolean;
29
24
  }
30
- export interface BmadAgentEntry {
31
- skill: string;
32
- name: string;
33
- title: string;
34
- icon: string;
25
+ export interface BuildCategoryNavSubgroupsOptions {
26
+ categoryKey: string;
27
+ activePageSlug?: string;
28
+ activeSourcePath?: string;
29
+ /** When true, multi-page subgroups start collapsed (index view). */
30
+ indexBuild?: boolean;
31
+ context?: NavGroupingContext;
35
32
  }
36
- export interface BmadCatalog {
37
- skills: Map<string, BmadSkillEntry>;
38
- agents: Map<string, BmadAgentEntry>;
33
+ export declare function buildCategoryNavSubgroups(pages: WikiPage[], options: BuildCategoryNavSubgroupsOptions): CategoryNavGroupingResult;
34
+ export interface SubgroupTrailSegment {
35
+ key: string;
36
+ label: string;
39
37
  }
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;
38
+ /**
39
+ * Walk finalized category subgroups and return the ordered ancestor trail
40
+ * (outer → inner) for the active page. Does not include the page itself.
41
+ */
42
+ export declare function resolveActiveSubgroupTrail(subgroups: NavSubgroup[], options: Pick<BuildCategoryNavSubgroupsOptions, "activePageSlug" | "activeSourcePath">): SubgroupTrailSegment[];
43
+ /** Exported for unit tests — maps category keys to path strip prefixes. */
44
+ export declare function categoryPathPrefix(categoryKey: string): string | undefined;
45
+ /** Exported for unit tests — humanizes a folder segment. */
46
+ export declare function humanizeSegment(segment: string): string;
46
47
  //# sourceMappingURL=nav-grouping.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"nav-grouping.d.ts","sourceRoot":"","sources":["../../../src/output/html/nav-grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,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,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AA+DD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,EAAE,gCAAgC,GACxC,yBAAyB,CA2C3B;AAwiBD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,WAAW,EAAE,EACxB,OAAO,EAAE,IAAI,CACX,gCAAgC,EAChC,gBAAgB,GAAG,kBAAkB,CACtC,GACA,oBAAoB,EAAE,CAmBxB;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1E;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD"}