@vibgrate/cli 2026.819.3 → 2026.825.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/{agent-AFMDB4GM.js → agent-IHNUBFBM.js} +13 -12
  2. package/dist/{agent-AFMDB4GM.js.map → agent-IHNUBFBM.js.map} +1 -1
  3. package/dist/{approvals-F2DJGPU7.js → approvals-HRIMDIX3.js} +5 -5
  4. package/dist/{approvals-F2DJGPU7.js.map → approvals-HRIMDIX3.js.map} +1 -1
  5. package/dist/{attach-XTX2Q3AD.js → attach-L43JUJ7A.js} +3 -3
  6. package/dist/{attach-XTX2Q3AD.js.map → attach-L43JUJ7A.js.map} +1 -1
  7. package/dist/{baseline-KTE2C3LW.js → baseline-EZQ7SCRT.js} +3 -3
  8. package/dist/{baseline-KTE2C3LW.js.map → baseline-EZQ7SCRT.js.map} +1 -1
  9. package/dist/{chunk-TD4JAEMH.js → chunk-4PCFSRYH.js} +5 -5
  10. package/dist/{chunk-TD4JAEMH.js.map → chunk-4PCFSRYH.js.map} +1 -1
  11. package/dist/{chunk-ARGYMFST.js → chunk-5BFA532E.js} +3 -3
  12. package/dist/{chunk-ARGYMFST.js.map → chunk-5BFA532E.js.map} +1 -1
  13. package/dist/{chunk-UAPA5AHX.js → chunk-6VLOI2ZP.js} +35 -14
  14. package/dist/chunk-6VLOI2ZP.js.map +1 -0
  15. package/dist/{chunk-DMI4BMUL.js → chunk-B5X246UH.js} +3 -3
  16. package/dist/{chunk-DMI4BMUL.js.map → chunk-B5X246UH.js.map} +1 -1
  17. package/dist/{chunk-3XMTRK24.js → chunk-BCK2NIBM.js} +6 -6
  18. package/dist/{chunk-3XMTRK24.js.map → chunk-BCK2NIBM.js.map} +1 -1
  19. package/dist/{chunk-SOAEPTSW.js → chunk-CIC3NY2D.js} +60 -24
  20. package/dist/chunk-CIC3NY2D.js.map +1 -0
  21. package/dist/{chunk-XZDI2N7M.js → chunk-DLNNNESQ.js} +3 -3
  22. package/dist/{chunk-XZDI2N7M.js.map → chunk-DLNNNESQ.js.map} +1 -1
  23. package/dist/{chunk-5R4HYDTC.js → chunk-ECQFRZJI.js} +4 -4
  24. package/dist/{chunk-5R4HYDTC.js.map → chunk-ECQFRZJI.js.map} +1 -1
  25. package/dist/{chunk-C5AOLTQS.js → chunk-FVBN4E5C.js} +53 -463
  26. package/dist/chunk-FVBN4E5C.js.map +1 -0
  27. package/dist/{chunk-UEXDSWKN.js → chunk-GRMZU24V.js} +3 -3
  28. package/dist/{chunk-UEXDSWKN.js.map → chunk-GRMZU24V.js.map} +1 -1
  29. package/dist/{chunk-CEJIX3O7.js → chunk-JSZ46IDG.js} +6 -6
  30. package/dist/{chunk-CEJIX3O7.js.map → chunk-JSZ46IDG.js.map} +1 -1
  31. package/dist/chunk-KFLNWYZG.js +6 -0
  32. package/dist/{chunk-MQJY4EQV.js.map → chunk-KFLNWYZG.js.map} +1 -1
  33. package/dist/{chunk-WI66PODG.js → chunk-L3YEEJ6U.js} +25 -5
  34. package/dist/chunk-L3YEEJ6U.js.map +1 -0
  35. package/dist/{chunk-XAS45W3G.js → chunk-LKJIYGO5.js} +11 -12
  36. package/dist/chunk-LKJIYGO5.js.map +1 -0
  37. package/dist/chunk-LUJ4H4RJ.js +605 -0
  38. package/dist/chunk-LUJ4H4RJ.js.map +1 -0
  39. package/dist/{chunk-5RMME7PT.js → chunk-M7O6IVKN.js} +3 -3
  40. package/dist/{chunk-5RMME7PT.js.map → chunk-M7O6IVKN.js.map} +1 -1
  41. package/dist/{chunk-3SOJZ3VV.js → chunk-QTQRM7HQ.js} +3 -3
  42. package/dist/{chunk-3SOJZ3VV.js.map → chunk-QTQRM7HQ.js.map} +1 -1
  43. package/dist/{chunk-PQISIPYP.js → chunk-RHYRMMN3.js} +3 -3
  44. package/dist/{chunk-PQISIPYP.js.map → chunk-RHYRMMN3.js.map} +1 -1
  45. package/dist/{chunk-HRYF4PWE.js → chunk-S3HMG6BC.js} +3 -3
  46. package/dist/{chunk-HRYF4PWE.js.map → chunk-S3HMG6BC.js.map} +1 -1
  47. package/dist/{chunk-QOU2Q5L4.js → chunk-TLYNLQL2.js} +221 -10
  48. package/dist/chunk-TLYNLQL2.js.map +1 -0
  49. package/dist/{chunk-EXFA7QFC.js → chunk-UUVOA6WD.js} +10 -8
  50. package/dist/chunk-UUVOA6WD.js.map +1 -0
  51. package/dist/{chunk-UP2BR6TV.js → chunk-X34HVFZ6.js} +8 -8
  52. package/dist/{chunk-UP2BR6TV.js.map → chunk-X34HVFZ6.js.map} +1 -1
  53. package/dist/{chunk-HVJHFTIV.js → chunk-Y3X3ORQ3.js} +10 -12
  54. package/dist/chunk-Y3X3ORQ3.js.map +1 -0
  55. package/dist/{chunk-HB3SONYP.js → chunk-YIRDV4YJ.js} +3 -3
  56. package/dist/{chunk-HB3SONYP.js.map → chunk-YIRDV4YJ.js.map} +1 -1
  57. package/dist/chunk-YP243ZKD.js +90 -0
  58. package/dist/chunk-YP243ZKD.js.map +1 -0
  59. package/dist/cli.js +381 -542
  60. package/dist/cli.js.map +1 -1
  61. package/dist/{daemon-VMQKIIYP.js → daemon-WPX2SBVV.js} +9 -9
  62. package/dist/{daemon-VMQKIIYP.js.map → daemon-WPX2SBVV.js.map} +1 -1
  63. package/dist/embed-worker-main.js +3 -3
  64. package/dist/{ensure-map-YIUJWMBK.js → ensure-map-MLI4XCRV.js} +14 -14
  65. package/dist/{ensure-map-YIUJWMBK.js.map → ensure-map-MLI4XCRV.js.map} +1 -1
  66. package/dist/{graph-backend-FDZUY4TR.js → graph-backend-LK5EFQXN.js} +7 -7
  67. package/dist/{graph-backend-FDZUY4TR.js.map → graph-backend-LK5EFQXN.js.map} +1 -1
  68. package/dist/index.d.ts +115 -132
  69. package/dist/index.js +15 -14
  70. package/dist/index.js.map +1 -1
  71. package/dist/{interactive-CS4PGZPK.js → interactive-K446F42I.js} +27 -25
  72. package/dist/interactive-K446F42I.js.map +1 -0
  73. package/dist/load-2FRH37JY.js +11 -0
  74. package/dist/{load-4EY64JJO.js.map → load-2FRH37JY.js.map} +1 -1
  75. package/dist/parse-worker.js +3 -2
  76. package/dist/parse-worker.js.map +1 -1
  77. package/dist/{run-outcome-T7VDBNWB.js → run-outcome-4ETNDPX6.js} +5 -5
  78. package/dist/{run-outcome-T7VDBNWB.js.map → run-outcome-4ETNDPX6.js.map} +1 -1
  79. package/dist/{runtime-session-WZLVADPQ.js → runtime-session-RMSKXFIJ.js} +9 -9
  80. package/dist/{runtime-session-WZLVADPQ.js.map → runtime-session-RMSKXFIJ.js.map} +1 -1
  81. package/dist/{session-VPP2VGUN.js → session-22BGDYWF.js} +8 -8
  82. package/dist/{session-VPP2VGUN.js.map → session-22BGDYWF.js.map} +1 -1
  83. package/dist/{stream-json-XXCFN4MF.js → stream-json-MD7MSSCH.js} +13 -12
  84. package/dist/stream-json-MD7MSSCH.js.map +1 -0
  85. package/dist/version-FRUT6RI2.js +4 -0
  86. package/dist/{version-2UBJ7N2I.js.map → version-FRUT6RI2.js.map} +1 -1
  87. package/dist/{vg-mcp-bridge-H6GXYNKV.js → vg-mcp-bridge-H6I3ALUW.js} +8 -8
  88. package/dist/{vg-mcp-bridge-H6GXYNKV.js.map → vg-mcp-bridge-H6I3ALUW.js.map} +1 -1
  89. package/dist/{vgd-SBZO4ONQ.js → vgd-TW7HU2PH.js} +8 -8
  90. package/dist/vgd-TW7HU2PH.js.map +1 -0
  91. package/package.json +2 -4
  92. package/dist/chunk-C5AOLTQS.js.map +0 -1
  93. package/dist/chunk-EXFA7QFC.js.map +0 -1
  94. package/dist/chunk-HVJHFTIV.js.map +0 -1
  95. package/dist/chunk-MQJY4EQV.js +0 -6
  96. package/dist/chunk-QOU2Q5L4.js.map +0 -1
  97. package/dist/chunk-SOAEPTSW.js.map +0 -1
  98. package/dist/chunk-UAPA5AHX.js.map +0 -1
  99. package/dist/chunk-VEQA2FSM.js +0 -699
  100. package/dist/chunk-VEQA2FSM.js.map +0 -1
  101. package/dist/chunk-WI66PODG.js.map +0 -1
  102. package/dist/chunk-XAS45W3G.js.map +0 -1
  103. package/dist/interactive-CS4PGZPK.js.map +0 -1
  104. package/dist/load-4EY64JJO.js +0 -11
  105. package/dist/stream-json-XXCFN4MF.js.map +0 -1
  106. package/dist/version-2UBJ7N2I.js +0 -4
  107. package/dist/vgd-SBZO4ONQ.js.map +0 -1
