@vibgrate/cli 2026.825.1 → 2026.825.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 (92) hide show
  1. package/dist/{agent-IHNUBFBM.js → agent-DHQYEHVW.js} +13 -13
  2. package/dist/{agent-IHNUBFBM.js.map → agent-DHQYEHVW.js.map} +1 -1
  3. package/dist/{approvals-HRIMDIX3.js → approvals-KBM72NU2.js} +5 -5
  4. package/dist/{approvals-HRIMDIX3.js.map → approvals-KBM72NU2.js.map} +1 -1
  5. package/dist/{attach-L43JUJ7A.js → attach-O74NL4M5.js} +3 -3
  6. package/dist/{attach-L43JUJ7A.js.map → attach-O74NL4M5.js.map} +1 -1
  7. package/dist/{baseline-EZQ7SCRT.js → baseline-4X6MQBDA.js} +3 -3
  8. package/dist/{baseline-EZQ7SCRT.js.map → baseline-4X6MQBDA.js.map} +1 -1
  9. package/dist/{chunk-X34HVFZ6.js → chunk-27TS2AUJ.js} +8 -8
  10. package/dist/{chunk-X34HVFZ6.js.map → chunk-27TS2AUJ.js.map} +1 -1
  11. package/dist/{chunk-RHYRMMN3.js → chunk-2NUS5BOR.js} +3 -3
  12. package/dist/{chunk-RHYRMMN3.js.map → chunk-2NUS5BOR.js.map} +1 -1
  13. package/dist/{chunk-TLYNLQL2.js → chunk-3E7QT4NE.js} +9 -9
  14. package/dist/{chunk-TLYNLQL2.js.map → chunk-3E7QT4NE.js.map} +1 -1
  15. package/dist/{chunk-L3YEEJ6U.js → chunk-6MIJLO5B.js} +3 -3
  16. package/dist/{chunk-L3YEEJ6U.js.map → chunk-6MIJLO5B.js.map} +1 -1
  17. package/dist/{chunk-5BFA532E.js → chunk-7M4E7UGX.js} +3 -3
  18. package/dist/{chunk-5BFA532E.js.map → chunk-7M4E7UGX.js.map} +1 -1
  19. package/dist/{chunk-M7O6IVKN.js → chunk-BICZR6UJ.js} +3 -3
  20. package/dist/{chunk-M7O6IVKN.js.map → chunk-BICZR6UJ.js.map} +1 -1
  21. package/dist/{chunk-BCK2NIBM.js → chunk-DIZ5KI5Q.js} +6 -6
  22. package/dist/{chunk-BCK2NIBM.js.map → chunk-DIZ5KI5Q.js.map} +1 -1
  23. package/dist/{chunk-QTQRM7HQ.js → chunk-E3XVIFSH.js} +3 -3
  24. package/dist/{chunk-QTQRM7HQ.js.map → chunk-E3XVIFSH.js.map} +1 -1
  25. package/dist/{chunk-B5X246UH.js → chunk-FQHWPOTS.js} +3 -3
  26. package/dist/{chunk-B5X246UH.js.map → chunk-FQHWPOTS.js.map} +1 -1
  27. package/dist/chunk-G3ACLBMG.js +6 -0
  28. package/dist/{chunk-KFLNWYZG.js.map → chunk-G3ACLBMG.js.map} +1 -1
  29. package/dist/{chunk-CIC3NY2D.js → chunk-GR7SFCQJ.js} +12 -12
  30. package/dist/{chunk-CIC3NY2D.js.map → chunk-GR7SFCQJ.js.map} +1 -1
  31. package/dist/{chunk-Y3X3ORQ3.js → chunk-GWSJYDK7.js} +5 -5
  32. package/dist/{chunk-Y3X3ORQ3.js.map → chunk-GWSJYDK7.js.map} +1 -1
  33. package/dist/{chunk-ECQFRZJI.js → chunk-HFQIYM6E.js} +4 -4
  34. package/dist/{chunk-ECQFRZJI.js.map → chunk-HFQIYM6E.js.map} +1 -1
  35. package/dist/{chunk-GRMZU24V.js → chunk-IJVWKZRS.js} +3 -3
  36. package/dist/{chunk-GRMZU24V.js.map → chunk-IJVWKZRS.js.map} +1 -1
  37. package/dist/{chunk-YIRDV4YJ.js → chunk-JAEHLTVX.js} +3 -3
  38. package/dist/{chunk-YIRDV4YJ.js.map → chunk-JAEHLTVX.js.map} +1 -1
  39. package/dist/{chunk-LUJ4H4RJ.js → chunk-K3SXWOTT.js} +3 -3
  40. package/dist/{chunk-LUJ4H4RJ.js.map → chunk-K3SXWOTT.js.map} +1 -1
  41. package/dist/{chunk-JSZ46IDG.js → chunk-KYM55VZX.js} +6 -6
  42. package/dist/{chunk-JSZ46IDG.js.map → chunk-KYM55VZX.js.map} +1 -1
  43. package/dist/{chunk-YP243ZKD.js → chunk-L7GCJNDT.js} +3 -3
  44. package/dist/{chunk-YP243ZKD.js.map → chunk-L7GCJNDT.js.map} +1 -1
  45. package/dist/{chunk-UUVOA6WD.js → chunk-NS4DL3QR.js} +8 -8
  46. package/dist/{chunk-UUVOA6WD.js.map → chunk-NS4DL3QR.js.map} +1 -1
  47. package/dist/{chunk-S3HMG6BC.js → chunk-NZES47ST.js} +3 -3
  48. package/dist/{chunk-S3HMG6BC.js.map → chunk-NZES47ST.js.map} +1 -1
  49. package/dist/{chunk-FVBN4E5C.js → chunk-OIUVWCKM.js} +3 -3
  50. package/dist/{chunk-FVBN4E5C.js.map → chunk-OIUVWCKM.js.map} +1 -1
  51. package/dist/{chunk-DLNNNESQ.js → chunk-SIXWWQ6S.js} +3 -3
  52. package/dist/{chunk-DLNNNESQ.js.map → chunk-SIXWWQ6S.js.map} +1 -1
  53. package/dist/{chunk-6VLOI2ZP.js → chunk-SYMJSRYF.js} +3 -3
  54. package/dist/{chunk-6VLOI2ZP.js.map → chunk-SYMJSRYF.js.map} +1 -1
  55. package/dist/{chunk-LKJIYGO5.js → chunk-TT2J2TB6.js} +6 -6
  56. package/dist/{chunk-LKJIYGO5.js.map → chunk-TT2J2TB6.js.map} +1 -1
  57. package/dist/{chunk-4PCFSRYH.js → chunk-VMPKOMHG.js} +5 -5
  58. package/dist/{chunk-4PCFSRYH.js.map → chunk-VMPKOMHG.js.map} +1 -1
  59. package/dist/cli.js +49 -49
  60. package/dist/{daemon-WPX2SBVV.js → daemon-RZS5FPIW.js} +9 -9
  61. package/dist/{daemon-WPX2SBVV.js.map → daemon-RZS5FPIW.js.map} +1 -1
  62. package/dist/embed-worker-main.js +3 -3
  63. package/dist/{ensure-map-MLI4XCRV.js → ensure-map-DL2S774J.js} +14 -14
  64. package/dist/{ensure-map-MLI4XCRV.js.map → ensure-map-DL2S774J.js.map} +1 -1
  65. package/dist/{graph-backend-LK5EFQXN.js → graph-backend-JXARVT3R.js} +7 -7
  66. package/dist/{graph-backend-LK5EFQXN.js.map → graph-backend-JXARVT3R.js.map} +1 -1
  67. package/dist/index.d.ts +1 -1
  68. package/dist/index.js +15 -15
  69. package/dist/{interactive-K446F42I.js → interactive-2XRBRFRB.js} +25 -25
  70. package/dist/{interactive-K446F42I.js.map → interactive-2XRBRFRB.js.map} +1 -1
  71. package/dist/load-7C5VETRD.js +11 -0
  72. package/dist/{load-2FRH37JY.js.map → load-7C5VETRD.js.map} +1 -1
  73. package/dist/parse-worker.js +2 -2
  74. package/dist/{run-outcome-4ETNDPX6.js → run-outcome-TMB5TJNA.js} +5 -5
  75. package/dist/{run-outcome-4ETNDPX6.js.map → run-outcome-TMB5TJNA.js.map} +1 -1
  76. package/dist/{runtime-session-RMSKXFIJ.js → runtime-session-Y23NVY7R.js} +9 -9
  77. package/dist/{runtime-session-RMSKXFIJ.js.map → runtime-session-Y23NVY7R.js.map} +1 -1
  78. package/dist/{session-22BGDYWF.js → session-KXT2ZTPE.js} +8 -8
  79. package/dist/{session-22BGDYWF.js.map → session-KXT2ZTPE.js.map} +1 -1
  80. package/dist/{stream-json-MD7MSSCH.js → stream-json-NW6AOE47.js} +13 -13
  81. package/dist/{stream-json-MD7MSSCH.js.map → stream-json-NW6AOE47.js.map} +1 -1
  82. package/dist/version-7ABYXWOZ.js +4 -0
  83. package/dist/{version-FRUT6RI2.js.map → version-7ABYXWOZ.js.map} +1 -1
  84. package/dist/{vg-mcp-bridge-H6I3ALUW.js → vg-mcp-bridge-LXBHKEFR.js} +8 -8
  85. package/dist/{vg-mcp-bridge-H6I3ALUW.js.map → vg-mcp-bridge-LXBHKEFR.js.map} +1 -1
  86. package/dist/{vgd-TW7HU2PH.js → vgd-RW7HCEIP.js} +8 -8
  87. package/dist/vgd-RW7HCEIP.js.map +1 -0
  88. package/package.json +1 -1
  89. package/dist/chunk-KFLNWYZG.js +0 -6
  90. package/dist/load-2FRH37JY.js +0 -11
  91. package/dist/version-FRUT6RI2.js +0 -4
  92. package/dist/vgd-TW7HU2PH.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { userAskFromInstruction, queryGraph } from './chunk-LUJ4H4RJ.js';
