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
@@ -3,7 +3,7 @@ import {
3
3
  createLogger,
4
4
  getDefaultRegistry,
5
5
  roundToMicroUsd
6
- } from "./chunk-BTWPTJF3.js";
6
+ } from "./chunk-WG57CLZX.js";
7
7
  import {
8
8
  getNexusDataDir
9
9
  } from "./chunk-JVNJJ2VL.js";
@@ -196,4 +196,4 @@ export {
196
196
  loadUsageEvents,
197
197
  rollupByModel
198
198
  };
199
- //# sourceMappingURL=chunk-OO73573G.js.map
199
+ //# sourceMappingURL=chunk-K5AOFWUZ.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  loadPapersRegistry
3
- } from "./chunk-RL6F6IUQ.js";
3
+ } from "./chunk-YO44KBCM.js";
4
4
  import {
5
5
  getErrorMessage
6
- } from "./chunk-BTWPTJF3.js";
6
+ } from "./chunk-WG57CLZX.js";
7
7
 
8
8
  // src/cli/research-helpers-synthesize.ts
9
9
  import { z } from "zod";
@@ -886,4 +886,4 @@ export {
886
886
  AttributedInsightSchema,
887
887
  synthesizeResearch
888
888
  };
889
- //# sourceMappingURL=chunk-GCLLRAST.js.map
889
+ //# sourceMappingURL=chunk-KWBL4YBO.js.map
@@ -5,34 +5,34 @@ import {
5
5
  planOptionalParams,
6
6
  requireApiKey,
7
7
  validateApiKeyPresence
8
- } from "./chunk-LZL23U7Z.js";
8
+ } from "./chunk-VMUMZQRK.js";
9
9
  import {
10
10
  CUSTOM_API_DEFAULT_MODEL
11
- } from "./chunk-OEKALQ2G.js";
11
+ } from "./chunk-Y5SMWBMT.js";
12
12
  import {
13
13
  CUSTOM_API_BASE_URL_ENV,
14
14
  PROVIDER_ENV_KEYS,
15
15
  assertCustomApiHostResolvesPublic,
16
16
  validateCustomApiBaseUrl
17
- } from "./chunk-U7JRUYB3.js";
17
+ } from "./chunk-LQQVESK4.js";
18
18
  import {
19
19
  nexusMkdtempSync
20
20
  } from "./chunk-T5GVEXSA.js";
21
21
  import {
22
22
  getAvailabilityCache
23
- } from "./chunk-AP3KIHPG.js";
23
+ } from "./chunk-CFD2JBFF.js";
24
24
  import {
25
25
  extractSystemPrompt
26
26
  } from "./chunk-QZUG667L.js";
27
27
  import {
28
28
  generateHyphenId
29
- } from "./chunk-5CO7TEYR.js";
29
+ } from "./chunk-GNXA7QYJ.js";
30
30
  import {
31
31
  CliCircuitBreaker,
32
32
  DEFAULT_CIRCUIT_BREAKER_CONFIG,
33
33
  getCliCircuitBreakerSnapshot,
34
34
  getDefaultCliCircuitBreakerRegistry
35
- } from "./chunk-IOV4B5R5.js";
35
+ } from "./chunk-OWFSWV2B.js";
36
36
  import {
37
37
  CLI_SUBPROCESS_TIMEOUTS,
38
38
  CLI_TIMEOUTS,
@@ -73,7 +73,7 @@ import {
73
73
  resolveCliModelName,
74
74
  resolveRetryAfterMs,
75
75
  retryAfterMsFromContext
76
- } from "./chunk-BTWPTJF3.js";
76
+ } from "./chunk-WG57CLZX.js";
77
77
  import {
78
78
  parseBoolValue
79
79
  } from "./chunk-JVNJJ2VL.js";
@@ -4993,4 +4993,4 @@ export {
4993
4993
  SdkAdapter,
4994
4994
  createAutoAdapter
4995
4995
  };
