nexus-agents 8.44.0 → 8.44.2

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 (131) hide show
  1. package/dist/{ast-rule-runner-EPU4KNXJ.js → ast-rule-runner-WVDAA42T.js} +3 -3
  2. package/dist/{child-mcp-config-MQYS7D6P.js → child-mcp-config-7QA75U75.js} +2 -2
  3. package/dist/{chunk-M7TQR4UU.js → chunk-2XVGARRY.js} +4 -4
  4. package/dist/{chunk-6HMACBA3.js → chunk-4R7UX4LH.js} +2 -2
  5. package/dist/{chunk-WPBF2POG.js → chunk-4XSUIYEJ.js} +4 -4
  6. package/dist/{chunk-ZSMK7RFK.js → chunk-76RVBWFJ.js} +2 -2
  7. package/dist/{chunk-LVOXPW3M.js → chunk-7LC7IAC6.js} +2 -2
  8. package/dist/{chunk-AP3KIHPG.js → chunk-CFD2JBFF.js} +2 -2
  9. package/dist/{chunk-H77DZWRG.js → chunk-E7GG4QM4.js} +2 -2
  10. package/dist/{chunk-AMCNB2TJ.js → chunk-G6BYL67S.js} +5 -5
  11. package/dist/{chunk-5CO7TEYR.js → chunk-GNXA7QYJ.js} +2 -2
  12. package/dist/{chunk-Z4SCHKLH.js → chunk-HT2X7CTV.js} +2 -2
  13. package/dist/{chunk-2U2CTX4Q.js → chunk-II5QSTMF.js} +54 -45
  14. package/dist/{chunk-2U2CTX4Q.js.map → chunk-II5QSTMF.js.map} +1 -1
  15. package/dist/{chunk-OO73573G.js → chunk-K5AOFWUZ.js} +2 -2
  16. package/dist/{chunk-GCLLRAST.js → chunk-KWBL4YBO.js} +3 -3
  17. package/dist/{chunk-NJDB4LVF.js → chunk-L4M72UC3.js} +8 -8
  18. package/dist/{chunk-U7JRUYB3.js → chunk-LQQVESK4.js} +2 -2
  19. package/dist/{chunk-64GMIUM5.js → chunk-M7DUOIAK.js} +15 -2
  20. package/dist/chunk-M7DUOIAK.js.map +1 -0
  21. package/dist/{chunk-LHIOFRJX.js → chunk-N5TB4D4Y.js} +6 -6
  22. package/dist/{chunk-P6DGZEWY.js → chunk-NAQZUL6T.js} +4 -4
  23. package/dist/{chunk-B5R7KEZR.js → chunk-OJQGBWSN.js} +7 -7
  24. package/dist/{chunk-IOV4B5R5.js → chunk-OWFSWV2B.js} +2 -2
  25. package/dist/{chunk-K2A6LRLL.js → chunk-Q4YQUVFY.js} +7 -7
  26. package/dist/{chunk-X2MX53O3.js → chunk-RTXOSQQ5.js} +2 -2
  27. package/dist/{chunk-JSH5GCZK.js → chunk-S4RQTNOJ.js} +3 -3
  28. package/dist/{chunk-4H44CQIZ.js → chunk-SSZ3UI5I.js} +2 -2
  29. package/dist/{chunk-VOEKVO4Z.js → chunk-TCAOGMSJ.js} +3 -3
  30. package/dist/{chunk-NJ2EUCSY.js → chunk-UVWWUCTU.js} +2 -2
  31. package/dist/{chunk-LZL23U7Z.js → chunk-VMUMZQRK.js} +2 -2
  32. package/dist/{chunk-UDZBMHCX.js → chunk-W4FTZ6NQ.js} +9 -9
  33. package/dist/{chunk-BTWPTJF3.js → chunk-WG57CLZX.js} +3 -3
  34. package/dist/{chunk-QHBW7AS7.js → chunk-WINAQRIP.js} +4 -4
  35. package/dist/{chunk-3QP3NJ4E.js → chunk-WTJARWUI.js} +2 -2
  36. package/dist/{chunk-OEKALQ2G.js → chunk-Y5SMWBMT.js} +2 -2
  37. package/dist/{chunk-RL6F6IUQ.js → chunk-YO44KBCM.js} +2 -2
  38. package/dist/{chunk-MLG2PR6E.js → chunk-ZAQ7TGE5.js} +2 -2
  39. package/dist/{chunk-S4QNCIZF.js → chunk-ZYBVRWCQ.js} +19 -9
  40. package/dist/chunk-ZYBVRWCQ.js.map +1 -0
  41. package/dist/{cli-circuit-breaker-LAOVTGFP.js → cli-circuit-breaker-YNMILNBW.js} +3 -3
  42. package/dist/cli.js +44 -44
  43. package/dist/{codebase-search-3D4TW3KR.js → codebase-search-XDAFN6XP.js} +2 -2
  44. package/dist/{composite-router-CN2SV6PX.js → composite-router-IMTJSNSW.js} +2 -2
  45. package/dist/{consensus-vote-GFIIMQW4.js → consensus-vote-M4LH7MXD.js} +17 -17
  46. package/dist/{context-retriever-3XRHW4EG.js → context-retriever-TJD4G7VT.js} +8 -8
  47. package/dist/{doctor-deep-5CSAHVEP.js → doctor-deep-A6KISK57.js} +3 -3
  48. package/dist/{doctor-live-5NRILDTR.js → doctor-live-PRGQCROP.js} +9 -9
  49. package/dist/{expert-bridge-ZNNMHOQH.js → expert-bridge-6C6RR6WF.js} +4 -4
  50. package/dist/{factory-UYBTTLHZ.js → factory-YJQI6VWJ.js} +5 -5
  51. package/dist/{factory-TE7DQKRW.js → factory-YLPR5WLO.js} +9 -9
  52. package/dist/{improvement-review-5RWJT2SO.js → improvement-review-E6GLPXUP.js} +6 -6
  53. package/dist/index.js +32 -32
  54. package/dist/{init-opencode-WKKW7V7A.js → init-opencode-KPMC65FE.js} +6 -6
  55. package/dist/issue-triage-PV46T7GR.js +17 -0
  56. package/dist/{pr-reviewer-helpers-BR6YMKMR.js → pr-reviewer-helpers-HOIPAC4C.js} +4 -4
  57. package/dist/{registry-command-TWZXTXWB.js → registry-command-QTVLH3SG.js} +2 -2
  58. package/dist/{repo-security-plan-3E3FSPD5.js → repo-security-plan-VSFW6JNC.js} +3 -3
  59. package/dist/{research-helpers-synthesize-NIDQS4XT.js → research-helpers-synthesize-FEL4P5AM.js} +4 -4
  60. package/dist/{routing-memory-PGYUB4UJ.js → routing-memory-3QEB367H.js} +2 -2
  61. package/dist/{session-memory-D2IK4PC2.js → session-memory-MXNCBWWR.js} +3 -3
  62. package/dist/{setup-config-QELDNFFB.js → setup-config-3EJ37UHP.js} +3 -3
  63. package/dist/{setup-custom-api-57TCCU7N.js → setup-custom-api-KZL36DTQ.js} +4 -4
  64. package/dist/setup-data-dir-EKNO344K.js +29 -0
  65. package/dist/{tool-memory-3B44V6CP.js → tool-memory-K5XBNYLH.js} +5 -5
  66. package/dist/{unified-registry-AIHYR7FG.js → unified-registry-5Y5JXIT2.js} +10 -10
  67. package/dist/{weather-report-2Q6RXC2D.js → weather-report-K5JQJERB.js} +2 -2
  68. package/package.json +1 -1
  69. package/dist/chunk-64GMIUM5.js.map +0 -1
  70. package/dist/chunk-S4QNCIZF.js.map +0 -1
  71. package/dist/issue-triage-FRPETYSK.js +0 -17
  72. package/dist/setup-data-dir-5WWOT3M7.js +0 -29
  73. /package/dist/{ast-rule-runner-EPU4KNXJ.js.map → ast-rule-runner-WVDAA42T.js.map} +0 -0
  74. /package/dist/{child-mcp-config-MQYS7D6P.js.map → child-mcp-config-7QA75U75.js.map} +0 -0
  75. /package/dist/{chunk-M7TQR4UU.js.map → chunk-2XVGARRY.js.map} +0 -0
  76. /package/dist/{chunk-6HMACBA3.js.map → chunk-4R7UX4LH.js.map} +0 -0
  77. /package/dist/{chunk-WPBF2POG.js.map → chunk-4XSUIYEJ.js.map} +0 -0
  78. /package/dist/{chunk-ZSMK7RFK.js.map → chunk-76RVBWFJ.js.map} +0 -0
  79. /package/dist/{chunk-LVOXPW3M.js.map → chunk-7LC7IAC6.js.map} +0 -0
  80. /package/dist/{chunk-AP3KIHPG.js.map → chunk-CFD2JBFF.js.map} +0 -0
  81. /package/dist/{chunk-H77DZWRG.js.map → chunk-E7GG4QM4.js.map} +0 -0
  82. /package/dist/{chunk-AMCNB2TJ.js.map → chunk-G6BYL67S.js.map} +0 -0
  83. /package/dist/{chunk-5CO7TEYR.js.map → chunk-GNXA7QYJ.js.map} +0 -0
  84. /package/dist/{chunk-Z4SCHKLH.js.map → chunk-HT2X7CTV.js.map} +0 -0
  85. /package/dist/{chunk-OO73573G.js.map → chunk-K5AOFWUZ.js.map} +0 -0
  86. /package/dist/{chunk-GCLLRAST.js.map → chunk-KWBL4YBO.js.map} +0 -0
  87. /package/dist/{chunk-NJDB4LVF.js.map → chunk-L4M72UC3.js.map} +0 -0
  88. /package/dist/{chunk-U7JRUYB3.js.map → chunk-LQQVESK4.js.map} +0 -0
  89. /package/dist/{chunk-LHIOFRJX.js.map → chunk-N5TB4D4Y.js.map} +0 -0
  90. /package/dist/{chunk-P6DGZEWY.js.map → chunk-NAQZUL6T.js.map} +0 -0
  91. /package/dist/{chunk-B5R7KEZR.js.map → chunk-OJQGBWSN.js.map} +0 -0
  92. /package/dist/{chunk-IOV4B5R5.js.map → chunk-OWFSWV2B.js.map} +0 -0
  93. /package/dist/{chunk-K2A6LRLL.js.map → chunk-Q4YQUVFY.js.map} +0 -0
  94. /package/dist/{chunk-X2MX53O3.js.map → chunk-RTXOSQQ5.js.map} +0 -0
  95. /package/dist/{chunk-JSH5GCZK.js.map → chunk-S4RQTNOJ.js.map} +0 -0
  96. /package/dist/{chunk-4H44CQIZ.js.map → chunk-SSZ3UI5I.js.map} +0 -0
  97. /package/dist/{chunk-VOEKVO4Z.js.map → chunk-TCAOGMSJ.js.map} +0 -0
  98. /package/dist/{chunk-NJ2EUCSY.js.map → chunk-UVWWUCTU.js.map} +0 -0
  99. /package/dist/{chunk-LZL23U7Z.js.map → chunk-VMUMZQRK.js.map} +0 -0
  100. /package/dist/{chunk-UDZBMHCX.js.map → chunk-W4FTZ6NQ.js.map} +0 -0
  101. /package/dist/{chunk-BTWPTJF3.js.map → chunk-WG57CLZX.js.map} +0 -0
  102. /package/dist/{chunk-QHBW7AS7.js.map → chunk-WINAQRIP.js.map} +0 -0
  103. /package/dist/{chunk-3QP3NJ4E.js.map → chunk-WTJARWUI.js.map} +0 -0
  104. /package/dist/{chunk-OEKALQ2G.js.map → chunk-Y5SMWBMT.js.map} +0 -0
  105. /package/dist/{chunk-RL6F6IUQ.js.map → chunk-YO44KBCM.js.map} +0 -0
  106. /package/dist/{chunk-MLG2PR6E.js.map → chunk-ZAQ7TGE5.js.map} +0 -0
  107. /package/dist/{cli-circuit-breaker-LAOVTGFP.js.map → cli-circuit-breaker-YNMILNBW.js.map} +0 -0
  108. /package/dist/{codebase-search-3D4TW3KR.js.map → codebase-search-XDAFN6XP.js.map} +0 -0
  109. /package/dist/{composite-router-CN2SV6PX.js.map → composite-router-IMTJSNSW.js.map} +0 -0
  110. /package/dist/{consensus-vote-GFIIMQW4.js.map → consensus-vote-M4LH7MXD.js.map} +0 -0
  111. /package/dist/{context-retriever-3XRHW4EG.js.map → context-retriever-TJD4G7VT.js.map} +0 -0
  112. /package/dist/{doctor-deep-5CSAHVEP.js.map → doctor-deep-A6KISK57.js.map} +0 -0
  113. /package/dist/{doctor-live-5NRILDTR.js.map → doctor-live-PRGQCROP.js.map} +0 -0
  114. /package/dist/{expert-bridge-ZNNMHOQH.js.map → expert-bridge-6C6RR6WF.js.map} +0 -0
  115. /package/dist/{factory-TE7DQKRW.js.map → factory-YJQI6VWJ.js.map} +0 -0
  116. /package/dist/{factory-UYBTTLHZ.js.map → factory-YLPR5WLO.js.map} +0 -0
  117. /package/dist/{improvement-review-5RWJT2SO.js.map → improvement-review-E6GLPXUP.js.map} +0 -0
  118. /package/dist/{init-opencode-WKKW7V7A.js.map → init-opencode-KPMC65FE.js.map} +0 -0
  119. /package/dist/{issue-triage-FRPETYSK.js.map → issue-triage-PV46T7GR.js.map} +0 -0
  120. /package/dist/{pr-reviewer-helpers-BR6YMKMR.js.map → pr-reviewer-helpers-HOIPAC4C.js.map} +0 -0
  121. /package/dist/{registry-command-TWZXTXWB.js.map → registry-command-QTVLH3SG.js.map} +0 -0
  122. /package/dist/{repo-security-plan-3E3FSPD5.js.map → repo-security-plan-VSFW6JNC.js.map} +0 -0
  123. /package/dist/{research-helpers-synthesize-NIDQS4XT.js.map → research-helpers-synthesize-FEL4P5AM.js.map} +0 -0
  124. /package/dist/{routing-memory-PGYUB4UJ.js.map → routing-memory-3QEB367H.js.map} +0 -0
  125. /package/dist/{session-memory-D2IK4PC2.js.map → session-memory-MXNCBWWR.js.map} +0 -0
  126. /package/dist/{setup-config-QELDNFFB.js.map → setup-config-3EJ37UHP.js.map} +0 -0
  127. /package/dist/{setup-custom-api-57TCCU7N.js.map → setup-custom-api-KZL36DTQ.js.map} +0 -0
  128. /package/dist/{setup-data-dir-5WWOT3M7.js.map → setup-data-dir-EKNO344K.js.map} +0 -0
  129. /package/dist/{tool-memory-3B44V6CP.js.map → tool-memory-K5XBNYLH.js.map} +0 -0
  130. /package/dist/{unified-registry-AIHYR7FG.js.map → unified-registry-5Y5JXIT2.js.map} +0 -0
  131. /package/dist/{weather-report-2Q6RXC2D.js.map → weather-report-K5JQJERB.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createGitHubProvider,
3
3
  createScmProvider
4
- } from "./chunk-M7TQR4UU.js";
4
+ } from "./chunk-2XVGARRY.js";
5
5
  import {
6
6
  ALLOWED_COMMANDS,
7
7
  ARTIFACT_TYPES,
@@ -552,7 +552,7 @@ import {
552
552
  withLogging,
553
553
  withRetry,
554
554
  withRetryWrapper
555
- } from "./chunk-2U2CTX4Q.js";
555
+ } from "./chunk-II5QSTMF.js";
556
556
  import {
557
557
  FALLBACK_SCANNER_DATA,
558
558
  buildPlanFromAnalysis,
@@ -560,13 +560,13 @@ import {
560
560
  generateSecurityPlan,
561
561
  getRegistryManifest,
562
562
  resolveScannerData
563
- } from "./chunk-4H44CQIZ.js";
563
+ } from "./chunk-SSZ3UI5I.js";
564
564
  import {
565
565
  analyzeGitHubRepo,
566
566
  analyzeRepo,
567
567
  normalizeRepoId
568
568
  } from "./chunk-DGWT7DXX.js";