1
+ import { userAskFromInstruction, queryGraph } from './chunk-K3SXWOTT.js';
2
2
 
3
3
  // src/code/capsule-mode.ts
4
4
  var WHOLE_REPO_MAX_SOURCE_TOKENS = 1500;
@@ -86,5 +86,5 @@ function langFor(file) {
86
86
  }
87
87
 
88
88
  export { COMPILE_MIN_SOURCE_TOKENS, WHOLE_REPO_MAX_SOURCE_TOKENS, askNamesSymbol, buildWholeRepoPacket, capsuleMode, mappedFilePaths, sourceTokenMass };
89
- //# sourceMappingURL=chunk-YP243ZKD.js.map
90
- //# sourceMappingURL=chunk-YP243ZKD.js.map
89
+ //# sourceMappingURL=chunk-L7GCJNDT.js.map
90
+ //# sourceMappingURL=chunk-L7GCJNDT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/code/capsule-mode.ts"],"names":[],"mappings":"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","file":"chunk-YP243ZKD.js","sourcesContent":["/**\n * Whether to send a ranked Context Capsule, paste the mapped tree, or send\n * neither. Independent of Model Execution Profiles (those describe how a\n * local model is run). Mass × greppability, not file count.\n *\n * See docs/graph/VG-CAPSULE-SMALL-REPO-DISABLE.md.\n */\n\nimport { queryGraph } from '../engine/query.js';\nimport { userAskFromInstruction } from '../engine/user-ask.js';\nimport type { VgGraph } from '../schema.js';\n\nexport type CapsuleMode = 'off' | 'whole-repo' | 'compile';\n\n/** Trees this small are cheaper to paste (or grep) than to rank. */\nexport const WHOLE_REPO_MAX_SOURCE_TOKENS = 1_500;\n/** Above this, discovery has a real bill — always compile. */\nexport const COMPILE_MIN_SOURCE_TOKENS = 8_000;\n\nexport function estimateSourceTokens(text: string): number {\n return Math.ceil(text.length / 4);\n}\n\n/** Unique mapped paths from the graph, stable order. */\nexport function mappedFilePaths(graph: VgGraph): string[] {\n const files = new Set<string>();\n for (const n of graph.nodes) {\n const f = normalize(n.file);\n if (!f || skipMappedPath(f)) continue;\n files.add(f);\n }\n return [...files].sort();\n}\n\nexport function sourceTokenMass(contents: Iterable<string>): number {\n let bytes = 0;\n for (const c of contents) bytes += c.length;\n return Math.ceil(bytes / 4);\n}\n\n/**\n * True when the mechanical fallback would pin an identifier the ask actually\n * names (F0/F1). Does not use the relevance module.\n */\nexport function askNamesSymbol(graph: VgGraph, instruction: string): boolean {\n const ask = userAskFromInstruction(instruction);\n const q = queryGraph(graph, ask, { budget: 400, limit: 8 });\n // Score 6 = camel-part; 10 = exact name. Substring hits (3) are not \"named\".\n return q.matches.some((m) => m.score >= 6);\n}\n\nexport function capsuleMode(input: { sourceTokens: number; askNamesSymbol: boolean }): CapsuleMode {\n const mass = Math.max(0, input.sourceTokens);\n if (mass <= WHOLE_REPO_MAX_SOURCE_TOKENS) return 'whole-repo';\n if (mass > COMPILE_MIN_SOURCE_TOKENS) return 'compile';\n // Modest mass: greppable asks lose to grep (measured). Symptom-only in this\n // band is unmeasured — fail closed to off.\n if (input.askNamesSymbol) return 'off';\n return 'off';\n}\n\nexport interface WholeRepoFile {\n path: string;\n content: string;\n}\n\nexport interface WholeRepoPacket {\n rendered: string;\n tokensEstimate: number;\n files: string[];\n sourceTokens: number;\n}\n\n/**\n * First-turn packet = the mapped files, not a ranked dump. Files are sorted\n * by path. `budget` caps the paste (default {@link WHOLE_REPO_MAX_SOURCE_TOKENS});\n * at least one file is always included when any exist.\n */\nexport function buildWholeRepoPacket(\n instruction: string,\n files: WholeRepoFile[],\n budget: number = WHOLE_REPO_MAX_SOURCE_TOKENS,\n): WholeRepoPacket {\n const sorted = [...files]\n .map((f) => ({ path: normalize(f.path), content: f.content }))\n .filter((f) => f.path && f.content.length > 0)\n .sort((a, b) => a.path.localeCompare(b.path));\n const sourceTokens = sourceTokenMass(sorted.map((f) => f.content));\n\n const lines: string[] = [\n '# Repository source (entire mapped tree)',\n '',\n 'The files below are the repository. Use them; search or read outside only if they are insufficient.',\n '',\n ];\n const included: string[] = [];\n for (const f of sorted) {\n const block = [`### \\`${f.path}\\``, `\\`\\`\\`${langFor(f.path)}`, f.content.replace(/\\n$/, ''), '```', ''];\n const candidate = [...lines, ...block, '## Task', instruction].join('\\n');\n if (included.length > 0 && estimateSourceTokens(candidate) > budget) break;\n lines.push(...block);\n included.push(f.path);\n }\n lines.push('## Task');\n lines.push(instruction);\n const rendered = lines.join('\\n');\n return {\n rendered,\n tokensEstimate: estimateSourceTokens(rendered),\n files: included,\n sourceTokens,\n };\n}\n\nfunction skipMappedPath(file: string): boolean {\n return (\n file.startsWith('node_modules/') ||\n file.includes('/node_modules/') ||\n file.startsWith('.git/') ||\n file.startsWith('.vibgrate/')\n );\n}\n\nfunction normalize(file: string): string {\n return file.replace(/\\\\/g, '/').replace(/^\\.\\//, '');\n}\n\nfunction langFor(file: string): string {\n const ext = file.split('.').pop()?.toLowerCase() ?? '';\n const map: Record<string, string> = {\n ts: 'ts',\n tsx: 'tsx',\n js: 'js',\n jsx: 'jsx',\n mjs: 'js',\n cjs: 'js',\n py: 'python',\n rs: 'rust',\n go: 'go',\n java: 'java',\n cs: 'csharp',\n md: 'md',\n json: 'json',\n };\n return map[ext] ?? '';\n}\n"]}
1
+ {"version":3,"sources":["../src/code/capsule-mode.ts"],"names":[],"mappings":"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","file":"chunk-L7GCJNDT.js","sourcesContent":["/**\n * Whether to send a ranked Context Capsule, paste the mapped tree, or send\n * neither. Independent of Model Execution Profiles (those describe how a\n * local model is run). Mass × greppability, not file count.\n *\n * See docs/graph/VG-CAPSULE-SMALL-REPO-DISABLE.md.\n */\n\nimport { queryGraph } from '../engine/query.js';\nimport { userAskFromInstruction } from '../engine/user-ask.js';\nimport type { VgGraph } from '../schema.js';\n\nexport type CapsuleMode = 'off' | 'whole-repo' | 'compile';\n\n/** Trees this small are cheaper to paste (or grep) than to rank. */\nexport const WHOLE_REPO_MAX_SOURCE_TOKENS = 1_500;\n/** Above this, discovery has a real bill — always compile. */\nexport const COMPILE_MIN_SOURCE_TOKENS = 8_000;\n\nexport function estimateSourceTokens(text: string): number {\n return Math.ceil(text.length / 4);\n}\n\n/** Unique mapped paths from the graph, stable order. */\nexport function mappedFilePaths(graph: VgGraph): string[] {\n const files = new Set<string>();\n for (const n of graph.nodes) {\n const f = normalize(n.file);\n if (!f || skipMappedPath(f)) continue;\n files.add(f);\n }\n return [...files].sort();\n}\n\nexport function sourceTokenMass(contents: Iterable<string>): number {\n let bytes = 0;\n for (const c of contents) bytes += c.length;\n return Math.ceil(bytes / 4);\n}\n\n/**\n * True when the mechanical fallback would pin an identifier the ask actually\n * names (F0/F1). Does not use the relevance module.\n */\nexport function askNamesSymbol(graph: VgGraph, instruction: string): boolean {\n const ask = userAskFromInstruction(instruction);\n const q = queryGraph(graph, ask, { budget: 400, limit: 8 });\n // Score 6 = camel-part; 10 = exact name. Substring hits (3) are not \"named\".\n return q.matches.some((m) => m.score >= 6);\n}\n\nexport function capsuleMode(input: { sourceTokens: number; askNamesSymbol: boolean }): CapsuleMode {\n const mass = Math.max(0, input.sourceTokens);\n if (mass <= WHOLE_REPO_MAX_SOURCE_TOKENS) return 'whole-repo';\n if (mass > COMPILE_MIN_SOURCE_TOKENS) return 'compile';\n // Modest mass: greppable asks lose to grep (measured). Symptom-only in this\n // band is unmeasured — fail closed to off.\n if (input.askNamesSymbol) return 'off';\n return 'off';\n}\n\nexport interface WholeRepoFile {\n path: string;\n content: string;\n}\n\nexport interface WholeRepoPacket {\n rendered: string;\n tokensEstimate: number;\n files: string[];\n sourceTokens: number;\n}\n\n/**\n * First-turn packet = the mapped files, not a ranked dump. Files are sorted\n * by path. `budget` caps the paste (default {@link WHOLE_REPO_MAX_SOURCE_TOKENS});\n * at least one file is always included when any exist.\n */\nexport function buildWholeRepoPacket(\n instruction: string,\n files: WholeRepoFile[],\n budget: number = WHOLE_REPO_MAX_SOURCE_TOKENS,\n): WholeRepoPacket {\n const sorted = [...files]\n .map((f) => ({ path: normalize(f.path), content: f.content }))\n .filter((f) => f.path && f.content.length > 0)\n .sort((a, b) => a.path.localeCompare(b.path));\n const sourceTokens = sourceTokenMass(sorted.map((f) => f.content));\n\n const lines: string[] = [\n '# Repository source (entire mapped tree)',\n '',\n 'The files below are the repository. Use them; search or read outside only if they are insufficient.',\n '',\n ];\n const included: string[] = [];\n for (const f of sorted) {\n const block = [`### \\`${f.path}\\``, `\\`\\`\\`${langFor(f.path)}`, f.content.replace(/\\n$/, ''), '```', ''];\n const candidate = [...lines, ...block, '## Task', instruction].join('\\n');\n if (included.length > 0 && estimateSourceTokens(candidate) > budget) break;\n lines.push(...block);\n included.push(f.path);\n }\n lines.push('## Task');\n lines.push(instruction);\n const rendered = lines.join('\\n');\n return {\n rendered,\n tokensEstimate: estimateSourceTokens(rendered),\n files: included,\n sourceTokens,\n };\n}\n\nfunction skipMappedPath(file: string): boolean {\n return (\n file.startsWith('node_modules/') ||\n file.includes('/node_modules/') ||\n file.startsWith('.git/') ||\n file.startsWith('.vibgrate/')\n );\n}\n\nfunction normalize(file: string): string {\n return file.replace(/\\\\/g, '/').replace(/^\\.\\//, '');\n}\n\nfunction langFor(file: string): string {\n const ext = file.split('.').pop()?.toLowerCase() ?? '';\n const map: Record<string, string> = {\n ts: 'ts',\n tsx: 'tsx',\n js: 'js',\n jsx: 'jsx',\n mjs: 'js',\n cjs: 'js',\n py: 'python',\n rs: 'rust',\n go: 'go',\n java: 'java',\n cs: 'csharp',\n md: 'md',\n json: 'json',\n };\n return map[ext] ?? '';\n}\n"]}
@@ -1,16 +1,16 @@
1
- import { FREE_PACK, navigationToolsetConfig, deferredToolNames, HOT_TOOLS } from './chunk-LKJIYGO5.js';
1
+ import { FREE_PACK, navigationToolsetConfig, deferredToolNames, HOT_TOOLS } from './chunk-TT2J2TB6.js';
2
2
  import { edgeId, buildModuleResolver, resolve, applyStaticTestLinkage, nodeId } from './chunk-VIWZ4QT7.js';