4996
- //# sourceMappingURL=chunk-NJDB4LVF.js.map
4996
+ //# sourceMappingURL=chunk-L4M72UC3.js.map
@@ -3,7 +3,7 @@ import {
3
3
  createLogger,
4
4
  err,
5
5
  ok
6
- } from "./chunk-BTWPTJF3.js";
6
+ } from "./chunk-WG57CLZX.js";
7
7
 
8
8
  // src/adapters/sdk/types.ts
9
9
  var PROVIDER_ENV_KEYS = {
@@ -260,4 +260,4 @@ export {
260
260
  validateCustomApiBaseUrl,
261
261
  assertCustomApiHostResolvesPublic
262
262
  };
263
- //# sourceMappingURL=chunk-U7JRUYB3.js.map
263
+ //# sourceMappingURL=chunk-LQQVESK4.js.map
@@ -219,6 +219,18 @@ var CodebaseIndex = class {
219
219
  }
220
220
  /** Search symbols by keyword. Returns top N results sorted by relevance. */
221
221
  search(query, limit = 20) {
222
+ return this.searchWithTotal(query, limit).results;
223
+ }
224
+ /**
225
+ * Search symbols, reporting how many matched BEFORE the limit was applied.
226
+ *
227
+ * `search` discards that number, so a caller could not tell "20 results" from
228
+ * "the first 20 of 340" — and `search_codebase` reported the former.
229
+ * The sibling `search_usages` has carried `truncated`/`omittedMatches`/`limit`
230
+ * since it was written; this is the seam that lets `search_codebase` say the
231
+ * same thing.
232
+ */
233
+ searchWithTotal(query, limit = 20) {
222
234
  const results = [];
223
235
  for (const symbol of this.symbols) {
224
236
  const baseScore = scoreMatch(symbol.name, query);
@@ -230,7 +242,8 @@ var CodebaseIndex = class {
230
242
  matchType: getMatchType(baseScore)
231
243
  });
232
244
  }
233
- return results.sort((a, b) => b.score - a.score).slice(0, limit);
245
+ const sorted = results.sort((a, b) => b.score - a.score);
246
+ return { results: sorted.slice(0, limit), total: sorted.length };
234
247
  }
235
248
  /** Get a compact summary of a file's symbols. */
236
249
  getFileSummary(filePath) {
@@ -279,4 +292,4 @@ export {
279
292
  findSourceFiles,
280
293
  CodebaseIndex
281
294
  };
282
- //# sourceMappingURL=chunk-64GMIUM5.js.map
295
+ //# sourceMappingURL=chunk-M7DUOIAK.js.map
@@ -0,0 +1 @@
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 return this.searchWithTotal(query, limit).results;\n }\n\n /**\n * Search symbols, reporting how many matched BEFORE the limit was applied.\n *\n * `search` discards that number, so a caller could not tell \"20 results\" from\n * \"the first 20 of 340\" — and `search_codebase` reported the former.\n * The sibling `search_usages` has carried `truncated`/`omittedMatches`/`limit`\n * since it was written; this is the seam that lets `search_codebase` say the\n * same thing.\n */\n searchWithTotal(query: string, limit = 20): { results: SearchResult[]; total: number } {\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 const sorted = results.sort((a, b) => b.score - a.score);\n return { results: sorted.slice(0, limit), total: sorted.length };\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"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  GitHubProvider,
3
3
  ScmError
4
- } from "./chunk-3QP3NJ4E.js";
4
+ } from "./chunk-WTJARWUI.js";
5
5
  import {
6
6
  ROLE_DEFAULT_TRUST,
7
7
  ReputationCache,
@@ -12,7 +12,7 @@ import {
12
12
  resolveEnvMode,
13
13
  resolveReputationGatingMode,
14
14
  sanitizeInput
15
- } from "./chunk-ZSMK7RFK.js";
15
+ } from "./chunk-76RVBWFJ.js";
16
16
  import {
17
17
  MAX_STRIPPED_ELEMENTS_PER_EVENT,
18
18
  createAuditTrail,
@@ -20,10 +20,10 @@ import {
20
20
  emitReputationEvent,
21
21
  emitSanitizationEvent,
22
22
  emitTrustEvent
23
- } from "./chunk-MLG2PR6E.js";
23
+ } from "./chunk-ZAQ7TGE5.js";
24
24
  import {
25
25
  hasToken
26
- } from "./chunk-LVOXPW3M.js";
26
+ } from "./chunk-7LC7IAC6.js";
27
27
  import {
28
28
  CLI_SUBPROCESS_TIMEOUTS,
29
29
  createLogger,
@@ -31,7 +31,7 @@ import {
31
31
  getErrorMessage,
32
32
  getTimeProvider,
33
33
  ok
34
- } from "./chunk-BTWPTJF3.js";
34
+ } from "./chunk-WG57CLZX.js";
35
35
 