@@ -1,7 +1,7 @@
1
- export { compareDaemonVersion, ensureVgd, ensureVgdSoft, registerDaemon, restartVgdIfRunning, retireWedgedVgd, startDetachedVgd, stopVgd, vgdCliVersion, vgdVersionSkew } from './chunk-3XMTRK24.js';
1
+ export { compareDaemonVersion, ensureVgd, ensureVgdSoft, registerDaemon, restartVgdIfRunning, retireWedgedVgd, startDetachedVgd, stopVgd, vgdCliVersion, vgdVersionSkew } from './chunk-BCK2NIBM.js';
2
2
  import './chunk-YENM3HT7.js';
3
3
  import './chunk-CT5BS56U.js';
4
- import './chunk-CEJIX3O7.js';
4
+ import './chunk-JSZ46IDG.js';
5
5
  import './chunk-3LOWJSAF.js';
6
6
  import './chunk-5HYCB55P.js';
7
7
  import './chunk-IS7VTH2Q.js';
@@ -11,20 +11,20 @@ import './chunk-EZ7UC5Y5.js';
11
11
  import './chunk-DBX3DL27.js';
12
12
  import './chunk-6BEBJCK4.js';
13
13
  import './chunk-J7LKEB2R.js';
14
- import './chunk-VEQA2FSM.js';
15
- import './chunk-ARGYMFST.js';
14
+ import './chunk-LUJ4H4RJ.js';
15
+ import './chunk-5BFA532E.js';
16
16
  import './chunk-VHRSG6CF.js';
17
17
  import './chunk-6H2QV5DR.js';
18
18
  import './chunk-RTURQXQL.js';
19
19
  import './chunk-6WRG7VDO.js';
20
- import './chunk-DMI4BMUL.js';
21
- import './chunk-C5AOLTQS.js';
20
+ import './chunk-B5X246UH.js';
21
+ import './chunk-FVBN4E5C.js';
22
22
  import './chunk-MVPRPSXU.js';
23
23
  import './chunk-O3LABX6I.js';
24
- import './chunk-MQJY4EQV.js';
24
+ import './chunk-KFLNWYZG.js';
25
25
  import './chunk-XP6UUCZZ.js';
26
26
  import './chunk-JFGYT6BI.js';
27
27
  import './chunk-XQNKCA2J.js';
28
28
  import './chunk-Z6ZWNWWR.js';
29
- //# sourceMappingURL=daemon-VMQKIIYP.js.map
30
- //# sourceMappingURL=daemon-VMQKIIYP.js.map
29
+ //# sourceMappingURL=daemon-WPX2SBVV.js.map
30
+ //# sourceMappingURL=daemon-WPX2SBVV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"daemon-VMQKIIYP.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"daemon-WPX2SBVV.js"}
@@ -1,8 +1,8 @@
1
- import { resolveEmbedModel, loadEmbedder } from './chunk-DMI4BMUL.js';
2
- import './chunk-C5AOLTQS.js';
1
+ import { resolveEmbedModel, loadEmbedder } from './chunk-B5X246UH.js';
2
+ import './chunk-FVBN4E5C.js';
3
3
  import './chunk-MVPRPSXU.js';
4
4
  import './chunk-O3LABX6I.js';
5
- import './chunk-MQJY4EQV.js';
5
+ import './chunk-KFLNWYZG.js';
6
6
  import './chunk-XP6UUCZZ.js';
7
7
  import './chunk-JFGYT6BI.js';
8
8
  import './chunk-XQNKCA2J.js';
@@ -1,40 +1,40 @@
1
- export { ensureCodeMap } from './chunk-5R4HYDTC.js';
2
- import './chunk-UP2BR6TV.js';
1
+ export { ensureCodeMap } from './chunk-ECQFRZJI.js';
2
+ import './chunk-X34HVFZ6.js';
3
3
  import './chunk-YENM3HT7.js';
4
4
  import './chunk-H5Q4JUY4.js';
5
5
  import './chunk-CT5BS56U.js';
6
- import './chunk-EXFA7QFC.js';
7
- import './chunk-XAS45W3G.js';
6
+ import './chunk-UUVOA6WD.js';
7
+ import './chunk-LKJIYGO5.js';
8
8
  import './chunk-HTLDXEHW.js';
9
9
  import './chunk-5UG4UHKU.js';
10
10
  import './chunk-VIWZ4QT7.js';
11
- import './chunk-HRYF4PWE.js';
11
+ import './chunk-S3HMG6BC.js';
12
12
  import './chunk-WNKGRXUA.js';
13
13
  import './chunk-57ZRSCHY.js';
14
14
  import './chunk-MS6V5XKB.js';
15
- import './chunk-UEXDSWKN.js';
15
+ import './chunk-GRMZU24V.js';
16
16
  import './chunk-PVNALGTG.js';
17
17
  import './chunk-CRAMOEBE.js';
18
18
  import './chunk-EZ7UC5Y5.js';
19
19
  import './chunk-A3WWRW7U.js';
20
20
  import './chunk-6BEBJCK4.js';
21
21
  import './chunk-J7LKEB2R.js';
22
- import './chunk-VEQA2FSM.js';
23
- import './chunk-ARGYMFST.js';
22
+ import './chunk-LUJ4H4RJ.js';
23
+ import './chunk-5BFA532E.js';
24
24
  import './chunk-VHRSG6CF.js';