3
3
  import { CliError, ExitCode } from './chunk-MS6V5XKB.js';
4
4
  import { init_cli_invocation, whichOnPath, isInstalledOwnBinary } from './chunk-EZ7UC5Y5.js';
5
- import { indexFor } from './chunk-LUJ4H4RJ.js';
6
- import { writeGraphIndex, SCHEMA_VERSION, loadGraph } from './chunk-5BFA532E.js';
5
+ import { indexFor } from './chunk-K3SXWOTT.js';
6
+ import { writeGraphIndex, SCHEMA_VERSION, loadGraph } from './chunk-7M4E7UGX.js';
7
7
  import { mergeExcludes, discover, isSkippedDirName, SKIP_FILES } from './chunk-RTURQXQL.js';
8
- import { grammarSetVersion, toolchainGrammarSetVersion, fileRolesFromParses, setGrammarsOverride, parseSource, resetParser, toolchainParser } from './chunk-L3YEEJ6U.js';
8
+ import { grammarSetVersion, toolchainGrammarSetVersion, fileRolesFromParses, setGrammarsOverride, parseSource, resetParser, toolchainParser } from './chunk-6MIJLO5B.js';
9
9
  import { redactSecrets } from './chunk-T7RSQ5WD.js';
10
- import { ensureVibgrateGitignore } from './chunk-FVBN4E5C.js';
10
+ import { ensureVibgrateGitignore } from './chunk-OIUVWCKM.js';
11
11
  import { loadCache, cacheDir } from './chunk-MVPRPSXU.js';