569
- import "./chunk-64GMIUM5.js";
569
+ import "./chunk-M7DUOIAK.js";
570
570
  import {
571
571
  AST_RULE_LANGUAGES,
572
572
  AST_RULE_SEVERITIES,
@@ -578,23 +578,23 @@ import {
578
578
  getBuiltInAstRulesPath,
579
579
  loadRules,
580
580
  runAstQaRules
581
- } from "./chunk-Z4SCHKLH.js";
581
+ } from "./chunk-HT2X7CTV.js";
582
582
  import "./chunk-3KDQKVCJ.js";
583
583
  import {
584
584
  closeServer,
585
585
  connectTransport,
586
586
  createServer,
587
587
  startStdioServer
588
- } from "./chunk-K2A6LRLL.js";
588
+ } from "./chunk-Q4YQUVFY.js";
589
589
  import {
590
590
  OPENAI_MODELS,
591
591
  OPENAI_MODEL_ALIASES,
592
592
  OpenAIAdapter,
593
593
  createOpenAIAdapter
594
- } from "./chunk-AMCNB2TJ.js";
594
+ } from "./chunk-G6BYL67S.js";
595
595
  import {
596
596
  executeExpert
597
- } from "./chunk-B5R7KEZR.js";
597
+ } from "./chunk-OJQGBWSN.js";
598
598
  import {
599
599
  AgentFindingSchema,
600
600
  ConsensusEngine,
@@ -643,12 +643,12 @@ import {
643
643
  generateProposalId,
644
644
  parseAgentPairKey,
645
645
  registerConsensusVoteTool
646
- } from "./chunk-UDZBMHCX.js";
647
- import "./chunk-OO73573G.js";
646
+ } from "./chunk-W4FTZ6NQ.js";
647
+ import "./chunk-K5AOFWUZ.js";
648
648
  import {
649
649
  allOf
650
650
  } from "./chunk-OQB3XC5O.js";