25
25
  import './chunk-6H2QV5DR.js';
26
26
  import './chunk-RTURQXQL.js';
27
- import './chunk-WI66PODG.js';
27
+ import './chunk-L3YEEJ6U.js';
28
28
  import './chunk-T7RSQ5WD.js';
29
29
  import './chunk-6WRG7VDO.js';
30
- import './chunk-DMI4BMUL.js';
31
- import './chunk-C5AOLTQS.js';
30
+ import './chunk-B5X246UH.js';
31
+ import './chunk-FVBN4E5C.js';
32
32
  import './chunk-MVPRPSXU.js';
33
33
  import './chunk-O3LABX6I.js';
34
- import './chunk-MQJY4EQV.js';
34
+ import './chunk-KFLNWYZG.js';
35
35
  import './chunk-XP6UUCZZ.js';
36
36
  import './chunk-JFGYT6BI.js';
37
37
  import './chunk-XQNKCA2J.js';
38
38
  import './chunk-Z6ZWNWWR.js';
39
- //# sourceMappingURL=ensure-map-YIUJWMBK.js.map
40
- //# sourceMappingURL=ensure-map-YIUJWMBK.js.map
39
+ //# sourceMappingURL=ensure-map-MLI4XCRV.js.map
40
+ //# sourceMappingURL=ensure-map-MLI4XCRV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"ensure-map-YIUJWMBK.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ensure-map-MLI4XCRV.js"}
@@ -1,16 +1,16 @@
1
- export { localGraphBackend, resolveGraphBackend, vgdGraphBackend } from './chunk-HB3SONYP.js';
1
+ export { localGraphBackend, resolveGraphBackend, vgdGraphBackend } from './chunk-YIRDV4YJ.js';
2
2
  import './chunk-J7LKEB2R.js';
3
- import './chunk-VEQA2FSM.js';
3
+ import './chunk-LUJ4H4RJ.js';
4
4
  import './chunk-VHRSG6CF.js';
5
5
  import './chunk-6H2QV5DR.js';
6
- import './chunk-DMI4BMUL.js';
7
- import './chunk-C5AOLTQS.js';
6
+ import './chunk-B5X246UH.js';
7
+ import './chunk-FVBN4E5C.js';
8
8
  import './chunk-MVPRPSXU.js';
9
9
  import './chunk-O3LABX6I.js';
10
- import './chunk-MQJY4EQV.js';
10
+ import './chunk-KFLNWYZG.js';
11
11
  import './chunk-XP6UUCZZ.js';
12
12
  import './chunk-JFGYT6BI.js';
13
13
  import './chunk-XQNKCA2J.js';
14
14
  import './chunk-Z6ZWNWWR.js';
15
- //# sourceMappingURL=graph-backend-FDZUY4TR.js.map
16
- //# sourceMappingURL=graph-backend-FDZUY4TR.js.map
15
+ //# sourceMappingURL=graph-backend-LK5EFQXN.js.map
16
+ //# sourceMappingURL=graph-backend-LK5EFQXN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"graph-backend-FDZUY4TR.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"graph-backend-LK5EFQXN.js"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { G as GraphNode, a as GraphEdge, A as Area, R as ResolverKind, V as VgGr
2
2
  export { e as AnalysisTier, C as Centrality, D as DerivedBy, f as EpistemicTier, g as FactConfidence, h as FactKind, i as GraphMeta, j as GraphSummaries, H as HubBlastSummary, N as NodeKind, P as Provenance, k as SUPPORTED_SCHEMA_VERSIONS, l as Span, m as SupportedSchemaVersion, T as Toolchain, U as Unknown } from './types-DHqH0XIE.js';
3
3
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
4
4
 
5
- declare const VERSION = "2026.819.3";
5
+ declare const VERSION = "2026.825.1";
6
6
 
7
7
  /**
8
8
  * Analysis stage: importance, centrality, hubs, communities, and surprise.
@@ -572,119 +572,47 @@ type EmbedProgress = (done: number, total: number) => void;
572
572
  */
573
573
  declare function getNodeEmbeddings(graph: VgGraph, embedder: Embedder, root: string, onProgress?: EmbedProgress): Promise<Map<string, number[]>>;
574
574
 