12
12
  import { serializeGraph, stableStringify } from './chunk-O3LABX6I.js';
13
- import { VERSION } from './chunk-KFLNWYZG.js';
13
+ import { VERSION } from './chunk-G3ACLBMG.js';
14
14
  import { shortId, canonicalize, hashString, hashBytes } from './chunk-JFGYT6BI.js';
15
15
  import * as v8 from 'v8';
16
16
  import Graph from 'graphology';
@@ -4670,5 +4670,5 @@ function escapeRe(s) {
4670
4670
  }
4671
4671
 
4672
4672
  export { ASSISTANTS, ResourceLimitError, SMALL_REPO_FILES, analyze, applyCoverage, assistantById, buildFacts, buildGraph, decodeScipIndex, detectAssistants, detectServeLaunch, driftCount, epistemicBreakdown, groundGraph, hasDrift, installAssistant, isAssistantInstalled, loadCoverage, loadSnapshot, probeFreshness, refreshInstalledInstructions, resolveLimits, scipEdges, uninstallAssistant, verifyDeterminism, versionMarker, writeNavigationConfig, writeSnapshot };
4673
- //# sourceMappingURL=chunk-UUVOA6WD.js.map
4674
- //# sourceMappingURL=chunk-UUVOA6WD.js.map
4673
+ //# sourceMappingURL=chunk-NS4DL3QR.js.map
4674
+ //# sourceMappingURL=chunk-NS4DL3QR.js.map