36
36
  // src/security/firewall/firewall-policy-mode.ts
37
37
  import { z } from "zod";
@@ -2162,4 +2162,4 @@ export {
2162
2162
  IssueTriage,
2163
2163
  createIssueTriage
2164
2164
  };
2165
- //# sourceMappingURL=chunk-LHIOFRJX.js.map
2165
+ //# sourceMappingURL=chunk-N5TB4D4Y.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-7LP6VJRP.js";
6
6
  import {
7
7
  SessionMemory
8
- } from "./chunk-H77DZWRG.js";
8
+ } from "./chunk-E7GG4QM4.js";
9
9
  import {
10
10
  StatsOnlyAdapter,
11
11
  ensureSharedMemoryRegistry
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-YYJFZ7TO.js";
16
16
  import {
17
17
  generateId
18
- } from "./chunk-5CO7TEYR.js";
18
+ } from "./chunk-GNXA7QYJ.js";
19
19
  import {
20
20
  ErrorCode,
21
21
  NexusError,
@@ -29,7 +29,7 @@ import {
29
29
  ok,
30
30
  openSqliteDatabase,
31
31
  setSharedMobiMemDbPathResolver
32
- } from "./chunk-BTWPTJF3.js";
32
+ } from "./chunk-WG57CLZX.js";
33
33
  import {
34
34
  nexusDataPath
35
35
  } from "./chunk-JVNJJ2VL.js";
@@ -5825,4 +5825,4 @@ export {
5825
5825
  reinitializeMemoryBackends,
5826
5826
  ToolMemoryManager
5827
5827
  };
5828
- //# sourceMappingURL=chunk-P6DGZEWY.js.map
5828
+ //# sourceMappingURL=chunk-NAQZUL6T.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  resolveCliSlot
3
- } from "./chunk-AP3KIHPG.js";
3
+ } from "./chunk-CFD2JBFF.js";
4
4
  import {
5
5
  createLogger,
6
6
  getTimeProvider,
7
7
  isRateLimitText
8
- } from "./chunk-BTWPTJF3.js";
8
+ } from "./chunk-WG57CLZX.js";
9
9
 
10
10
  // src/pipeline/expert-bridge.ts