651
- import "./chunk-GCLLRAST.js";
651
+ import "./chunk-KWBL4YBO.js";
652
652
  import {
653
653
  AgentActionSchema,
654
654
  DEFAULT_FIREWALL_POLICY_MODE,
@@ -678,11 +678,11 @@ import {
678
678
  resolveFirewallPolicyMode,
679
679
  validateAgentAction,
680
680
  validateCorroboration
681
- } from "./chunk-LHIOFRJX.js";
681
+ } from "./chunk-N5TB4D4Y.js";
682
682
  import {
683
683
  GitHubProvider,
684
684
  ScmError
685
- } from "./chunk-3QP3NJ4E.js";
685
+ } from "./chunk-WTJARWUI.js";
686
686
  import {
687
687
  GitHubUserRoleSchema,
688
688
  InjectionFlagSchema,
@@ -697,11 +697,11 @@ import {
697
697
  assessReputation,
698
698
  resolveReputationGatingMode,
699
699
  sanitizeInput
700
- } from "./chunk-ZSMK7RFK.js";
700
+ } from "./chunk-76RVBWFJ.js";
701
701
  import {
702
702
  ImprovementReviewInputSchema,
703
703
  registerImprovementReviewTool
704
- } from "./chunk-VOEKVO4Z.js";
704
+ } from "./chunk-TCAOGMSJ.js";
705
705
  import {
706
706
  AgentPerformanceSchema,
707
707
  ConsensusAlgorithmSchema,
@@ -737,10 +737,10 @@ import {
737
737
  toolSuccess,
738
738
  toolSuccessStructured,
739
739
  validateToolInput
740
- } from "./chunk-QHBW7AS7.js";
740
+ } from "./chunk-WINAQRIP.js";
741
741
  import {
742
742
  VERSION
743
- } from "./chunk-NJ2EUCSY.js";
743
+ } from "./chunk-UVWWUCTU.js";
744
744
  import {
745
745
  AuditTrail,
746
746
  createAuditTrail,
@@ -751,13 +751,13 @@ import {
751
751
  emitReputationEvent,
752
752
  emitSanitizationEvent,
753
753
  emitTrustEvent
754
- } from "./chunk-MLG2PR6E.js";
754
+ } from "./chunk-ZAQ7TGE5.js";
755
755
  import {
756
756
  UnifiedAdapterRegistry,
757
757
  createUnifiedRegistry,
758
758
  getGlobalRegistry,
759
759
  resetGlobalRegistry
760
- } from "./chunk-WPBF2POG.js";
760
+ } from "./chunk-4XSUIYEJ.js";
761
761
  import {
762
762
  PersistentStrategyDistiller,
763
763
  RulesSnapshotSchema,
@@ -765,18 +765,18 @@ import {
765
765
  TokenCounter,
766
766
  TokenCounterProvider,
767
767
  createTokenCounter
768
- } from "./chunk-S4QNCIZF.js";
769
- import "./chunk-RL6F6IUQ.js";
768
+ } from "./chunk-ZYBVRWCQ.js";
769
+ import "./chunk-YO44KBCM.js";
770
770
  import {
771
771
  getTokenEnvVars,
772
772
  hasToken,
773
773
  resolveToken
774
- } from "./chunk-LVOXPW3M.js";
774
+ } from "./chunk-7LC7IAC6.js";
775
775
  import {
776
776
  MemoryError
777
- } from "./chunk-P6DGZEWY.js";
777
+ } from "./chunk-NAQZUL6T.js";
778
778
  import "./chunk-7LP6VJRP.js";