575
- interface RelevanceExpansion {
576
- /** Single lowercase word, ready for identifier-part matching. */
577
- term: string;
578
- /** The question token/phrase (or topic id) that produced it. */
579
- from: string;
580
- /** 0..1 relative confidence; scales the expansion's scoring contribution. */
581
- weight: number;
582
- }
583
- interface RelevanceTopic {
584
- id: string;
585
- /** 0..1, normalized within one analysis. */
586
- score: number;
587
- }
588
- /** One level of a matched taxonomy path, root-first. */
589
- interface RelevanceTaxonomyLevel {
575
+ interface RankedSeed {
590
576
  id: string;
591
- path: string;
592
- /** 0..1 — never lower than the levels beneath it. */
593
- score: number;
594
- /** This level's own vocabulary. */
595
- terms: string[];
596
- }
597
- /** A hierarchical match: the most specific node plus its ancestor chain. */
598
- interface RelevanceTaxonomyMatch {
599
- /** "infrastructure/networking/dns/cname" */
600
- path: string;
601
- levels: RelevanceTaxonomyLevel[];
602
- score: number;
603
- /** Absolute evidence behind the match, not relative to other matches. */
604
- evidence: number;
605
- /** What matched — "~" prefixes a fuzzy repair. */
606
- via: string[];
607
- /** The matched node's OWN vocabulary, for explaining the domain. */
608
- terms: string[];
609
- /** Filenames and extensions this node's work lives in, nearest first. */
610
- files: string[];
611
- /** Standards governing this node, current revision first. */
612
- standards: RelevanceStandard[];
613
- }
614
- /** A product the ask names, including through a misspelling. */
615
- interface RelevanceVendorMatch {
616
- name: string;
617
- from: string;
618
- node?: string;
619
- topic: string;
620
577
  score: number;
621
- /** Filenames and extensions this vendor's configuration lives in. */
622
- files: string[];
623
- }
624
- /** A standard governing the matched area, at the revision the pack tracks. */
625
- interface RelevanceStandard {
626
- name: string;
627
- publisher: string;
628
- node: string;
629
- /** "standard" or "regulation". */
630
- kind: string;
631
- /** Lowercase category slugs from the website's own vocabulary. */
632
- categories: string[];
633
- }
634
- /** A misspelling the provider resolved. */
635
- interface RelevanceCorrection {
636
- from: string;
637
- to: string;
638
- distance: number;
578
+ why: string;
639
579
  }
640
- interface RelevanceAnalysis {
580
+ /** Sanitized module ranking, ready for `queryGraph({ ranked })`. */
581
+ interface SanitizedRank {
641
582
  version: string;
642
- topics: RelevanceTopic[];
643
- expansions: RelevanceExpansion[];
644
- /** Hierarchical matches, most specific first. Absent from older providers. */
645
- taxonomy?: RelevanceTaxonomyMatch[];
646
- vendors?: RelevanceVendorMatch[];
647
- corrections?: RelevanceCorrection[];
648
- /** Every file hint the analysis implies, most specific first. */
649
- files?: string[];
650
- /** Standards governing what the ask is about, most specific node first. */
651
- standards?: RelevanceStandard[];
652
- /** Deduped lowercase category slugs across those standards. */
653
- categories?: string[];
583
+ hasContent: boolean;
584
+ seeds: RankedSeed[];
585
+ conceptMap: string[];
654
586
  }
655
587
 
656
588
  /**
657
- * Deterministic retrieval for `vg ask` (VG-CLI-SPEC §3.2).
589
+ * Retrieval front-end for `vg ask` / `vg code` capsule seeds (VG-CLI-SPEC
590
+ * §3.2).
591
+ *
592
+ * Since the 2026-08 relevance relocation, the RANKING ENGINE lives in the
593
+ * optional relevance module (`@vibgrate/relevance`, auto-provisioned): the
594
+ * async callers run the ask through the module via
595
+ * `relevance-provider.rankQuestion` and pass the SANITIZED result in as
596
+ * `options.ranked`. This file keeps only what is mechanical:
658
597
  *
659
- * Builds a structured, fact-annotated, budget-bounded context block for a
660
- * question — designed to drop straight into an assistant's context. The default
661
- * is deterministic lexical+structural retrieval: identifier/term matching with
662
- * morphological prefix-fuzzing, term-role weighting (process verbs like "add"
663
- * only corroborate, never seed see engine/concepts.ts), static concept
664
- * expansion ("payments" stripe/billing/…, "direct debit" sepa/bacs/mandate),
665
- * and a multi-term coverage bonus, ranked with importance as a mild tiebreaker.
666
- * `--semantic`/`--deep` adds
667
- * a hybrid local-embedding pass (`queryGraphSemantic`) that surfaces conceptually
668
- * related code even when no word is shared — still no API key.
598
+ * - literal string/URL needle handling (the locate path exact-text
599
+ * matching, not relevance);
600
+ * - a deliberately dumb module-less fallback: exact identifier-name and
601
+ * name-part matching, nothing that understands language (no lexicon, no
602
+ * term roles, no IDF, no typo repair, no expansion) enough that an ask
603
+ * NAMING a symbol still pins its file when the module is unavailable;
604
+ * - context-block rendering and the semantic Reciprocal Rank Fusion
605
+ * plumbing (`--semantic`), which fuses ORDERINGS and carries no ranking
606
+ * heuristics of its own.
669
607
  */
670
608
  interface QueryOptions {
671
609
  budget?: number;
672
610
  limit?: number;
673
- /** Optional pre-computed relevance analysis (engine/relevance-provider.ts).
674
- * Injected by async callers so this module stays pure and sync; when
675
- * absent, ranking is exactly the built-in lexicon path. */
676
- relevance?: RelevanceAnalysis | null;
677
- /** Optional per-node topic tags (engine/relevance-enrich.ts). Combined with
678
- * `relevance.topics` into a bounded affinity bonus: a node structurally
679
- * tagged with a topic the question is about ranks above an equal textual
680
- * match outside it. Never seeds alone — it multiplies existing evidence. */
681
- topicTags?: Map<string, readonly string[]> | null;
682
- /** Previous conversational ask (multi-turn `vg code`). Its content terms —
683
- * never its process verbs — join ranking at a damped weight (CARRY_WEIGHT)
684
- * so a follow-up like "can we use direct debits?" keeps the prior turn's
685
- * topic ("where is stripe used?") instead of ranking the repo on the
686
- * follow-up's words alone. Absent → behaviour is unchanged. */
687
- priorQuestion?: string | null;
611
+ /** Sanitized module ranking (engine/relevance-provider.ts rankQuestion),
612
+ * injected by async callers so this module stays pure and sync. When
613
+ * absent module not installed, predates the ranking API, or failed —
614
+ * the mechanical fallback below answers. */
615
+ ranked?: SanitizedRank | null;
688
616
  }
689
617
  interface QueryMatch {
690
618
  node: GraphNode;
@@ -719,22 +647,21 @@ interface SemanticQueryOptions extends QueryOptions {
719
647
  }>;
720
648
  }
721
649
  /**
722
- * Hybrid lexical + local-embedding retrieval, combined with Reciprocal Rank
723
- * Fusion (Phase 3.2 replaces the former 50/50 score blend), so a question
724
- * like "where do we handle auth failures?" can surface `verify_token` even
725
- * with no shared identifier. Topic affinity and importance stay multiplicative
726
- * tiebreakers on the fused score. Deterministic given the same model + cached
727
- * vectors; embeddings live in a binary sidecar next to the map, never in `graph.json`.
650
+ * Hybrid retrieval, combined with Reciprocal Rank Fusion: the module ranking
651
+ * (or the mechanical fallback) is one arm, the local-embedding pass the
652
+ * other, so a question like "where do we handle auth failures?" can surface
653
+ * `verify_token` even with no shared word. Deterministic given the same
654
+ * model + cached vectors; embeddings live in a binary sidecar next to the
655
+ * map, never in `graph.json`.
728
656
  */
729
657
  declare function queryGraphSemantic(graph: VgGraph, question: string, options: SemanticQueryOptions): Promise<QueryResult>;
730
658
  /**
731
- * camelCase / snake_case / kebab split of an identifier → lowercased parts.
732
- * The separator alternative is Unicode-letter-aware (`\p{L}\p{N}`, not
733
- * ASCII-only `a-zA-Z0-9`) so non-Latin identifiers split on punctuation
734
- * without losing every character to it; the camelCase boundary lookaround
735
- * stays ASCII-only since upper/lowercase casing is itself an ASCII-script
736
- * concept scripts without case simply never trigger it and fall through to
737
- * the separator split.
659
+ * camelCase / snake_case / kebab / letter↔digit split of an identifier →
660
+ * lowercased parts. The separator alternative is Unicode-letter-aware
661
+ * (`\p{L}\p{N}`, not ASCII-only) so non-Latin identifiers split on
662
+ * punctuation without losing every character to it; the camelCase boundary
663
+ * lookaround stays ASCII-only since casing is itself an ASCII-script concept.
664
+ * Letter↔digit boundaries split too, so `Session2` keeps `session` reachable.
738
665
  */
739
666
  declare function identifierParts(name: string): Set<string>;
740
667
 
@@ -2169,6 +2096,11 @@ declare function redactGraph(graph: VgGraph): VgGraph;
2169
2096
  */
2170
2097
  declare function grammarsSourceDir(): string | null;
2171
2098
 
2099
+ declare function moduleInstalled(): {
2100
+ installed: boolean;
2101
+ version?: string;
2102
+ };
2103
+
2172
2104
  /** The graph-grounded context handed to the model, plus what fed it. */
2173
2105
  interface CodeContext {
2174
2106
  instruction: string;
@@ -2217,16 +2149,11 @@ interface BuildContextOptions {
2217
2149
  impactDepth?: number;
2218
2150
  /** Restrict the edit surface to these files (from `--file`), if given. */
2219
2151
  files?: string[];
2220
- /** Optional pre-computed relevance analysis (engine/relevance-provider.ts),
2221
- * loaded by the async caller; widens seed vocabulary deterministically. */
2222
- relevance?: RelevanceAnalysis | null;
2223
- /** Optional per-node topic tags (engine/relevance-enrich.ts). */
2224
- topicTags?: Map<string, readonly string[]> | null;
2225
- /** The previous conversational ask (multi-turn `vg code`). Its content
2226
- * terms join seed ranking at a damped weight so follow-ups ("do we
2227
- * support direct debits?" after "where is stripe used?") stay anchored to
2228
- * the conversation's topic. Absent → single-turn behaviour, unchanged. */
2229
- priorInstruction?: string | null;
2152
+ /** Sanitized module ranking (engine/relevance-provider.ts rankQuestion),
2153
+ * computed by the async caller over the user's ask — carries the seed
2154
+ * ordering AND the plain-language concept map. Absent → the mechanical
2155
+ * fallback ranks and the concept map is empty. */
2156
+ ranked?: SanitizedRank | null;
2230
2157
  }
2231
2158
  /**
2232
2159
  * Build the context block for a coding instruction. The ordering is
@@ -2238,10 +2165,10 @@ interface BuildContextOptions {
2238
2165
  declare function buildCodeContext(graph: VgGraph, instruction: string, options?: BuildContextOptions): CodeContext;
2239
2166
 
2240
2167
  /**
2241
- * Source-bearing Task Capsule compiler (Fusion Runtime Phase 0).
2168
+ * Source-bearing Context Capsule compiler (Fusion Runtime Phase 0).
2242
2169
  *
2243
2170
  * Today's {@link buildCodeContext} pays for graph metadata, then the model still
2244
- * calls `read_file` — double payment. This module compiles a Task Capsule that
2171
+ * calls `read_file` — double payment. This module compiles a Context Capsule that
2245
2172
  * includes exact source ranges (from Tree-sitter spans already on graph nodes)
2246
2173
  * so the first inference can solve without navigation tool calls (ZNS@1 path).
2247
2174
  *
@@ -2255,8 +2182,7 @@ declare const TASK_CAPSULE_SCHEMA_VERSION: "task-capsule/0";
2255
2182
  /** Frozen ranking policy id — bump when the heuristic changes (benchmark gate). */
2256
2183
  /** Bumped 2026.07.1: strip URL/quoted needles from seed ranking (no path-token false positives). */
2257
2184
  /** Bumped 2026.08.1: term roles (weak process verbs never seed alone), concept/bigram
2258
- * expansion (payments→stripe, "direct debit"→sepa/bacs/mandate), multi-term coverage
2259
- * bonus, directory-segment evidence — gated by the ask-quality corpus (bench/ask-corpus.mjs). */
2185
+ * expansion, multi-term coverage bonus, directory-segment evidence. */
2260
2186
  /** Bumped 2026.08.2: optional relevance-provider seam — sanitized provider expansions
2261
2187
  * join term preparation (own 0..1 weight capped at EXPANSION_WEIGHT; weak-provenance
2262
2188
  * dropped); provider version recorded as `relevanceVersion` provenance. Absent
@@ -2268,7 +2194,14 @@ declare const TASK_CAPSULE_SCHEMA_VERSION: "task-capsule/0";
2268
2194
  * CARRY_WEIGHT when the caller passes `priorInstruction`. (c) A plain-language
2269
2195
  * "how the ask was interpreted" concept map is rendered for small local models.
2270
2196
  * No prior instruction + no bigram ask = 2026.08.2 behaviour exactly. */
2271
- declare const CAPSULE_RANKING_VERSION: "capsule-rank@2026.08.3";
2197
+ /** Bumped 2026.08.4: relevance relocation — the ranking engine (lexicon, term
2198
+ * roles, IDF, tiers, typo repair, morphology, diversification, concept map)
2199
+ * moved into the auto-provisioned relevance module behind the seam's
2200
+ * rankSymbols API; the host keeps mechanical name matching as the
2201
+ * module-less fallback. Seed content with the module active matches
2202
+ * 2026.08.3 + the coding-prompt-corpus improvements; the recorded
2203
+ * relevanceVersion says which engine ranked this capsule. */
2204
+ declare const CAPSULE_RANKING_VERSION: "capsule-rank@2026.08.4";
2272
2205
  declare const CAPSULE_COMPILER_ID: "vg-task-capsule/0";
2273
2206
  interface BuildCapsuleOptions extends BuildContextOptions {
2274
2207
  /**
@@ -2365,23 +2298,31 @@ interface CapsuleSummary {
2365
2298
  qualifiedName: string;
2366
2299
  file: string;
2367
2300
  kind: string;
2301
+ why: string;
2368
2302
  }>;
2369
2303
  supporting: Array<{
2370
2304
  qualifiedName: string;
2371
2305
  file: string;
2372
2306
  kind: string;
2307
+ why: string;
2373
2308
  }>;
2374
2309
  sourceSliceCount: number;
2375
2310
  sourceFiles: string[];
2376
2311
  tokensEstimate: number;
2377
2312
  rankingVersion: string;
2313
+ /**
2314
+ * How the ask was interpreted, ready to show a human: the capsule's concept
2315
+ * map with the model-facing seed-notation legend dropped and the leading
2316
+ * "- " bullet stripped. Empty when no relevance engine widened the ask.
2317
+ */
2318
+ interpretation: string[];
2378
2319
  /** Truncated rendered capsule for display (not the full prompt dump). */
2379
2320
  preview: string;
2380
2321
  }
2381
2322
  /** Host-safe capsule summary (capsule transparency UI / stream-json). */
2382
2323
  declare function summarizeCapsule(capsule: TaskCapsule): CapsuleSummary;
2383
2324
  /**
2384
- * Compile a source-bearing Task Capsule. Reuses the same seed / impact /
2325
+ * Compile a source-bearing Context Capsule. Reuses the same seed / impact /
2385
2326
  * fact-pinning path as {@link buildCodeContext}, then attaches exact source
2386
2327
  * slices and a verification sketch.
2387
2328
  */
@@ -2392,6 +2333,48 @@ declare function buildTaskCapsule(graph: VgGraph, instruction: string, options?:
2392
2333
  */
2393
2334
  declare function capsuleToCodeContext(capsule: TaskCapsule): CodeContext;
2394
2335
 
2336
+ /**
2337
+ * Whether to send a ranked Context Capsule, paste the mapped tree, or send
2338
+ * neither. Independent of Model Execution Profiles (those describe how a
2339
+ * local model is run). Mass × greppability, not file count.
2340
+ *
2341
+ * See docs/graph/VG-CAPSULE-SMALL-REPO-DISABLE.md.
2342
+ */
2343
+
2344
+ type CapsuleMode = 'off' | 'whole-repo' | 'compile';
2345
+ /** Trees this small are cheaper to paste (or grep) than to rank. */
2346
+ declare const WHOLE_REPO_MAX_SOURCE_TOKENS = 1500;
2347
+ /** Above this, discovery has a real bill — always compile. */
2348
+ declare const COMPILE_MIN_SOURCE_TOKENS = 8000;
2349
+ /** Unique mapped paths from the graph, stable order. */
2350
+ declare function mappedFilePaths(graph: VgGraph): string[];
2351
+ declare function sourceTokenMass(contents: Iterable<string>): number;
2352
+ /**
2353
+ * True when the mechanical fallback would pin an identifier the ask actually
2354
+ * names (F0/F1). Does not use the relevance module.
2355
+ */
2356
+ declare function askNamesSymbol(graph: VgGraph, instruction: string): boolean;
2357
+ declare function capsuleMode(input: {
2358
+ sourceTokens: number;
2359
+ askNamesSymbol: boolean;
2360
+ }): CapsuleMode;
2361
+ interface WholeRepoFile {
2362
+ path: string;
2363
+ content: string;
2364
+ }
2365
+ interface WholeRepoPacket {
2366
+ rendered: string;
2367
+ tokensEstimate: number;
2368
+ files: string[];
2369
+ sourceTokens: number;
2370
+ }
2371
+ /**
2372
+ * First-turn packet = the mapped files, not a ranked dump. Files are sorted
2373
+ * by path. `budget` caps the paste (default {@link WHOLE_REPO_MAX_SOURCE_TOKENS});
2374
+ * at least one file is always included when any exist.
2375
+ */
2376
+ declare function buildWholeRepoPacket(instruction: string, files: WholeRepoFile[], budget?: number): WholeRepoPacket;
2377
+
2395
2378
  /**
2396
2379
  * `search_symbols` — the hybrid flashlight next to the map
2397
2380
  * (docs/graph/VG-GRAPH-OPTIMIZATION-PLAN.md P1).
@@ -2441,4 +2424,4 @@ interface SearchResult {
2441
2424
  }
2442
2425
  declare function searchSymbols(graph: VgGraph, root: string, query: string, limit: number): Promise<SearchResult>;
2443
2426
 
2444
- export { ASSISTANTS, type AnalyzeOptions, type AnalyzeResult, Area, type Assistant, type BuildCapsuleOptions, type BuildContextOptions, type BuildOptions, type BuildResult, type BuildScope, CAPSULE_COMPILER_ID, CAPSULE_RANKING_VERSION, type CapsuleSummary, type CapsuleSymbolRef, type ClusterMode, type DepRecord, type DiscoverOptions, type DiscoveredFile, type Drift, type DriftInventory, type DriftNote, EdgeKind, type Embedder, type ExportContext, type ExportFormat, FREE_PACK, Fact, FileParse, GraphEdge, GraphIndex, GraphNode, GraphSource, type GraphUploadEnvelope, GroundingEdge, GroundingKind, type ImpactItem, type ImpactResult, type KnowledgePack, LANGUAGES, type LanguageDef, type LibCatalog, type LibEntry, type LibSource, type LoadEmbedderOptions, type LocalModel, type ModuleResolver, type PackEntry, type PathResult, type ProbeResult, type QueryMatch, type QueryOptions, type QueryResult, type RefreshOptions, type RefreshOutcome, ResolverKind, ResourceLimitError, type ResourceLimits, SCHEMA_VERSION, SKIP_DIRS, SKIP_FILES, type SavingsReport, type ScipDocument, type ScipIndex, type ScipOccurrence, type SearchResult, type SemanticQueryOptions, type ServeOptions, type SourceSlice, type SymbolHit, TASK_CAPSULE_SCHEMA_VERSION, TOOLS, type TaskCapsule, type TextHit, UsageError, VERSION, type VerifyResult, VgGraph, type VgTool, type WriteOptions, type WrittenArtifacts, addLibrary, allLanguageIds, analyze, applyCoverage, applyStaticTestLinkage, assistantById, buildCodeContext, buildEnvelope, buildFacts, buildGraph, buildModuleResolver, buildTaskCapsule, capsuleToCodeContext, cosine, coveringTests, createServer, decodeScipIndex, defaultGraphPath, inventory as dependencyInventory, detectRunner, discover, discoverModels, driftCount, driftFor, embeddingsCached, embeddingsPath, embeddingsPathFor, enrichOnline, exportGraph, findNodes, formatForExt, getNodeEmbeddings, grammarsSourceDir, groundGraph, hasDrift, identifierParts, impactOf, installAssistant, isTestFile, langById, langForExtension, legacyGraphPath, libId, loadCatalog, loadCoverage, loadEmbedder, loadGraph, loadSnapshot, nodeById, nodeEmbedText, parseGraph, parseJsonc, parseSource, preferInRepoGraph, probeFreshness, queryGraph, queryGraphSemantic, readDoc, readSavings, recordSaving, redactGraph, refreshIfStale, relativeResolver, renderHtml, renderReport, resolveGraphPath, resolveLib, resolveLimits, resolveOne, saveCatalog, savingsRecorded, scipEdges, searchSymbols, serializeGraph, serveStdio, shortestPath, stableStringify, summarizeCapsule, testsToRun, uninstallAssistant, verifyDeterminism, vibgrateDir, writeArtifacts, writeSnapshot };
2427
+ export { ASSISTANTS, type AnalyzeOptions, type AnalyzeResult, Area, type Assistant, type BuildCapsuleOptions, type BuildContextOptions, type BuildOptions, type BuildResult, type BuildScope, CAPSULE_COMPILER_ID, CAPSULE_RANKING_VERSION, COMPILE_MIN_SOURCE_TOKENS, type CapsuleMode, type CapsuleSummary, type CapsuleSymbolRef, type ClusterMode, type DepRecord, type DiscoverOptions, type DiscoveredFile, type Drift, type DriftInventory, type DriftNote, EdgeKind, type Embedder, type ExportContext, type ExportFormat, FREE_PACK, Fact, FileParse, GraphEdge, GraphIndex, GraphNode, GraphSource, type GraphUploadEnvelope, GroundingEdge, GroundingKind, type ImpactItem, type ImpactResult, type KnowledgePack, LANGUAGES, type LanguageDef, type LibCatalog, type LibEntry, type LibSource, type LoadEmbedderOptions, type LocalModel, type ModuleResolver, type PackEntry, type PathResult, type ProbeResult, type QueryMatch, type QueryOptions, type QueryResult, type RefreshOptions, type RefreshOutcome, ResolverKind, ResourceLimitError, type ResourceLimits, SCHEMA_VERSION, SKIP_DIRS, SKIP_FILES, type SavingsReport, type ScipDocument, type ScipIndex, type ScipOccurrence, type SearchResult, type SemanticQueryOptions, type ServeOptions, type SourceSlice, type SymbolHit, TASK_CAPSULE_SCHEMA_VERSION, TOOLS, type TaskCapsule, type TextHit, UsageError, VERSION, type VerifyResult, VgGraph, type VgTool, WHOLE_REPO_MAX_SOURCE_TOKENS, type WholeRepoFile, type WholeRepoPacket, type WriteOptions, type WrittenArtifacts, addLibrary, allLanguageIds, analyze, applyCoverage, applyStaticTestLinkage, askNamesSymbol, assistantById, buildCodeContext, buildEnvelope, buildFacts, buildGraph, buildModuleResolver, buildTaskCapsule, buildWholeRepoPacket, capsuleMode, capsuleToCodeContext, cosine, coveringTests, createServer, decodeScipIndex, defaultGraphPath, inventory as dependencyInventory, detectRunner, discover, discoverModels, driftCount, driftFor, embeddingsCached, embeddingsPath, embeddingsPathFor, enrichOnline, exportGraph, findNodes, formatForExt, getNodeEmbeddings, grammarsSourceDir, groundGraph, hasDrift, identifierParts, impactOf, installAssistant, isTestFile, langById, langForExtension, legacyGraphPath, libId, loadCatalog, loadCoverage, loadEmbedder, loadGraph, loadSnapshot, mappedFilePaths, nodeById, nodeEmbedText, parseGraph, parseJsonc, parseSource, preferInRepoGraph, probeFreshness, queryGraph, queryGraphSemantic, readDoc, readSavings, recordSaving, redactGraph, refreshIfStale, relativeResolver, moduleInstalled as relevanceModuleInstalled, renderHtml, renderReport, resolveGraphPath, resolveLib, resolveLimits, resolveOne, saveCatalog, savingsRecorded, scipEdges, searchSymbols, serializeGraph, serveStdio, shortestPath, sourceTokenMass, stableStringify, summarizeCapsule, testsToRun, uninstallAssistant, verifyDeterminism, vibgrateDir, writeArtifacts, writeSnapshot };
package/dist/index.js CHANGED
@@ -1,16 +1,17 @@
1
- export { GraphSource, createServer, exportGraph, formatForExt, serveStdio } from './chunk-QOU2Q5L4.js';
2
- export { refreshIfStale } from './chunk-TD4JAEMH.js';
3
- export { ASSISTANTS, ResourceLimitError, analyze, applyCoverage, assistantById, buildFacts, buildGraph, decodeScipIndex, driftCount, groundGraph, hasDrift, installAssistant, loadCoverage, loadSnapshot, probeFreshness, resolveLimits, scipEdges, uninstallAssistant, verifyDeterminism, writeSnapshot } from './chunk-EXFA7QFC.js';
4
- export { FREE_PACK, TOOLS, coveringTests, detectRunner, shortestPath, testsToRun } from './chunk-XAS45W3G.js';
1
+ export { GraphSource, createServer, exportGraph, formatForExt, moduleInstalled as relevanceModuleInstalled, serveStdio } from './chunk-TLYNLQL2.js';
2
+ export { refreshIfStale } from './chunk-4PCFSRYH.js';
3
+ export { ASSISTANTS, ResourceLimitError, analyze, applyCoverage, assistantById, buildFacts, buildGraph, decodeScipIndex, driftCount, groundGraph, hasDrift, installAssistant, loadCoverage, loadSnapshot, probeFreshness, resolveLimits, scipEdges, uninstallAssistant, verifyDeterminism, writeSnapshot } from './chunk-UUVOA6WD.js';
4
+ export { FREE_PACK, TOOLS, coveringTests, detectRunner, shortestPath, testsToRun } from './chunk-LKJIYGO5.js';
5
5
  import './chunk-HTLDXEHW.js';
6
6
  import './chunk-5UG4UHKU.js';
7
+ export { COMPILE_MIN_SOURCE_TOKENS, WHOLE_REPO_MAX_SOURCE_TOKENS, askNamesSymbol, buildWholeRepoPacket, capsuleMode, mappedFilePaths, sourceTokenMass } from './chunk-YP243ZKD.js';
7
8
  export { applyStaticTestLinkage, buildModuleResolver, isTestFile, parseJsonc, relativeResolver } from './chunk-VIWZ4QT7.js';
8
- export { addLibrary, driftFor, libId, loadCatalog, readDoc, resolveLib, saveCatalog, searchSymbols } from './chunk-HRYF4PWE.js';
9
- export { CAPSULE_COMPILER_ID, CAPSULE_RANKING_VERSION, TASK_CAPSULE_SCHEMA_VERSION, buildCodeContext, buildTaskCapsule, capsuleToCodeContext, readSavings, recordSaving, savingsRecorded, summarizeCapsule } from './chunk-UAPA5AHX.js';
9
+ export { addLibrary, driftFor, libId, loadCatalog, readDoc, resolveLib, saveCatalog, searchSymbols } from './chunk-S3HMG6BC.js';
10
+ export { CAPSULE_COMPILER_ID, CAPSULE_RANKING_VERSION, TASK_CAPSULE_SCHEMA_VERSION, buildCodeContext, buildTaskCapsule, capsuleToCodeContext, readSavings, recordSaving, savingsRecorded, summarizeCapsule } from './chunk-6VLOI2ZP.js';
10
11
  export { discoverModels } from './chunk-WNKGRXUA.js';
11
12
  import './chunk-57ZRSCHY.js';
12
13
  import './chunk-MS6V5XKB.js';
13
- import './chunk-UEXDSWKN.js';
14
+ import './chunk-GRMZU24V.js';
14
15
  import './chunk-PVNALGTG.js';
15
16
  import './chunk-CRAMOEBE.js';
16
17
  import './chunk-5IQBIXHS.js';
@@ -19,20 +20,20 @@ import './chunk-A3WWRW7U.js';
19
20
  import './chunk-DBX3DL27.js';
20
21
  export { inventory as dependencyInventory, enrichOnline } from './chunk-6BEBJCK4.js';
21
22
  export { findNodes, nodeById, resolveOne } from './chunk-J7LKEB2R.js';
22
- export { GraphIndex, identifierParts, impactOf, queryGraph, queryGraphSemantic } from './chunk-VEQA2FSM.js';
23
- import { SCHEMA_VERSION } from './chunk-ARGYMFST.js';
24
- export { SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, loadGraph } from './chunk-ARGYMFST.js';
23
+ export { GraphIndex, identifierParts, impactOf, queryGraph, queryGraphSemantic } from './chunk-LUJ4H4RJ.js';
24
+ import { SCHEMA_VERSION } from './chunk-5BFA532E.js';
25
+ export { SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, loadGraph } from './chunk-5BFA532E.js';
25
26
  import './chunk-VHRSG6CF.js';
26
27
  import './chunk-6H2QV5DR.js';
27
28
  export { SKIP_DIRS, SKIP_FILES, UsageError, discover } from './chunk-RTURQXQL.js';
28
- export { grammarsSourceDir, parseSource } from './chunk-WI66PODG.js';
29
+ export { grammarsSourceDir, parseSource } from './chunk-L3YEEJ6U.js';
29
30
  import { redactUrlCredentials, redactSecrets } from './chunk-T7RSQ5WD.js';
30
31
  export { LANGUAGES, allLanguageIds, langById, langForExtension } from './chunk-6WRG7VDO.js';
31
- export { cosine, embeddingsCached, embeddingsPath, embeddingsPathFor, getNodeEmbeddings, loadEmbedder, nodeEmbedText } from './chunk-DMI4BMUL.js';
32
- export { defaultGraphPath, legacyGraphPath, preferInRepoGraph, renderHtml, renderReport, resolveGraphPath, vibgrateDir, writeArtifacts } from './chunk-C5AOLTQS.js';
32
+ export { cosine, embeddingsCached, embeddingsPath, embeddingsPathFor, getNodeEmbeddings, loadEmbedder, nodeEmbedText } from './chunk-B5X246UH.js';
33
+ export { defaultGraphPath, legacyGraphPath, preferInRepoGraph, renderHtml, renderReport, resolveGraphPath, vibgrateDir, writeArtifacts } from './chunk-FVBN4E5C.js';
33
34
  import './chunk-MVPRPSXU.js';
34
35
  export { parseGraph, serializeGraph, stableStringify } from './chunk-O3LABX6I.js';
35
- export { VERSION } from './chunk-MQJY4EQV.js';
36
+ export { VERSION } from './chunk-KFLNWYZG.js';
36
37
  import './chunk-XP6UUCZZ.js';
37
38
  import './chunk-JFGYT6BI.js';
38
39
  import './chunk-XQNKCA2J.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/engine/push.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,aAAA,CAAc,IAAA,EAAc,KAAA,EAAgB,YAAA,EAA4C;AACtG,EAAA,MAAM,MAAM,GAAA,CAAI,IAAA,EAAM,CAAC,WAAA,EAAa,MAAM,CAAC,CAAA,IAAK,0CAAA;AAChD,EAAA,MAAM,MAAA,GAAS,IAAI,IAAA,EAAM,CAAC,aAAa,cAAA,EAAgB,MAAM,CAAC,CAAA,IAAK,MAAA;AACnE,EAAA,MAAM,SAAA,GAAY,IAAI,IAAA,EAAM,CAAC,UAAU,OAAA,EAAS,mBAAmB,CAAC,CAAA,IAAK,MAAA;AACzE,EAAA,OAAO;AAAA,IACL,aAAA,EAAe,cAAA;AAAA,IACf,YAAA,EAAc,OAAA;AAAA,IACd,YAAA;AAAA,IACA,GAAA,EAAK,EAAE,GAAA,EAAK,QAAA,EAAU,IAAI,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,EAAG,MAAA,EAAO;AAAA,IAC/C,YAAY,SAAA,GAAY,EAAE,WAAW,oBAAA,CAAqB,SAAS,GAAE,GAAI,MAAA;AAAA,IACzE,aAAa,KAAA,CAAM,WAAA;AAAA,IACnB,KAAA,EAAO,YAAY,KAAK;AAAA,GAC1B;AACF;AAOO,SAAS,YAAY,KAAA,EAAyB;AACnD,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AAC5B,MAAA,MAAM,YAAY,CAAA,CAAE,SAAA,GAAY,cAAc,CAAA,CAAE,SAAS,IAAI,CAAA,CAAE,SAAA;AAC/D,MAAA,MAAM,MAAM,CAAA,CAAE,GAAA,GAAM,cAAc,CAAA,CAAE,GAAG,IAAI,CAAA,CAAE,GAAA;AAC7C,MAAA,OAAO,SAAA,KAAc,CAAA,CAAE,SAAA,IAAa,GAAA,KAAQ,CAAA,CAAE,GAAA,GAAM,EAAE,GAAG,CAAA,EAAG,SAAA,EAAW,GAAA,EAAI,GAAI,CAAA;AAAA,IACjF,CAAC;AAAA,GACH;AACF;AAEA,SAAS,GAAA,CAAI,MAAc,IAAA,EAA+B;AACxD,EAAA,IAAI;AACF,IAAA,OAAO,YAAA,CAAa,KAAA,EAAO,IAAA,EAAM,EAAE,GAAA,EAAK,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,CAAA,CAAE,IAAA,EAAK,IAAK,IAAA;AAAA,EAC9E,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF","file":"index.js","sourcesContent":["import { execFileSync } from 'node:child_process';\nimport { redactSecrets, redactUrlCredentials } from '../core-open/utils/redact.js';\nimport { SCHEMA_VERSION, type VgGraph } from '../schema.js';\n\n/**\n * The deferred, decoupled push envelope (VG-PACKAGE-AND-SCHEMA §7). In the open\n * CLI `vg push` is **specified but not built**: it assembles and redacts the\n * envelope and prints a notice, but performs **no network upload**. Nothing in\n * the free path depends on it. Drift-over-time/governance is the separate\n * commercial product.\n */\n\nexport interface GraphUploadEnvelope {\n /** Mirrors the graph's own schema version — never pinned to a literal here. */\n schemaVersion: typeof SCHEMA_VERSION;\n artifactType: 'graph';\n scanIngestId?: string;\n vcs: { sha: string; shortSha: string; branch: string };\n repository?: { name?: string; remoteUrl?: string };\n generatedAt: string;\n graph: VgGraph;\n}\n\nexport function buildEnvelope(root: string, graph: VgGraph, scanIngestId?: string): GraphUploadEnvelope {\n const sha = git(root, ['rev-parse', 'HEAD']) ?? '0000000000000000000000000000000000000000';\n const branch = git(root, ['rev-parse', '--abbrev-ref', 'HEAD']) ?? 'HEAD';\n const remoteUrl = git(root, ['config', '--get', 'remote.origin.url']) ?? undefined;\n return {\n schemaVersion: SCHEMA_VERSION,\n artifactType: 'graph',\n scanIngestId,\n vcs: { sha, shortSha: sha.slice(0, 12), branch },\n repository: remoteUrl ? { remoteUrl: redactUrlCredentials(remoteUrl) } : undefined,\n generatedAt: graph.generatedAt,\n graph: redactGraph(graph),\n };\n}\n\n/**\n * Redaction pass (GUARDRAILS §1: redact before storage). The graph is structure,\n * not content, but we defensively scrub any signature/name that matches a\n * credential-shaped pattern, and strip credentials from the remote URL.\n */\nexport function redactGraph(graph: VgGraph): VgGraph {\n return {\n ...graph,\n nodes: graph.nodes.map((n) => {\n const signature = n.signature ? redactSecrets(n.signature) : n.signature;\n const doc = n.doc ? redactSecrets(n.doc) : n.doc;\n return signature !== n.signature || doc !== n.doc ? { ...n, signature, doc } : n;\n }),\n };\n}\n\nfunction git(root: string, args: string[]): string | null {\n try {\n return execFileSync('git', args, { cwd: root, encoding: 'utf8' }).trim() || null;\n } catch {\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/engine/push.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,aAAA,CAAc,IAAA,EAAc,KAAA,EAAgB,YAAA,EAA4C;AACtG,EAAA,MAAM,MAAM,GAAA,CAAI,IAAA,EAAM,CAAC,WAAA,EAAa,MAAM,CAAC,CAAA,IAAK,0CAAA;AAChD,EAAA,MAAM,MAAA,GAAS,IAAI,IAAA,EAAM,CAAC,aAAa,cAAA,EAAgB,MAAM,CAAC,CAAA,IAAK,MAAA;AACnE,EAAA,MAAM,SAAA,GAAY,IAAI,IAAA,EAAM,CAAC,UAAU,OAAA,EAAS,mBAAmB,CAAC,CAAA,IAAK,MAAA;AACzE,EAAA,OAAO;AAAA,IACL,aAAA,EAAe,cAAA;AAAA,IACf,YAAA,EAAc,OAAA;AAAA,IACd,YAAA;AAAA,IACA,GAAA,EAAK,EAAE,GAAA,EAAK,QAAA,EAAU,IAAI,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,EAAG,MAAA,EAAO;AAAA,IAC/C,YAAY,SAAA,GAAY,EAAE,WAAW,oBAAA,CAAqB,SAAS,GAAE,GAAI,MAAA;AAAA,IACzE,aAAa,KAAA,CAAM,WAAA;AAAA,IACnB,KAAA,EAAO,YAAY,KAAK;AAAA,GAC1B;AACF;AAOO,SAAS,YAAY,KAAA,EAAyB;AACnD,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AAC5B,MAAA,MAAM,YAAY,CAAA,CAAE,SAAA,GAAY,cAAc,CAAA,CAAE,SAAS,IAAI,CAAA,CAAE,SAAA;AAC/D,MAAA,MAAM,MAAM,CAAA,CAAE,GAAA,GAAM,cAAc,CAAA,CAAE,GAAG,IAAI,CAAA,CAAE,GAAA;AAC7C,MAAA,OAAO,SAAA,KAAc,CAAA,CAAE,SAAA,IAAa,GAAA,KAAQ,CAAA,CAAE,GAAA,GAAM,EAAE,GAAG,CAAA,EAAG,SAAA,EAAW,GAAA,EAAI,GAAI,CAAA;AAAA,IACjF,CAAC;AAAA,GACH;AACF;AAEA,SAAS,GAAA,CAAI,MAAc,IAAA,EAA+B;AACxD,EAAA,IAAI;AACF,IAAA,OAAO,YAAA,CAAa,KAAA,EAAO,IAAA,EAAM,EAAE,GAAA,EAAK,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,CAAA,CAAE,IAAA,EAAK,IAAK,IAAA;AAAA,EAC9E,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF","file":"index.js","sourcesContent":["import { execFileSync } from 'node:child_process';\nimport { redactSecrets, redactUrlCredentials } from '../core-open/utils/redact.js';\nimport { SCHEMA_VERSION, type VgGraph } from '../schema.js';\n\n/**\n * The deferred, decoupled push envelope (VG-PACKAGE-AND-SCHEMA §7). In the open\n * CLI `vg push` is **specified but not built**: it assembles and redacts the\n * envelope and prints a notice, but performs **no network upload**. Nothing in\n * the free path depends on it. Drift-over-time/governance is the separate\n * commercial product.\n */\n\nexport interface GraphUploadEnvelope {\n /** Mirrors the graph's own schema version — never pinned to a literal here. */\n schemaVersion: typeof SCHEMA_VERSION;\n artifactType: 'graph';\n scanIngestId?: string;\n vcs: { sha: string; shortSha: string; branch: string };\n repository?: { name?: string; remoteUrl?: string };\n generatedAt: string;\n graph: VgGraph;\n}\n\nexport function buildEnvelope(root: string, graph: VgGraph, scanIngestId?: string): GraphUploadEnvelope {\n const sha = git(root, ['rev-parse', 'HEAD']) ?? '0000000000000000000000000000000000000000';\n const branch = git(root, ['rev-parse', '--abbrev-ref', 'HEAD']) ?? 'HEAD';\n const remoteUrl = git(root, ['config', '--get', 'remote.origin.url']) ?? undefined;\n return {\n schemaVersion: SCHEMA_VERSION,\n artifactType: 'graph',\n scanIngestId,\n vcs: { sha, shortSha: sha.slice(0, 12), branch },\n repository: remoteUrl ? { remoteUrl: redactUrlCredentials(remoteUrl) } : undefined,\n generatedAt: graph.generatedAt,\n graph: redactGraph(graph),\n };\n}\n\n/**\n * Redaction pass (GUARDRAILS §1: redact before storage). The graph is structure,\n * not content, but we defensively scrub any signature/name that matches a\n * credential-shaped pattern, and strip credentials from the remote URL.\n */\nexport function redactGraph(graph: VgGraph): VgGraph {\n return {\n ...graph,\n nodes: graph.nodes.map((n) => {\n const signature = n.signature ? redactSecrets(n.signature) : n.signature;\n const doc = n.doc ? redactSecrets(n.doc) : n.doc;\n return signature !== n.signature || doc !== n.doc ? { ...n, signature, doc } : n;\n }),\n };\n}\n\nfunction git(root: string, args: string[]): string | null {\n try {\n return execFileSync('git', args, { cwd: root, encoding: 'utf8' }).trim() || null;\n } catch {\n return null;\n }\n}\n"]}