11
11
  function resolveCliFromModelString(model) {
@@ -21,7 +21,7 @@ async function getMcpConfigPath() {
21
21
  if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;
22
22
  mcpConfigInitPromise ??= (async () => {
23
23
  try {
24
- const { generateMcpConfig } = await import("./child-mcp-config-MQYS7D6P.js");
24
+ const { generateMcpConfig } = await import("./child-mcp-config-7QA75U75.js");
25
25
  const config = await generateMcpConfig();
26
26
  cachedMcpConfigPath = config.configPath;
27
27
  cachedMcpConfigCleanup = config.cleanup;
@@ -93,8 +93,8 @@ var routerInitPromise = null;
93
93
  async function getRouter() {
94
94
  if (cachedRouter !== null) return cachedRouter;
95
95
  routerInitPromise ??= (async () => {
96
- const { createAllAdapters } = await import("./factory-TE7DQKRW.js");
97
- const { createCompositeRouter } = await import("./composite-router-CN2SV6PX.js");
96
+ const { createAllAdapters } = await import("./factory-YLPR5WLO.js");
97
+ const { createCompositeRouter } = await import("./composite-router-IMTJSNSW.js");
98
98
  const adapters = createAllAdapters();
99
99
  if (adapters.size === 0) {
100
100
  routerInitPromise = null;
@@ -102,7 +102,7 @@ async function getRouter() {
102
102
  }
103
103
  cachedRouter = adaptCompositeRouter(createCompositeRouter(adapters));
104
104
  try {
105
- const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-LAOVTGFP.js");
105
+ const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-YNMILNBW.js");
106
106
  cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
107
107
  } catch (error) {
108
108
  const msg = error instanceof Error ? error.message : String(error);
@@ -213,4 +213,4 @@ export {
213
213
  tokenSplitFromUsage,
214
214
  executeExpert
215
215
  };
216
- //# sourceMappingURL=chunk-B5R7KEZR.js.map
216
+ //# sourceMappingURL=chunk-OJQGBWSN.js.map
@@ -8,7 +8,7 @@ import {
8
8
  getTimeProvider,
9
9
  isRateLimitText,
10
10
  ok
11
- } from "./chunk-BTWPTJF3.js";
11
+ } from "./chunk-WG57CLZX.js";
12
12
 
13
13
  // src/cli-adapters/circuit-breaker-types.ts
14
14
  var CircuitErrorCode = {
@@ -541,4 +541,4 @@ export {
541
541
  CliCircuitBreakerIntegration,
542
542
  createCliCircuitBreakerIntegration
543
543
  };
544
- //# sourceMappingURL=chunk-IOV4B5R5.js.map
544
+ //# sourceMappingURL=chunk-OWFSWV2B.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readOpenAICompatEnv
3
- } from "./chunk-AMCNB2TJ.js";
3
+ } from "./chunk-G6BYL67S.js";
4
4
  import {
5
5
  allOf
6
6
  } from "./chunk-OQB3XC5O.js";
@@ -8,14 +8,14 @@ import {
8
8
  NODE_ENGINE_RANGE,
9
9
  VERSION,
10
10
  isNodeVersionSupported
11
- } from "./chunk-NJ2EUCSY.js";
11
+ } from "./chunk-UVWWUCTU.js";
12
12
  import {
13
13
  capitalize
14
14
  } from "./chunk-7LP6VJRP.js";
15
15
  import {
16
16
  createAllAdapters,
17
17
  probeCli
18
- } from "./chunk-NJDB4LVF.js";
18
+ } from "./chunk-L4M72UC3.js";
19
19
  import {
20
20
  getNexusTmpDir
21
21
  } from "./chunk-T5GVEXSA.js";
@@ -30,7 +30,7 @@ import {
30
30
  ok,
31
31
  symbols,
32
32
  writeLine
33
- } from "./chunk-BTWPTJF3.js";
33
+ } from "./chunk-WG57CLZX.js";
34
34
  import {
35
35
  getLearningDir,
36
36
  getOutcomesFile,
@@ -1228,13 +1228,13 @@ async function runDoctorFix(result) {
1228
1228
  writeLine2("\u2500".repeat(40));
1229
1229
  let fixCount = 0;
1230
1230
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1231
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-5WWOT3M7.js");
1231
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-EKNO344K.js");
1232
1232
  const outcome = describeDataDirFix2(initDataDirectories2());
1233
1233
  writeLine2(outcome.line);
1234
1234
  if (outcome.counted) fixCount++;
1235
1235
  }
1236
1236
  if (!result.configFile.found) {
1237
- const { runConfigInitSync } = await import("./setup-config-QELDNFFB.js");
1237
+ const { runConfigInitSync } = await import("./setup-config-3EJ37UHP.js");
1238
1238
  const configResult = runConfigInitSync(process.cwd(), false, false);
1239
1239
  if (configResult.success && configResult.created) {
1240
1240
  writeLine2(`\u2713 Generated config: ${configResult.path}`);
@@ -1330,4 +1330,4 @@ export {
1330
1330
  startStdioServer,
1331
1331
  closeServer
1332
1332
  };
1333
- //# sourceMappingURL=chunk-K2A6LRLL.js.map
1333
+ //# sourceMappingURL=chunk-Q4YQUVFY.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TASK_CATEGORIES,
3
3
  getAdaptiveBonus,
4
4
  getOutcomeStore
5
- } from "./chunk-BTWPTJF3.js";
5
+ } from "./chunk-WG57CLZX.js";
6
6
 
7
7
  // src/cli/doctor-deep.ts
8
8
  var CLI_NAMES = ["claude", "gemini", "codex", "opencode"];
@@ -106,4 +106,4 @@ export {
106
106
  runDeepDiagnostics,
107
107
  formatDeepDiagnostics
108
108
  };
109
- //# sourceMappingURL=chunk-X2MX53O3.js.map
109
+ //# sourceMappingURL=chunk-RTXOSQQ5.js.map
@@ -10,13 +10,13 @@ import {
10
10
  import {
11
11
  assessReputation,
12
12
  sanitizeInput
13
- } from "./chunk-ZSMK7RFK.js";
13
+ } from "./chunk-76RVBWFJ.js";
14
14
  import {
15
15
  createLogger,
16
16
  err,
17
17
  getTimeProvider,
18
18
  ok
19
- } from "./chunk-BTWPTJF3.js";
19
+ } from "./chunk-WG57CLZX.js";
20
20
 
21
21
  // src/dogfooding/pr-reviewer-helpers.ts
22
22
  import { randomUUID } from "node:crypto";
@@ -416,4 +416,4 @@ export {
416
416
  createFailedReview,
417
417
  reviewPostingBlock
418
418
  };
419
- //# sourceMappingURL=chunk-JSH5GCZK.js.map
419
+ //# sourceMappingURL=chunk-S4RQTNOJ.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  createLogger,
6
6
  getTimeProvider
7
- } from "./chunk-BTWPTJF3.js";
7
+ } from "./chunk-WG57CLZX.js";
8
8
 
9
9
  // src/mcp/tools/scanner-registry-fetcher.ts
10
10
  import { z } from "zod";
@@ -721,4 +721,4 @@ export {
721
721
  generateSecurityPlan,
722
722
  buildPlanFromAnalysis
723
723
  };
724
- //# sourceMappingURL=chunk-4H44CQIZ.js.map
724
+ //# sourceMappingURL=chunk-SSZ3UI5I.js.map
@@ -7,7 +7,7 @@ import {
7
7
  toolStructuredError,
8
8
  toolSuccessStructured,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-QHBW7AS7.js";
10
+ } from "./chunk-WINAQRIP.js";
11
11
  import {
12
12
  JsonlStore,
13
13
  SECURITY_KEYWORDS,
@@ -20,7 +20,7 @@ import {
20
20
  getTimeProvider,
21
21
  isDeclaredNeverDeprecate,
22
22
  isRegisteredToolName
23
- } from "./chunk-BTWPTJF3.js";
23
+ } from "./chunk-WG57CLZX.js";
24
24
  import {
25
25
  getNexusDataDir,
26
26
  nexusDataPath
@@ -2173,4 +2173,4 @@ export {
2173
2173
  runImprovementReview,
2174
2174
  registerImprovementReviewTool
2175
2175
  };
2176
- //# sourceMappingURL=chunk-VOEKVO4Z.js.map
2176
+ //# sourceMappingURL=chunk-TCAOGMSJ.js.map
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.44.0" : "dev";
3
+ var VERSION = true ? "8.44.2" : "dev";
4
4
  var NODE_ENGINE_RANGE = ">=22.5.0";
5
5
  function isNodeVersionSupported(version) {
6
6
  return semver.satisfies(version, NODE_ENGINE_RANGE);
@@ -11,4 +11,4 @@ export {
11
11
  NODE_ENGINE_RANGE,
12
12
  isNodeVersionSupported
13
13
  };
14
- //# sourceMappingURL=chunk-NJ2EUCSY.js.map
14
+ //# sourceMappingURL=chunk-UVWWUCTU.js.map
@@ -13,7 +13,7 @@ import {
13
13
  lookupInTreeCapability,
14
14
  ok,
15
15
  resolveRetryAfterMs
16
- } from "./chunk-BTWPTJF3.js";
16
+ } from "./chunk-WG57CLZX.js";
17
17
 
18
18
  // src/config/model-parameter-support.ts
19
19
  function parseClaudeMajorMinor(bareId) {
@@ -834,4 +834,4 @@ export {
834
834
  DEFAULT_COLLECT_STREAM_MAX_CHUNKS,
835
835
  collectStream
836
836
  };
837
- //# sourceMappingURL=chunk-LZL23U7Z.js.map
837
+ //# sourceMappingURL=chunk-VMUMZQRK.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  computeCostDetail,
3
3
  priceBasisOf
4
- } from "./chunk-OO73573G.js";
4
+ } from "./chunk-K5AOFWUZ.js";
5
5
  import {
6
6
  allOf
7
7
  } from "./chunk-OQB3XC5O.js";
@@ -23,26 +23,26 @@ import {
23
23
  toolSuccessStructured,
24
24
  withProgressHeartbeat,
25
25
  wrapToolWithTimeout
26
- } from "./chunk-QHBW7AS7.js";
26
+ } from "./chunk-WINAQRIP.js";
27
27
  import {
28
28
  VERSION
29
- } from "./chunk-NJ2EUCSY.js";
29
+ } from "./chunk-UVWWUCTU.js";
30
30
  import {
31
31
  assessPanelIndependence,
32
32
  countDistinctModels,
33
33
  createEvent,
34
34
  getGlobalRegistry
35
- } from "./chunk-WPBF2POG.js";
35
+ } from "./chunk-4XSUIYEJ.js";
36
36
  import {
37
37
  getToolMemory
38
- } from "./chunk-P6DGZEWY.js";
38
+ } from "./chunk-NAQZUL6T.js";
39
39
  import {
40
40
  authRemediation,
41
41
  delay,
42
42
  getAvailableClis,
43
43
  sleep,
44
44
  withTimeout
45
- } from "./chunk-NJDB4LVF.js";
45
+ } from "./chunk-L4M72UC3.js";
46
46
  import {
47
47
  AgentError,
48
48
  CLI_NAMES,
@@ -70,7 +70,7 @@ import {
70
70
  registerPersistentOutcomeStoreFactory,
71
71
  resolveClassGuardMs,
72
72
  resolveVoteTimeout
73
- } from "./chunk-BTWPTJF3.js";
73
+ } from "./chunk-WG57CLZX.js";
74
74
  import {
75
75
  ensureLearningDir,
76
76
  getOutcomesFile
@@ -7253,7 +7253,7 @@ function logPartialProposal(bounded, log) {
7253
7253
  }
7254
7254
  async function runContrarianCheck(proposal, log) {
7255
7255
  try {
7256
- const { executeExpert } = await import("./expert-bridge-ZNNMHOQH.js");
7256
+ const { executeExpert } = await import("./expert-bridge-6C6RR6WF.js");
7257
7257
  const bounded = boundArtifactForReview(proposal, CONTRARIAN_PROPOSAL_BUDGET, "proposal");
7258
7258
  logPartialProposal(bounded, log);
7259
7259
  const result = await executeExpert("architecture", buildContrarianPrompt(bounded));
@@ -7850,4 +7850,4 @@ export {
7850
7850
  CONSENSUS_VOTE_TOOL_SCHEMA,
7851
7851
  registerConsensusVoteTool
7852
7852
  };
7853
- //# sourceMappingURL=chunk-UDZBMHCX.js.map
7853
+ //# sourceMappingURL=chunk-W4FTZ6NQ.js.map
@@ -2678,7 +2678,7 @@ function setDefaultRegistry(registry) {
2678
2678
  }
2679
2679
  async function reloadDefaultRegistry() {
2680
2680
  globalRegistry = buildDefaultRegistry();
2681
- const { resetGlobalRegistry } = await import("./unified-registry-AIHYR7FG.js");
2681
+ const { resetGlobalRegistry } = await import("./unified-registry-5Y5JXIT2.js");
2682
2682
  resetGlobalRegistry();
2683
2683
  return globalRegistry;
2684
2684
  }
@@ -15339,7 +15339,7 @@ var CompositeRouter = class _CompositeRouter {
15339
15339
  */
15340
15340
  async consultUnifiedContext(task) {
15341
15341
  try {
15342
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-3XRHW4EG.js");
15342
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-TJD4G7VT.js");
15343
15343
  const ctx = await getContextForTask({
15344
15344
  task: task.content,
15345
15345
  category: inferTaskCategory(task.content),
@@ -17030,4 +17030,4 @@ export {
17030
17030
  AgentCapability,
17031
17031
  OrchestratorError
17032
17032
  };
17033
- //# sourceMappingURL=chunk-BTWPTJF3.js.map
17033
+ //# sourceMappingURL=chunk-WG57CLZX.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  VERSION
3
- } from "./chunk-NJ2EUCSY.js";
3
+ } from "./chunk-UVWWUCTU.js";
4
4
  import {
5
5
  emitClawGuardViolation
6
- } from "./chunk-MLG2PR6E.js";
6
+ } from "./chunk-ZAQ7TGE5.js";
7
7
  import {
8
8
  CACHE_TIMEOUTS,
9
9
  MCP_TIMEOUTS,
@@ -19,7 +19,7 @@ import {
19
19
  getTimeProvider,
20
20
  ok,
21
21
  resolveToolClassGuardMs
22
- } from "./chunk-BTWPTJF3.js";
22
+ } from "./chunk-WG57CLZX.js";
23
23
  import {
24
24
  getNexusDataDir
25
25
  } from "./chunk-JVNJJ2VL.js";
@@ -2317,4 +2317,4 @@ export {
2317
2317
  VOTING_THRESHOLDS,
2318
2318
  ConsensusMetricsSchema
2319
2319
  };
2320
- //# sourceMappingURL=chunk-QHBW7AS7.js.map
2320
+ //# sourceMappingURL=chunk-WINAQRIP.js.map
@@ -4,7 +4,7 @@ import {
4
4
  err,
5
5
  getErrorMessage,
6
6
  ok
7
- } from "./chunk-BTWPTJF3.js";
7
+ } from "./chunk-WG57CLZX.js";
8
8
 
9
9
  // src/scm/types.ts
10
10
  var ScmError = class extends Error {
@@ -281,4 +281,4 @@ export {
281
281
  ScmError,
282
282
  GitHubProvider
283
283
  };
284
- //# sourceMappingURL=chunk-3QP3NJ4E.js.map
284
+ //# sourceMappingURL=chunk-WTJARWUI.js.map
@@ -5,7 +5,7 @@ import {
5
5
  MCP_TIMEOUTS,
6
6
  TEST_TIMEOUTS,
7
7
  WORKFLOW_TIMEOUTS
8
- } from "./chunk-BTWPTJF3.js";
8
+ } from "./chunk-WG57CLZX.js";
9
9
  import {
10
10
  createGetCircuitBreakerConfig,
11
11
  createGetEnvVarDocumentation,
@@ -232,4 +232,4 @@ export {
232
232
  CUSTOM_API_DEFAULT_MODEL,
233
233
  DEFAULTS
234
234
  };
235
- //# sourceMappingURL=chunk-OEKALQ2G.js.map
235
+ //# sourceMappingURL=chunk-Y5SMWBMT.js.map