779
- import "./chunk-H77DZWRG.js";
779
+ import "./chunk-E7GG4QM4.js";
780
780
  import {
781
781
  BUILT_IN_EXPERTS,
782
782
  BuiltInExpertTypeSchema,
@@ -821,7 +821,7 @@ import {
821
821
  isCliAvailable,
822
822
  isRetryableError,
823
823
  sleep
824
- } from "./chunk-NJDB4LVF.js";
824
+ } from "./chunk-L4M72UC3.js";
825
825
  import {
826
826
  AdapterModelError,
827
827
  BaseAdapter,
@@ -843,11 +843,11 @@ import {
843
843
  tapStream,
844
844
  transformStream,
845
845
  withTimeout
846
- } from "./chunk-LZL23U7Z.js";
847
- import "./chunk-OEKALQ2G.js";
846
+ } from "./chunk-VMUMZQRK.js";
847
+ import "./chunk-Y5SMWBMT.js";
848
848
  import {
849
849
  PROVIDER_ENV_KEYS
850
- } from "./chunk-U7JRUYB3.js";
850
+ } from "./chunk-LQQVESK4.js";
851
851
  import "./chunk-T5GVEXSA.js";
852
852
  import {
853
853
  AvailabilityCache,
@@ -857,13 +857,13 @@ import {
857
857
  getFallbackChain,
858
858
  resetAvailabilityCache,
859
859
  resolveFallback
860
- } from "./chunk-AP3KIHPG.js";
860
+ } from "./chunk-CFD2JBFF.js";
861
861
  import "./chunk-QZUG667L.js";
862
- import "./chunk-5CO7TEYR.js";
862
+ import "./chunk-GNXA7QYJ.js";
863
863
  import {
864
864
  CliCircuitBreakerIntegration,
865
865
  createCliCircuitBreakerIntegration
866
- } from "./chunk-IOV4B5R5.js";
866
+ } from "./chunk-OWFSWV2B.js";
867
867
  import {
868
868
  AgentCapability,
869
869
  AgentError,
@@ -942,7 +942,7 @@ import {
942
942
  toError,
943
943
  unwrap,
944
944
  unwrapOr
945
- } from "./chunk-BTWPTJF3.js";
945
+ } from "./chunk-WG57CLZX.js";
946
946
  import "./chunk-3HELETAQ.js";
947
947
  import "./chunk-JVNJJ2VL.js";
948
948
  import "./chunk-ZPWHCABL.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  discoverModels,
3
3
  readOpencodeGateway
4
- } from "./chunk-AMCNB2TJ.js";
5
- import "./chunk-OO73573G.js";
6
- import "./chunk-LZL23U7Z.js";
7
- import "./chunk-U7JRUYB3.js";
4
+ } from "./chunk-G6BYL67S.js";
5
+ import "./chunk-K5AOFWUZ.js";
6
+ import "./chunk-VMUMZQRK.js";
7
+ import "./chunk-LQQVESK4.js";
8
8
  import {
9
9
  createLogger
10
- } from "./chunk-BTWPTJF3.js";
10
+ } from "./chunk-WG57CLZX.js";
11
11
  import "./chunk-3HELETAQ.js";
12
12
  import "./chunk-JVNJJ2VL.js";
13
13
  import "./chunk-ZPWHCABL.js";
@@ -176,4 +176,4 @@ export {
176
176
  runInitOpencode,
177
177
  runOpencodeValidate
178
178
  };
179
- //# sourceMappingURL=init-opencode-WKKW7V7A.js.map
179
+ //# sourceMappingURL=init-opencode-KPMC65FE.js.map
@@ -0,0 +1,17 @@
1
+ import {
2
+ IssueTriage,
3
+ createIssueTriage
4
+ } from "./chunk-N5TB4D4Y.js";
5
+ import "./chunk-WTJARWUI.js";
6
+ import "./chunk-76RVBWFJ.js";
7
+ import "./chunk-ZAQ7TGE5.js";
8
+ import "./chunk-7LC7IAC6.js";
9
+ import "./chunk-WG57CLZX.js";
10
+ import "./chunk-3HELETAQ.js";
11
+ import "./chunk-JVNJJ2VL.js";
12
+ import "./chunk-ZPWHCABL.js";
13
+ export {
14
+ IssueTriage,
15
+ createIssueTriage
16
+ };
17
+ //# sourceMappingURL=issue-triage-PV46T7GR.js.map
@@ -20,11 +20,11 @@ import {
20
20
  parseSeverity,
21
21
  reviewPostingBlock,
22
22
  sumFindings
23
- } from "./chunk-JSH5GCZK.js";
23
+ } from "./chunk-S4RQTNOJ.js";
24
24
  import "./chunk-3KDQKVCJ.js";
25
25
  import "./chunk-OQB3XC5O.js";
26
- import "./chunk-ZSMK7RFK.js";
27
- import "./chunk-BTWPTJF3.js";
26
+ import "./chunk-76RVBWFJ.js";
27
+ import "./chunk-WG57CLZX.js";
28
28
  import "./chunk-3HELETAQ.js";
29
29
  import "./chunk-JVNJJ2VL.js";
30
30
  import "./chunk-ZPWHCABL.js";
@@ -51,4 +51,4 @@ export {
51
51
  reviewPostingBlock,
52
52
  sumFindings
53
53
  };
54
- //# sourceMappingURL=pr-reviewer-helpers-BR6YMKMR.js.map
54
+ //# sourceMappingURL=pr-reviewer-helpers-HOIPAC4C.js.map
@@ -7,7 +7,7 @@ import {
7
7
  loadGeneratedRegistryEntries,
8
8
  loadUserManifestOverlay,
9
9
  reloadDefaultRegistry
10
- } from "./chunk-BTWPTJF3.js";
10
+ } from "./chunk-WG57CLZX.js";
11
11
  import "./chunk-3HELETAQ.js";
12
12
  import {
13
13
  nexusDataPath
@@ -249,4 +249,4 @@ export {
249
249
  isValidRegistrySubcommand,
250
250
  registryCommand
251
251
  };
252
- //# sourceMappingURL=registry-command-TWZXTXWB.js.map
252
+ //# sourceMappingURL=registry-command-QTVLH3SG.js.map
@@ -3,9 +3,9 @@ import {
3
3
  buildPlanFromAnalysis,
4
4
  generateSecurityPlan,
5
5
  resolveScannerData
6
- } from "./chunk-4H44CQIZ.js";
6
+ } from "./chunk-SSZ3UI5I.js";
7
7
  import "./chunk-DGWT7DXX.js";
8
- import "./chunk-BTWPTJF3.js";
8
+ import "./chunk-WG57CLZX.js";
9
9
  import "./chunk-3HELETAQ.js";
10
10
  import "./chunk-JVNJJ2VL.js";
11
11
  import "./chunk-ZPWHCABL.js";
@@ -15,4 +15,4 @@ export {
15
15
  generateSecurityPlan,
16
16
  resolveScannerData
17
17
  };
18
- //# sourceMappingURL=repo-security-plan-3E3FSPD5.js.map
18
+ //# sourceMappingURL=repo-security-plan-VSFW6JNC.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  AttributedInsightSchema,
3
3
  synthesizeResearch
4
- } from "./chunk-GCLLRAST.js";
5
- import "./chunk-RL6F6IUQ.js";
6
- import "./chunk-BTWPTJF3.js";
4
+ } from "./chunk-KWBL4YBO.js";
5
+ import "./chunk-YO44KBCM.js";
6
+ import "./chunk-WG57CLZX.js";
7
7
  import "./chunk-3HELETAQ.js";
8
8
  import "./chunk-JVNJJ2VL.js";
9
9
  import "./chunk-ZPWHCABL.js";
@@ -11,4 +11,4 @@ export {
11
11
  AttributedInsightSchema,
12
12
  synthesizeResearch
13
13
  };
14
- //# sourceMappingURL=research-helpers-synthesize-NIDQS4XT.js.map
14
+ //# sourceMappingURL=research-helpers-synthesize-FEL4P5AM.js.map
@@ -2,7 +2,7 @@ import {
2
2
  DEFAULT_ROUTING_MEMORY_CONFIG,
3
3
  RoutingMemory,
4
4
  createRoutingMemory
5
- } from "./chunk-BTWPTJF3.js";
5
+ } from "./chunk-WG57CLZX.js";
6
6
  import "./chunk-3HELETAQ.js";
7
7
  import "./chunk-JVNJJ2VL.js";
8
8
  import "./chunk-ZPWHCABL.js";
@@ -11,4 +11,4 @@ export {
11
11
  RoutingMemory,
12
12
  createRoutingMemory
13
13
  };
14
- //# sourceMappingURL=routing-memory-PGYUB4UJ.js.map
14
+ //# sourceMappingURL=routing-memory-3QEB367H.js.map
@@ -6,8 +6,8 @@ import {
6
6
  SessionMemory,
7
7
  SessionMemoryError,
8
8
  createSessionMemory
9
- } from "./chunk-H77DZWRG.js";
10
- import "./chunk-BTWPTJF3.js";
9
+ } from "./chunk-E7GG4QM4.js";
10
+ import "./chunk-WG57CLZX.js";
11
11
  import "./chunk-3HELETAQ.js";
12
12
  import "./chunk-JVNJJ2VL.js";
13
13
  import "./chunk-ZPWHCABL.js";
@@ -20,4 +20,4 @@ export {
20
20
  SessionMemoryError,
21
21
  createSessionMemory
22
22
  };
23
- //# sourceMappingURL=session-memory-D2IK4PC2.js.map
23
+ //# sourceMappingURL=session-memory-MXNCBWWR.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  runConfigInitSync
3
- } from "./chunk-6HMACBA3.js";
4
- import "./chunk-BTWPTJF3.js";
3
+ } from "./chunk-4R7UX4LH.js";
4
+ import "./chunk-WG57CLZX.js";
5
5
  import "./chunk-3HELETAQ.js";
6
6
  import "./chunk-JVNJJ2VL.js";
7
7
  import "./chunk-ZPWHCABL.js";
8
8
  export {
9
9
  runConfigInitSync
10
10
  };
11
- //# sourceMappingURL=setup-config-QELDNFFB.js.map
11
+ //# sourceMappingURL=setup-config-3EJ37UHP.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  CUSTOM_API_DEFAULT_MODEL
3
- } from "./chunk-OEKALQ2G.js";
3
+ } from "./chunk-Y5SMWBMT.js";
4
4
  import {
5
5
  CUSTOM_API_ALLOW_PRIVATE_ENV,
6
6
  CUSTOM_API_BASE_URL_ENV,
7
7
  validateCustomApiBaseUrl
8
- } from "./chunk-U7JRUYB3.js";
8
+ } from "./chunk-LQQVESK4.js";
9
9
  import {
10
10
  err,
11
11
  ok
12
- } from "./chunk-BTWPTJF3.js";
12
+ } from "./chunk-WG57CLZX.js";
13
13
  import "./chunk-3HELETAQ.js";
14
14
  import "./chunk-JVNJJ2VL.js";
15
15
  import "./chunk-ZPWHCABL.js";
@@ -107,4 +107,4 @@ function buildShellFragment(params) {
107
107
  export {
108
108
  configureCustomApi
109
109
  };
110
- //# sourceMappingURL=setup-custom-api-57TCCU7N.js.map
110
+ //# sourceMappingURL=setup-custom-api-KZL36DTQ.js.map
@@ -0,0 +1,29 @@
1
+ import {
2
+ NEXUS_DATA_DIR,
3
+ describeDataDirFix,
4
+ initDataDirectories
5
+ } from "./chunk-Q4YQUVFY.js";
6
+ import "./chunk-G6BYL67S.js";
7
+ import "./chunk-K5AOFWUZ.js";
8
+ import "./chunk-OQB3XC5O.js";
9
+ import "./chunk-UVWWUCTU.js";
10
+ import "./chunk-7LP6VJRP.js";
11
+ import "./chunk-L4M72UC3.js";
12
+ import "./chunk-VMUMZQRK.js";
13
+ import "./chunk-Y5SMWBMT.js";
14
+ import "./chunk-LQQVESK4.js";
15
+ import "./chunk-T5GVEXSA.js";
16
+ import "./chunk-CFD2JBFF.js";
17
+ import "./chunk-QZUG667L.js";
18
+ import "./chunk-GNXA7QYJ.js";
19
+ import "./chunk-OWFSWV2B.js";
20
+ import "./chunk-WG57CLZX.js";
21
+ import "./chunk-3HELETAQ.js";
22
+ import "./chunk-JVNJJ2VL.js";
23
+ import "./chunk-ZPWHCABL.js";
24
+ export {
25
+ NEXUS_DATA_DIR,
26
+ describeDataDirFix,
27
+ initDataDirectories
28
+ };
29
+ //# sourceMappingURL=setup-data-dir-EKNO344K.js.map
@@ -4,13 +4,13 @@ import {
4
4
  getToolMemory,
5
5
  reinitializeMemoryBackends,
6
6
  shutdownToolMemory
7
- } from "./chunk-P6DGZEWY.js";
7
+ } from "./chunk-NAQZUL6T.js";
8
8
  import "./chunk-7LP6VJRP.js";
9
- import "./chunk-H77DZWRG.js";
9
+ import "./chunk-E7GG4QM4.js";
10
10
  import "./chunk-7PPGN5C5.js";
11
11
  import "./chunk-YYJFZ7TO.js";
12
- import "./chunk-5CO7TEYR.js";
13
- import "./chunk-BTWPTJF3.js";
12
+ import "./chunk-GNXA7QYJ.js";
13
+ import "./chunk-WG57CLZX.js";
14
14
  import "./chunk-3HELETAQ.js";
15
15
  import "./chunk-JVNJJ2VL.js";
16
16
  import "./chunk-ZPWHCABL.js";
@@ -21,4 +21,4 @@ export {
21
21
  reinitializeMemoryBackends,
22
22
  shutdownToolMemory
23
23
  };
24
- //# sourceMappingURL=tool-memory-3B44V6CP.js.map
24
+ //# sourceMappingURL=tool-memory-K5XBNYLH.js.map
@@ -3,17 +3,17 @@ import {
3
3
  createUnifiedRegistry,
4
4
  getGlobalRegistry,
5
5
  resetGlobalRegistry
6
- } from "./chunk-WPBF2POG.js";
7
- import "./chunk-NJDB4LVF.js";
8
- import "./chunk-LZL23U7Z.js";
9
- import "./chunk-OEKALQ2G.js";
10
- import "./chunk-U7JRUYB3.js";
6
+ } from "./chunk-4XSUIYEJ.js";
7
+ import "./chunk-L4M72UC3.js";
8
+ import "./chunk-VMUMZQRK.js";
9
+ import "./chunk-Y5SMWBMT.js";
10
+ import "./chunk-LQQVESK4.js";
11
11
  import "./chunk-T5GVEXSA.js";
12
- import "./chunk-AP3KIHPG.js";
12
+ import "./chunk-CFD2JBFF.js";
13
13
  import "./chunk-QZUG667L.js";
14
- import "./chunk-5CO7TEYR.js";
15
- import "./chunk-IOV4B5R5.js";
16
- import "./chunk-BTWPTJF3.js";
14
+ import "./chunk-GNXA7QYJ.js";
15
+ import "./chunk-OWFSWV2B.js";
16
+ import "./chunk-WG57CLZX.js";
17
17
  import "./chunk-3HELETAQ.js";
18
18
  import "./chunk-JVNJJ2VL.js";
19
19
  import "./chunk-ZPWHCABL.js";
@@ -23,4 +23,4 @@ export {
23
23
  getGlobalRegistry,
24
24
  resetGlobalRegistry
25
25
  };
26
- //# sourceMappingURL=unified-registry-AIHYR7FG.js.map
26
+ //# sourceMappingURL=unified-registry-5Y5JXIT2.js.map
@@ -5,7 +5,7 @@ import {
5
5
  getModelWeatherSummary,
6
6
  queryWithLookback,
7
7
  shouldExplore
8
- } from "./chunk-BTWPTJF3.js";
8
+ } from "./chunk-WG57CLZX.js";
9
9
  import "./chunk-3HELETAQ.js";
10
10
  import "./chunk-JVNJJ2VL.js";
11
11
  import "./chunk-ZPWHCABL.js";
@@ -17,4 +17,4 @@ export {
17
17
  queryWithLookback,
18
18
  shouldExplore
19
19
  };
20
- //# sourceMappingURL=weather-report-2Q6RXC2D.js.map
20
+ //# sourceMappingURL=weather-report-K5JQJERB.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexus-agents",
3
- "version": "8.44.0",
3
+ "version": "8.44.2",
4
4
  "description": "Governance substrate for AI coding agents — adversarial PR review, drift-detected rules, tamper-evident audit, and closed-loop outcome routing for Claude, Codex, Gemini, and OpenCode",
5
5
  "mcpName": "io.github.nexus-substrate/nexus-agents",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/indexer/codebase-search.ts","../src/indexer/symbol-extractor.ts"],"sourcesContent":["/**\n * Codebase search — keyword search across symbol indices.\n *\n * Builds an in-memory symbol index for a directory of TS/JS files,\n * then supports keyword search, file summaries, and symbol lookup.\n *\n * Inspired by Augment Code's Context Engine. Uses the existing\n * extractSymbols() function for AST parsing.\n *\n * @module indexer/codebase-search\n */\n\nimport { readdir } from 'node:fs/promises';\nimport { resolve, extname, relative } from 'node:path';\nimport {\n extractSymbols,\n SUPPORTED_EXTENSIONS,\n type CodeSymbol,\n type SymbolExtractionResult,\n} from './symbol-extractor.js';\n\n/** A symbol with its source file path. */\nexport interface IndexedSymbol extends CodeSymbol {\n /** Relative file path from the indexed root. */\n filePath: string;\n}\n\n/** Search result with relevance scoring. */\nexport interface SearchResult {\n symbol: IndexedSymbol;\n /** Relevance score (higher = better match). */\n score: number;\n /** How the query matched (exact, prefix, substring, word). */\n matchType: 'exact' | 'prefix' | 'substring' | 'word';\n}\n\n/** File summary — compact overview of a source file. */\nexport interface FileSummary {\n filePath: string;\n totalLines: number;\n exportedSymbols: number;\n privateSymbols: number;\n kinds: Record<string, number>;\n}\n\n/** Index statistics. */\nexport interface IndexStats {\n totalFiles: number;\n totalSymbols: number;\n indexedAt: string;\n /** Directories not descended into because `maxDepth` was exhausted (#4243). */\n skippedDirs: number;\n}\n\n/** Default recursion depth for `CodebaseIndex.index()` (#4243 — was hardcoded 4). */\nexport const DEFAULT_INDEX_MAX_DEPTH = 24;\n/** Upper clamp for caller-supplied `maxDepth` to bound worst-case tree-walk cost. */\nexport const MAX_INDEX_MAX_DEPTH = 64;\n\n// Score weights for different match types\nconst SCORE_EXACT = 20;\nconst SCORE_PREFIX = 10;\nconst SCORE_WORD = 5;\nconst SCORE_SUBSTRING = 2;\nconst SCORE_EXPORTED_BONUS = 3;\n\nfunction isSourceFile(name: string): boolean {\n const ext = extname(name).toLowerCase();\n return (\n // #4640: take the list from the extractor rather than keeping a copy. The\n // two sat on opposite sides of the same decision — `extract_symbols` reaches\n // the extension gate at symbol-extractor.ts:162, while this sweep filters\n // *before* it — so a language added to SUPPORTED_EXTENSIONS was parsed by\n // one tool and silently never indexed by the other.\n SUPPORTED_EXTENSIONS.includes(ext) &&\n !name.endsWith('.test.ts') &&\n !name.endsWith('.test.tsx') &&\n !name.endsWith('.d.ts')\n );\n}\n\n/** Result of a recursive source-file walk: the files found plus a truncation signal. */\nexport interface FindSourceFilesResult {\n files: string[];\n /** Count of directories that were NOT descended into because maxDepth hit 0. */\n skippedDirs: number;\n}\n\n/**\n * Recursively collect TS/JS source files under `dir`, bounded by `maxDepth`,\n * skipping `node_modules`/`dist` and test/declaration files. Exported so the\n * `search_usages` tool (#4265) reuses the exact same source-file set the symbol\n * index walks — keeping the two tools' scopes apples-to-apples (DRY).\n */\nexport async function findSourceFiles(\n dir: string,\n maxDepth: number\n): Promise<FindSourceFilesResult> {\n if (maxDepth <= 0) return { files: [], skippedDirs: 1 };\n const files: string[] = [];\n let skippedDirs = 0;\n const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);\n for (const entry of entries) {\n const fullPath = resolve(dir, entry.name);\n if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {\n const sub = await findSourceFiles(fullPath, maxDepth - 1);\n files.push(...sub.files);\n skippedDirs += sub.skippedDirs;\n }\n if (entry.isFile() && isSourceFile(entry.name)) {\n files.push(fullPath);\n }\n }\n return { files, skippedDirs };\n}\n\nfunction scoreMatch(symbolName: string, query: string): SearchResult['score'] | null {\n const nameLower = symbolName.toLowerCase();\n const queryLower = query.toLowerCase();\n\n if (nameLower === queryLower) return SCORE_EXACT;\n if (nameLower.startsWith(queryLower)) return SCORE_PREFIX;\n\n // Word boundary match (camelCase splitting)\n const words = symbolName\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .toLowerCase()\n .split(/[\\s_-]+/);\n if (words.some((w) => w === queryLower)) return SCORE_WORD;\n\n if (nameLower.includes(queryLower)) return SCORE_SUBSTRING;\n\n return null;\n}\n\nfunction getMatchType(score: number): SearchResult['matchType'] {\n if (score >= SCORE_EXACT) return 'exact';\n if (score >= SCORE_PREFIX) return 'prefix';\n if (score >= SCORE_WORD) return 'word';\n return 'substring';\n}\n\n/** In-memory codebase symbol index. */\nexport class CodebaseIndex {\n private readonly symbols: IndexedSymbol[] = [];\n private readonly fileResults = new Map<string, SymbolExtractionResult>();\n private readonly rootDir: string;\n private skippedDirs = 0;\n\n constructor(rootDir: string) {\n this.rootDir = rootDir;\n }\n\n /**\n * Index all TS/JS source files in the directory.\n *\n * `maxDepth` is clamped to `[1, MAX_INDEX_MAX_DEPTH]` so a caller-supplied\n * value can't force an unbounded tree-walk (#4243).\n */\n async index(maxDepth: number = DEFAULT_INDEX_MAX_DEPTH): Promise<IndexStats> {\n const clampedDepth = Math.min(Math.max(maxDepth, 1), MAX_INDEX_MAX_DEPTH);\n const { files, skippedDirs } = await findSourceFiles(this.rootDir, clampedDepth);\n this.skippedDirs = skippedDirs;\n\n for (const file of files) {\n const result = await extractSymbols(file);\n const relPath = relative(this.rootDir, file);\n this.fileResults.set(relPath, result);\n\n for (const symbol of result.symbols) {\n this.symbols.push({ ...symbol, filePath: relPath });\n }\n }\n\n return {\n totalFiles: files.length,\n totalSymbols: this.symbols.length,\n indexedAt: new Date().toISOString(),\n skippedDirs,\n };\n }\n\n /** Search symbols by keyword. Returns top N results sorted by relevance. */\n search(query: string, limit = 20): SearchResult[] {\n const results: SearchResult[] = [];\n\n for (const symbol of this.symbols) {\n const baseScore = scoreMatch(symbol.name, query);\n if (baseScore === null) continue;\n\n const bonus = symbol.exported ? SCORE_EXPORTED_BONUS : 0;\n results.push({\n symbol,\n score: baseScore + bonus,\n matchType: getMatchType(baseScore),\n });\n }\n\n return results.sort((a, b) => b.score - a.score).slice(0, limit);\n }\n\n /** Get a compact summary of a file's symbols. */\n getFileSummary(filePath: string): FileSummary | undefined {\n const result = this.fileResults.get(filePath);\n if (result === undefined) return undefined;\n\n const kinds: Record<string, number> = {};\n let exported = 0;\n let priv = 0;\n\n for (const s of result.symbols) {\n kinds[s.kind] = (kinds[s.kind] ?? 0) + 1;\n if (s.exported) exported++;\n else priv++;\n }\n\n return {\n filePath,\n totalLines: result.totalLines,\n exportedSymbols: exported,\n privateSymbols: priv,\n kinds,\n };\n }\n\n /** List all indexed files with symbol counts. */\n listFiles(): Array<{ path: string; symbols: number; lines: number }> {\n return [...this.fileResults.entries()].map(([path, result]) => ({\n path,\n symbols: result.symbols.length,\n lines: result.totalLines,\n }));\n }\n\n /** Get index statistics. */\n get stats(): { files: number; symbols: number; skippedDirs: number } {\n return {\n files: this.fileResults.size,\n symbols: this.symbols.length,\n skippedDirs: this.skippedDirs,\n };\n }\n}\n","/**\n * AST symbol extraction for token-efficient code retrieval.\n *\n * Uses TypeScript's compiler API to extract function, class, method,\n * interface, and type definitions from source files.\n *\n * Token savings: ~80-99% vs reading full files.\n * No additional dependencies — uses TypeScript (already a project dep).\n *\n * @module indexer/symbol-extractor\n */\n\nimport { readFile } from 'node:fs/promises';\nimport { extname } from 'node:path';\nimport ts from 'typescript';\n\n/** A symbol extracted from source code. */\nexport interface CodeSymbol {\n /** Symbol name */\n name: string;\n /** Symbol kind */\n kind: 'function' | 'class' | 'method' | 'interface' | 'type' | 'variable' | 'enum';\n /** Start line (1-based) */\n startLine: number;\n /** End line (1-based) */\n endLine: number;\n /** Full source text of the symbol */\n text: string;\n /** Whether the symbol is exported */\n exported: boolean;\n}\n\n/**\n * Extensions the TypeScript compiler API path can parse (#4517).\n *\n * Exported so the tool layer can name them in its error message instead of\n * asserting a file \"may not be TypeScript/JavaScript\" without saying what\n * would count.\n */\nexport const SUPPORTED_EXTENSIONS: readonly string[] = ['.ts', '.tsx', '.js', '.jsx'];\n\n/** Result of extracting symbols from a file. */\nexport interface SymbolExtractionResult {\n filePath: string;\n symbols: CodeSymbol[];\n totalLines: number;\n totalChars: number;\n symbolChars: number;\n savingsPercent: number;\n /**\n * Whether the file was actually parsed (#4517).\n *\n * `false` means the extension is not supported, so `symbols: []` reports\n * that nothing was READ — not that nothing is there. An unsupported file and\n * a genuinely symbol-free file previously returned identical results, and\n * the tool guessed between them wrongly: a valid TypeScript barrel of 20\n * re-exports was reported as possibly-not-TypeScript.\n */\n parsed: boolean;\n}\n\nfunction getKind(node: ts.Node): CodeSymbol['kind'] | null {\n if (ts.isFunctionDeclaration(node)) return 'function';\n if (ts.isClassDeclaration(node)) return 'class';\n if (ts.isInterfaceDeclaration(node)) return 'interface';\n if (ts.isTypeAliasDeclaration(node)) return 'type';\n if (ts.isEnumDeclaration(node)) return 'enum';\n if (ts.isMethodDeclaration(node)) return 'method';\n if (ts.isVariableStatement(node)) return 'variable';\n return null;\n}\n\nfunction getName(node: ts.Node): string {\n if (\n ts.isFunctionDeclaration(node) ||\n ts.isClassDeclaration(node) ||\n ts.isInterfaceDeclaration(node) ||\n ts.isTypeAliasDeclaration(node) ||\n ts.isEnumDeclaration(node) ||\n ts.isMethodDeclaration(node)\n ) {\n const nameNode = (node as ts.NamedDeclaration).name;\n return nameNode ? nameNode.getText() : '<anonymous>';\n }\n if (ts.isVariableStatement(node)) {\n const decls = node.declarationList.declarations;\n const firstDecl = decls[0];\n if (firstDecl !== undefined) {\n return firstDecl.name.getText();\n }\n }\n return '<anonymous>';\n}\n\nfunction isExported(node: ts.Node): boolean {\n const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;\n if (modifiers) {\n return modifiers.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);\n }\n return false;\n}\n\nfunction visitNode(node: ts.Node, sourceFile: ts.SourceFile, symbols: CodeSymbol[]): void {\n const kind = getKind(node);\n if (kind !== null) {\n const name = getName(node);\n if (name !== '<anonymous>') {\n const start = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());\n symbols.push({\n name,\n kind,\n startLine: start.line + 1,\n endLine: end.line + 1,\n text: node.getText(sourceFile),\n exported: isExported(node),\n });\n }\n }\n if (ts.isClassDeclaration(node)) {\n visitClassMembers(node, sourceFile, symbols);\n return;\n }\n ts.forEachChild(node, (child) => {\n visitNode(child, sourceFile, symbols);\n });\n}\n\nfunction visitClassMembers(\n node: ts.ClassDeclaration,\n sourceFile: ts.SourceFile,\n symbols: CodeSymbol[]\n): void {\n for (const member of node.members) {\n if (ts.isMethodDeclaration(member) || ts.isPropertyDeclaration(member)) {\n const memberName = member.name.getText();\n if (memberName !== '<anonymous>') {\n const start = sourceFile.getLineAndCharacterOfPosition(member.getStart());\n const end = sourceFile.getLineAndCharacterOfPosition(member.getEnd());\n symbols.push({\n name: memberName,\n kind: 'method',\n startLine: start.line + 1,\n endLine: end.line + 1,\n text: member.getText(sourceFile),\n exported: false,\n });\n }\n }\n }\n}\n\nfunction computeSavings(totalChars: number, symbolChars: number): number {\n return totalChars > 0 ? Math.round(100 * (1 - symbolChars / totalChars) * 10) / 10 : 0;\n}\n\n/**\n * Extract symbols from a TypeScript/JavaScript file.\n */\nexport async function extractSymbols(filePath: string): Promise<SymbolExtractionResult> {\n const ext = extname(filePath).toLowerCase();\n if (!SUPPORTED_EXTENSIONS.includes(ext)) {\n return {\n filePath,\n symbols: [],\n totalLines: 0,\n totalChars: 0,\n symbolChars: 0,\n savingsPercent: 0,\n parsed: false,\n };\n }\n\n const source = await readFile(filePath, 'utf-8');\n const sourceFile = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true);\n const symbols: CodeSymbol[] = [];\n\n ts.forEachChild(sourceFile, (node) => {\n visitNode(node, sourceFile, symbols);\n });\n\n const totalChars = source.length;\n const symbolChars = symbols.reduce((sum, s) => sum + s.text.length, 0);\n\n return {\n filePath,\n symbols,\n totalLines: source.split('\\n').length,\n totalChars,\n symbolChars,\n savingsPercent: computeSavings(totalChars, symbolChars),\n parsed: true,\n };\n}\n\n/**\n * Why {@link extractSymbolIndex} produced no index (#4517).\n *\n * `unsupported` and `no-declarations` are different facts about the world:\n * the first says the file was never read, the second says it was read and\n * genuinely declares nothing locally — a re-export barrel, typically. Callers\n * that collapse them tell the user to check a file type that was never the\n * problem.\n */\nexport type EmptyIndexReason = 'unsupported' | 'no-declarations';\n\n/** A symbol index, or the reason there is none. */\nexport type SymbolIndexResult =\n | { readonly kind: 'index'; readonly index: string }\n | { readonly kind: 'empty'; readonly reason: EmptyIndexReason };\n\n/**\n * Extract a compact symbol index, reporting why when there is nothing to show.\n *\n * Names + locations only, no source text — the minimal representation for LLM\n * context (~95%+ token savings). Replaced the earlier `extractSymbolIndex`,\n * which returned a bare `''` for both \"could not read\" and \"read, found\n * nothing\" and so could not tell a caller which had happened.\n */\nexport async function extractSymbolIndexResult(filePath: string): Promise<SymbolIndexResult> {\n const result = await extractSymbols(filePath);\n if (!result.parsed) return { kind: 'empty', reason: 'unsupported' };\n if (result.symbols.length === 0) return { kind: 'empty', reason: 'no-declarations' };\n return { kind: 'index', index: renderIndex(filePath, result) };\n}\n\nfunction renderIndex(filePath: string, result: SymbolExtractionResult): string {\n const lines = result.symbols.map((s) => {\n const exp = s.exported ? 'export ' : '';\n return `${exp}${s.kind} ${s.name} (L${String(s.startLine)}-${String(s.endLine)})`;\n });\n return `// ${filePath} — ${String(result.symbols.length)} symbols\\n${lines.join('\\n')}`;\n}\n"],"mappings":"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","names":["extname","extname"]}