@vibgrate/cli 2026.818.2 → 2026.819.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.
- package/DOCS.md +3 -3
- package/dist/agent-ZJRWCMR6.js +30 -0
- package/dist/{agent-X6VYCE63.js.map → agent-ZJRWCMR6.js.map} +1 -1
- package/dist/{approvals-TPQFQSWG.js → approvals-YTUXBZWQ.js} +7 -7
- package/dist/{approvals-TPQFQSWG.js.map → approvals-YTUXBZWQ.js.map} +1 -1
- package/dist/attach-WOA25VNH.js +10 -0
- package/dist/{attach-G5JUIWIT.js.map → attach-WOA25VNH.js.map} +1 -1
- package/dist/baseline-TVRRUZGA.js +9 -0
- package/dist/{baseline-DXI64VLW.js.map → baseline-TVRRUZGA.js.map} +1 -1
- package/dist/{chunk-V6WONSIK.js → chunk-24HKTTFV.js} +5 -5
- package/dist/{chunk-V6WONSIK.js.map → chunk-24HKTTFV.js.map} +1 -1
- package/dist/{chunk-VMAIDM4K.js → chunk-2C4QT5D7.js} +5 -5
- package/dist/{chunk-VMAIDM4K.js.map → chunk-2C4QT5D7.js.map} +1 -1
- package/dist/{chunk-JGA63RGF.js → chunk-2ZBLZ2S3.js} +13 -13
- package/dist/{chunk-JGA63RGF.js.map → chunk-2ZBLZ2S3.js.map} +1 -1
- package/dist/{chunk-OV4KGXPD.js → chunk-57ZRSCHY.js} +3 -3
- package/dist/{chunk-OV4KGXPD.js.map → chunk-57ZRSCHY.js.map} +1 -1
- package/dist/{chunk-NDNNOAS6.js → chunk-6H2QV5DR.js} +3 -3
- package/dist/{chunk-NDNNOAS6.js.map → chunk-6H2QV5DR.js.map} +1 -1
- package/dist/{chunk-2C33WR5O.js → chunk-7BSUPHX6.js} +3 -3
- package/dist/{chunk-2C33WR5O.js.map → chunk-7BSUPHX6.js.map} +1 -1
- package/dist/{chunk-LJSJX6U4.js → chunk-A3WWRW7U.js} +3 -3
- package/dist/{chunk-LJSJX6U4.js.map → chunk-A3WWRW7U.js.map} +1 -1
- package/dist/{chunk-X2MQ7UFL.js → chunk-AP3JN33O.js} +12 -12
- package/dist/{chunk-X2MQ7UFL.js.map → chunk-AP3JN33O.js.map} +1 -1
- package/dist/{chunk-O5IJDMTB.js → chunk-AQZYDFEK.js} +4 -4
- package/dist/{chunk-O5IJDMTB.js.map → chunk-AQZYDFEK.js.map} +1 -1
- package/dist/{chunk-VQ5KMHW6.js → chunk-BQ6NTRRK.js} +44 -15
- package/dist/chunk-BQ6NTRRK.js.map +1 -0
- package/dist/{chunk-HF6R73UC.js → chunk-C2EZIAA3.js} +27 -13
- package/dist/chunk-C2EZIAA3.js.map +1 -0
- package/dist/{chunk-MRZHNUN7.js → chunk-CA4YQBA7.js} +4 -4
- package/dist/{chunk-MRZHNUN7.js.map → chunk-CA4YQBA7.js.map} +1 -1
- package/dist/{chunk-YF54UMOU.js → chunk-CBL3VY7J.js} +3 -3
- package/dist/{chunk-YF54UMOU.js.map → chunk-CBL3VY7J.js.map} +1 -1
- package/dist/{chunk-PRHH4DVO.js → chunk-FCMWHSQ6.js} +3 -3
- package/dist/{chunk-PRHH4DVO.js.map → chunk-FCMWHSQ6.js.map} +1 -1
- package/dist/{chunk-V2UGRUTL.js → chunk-GBXOAO5V.js} +176 -37
- package/dist/chunk-GBXOAO5V.js.map +1 -0
- package/dist/{chunk-JFE7XCAE.js → chunk-IASO2HCI.js} +3 -3
- package/dist/{chunk-JFE7XCAE.js.map → chunk-IASO2HCI.js.map} +1 -1
- package/dist/{chunk-ZUOBPKVK.js → chunk-IMI2VHHZ.js} +3 -3
- package/dist/{chunk-ZUOBPKVK.js.map → chunk-IMI2VHHZ.js.map} +1 -1
- package/dist/{chunk-NKLYDSB7.js → chunk-JPOYXG7Z.js} +10 -10
- package/dist/{chunk-NKLYDSB7.js.map → chunk-JPOYXG7Z.js.map} +1 -1
- package/dist/{chunk-L2OS4WHT.js → chunk-MMJFHEZ4.js} +4 -4
- package/dist/{chunk-L2OS4WHT.js.map → chunk-MMJFHEZ4.js.map} +1 -1
- package/dist/{chunk-E3O5UKNA.js → chunk-NKKOGJ63.js} +35 -17
- package/dist/chunk-NKKOGJ63.js.map +1 -0
- package/dist/{chunk-7AVYKZEM.js → chunk-NV7XNBX4.js} +4 -4
- package/dist/{chunk-7AVYKZEM.js.map → chunk-NV7XNBX4.js.map} +1 -1
- package/dist/{chunk-NJQZRM55.js → chunk-OGFOJG4H.js} +6 -6
- package/dist/{chunk-NJQZRM55.js.map → chunk-OGFOJG4H.js.map} +1 -1
- package/dist/{chunk-NZELMYT4.js → chunk-OLIMW4PQ.js} +8 -56
- package/dist/chunk-OLIMW4PQ.js.map +1 -0
- package/dist/{chunk-B4EXD5LK.js → chunk-PJRPSYFQ.js} +9 -7
- package/dist/chunk-PJRPSYFQ.js.map +1 -0
- package/dist/{chunk-NG4KIJW6.js → chunk-PVNALGTG.js} +10 -6
- package/dist/chunk-PVNALGTG.js.map +1 -0
- package/dist/{chunk-BMOFJIMG.js → chunk-QE6F62FR.js} +3 -3
- package/dist/{chunk-BMOFJIMG.js.map → chunk-QE6F62FR.js.map} +1 -1
- package/dist/{chunk-6ABMV74F.js → chunk-R5TQBIR6.js} +4 -4
- package/dist/{chunk-6ABMV74F.js.map → chunk-R5TQBIR6.js.map} +1 -1
- package/dist/{chunk-5I4VSBWQ.js → chunk-RTURQXQL.js} +372 -113
- package/dist/chunk-RTURQXQL.js.map +1 -0
- package/dist/{chunk-74UBGF4P.js → chunk-SHD5TCZ5.js} +3 -3
- package/dist/{chunk-74UBGF4P.js.map → chunk-SHD5TCZ5.js.map} +1 -1
- package/dist/{chunk-KU7FI5EV.js → chunk-USPMMVNH.js} +3 -3
- package/dist/{chunk-KU7FI5EV.js.map → chunk-USPMMVNH.js.map} +1 -1
- package/dist/{chunk-E53WBVUQ.js → chunk-VHRSG6CF.js} +3 -3
- package/dist/{chunk-E53WBVUQ.js.map → chunk-VHRSG6CF.js.map} +1 -1
- package/dist/{chunk-I5LP55B6.js → chunk-W44THEXF.js} +3 -3
- package/dist/{chunk-I5LP55B6.js.map → chunk-W44THEXF.js.map} +1 -1
- package/dist/{chunk-AEJYA6HZ.js → chunk-W6ASIMG5.js} +7 -7
- package/dist/{chunk-AEJYA6HZ.js.map → chunk-W6ASIMG5.js.map} +1 -1
- package/dist/{chunk-CQDUBAQY.js → chunk-WNKGRXUA.js} +3 -3
- package/dist/{chunk-CQDUBAQY.js.map → chunk-WNKGRXUA.js.map} +1 -1
- package/dist/{chunk-RHKOUPWT.js → chunk-WPLOEFZU.js} +7 -5
- package/dist/chunk-WPLOEFZU.js.map +1 -0
- package/dist/{chunk-FJG5AXKZ.js → chunk-WUFIXAEJ.js} +22 -6
- package/dist/chunk-WUFIXAEJ.js.map +1 -0
- package/dist/{chunk-6PFHDHOL.js → chunk-XLQ4YHS3.js} +16 -14
- package/dist/chunk-XLQ4YHS3.js.map +1 -0
- package/dist/{chunk-BWPBB45M.js → chunk-XP6UUCZZ.js} +3 -3
- package/dist/{chunk-BWPBB45M.js.map → chunk-XP6UUCZZ.js.map} +1 -1
- package/dist/{chunk-BPF3YX2U.js → chunk-XQNKCA2J.js} +6 -3
- package/dist/chunk-XQNKCA2J.js.map +1 -0
- package/dist/{chunk-FFXGWFAE.js → chunk-XW2XQM3C.js} +7 -7
- package/dist/{chunk-FFXGWFAE.js.map → chunk-XW2XQM3C.js.map} +1 -1
- package/dist/{chunk-7N4Y3E47.js → chunk-YJYEPYB2.js} +13 -18
- package/dist/chunk-YJYEPYB2.js.map +1 -0
- package/dist/chunk-ZUZHYAJK.js +6 -0
- package/dist/{chunk-4NTNMT6T.js.map → chunk-ZUZHYAJK.js.map} +1 -1
- package/dist/cli.js +112 -108
- package/dist/cli.js.map +1 -1
- package/dist/client-P5XSRFV4.js +8 -0
- package/dist/{client-UQIELEEZ.js.map → client-P5XSRFV4.js.map} +1 -1
- package/dist/daemon-YKOEP3XA.js +30 -0
- package/dist/{daemon-GUMWMKCA.js.map → daemon-YKOEP3XA.js.map} +1 -1
- package/dist/embed-worker-main.js +5 -5
- package/dist/ensure-map-BLRJDO2Y.js +40 -0
- package/dist/{ensure-map-FHDJTO7Y.js.map → ensure-map-BLRJDO2Y.js.map} +1 -1
- package/dist/federation-M4ZNXOPX.js +8 -0
- package/dist/{federation-MDQPO3PW.js.map → federation-M4ZNXOPX.js.map} +1 -1
- package/dist/fs-FO3NQHPT.js +4 -0
- package/dist/fs-FO3NQHPT.js.map +1 -0
- package/dist/git-ref-LMT3EXYY.js +4 -0
- package/dist/{git-ref-RSRAN4OH.js.map → git-ref-LMT3EXYY.js.map} +1 -1
- package/dist/graph-backend-NTYONTWW.js +16 -0
- package/dist/{graph-backend-W2D3HRRD.js.map → graph-backend-NTYONTWW.js.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +24 -25
- package/dist/index.js.map +1 -1
- package/dist/{interactive-2MK4TLRD.js → interactive-B3WTC7LB.js} +41 -42
- package/dist/interactive-B3WTC7LB.js.map +1 -0
- package/dist/{llm-host-XFYFOAAX.js → llm-host-QVTJJVER.js} +5 -5
- package/dist/{llm-host-XFYFOAAX.js.map → llm-host-QVTJJVER.js.map} +1 -1
- package/dist/load-AJROS77R.js +11 -0
- package/dist/{load-4R4HYMBB.js.map → load-AJROS77R.js.map} +1 -1
- package/dist/local-runtime-GA43KYS5.js +6 -0
- package/dist/{local-runtime-6SNWKSA7.js.map → local-runtime-GA43KYS5.js.map} +1 -1
- package/dist/model-manager-6H3TMZKK.js +10 -0
- package/dist/{model-manager-SXHZ5VD4.js.map → model-manager-6H3TMZKK.js.map} +1 -1
- package/dist/{model-orchestrator-LHYPJBFH.js → model-orchestrator-X3NE3Y2G.js} +6 -6
- package/dist/{model-orchestrator-LHYPJBFH.js.map → model-orchestrator-X3NE3Y2G.js.map} +1 -1
- package/dist/parse-worker.js +2 -2
- package/dist/{paths-62AKTFSR.js → paths-RVK6FKRN.js} +4 -4
- package/dist/{paths-62AKTFSR.js.map → paths-RVK6FKRN.js.map} +1 -1
- package/dist/publish-27S66NOW.js +9 -0
- package/dist/{publish-7YHRTBRA.js.map → publish-27S66NOW.js.map} +1 -1
- package/dist/resolve-gguf-WVKVDN45.js +9 -0
- package/dist/{resolve-gguf-SDIYGGI6.js.map → resolve-gguf-WVKVDN45.js.map} +1 -1
- package/dist/{run-outcome-H5GVDDZJ.js → run-outcome-SBBSTSH3.js} +7 -7
- package/dist/{run-outcome-H5GVDDZJ.js.map → run-outcome-SBBSTSH3.js.map} +1 -1
- package/dist/runtime-session-JYYKQVDX.js +26 -0
- package/dist/{runtime-session-JBIHHH5N.js.map → runtime-session-JYYKQVDX.js.map} +1 -1
- package/dist/session-2ZMHZ2O6.js +17 -0
- package/dist/{session-N5IU4K5Q.js.map → session-2ZMHZ2O6.js.map} +1 -1
- package/dist/{slot-subscription-25GOARW5.js → slot-subscription-C2ZUJED6.js} +5 -5
- package/dist/{slot-subscription-25GOARW5.js.map → slot-subscription-C2ZUJED6.js.map} +1 -1
- package/dist/{stream-json-4WLSUF6I.js → stream-json-ZWGB4C47.js} +17 -17
- package/dist/{stream-json-4WLSUF6I.js.map → stream-json-ZWGB4C47.js.map} +1 -1
- package/dist/version-5QIEUXU6.js +4 -0
- package/dist/{version-DTEU3SQD.js.map → version-5QIEUXU6.js.map} +1 -1
- package/dist/{vg-mcp-bridge-KDVYIMFX.js → vg-mcp-bridge-4FETMJ6M.js} +16 -15
- package/dist/vg-mcp-bridge-4FETMJ6M.js.map +1 -0
- package/dist/{vgd-M7UOPWLB.js → vgd-R524P5BJ.js} +13 -14
- package/dist/vgd-R524P5BJ.js.map +1 -0
- package/package.json +1 -1
- package/dist/agent-X6VYCE63.js +0 -30
- package/dist/attach-G5JUIWIT.js +0 -10
- package/dist/baseline-DXI64VLW.js +0 -9
- package/dist/chunk-4NTNMT6T.js +0 -6
- package/dist/chunk-5I4VSBWQ.js.map +0 -1
- package/dist/chunk-6PFHDHOL.js.map +0 -1
- package/dist/chunk-7N4Y3E47.js.map +0 -1
- package/dist/chunk-B4EXD5LK.js.map +0 -1
- package/dist/chunk-BPF3YX2U.js.map +0 -1
- package/dist/chunk-E3O5UKNA.js.map +0 -1
- package/dist/chunk-FJG5AXKZ.js.map +0 -1
- package/dist/chunk-HF6R73UC.js.map +0 -1
- package/dist/chunk-NG4KIJW6.js.map +0 -1
- package/dist/chunk-NZELMYT4.js.map +0 -1
- package/dist/chunk-POOL355F.js +0 -237
- package/dist/chunk-POOL355F.js.map +0 -1
- package/dist/chunk-RHKOUPWT.js.map +0 -1
- package/dist/chunk-V2UGRUTL.js.map +0 -1
- package/dist/chunk-VQ5KMHW6.js.map +0 -1
- package/dist/client-UQIELEEZ.js +0 -8
- package/dist/daemon-GUMWMKCA.js +0 -31
- package/dist/ensure-map-FHDJTO7Y.js +0 -41
- package/dist/federation-MDQPO3PW.js +0 -7
- package/dist/fs-TLPOWC2D.js +0 -4
- package/dist/fs-TLPOWC2D.js.map +0 -1
- package/dist/git-ref-RSRAN4OH.js +0 -4
- package/dist/graph-backend-W2D3HRRD.js +0 -16
- package/dist/interactive-2MK4TLRD.js.map +0 -1
- package/dist/load-4R4HYMBB.js +0 -11
- package/dist/local-runtime-6SNWKSA7.js +0 -6
- package/dist/model-manager-SXHZ5VD4.js +0 -10
- package/dist/publish-7YHRTBRA.js +0 -9
- package/dist/resolve-gguf-SDIYGGI6.js +0 -9
- package/dist/runtime-session-JBIHHH5N.js +0 -27
- package/dist/session-N5IU4K5Q.js +0 -17
- package/dist/version-DTEU3SQD.js +0 -4
- package/dist/vg-mcp-bridge-KDVYIMFX.js.map +0 -1
- package/dist/vgd-M7UOPWLB.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/discover.ts","../src/engine/workspace-roots.ts","../src/runtime/bridge-edges.ts","../src/runtime/interface-bridges.ts","../src/runtime/discover-workspaces.ts","../src/runtime/federation.ts"],"names":["path","fs","path2","path3","path4","path5","abs","nodeFs"],"mappings":"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","file":"chunk-RTURQXQL.js","sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport ignore, { type Ignore } from 'ignore';\nimport { langForExtension, langById, type LanguageDef } from './languages.js';\n\n/**\n * Deterministic file discovery.\n *\n * Respects `.gitignore` (including nested ones), explicit config excludes, and a\n * built-in SKIP_DIRS set consistent with the scanner. Results are returned\n * sorted by relative POSIX path so the build is order-independent of the\n * filesystem.\n */\n\n// Directories never worth walking — dependency trees, build output, and\n// VCS/IDE metadata. Kept aligned with the scanner's skip list (core-open\n// `utils/fs.ts` SKIP_DIRS): the engine stays self-contained (no runtime\n// import), and `test/discover-skips.test.ts` asserts this set covers the\n// scanner's, so the graph can never index a package folder the scanner\n// already decided is third-party.\n//\n// Exact names only. Hidden directories (except {@link SCANNED_HIDDEN_DIRS})\n// and prefix patterns (`venv-*`, `site-packages`) use {@link isSkippedDirName}.\nexport const SKIP_DIRS = new Set<string>([\n // Version control, IDE & tool metadata\n '.git', '.svn', '.hg',\n '.idea', '.vscode', '.vs',\n // Claude Code agent state / worktrees (full monorepo copies under .claude/worktrees/)\n '.claude',\n '.vibgrate', '.wrangler', '.turbo', '.cache',\n // Migration / tool backup trees (NativeScript, codemods, agent worktrees)\n '.migration_backup', '.update_backup', '.backup', '.bak',\n '.history', '.snapshots', '.snapshots_bak',\n // JavaScript / Node — installed dependency trees\n 'node_modules', 'bower_components', 'jspm_packages', 'web_modules',\n '.pnpm-store', '.yarn',\n // JS/TS meta-framework & bundler build output\n '.next', '.nuxt', '.output', '.svelte-kit', '.astro',\n '.vercel', '.netlify', '.angular', '.parcel-cache', '.docusaurus',\n 'storybook-static',\n // Generic build / dist / coverage output\n 'dist', 'build', 'out', 'coverage',\n // Native mobile platform build trees (NativeScript / Cordova / Capacitor)\n 'platforms', 'App_Resources',\n // Vendored third-party source trees\n 'vendor', 'Pods', 'Carthage',\n // Python — virtualenvs & tool caches\n '.venv', 'venv', 'virtualenv', '.tox', '.nox',\n '__pycache__', '.mypy_cache', '.pytest_cache', '.ruff_cache',\n '.eggs', '.ipynb_checkpoints',\n // Ruby\n '.bundle',\n // Rust / Maven / sbt / Clojure — all build into target/\n 'target',\n // JVM (Gradle / Maven) & .NET build output\n '.gradle', 'bin', 'obj', 'TestResults',\n // Swift / Xcode\n '.build', '.swiftpm', 'DerivedData',\n // Dart / Flutter\n '.dart_tool',\n // Elixir / Erlang\n '_build', 'deps',\n // Haskell (Cabal / Stack)\n 'dist-newstyle', '.stack-work',\n // Infrastructure-as-code build/state\n '.terraform', '.serverless', 'cdk.out', '.aws-sam',\n]);\n\n/**\n * Hidden directories that still hold first-party metadata we walk\n * (CI workflows). Every other `.*` directory is agent/tool state\n * (Claude/Cursor/Codex/Grok worktrees, IDE metadata, caches) and\n * must never be scanned or indexed. Keep aligned with core-open\n * `utils/fs.ts` {@link SCANNED_HIDDEN_DIRS}.\n */\nexport const SCANNED_HIDDEN_DIRS = new Set(['.github', '.circleci']);\n\n/**\n * True when a directory basename must be pruned from discovery / scoring walks.\n * Covers every hidden directory except {@link SCANNED_HIDDEN_DIRS}, exact\n * {@link SKIP_DIRS} names, custom virtualenv names (`venv-tools`, …), and\n * Python install trees (`site-packages`) that mint hundreds of phantom\n * nested \"projects\".\n */\nexport function isSkippedDirName(name: string): boolean {\n if (!name || name === '.' || name === '..') return false;\n // Agent worktrees live under hidden folders (.claude/worktrees, .cursor/…).\n // Skip every dot-directory so a new agent does not need a new skip entry.\n if (name.startsWith('.')) return !SCANNED_HIDDEN_DIRS.has(name);\n if (SKIP_DIRS.has(name)) return true;\n if (name.startsWith('venv-')) return true;\n if (name === 'site-packages') return true;\n return false;\n}\n\n// Lockfiles and generated dependency manifests — never hand-written source,\n// and single files can run to many MB (a pnpm-lock.yaml, a Yarn PnP .pnp.cjs).\n// Most carry extensions the graph doesn't parse anyway, but the ones that do\n// (`.pnp.cjs` is JavaScript) would otherwise be indexed as huge phantom\n// modules. Aligned with the scanner's SOURCE_EXCLUDE_FILES (core-open\n// `utils/fs.ts`), enforced by `test/discover-skips.test.ts`. Matched\n// case-insensitively against the basename; every entry must be lowercase.\nexport const SKIP_FILES = new Set<string>([\n // JavaScript / Node\n 'package-lock.json', 'npm-shrinkwrap.json', 'yarn.lock',\n 'pnpm-lock.yaml', 'bun.lockb', 'bun.lock', 'deno.lock',\n '.pnp.cjs', '.pnp.data.json', '.pnp.loader.mjs',\n // Python\n 'poetry.lock', 'pipfile.lock', 'pdm.lock', 'uv.lock',\n 'pylock.toml', 'conda-lock.yml',\n // Ruby\n 'gemfile.lock',\n // PHP\n 'composer.lock',\n // Rust\n 'cargo.lock',\n // Go\n 'go.sum', 'go.work.sum', 'gopkg.lock', 'glide.lock',\n // .NET\n 'packages.lock.json',\n // Java / JVM (Gradle)\n 'gradle.lockfile',\n // Swift / Xcode\n 'package.resolved',\n // Dart / Flutter\n 'pubspec.lock',\n // Elixir\n 'mix.lock',\n // Haskell (Cabal / Stack)\n 'cabal.project.freeze', 'stack.yaml.lock',\n // Julia\n 'manifest.toml',\n // R\n 'renv.lock',\n // Perl (Carton)\n 'cpanfile.snapshot',\n // CocoaPods / Carthage\n 'podfile.lock', 'cartfile.resolved',\n // Terraform / IaC\n '.terraform.lock.hcl',\n // Helm\n 'chart.lock',\n // C / C++ (Conan)\n 'conan.lock',\n // Bazel\n 'module.bazel.lock',\n // Nix\n 'flake.lock',\n]);\n\nexport interface DiscoverOptions {\n /** Absolute root directory. */\n root: string;\n /** Restrict to these language ids (e.g. ['ts','py']). Empty = all. */\n only?: string[];\n /** Additional ignore globs (gitignore syntax), e.g. from config `exclude`. */\n exclude?: string[];\n /** Explicit sub-paths to scope to (relative or absolute). */\n paths?: string[];\n}\n\nexport interface DiscoveredFile {\n /** Relative POSIX path from root. */\n rel: string;\n /** Absolute path. */\n abs: string;\n lang: LanguageDef;\n}\n\nfunction toPosix(p: string): string {\n return p.split(path.sep).join('/');\n}\n\n/**\n * Project-local exclude globs from `vibgrate.config.json`.\n * JSON only — `.ts`/`.js` configs stay scan-side (they can execute). A missing\n * or malformed file is an empty list, never an error.\n */\nexport function readConfigExcludes(root: string): string[] {\n const configPath = path.join(root, 'vibgrate.config.json');\n try {\n const parsed = JSON.parse(fs.readFileSync(configPath, 'utf8')) as { exclude?: unknown };\n if (!Array.isArray(parsed.exclude)) return [];\n return parsed.exclude.filter((x): x is string => typeof x === 'string' && x.trim() !== '');\n } catch {\n return [];\n }\n}\n\n/** Config excludes plus caller extras, de-duplicated, config-first. */\nexport function mergeExcludes(root: string, extra?: string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const pattern of [...readConfigExcludes(root), ...(extra ?? [])]) {\n if (seen.has(pattern)) continue;\n seen.add(pattern);\n out.push(pattern);\n }\n return out;\n}\n\n/** Build the ignore matcher from the repo's .gitignore plus extra excludes. */\nfunction buildRootIgnore(root: string, exclude: string[]): Ignore {\n const ig = ignore();\n const gitignorePath = path.join(root, '.gitignore');\n if (fs.existsSync(gitignorePath)) {\n ig.add(fs.readFileSync(gitignorePath, 'utf8'));\n }\n if (exclude.length) ig.add(exclude);\n return ig;\n}\n\nexport function discover(options: DiscoverOptions): DiscoveredFile[] {\n const root = path.resolve(options.root);\n const onlyLangs = (options.only ?? []).filter(Boolean);\n const allowLang = (lang: LanguageDef): boolean =>\n onlyLangs.length === 0 || onlyLangs.includes(lang.id);\n\n // Validate `--only` ids early so a typo is a usage error, not silent emptiness.\n for (const id of onlyLangs) {\n if (!langById(id)) {\n throw new UsageError(`unknown language \"${id}\" for --only`);\n }\n }\n\n const rootIg = buildRootIgnore(root, options.exclude ?? []);\n\n // Scope roots: explicit paths, or the whole repo.\n const scopeAbs = (options.paths && options.paths.length\n ? options.paths.map((p) => path.resolve(root, p))\n : [root]\n ).filter((p) => fs.existsSync(p));\n\n const found = new Map<string, DiscoveredFile>();\n\n const considerFile = (abs: string): void => {\n const rel = toPosix(path.relative(root, abs));\n if (rel.startsWith('..')) return; // outside root\n if (rel === '' || rootIg.ignores(rel)) return;\n if (SKIP_FILES.has(path.basename(abs).toLowerCase())) return; // lockfiles etc.\n const lang = langForExtension(path.extname(abs));\n if (!lang || !allowLang(lang)) return;\n found.set(rel, { rel, abs, lang });\n };\n\n const walk = (dir: string): void => {\n let entries: fs.Dirent[];\n try {\n entries = fs.readdirSync(dir, { withFileTypes: true });\n } catch {\n return; // unreadable dir — skip rather than crash the build\n }\n for (const entry of entries) {\n const abs = path.join(dir, entry.name);\n const rel = toPosix(path.relative(root, abs));\n if (entry.isDirectory()) {\n if (isSkippedDirName(entry.name)) continue;\n if (rel && rootIg.ignores(`${rel}/`)) continue;\n walk(abs);\n } else if (entry.isFile()) {\n considerFile(abs);\n }\n }\n };\n\n for (const scope of scopeAbs) {\n const stat = fs.statSync(scope);\n if (stat.isDirectory()) walk(scope);\n else if (stat.isFile()) considerFile(scope);\n }\n\n return [...found.values()].sort((a, b) => (a.rel < b.rel ? -1 : a.rel > b.rel ? 1 : 0));\n}\n\n/** A usage error that maps to exit code 5 at the CLI boundary. */\nexport class UsageError extends Error {\n readonly isUsageError = true;\n constructor(message: string) {\n super(message);\n this.name = 'UsageError';\n }\n}\n","/**\n * Pure workspace-roots helpers (Fusion Runtime / federation).\n *\n * Stream S owns the long-term pure library design; this module is the F-side\n * implementation used by federation + vgd until S lands a shared package.\n * No daemon I/O — path math only.\n *\n * @see docs/plans/coordination/FUSION-HANDOFF.md\n * @see src/runtime/federation.ts\n */\n\nimport * as path from 'node:path';\nimport { repositoryIdFromRoot } from '../runtime/paths.js';\n\nexport interface WorkspaceRoot {\n /** Absolute normalized path */\n root: string;\n /** Stable id (same as global store repository id) */\n id: string;\n /** Basename label */\n label: string;\n}\n\n/**\n * Normalize a list of roots (absolute or relative to `base`) into unique\n * WorkspaceRoot records. Deterministic order: sorted by absolute root path.\n */\nexport function normalizeWorkspaceRoots(roots: string[], base: string = process.cwd()): WorkspaceRoot[] {\n const seen = new Set<string>();\n const out: WorkspaceRoot[] = [];\n const baseAbs = path.resolve(base);\n for (const r of roots) {\n if (typeof r !== 'string' || !r.trim()) continue;\n const abs = path.resolve(baseAbs, r.trim());\n const id = repositoryIdFromRoot(abs);\n if (seen.has(id)) continue;\n seen.add(id);\n out.push({\n root: abs,\n id,\n label: path.basename(abs) || abs,\n });\n }\n return out.sort((a, b) => a.root.localeCompare(b.root));\n}\n\n/** True if `child` is equal to or nested under `parent` (path-safe). */\nexport function isPathInside(child: string, parent: string): boolean {\n const rel = path.relative(path.resolve(parent), path.resolve(child));\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));\n}\n\n/**\n * Pick the primary root: explicit `preferred` if present in the set, else the\n * first after sort (deterministic).\n */\nexport function selectPrimaryRoot(roots: WorkspaceRoot[], preferred?: string): WorkspaceRoot | null {\n if (!roots.length) return null;\n if (preferred?.trim()) {\n const abs = path.resolve(preferred.trim());\n const hit = roots.find((r) => r.root === abs || r.id === repositoryIdFromRoot(abs));\n if (hit) return hit;\n }\n return roots[0] ?? null;\n}\n","/**\n * Cross-workspace bridge edges (Fusion Runtime Phase 6).\n *\n * schemaVersion: bridge-edge/0\n *\n * Conservative edges between federation members when one package.json\n * depends on another member's package name (workspace:*, link:, file:, or\n * exact version). Low-confidence edges are marked so high-stakes capsules\n * can exclude them. Pure over injected package.json readers.\n */\n\nimport * as path from 'node:path';\nimport { repositoryIdFromRoot } from './paths.js';\n\nexport const BRIDGE_EDGE_SCHEMA_VERSION = 'bridge-edge/0' as const;\n\nexport type BridgeKind =\n | 'workspace-package'\n | 'path-dependency'\n | 'git-submodule'\n | 'openapi-ref'\n | 'compose-service'\n | 'protobuf-import'\n | 'graphql-ref';\n\nexport interface BridgeEdge {\n schemaVersion: typeof BRIDGE_EDGE_SCHEMA_VERSION;\n fromRepositoryId: string;\n toRepositoryId: string;\n fromRoot: string;\n toRoot: string;\n kind: BridgeKind;\n /** 0..1 — workspace:* is high; bare version match is medium. */\n confidence: number;\n /** Short, secret-free evidence string for transparency UIs. */\n evidence: string;\n packageName?: string;\n}\n\nexport interface BridgeMember {\n root: string;\n repositoryId?: string;\n}\n\nexport interface PackageManifest {\n name?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n optionalDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n}\n\n/**\n * Build bridge edges among `members` by reading each member's package.json.\n * Deterministic: sorted by (fromRoot, toRoot, packageName).\n */\nexport function discoverBridgeEdges(\n members: BridgeMember[],\n readPackageJson: (root: string) => PackageManifest | null,\n options: { minConfidence?: number } = {},\n): BridgeEdge[] {\n const min = options.minConfidence ?? 0;\n const packages = new Map<string, { root: string; repositoryId: string; name: string }>();\n\n for (const m of members) {\n const root = path.resolve(m.root);\n const pkg = readPackageJson(root);\n const name = typeof pkg?.name === 'string' ? pkg.name.trim() : '';\n if (!name) continue;\n const repositoryId = m.repositoryId ?? repositoryIdFromRoot(root);\n packages.set(name, { root, repositoryId, name });\n }\n\n const edges: BridgeEdge[] = [];\n const seen = new Set<string>();\n\n for (const m of members) {\n const fromRoot = path.resolve(m.root);\n const fromId = m.repositoryId ?? repositoryIdFromRoot(fromRoot);\n const pkg = readPackageJson(fromRoot);\n if (!pkg) continue;\n\n const deps = collectDeps(pkg);\n for (const [depName, range] of deps) {\n const target = packages.get(depName);\n if (!target) continue;\n if (target.root === fromRoot) continue;\n\n const { kind, confidence } = classifyDependency(range, fromRoot, target.root);\n if (confidence < min) continue;\n\n const key = `${fromId}->${target.repositoryId}:${depName}`;\n if (seen.has(key)) continue;\n seen.add(key);\n\n edges.push({\n schemaVersion: BRIDGE_EDGE_SCHEMA_VERSION,\n fromRepositoryId: fromId,\n toRepositoryId: target.repositoryId,\n fromRoot,\n toRoot: target.root,\n kind,\n confidence,\n evidence: `${path.basename(fromRoot)} depends on ${depName} (${range})`,\n packageName: depName,\n });\n }\n }\n\n return edges.sort(\n (a, b) =>\n a.fromRoot.localeCompare(b.fromRoot) ||\n a.toRoot.localeCompare(b.toRoot) ||\n (a.packageName ?? '').localeCompare(b.packageName ?? ''),\n );\n}\n\n/** High-confidence bridges only (workspace:/link:/file: or confidence ≥ 0.8). */\nexport function highConfidenceBridges(edges: BridgeEdge[]): BridgeEdge[] {\n return edges.filter((e) => e.confidence >= 0.8);\n}\n\nfunction collectDeps(pkg: PackageManifest): Array<[string, string]> {\n const out: Array<[string, string]> = [];\n for (const field of ['dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies'] as const) {\n const block = pkg[field];\n if (!block || typeof block !== 'object') continue;\n for (const [name, range] of Object.entries(block)) {\n if (typeof name === 'string' && typeof range === 'string') out.push([name, range]);\n }\n }\n // Stable order for determinism.\n return out.sort((a, b) => a[0].localeCompare(b[0]) || a[1].localeCompare(b[1]));\n}\n\nfunction classifyDependency(\n range: string,\n fromRoot: string,\n toRoot: string,\n): { kind: BridgeKind; confidence: number } {\n const r = range.trim();\n if (r.startsWith('workspace:') || r.startsWith('link:')) {\n return { kind: 'workspace-package', confidence: 0.95 };\n }\n if (r.startsWith('file:')) {\n // Confirm the file: path resolves under the target when possible.\n const rel = r.slice('file:'.length).trim();\n try {\n const resolved = path.resolve(fromRoot, rel);\n if (path.resolve(resolved) === path.resolve(toRoot)) {\n return { kind: 'path-dependency', confidence: 0.9 };\n }\n } catch {\n /* ignore */\n }\n return { kind: 'path-dependency', confidence: 0.75 };\n }\n // Same monorepo package name without workspace protocol — medium confidence.\n return { kind: 'workspace-package', confidence: 0.55 };\n}\n\n/** Parse package.json text into a manifest (or null). */\nexport function parsePackageManifest(raw: string): PackageManifest | null {\n try {\n const o = JSON.parse(raw) as PackageManifest;\n if (!o || typeof o !== 'object') return null;\n return o;\n } catch {\n return null;\n }\n}\n","/**\n * Interface / service bridge edges (Fusion Runtime Phase 6).\n *\n * Conservative cross-member links from OpenAPI `$ref` paths, Docker Compose\n * `build` contexts, protobuf `import` statements, and GraphQL schema\n * `#import` / path references. Pure over injected file readers — no network.\n * Confidence stays modest so high-stakes capsules can filter via\n * high-confidence package edges.\n */\n\nimport * as path from 'node:path';\nimport {\n BRIDGE_EDGE_SCHEMA_VERSION,\n type BridgeEdge,\n type BridgeMember,\n} from './bridge-edges.js';\nimport { repositoryIdFromRoot } from './paths.js';\n\nexport type InterfaceBridgeKind =\n | 'openapi-ref'\n | 'compose-service'\n | 'protobuf-import'\n | 'graphql-ref';\n\nexport interface InterfaceBridgeFs {\n /** Read UTF-8 text or null if missing. */\n readFile(absPath: string): string | null;\n /** List file basenames under a directory (non-recursive). */\n readdir(absPath: string): string[];\n /** True when path is a directory. */\n isDirectory(absPath: string): boolean;\n}\n\n/**\n * Discover OpenAPI / Compose / protobuf / GraphQL bridges among federation members.\n * Deterministic sort: fromRoot, toRoot, kind, evidence.\n */\nexport function discoverInterfaceBridges(\n members: BridgeMember[],\n fs: InterfaceBridgeFs,\n options: { minConfidence?: number; maxFilesPerMember?: number } = {},\n): BridgeEdge[] {\n const min = options.minConfidence ?? 0;\n const maxFiles = options.maxFilesPerMember ?? 40;\n const resolved = members.map((m) => ({\n root: path.resolve(m.root),\n repositoryId: m.repositoryId ?? repositoryIdFromRoot(m.root),\n }));\n\n const edges: BridgeEdge[] = [];\n const seen = new Set<string>();\n\n const push = (edge: BridgeEdge): void => {\n if (edge.confidence < min) return;\n if (edge.fromRoot === edge.toRoot) return;\n const key = `${edge.fromRepositoryId}->${edge.toRepositoryId}:${edge.kind}:${edge.evidence}`;\n if (seen.has(key)) return;\n seen.add(key);\n edges.push(edge);\n };\n\n for (const from of resolved) {\n const files = listCandidateFiles(from.root, fs, maxFiles);\n for (const file of files) {\n const rel = path.relative(from.root, file).replace(/\\\\/g, '/');\n const raw = fs.readFile(file);\n if (!raw) continue;\n\n if (isOpenApiCandidate(rel, raw)) {\n for (const refPath of extractOpenApiRefs(raw)) {\n const target = resolvePathToMember(from.root, refPath, resolved);\n if (!target || target.root === from.root) continue;\n push({\n schemaVersion: BRIDGE_EDGE_SCHEMA_VERSION,\n fromRepositoryId: from.repositoryId,\n toRepositoryId: target.repositoryId,\n fromRoot: from.root,\n toRoot: target.root,\n kind: 'openapi-ref',\n confidence: 0.7,\n evidence: `openapi $ref in ${rel} → ${refPath}`,\n });\n }\n }\n\n if (isComposeCandidate(rel)) {\n for (const ctx of extractComposeBuildContexts(raw)) {\n const target = resolvePathToMember(from.root, ctx, resolved);\n if (!target || target.root === from.root) continue;\n push({\n schemaVersion: BRIDGE_EDGE_SCHEMA_VERSION,\n fromRepositoryId: from.repositoryId,\n toRepositoryId: target.repositoryId,\n fromRoot: from.root,\n toRoot: target.root,\n kind: 'compose-service',\n confidence: 0.75,\n evidence: `compose build context in ${rel} → ${ctx}`,\n });\n }\n }\n\n if (isProtoCandidate(rel)) {\n for (const imp of extractProtoImports(raw)) {\n const target = resolveProtoImportToMember(from.root, imp, resolved, fs);\n if (!target || target.root === from.root) continue;\n push({\n schemaVersion: BRIDGE_EDGE_SCHEMA_VERSION,\n fromRepositoryId: from.repositoryId,\n toRepositoryId: target.repositoryId,\n fromRoot: from.root,\n toRoot: target.root,\n kind: 'protobuf-import',\n confidence: 0.72,\n evidence: `protobuf import in ${rel} → ${imp}`,\n });\n }\n }\n\n if (isGraphqlCandidate(rel, raw)) {\n for (const refPath of extractGraphqlRefs(raw)) {\n const target = resolvePathToMember(from.root, refPath, resolved);\n if (!target || target.root === from.root) continue;\n push({\n schemaVersion: BRIDGE_EDGE_SCHEMA_VERSION,\n fromRepositoryId: from.repositoryId,\n toRepositoryId: target.repositoryId,\n fromRoot: from.root,\n toRoot: target.root,\n kind: 'graphql-ref',\n confidence: 0.68,\n evidence: `graphql import in ${rel} → ${refPath}`,\n });\n }\n }\n }\n }\n\n return edges.sort(\n (a, b) =>\n a.fromRoot.localeCompare(b.fromRoot) ||\n a.toRoot.localeCompare(b.toRoot) ||\n a.kind.localeCompare(b.kind) ||\n a.evidence.localeCompare(b.evidence),\n );\n}\n\n// ── file discovery ─────────────────────────────────────────────────────────\n\nfunction listCandidateFiles(root: string, fs: InterfaceBridgeFs, maxFiles: number): string[] {\n const out: string[] = [];\n const walk = (dir: string, depth: number): void => {\n if (out.length >= maxFiles || depth > 4) return;\n let names: string[];\n try {\n names = fs.readdir(dir);\n } catch {\n return;\n }\n for (const name of names.sort((a, b) => a.localeCompare(b))) {\n if (out.length >= maxFiles) return;\n if (\n name === 'node_modules' ||\n name === '.git' ||\n name === 'dist' ||\n name === 'build' ||\n name === 'coverage' ||\n name === '.next'\n ) {\n continue;\n }\n const abs = path.join(dir, name);\n if (fs.isDirectory(abs)) {\n walk(abs, depth + 1);\n continue;\n }\n const lower = name.toLowerCase();\n if (\n lower.endsWith('.proto') ||\n lower.endsWith('.graphql') ||\n lower.endsWith('.gql') ||\n lower.endsWith('.yaml') ||\n lower.endsWith('.yml') ||\n lower.endsWith('.json') ||\n lower.includes('openapi') ||\n lower.includes('swagger') ||\n lower.includes('compose')\n ) {\n out.push(abs);\n }\n }\n };\n walk(root, 0);\n return out.sort((a, b) => a.localeCompare(b));\n}\n\n// ── OpenAPI ────────────────────────────────────────────────────────────────\n\nfunction isOpenApiCandidate(rel: string, raw: string): boolean {\n const lower = rel.toLowerCase();\n if (lower.includes('openapi') || lower.includes('swagger')) return true;\n if (/\"openapi\"\\s*:/.test(raw) || /openapi:\\s*['\"]?\\d/.test(raw)) return true;\n if (/\"swagger\"\\s*:/.test(raw) || /swagger:\\s*['\"]?\\d/.test(raw)) return true;\n return false;\n}\n\n/** Extract relative $ref / $refs that look like file paths (not #/components). */\nexport function extractOpenApiRefs(raw: string): string[] {\n const out = new Set<string>();\n // JSON: \"$ref\": \"../other/foo.yaml\"\n const jsonRef = /\"\\$ref\"\\s*:\\s*\"([^\"#][^\"]*)\"/g;\n let m: RegExpExecArray | null;\n while ((m = jsonRef.exec(raw)) !== null) {\n if (m[1] && !m[1].startsWith('http')) out.add(m[1]);\n }\n // YAML: $ref: ../other/foo.yaml or $ref: '../other/foo.yaml'\n const yamlRef = /\\$ref:\\s*['\"]?([^'\"#\\s][^'\"\\s]*)/g;\n while ((m = yamlRef.exec(raw)) !== null) {\n if (m[1] && !m[1].startsWith('http') && !m[1].startsWith('#')) out.add(m[1]);\n }\n return [...out].sort((a, b) => a.localeCompare(b));\n}\n\n// ── Compose ────────────────────────────────────────────────────────────────\n\nfunction isComposeCandidate(rel: string): boolean {\n const base = path.basename(rel).toLowerCase();\n return (\n base === 'docker-compose.yml' ||\n base === 'docker-compose.yaml' ||\n base === 'compose.yml' ||\n base === 'compose.yaml' ||\n base.includes('docker-compose')\n );\n}\n\n/**\n * Pull `build: <path>` and `build:\\n context: <path>` from compose-ish YAML.\n * Minimal parser — no full YAML dependency.\n */\nexport function extractComposeBuildContexts(raw: string): string[] {\n const out = new Set<string>();\n const lines = raw.split(/\\r?\\n/);\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? '';\n // build: ./services/api\n const simple = line.match(/^\\s*build:\\s*['\"]?([^'\"#\\s][^'\"#]*?)['\"]?\\s*(?:#.*)?$/);\n if (simple?.[1] && !simple[1].startsWith('{') && !/^\\s*$/.test(simple[1])) {\n const v = simple[1].trim();\n if (v && v !== 'null' && !v.includes(':')) out.add(v);\n continue;\n }\n // build:\n // context: ../lib\n if (/^\\s*build:\\s*$/.test(line) || /^\\s*build:\\s*\\{\\s*$/.test(line)) {\n for (let j = i + 1; j < Math.min(i + 8, lines.length); j++) {\n const ctx = (lines[j] ?? '').match(/^\\s*context:\\s*['\"]?([^'\"#\\s][^'\"#]*?)['\"]?\\s*(?:#.*)?$/);\n if (ctx?.[1]) {\n out.add(ctx[1].trim());\n break;\n }\n // left the build block\n if (/^\\S/.test(lines[j] ?? '') || /^\\s{0,2}\\w/.test(lines[j] ?? '')) {\n // allow nested keys with more indent\n if ((lines[j] ?? '').match(/^\\s{0,2}\\S/) && !(lines[j] ?? '').match(/^\\s{4,}/)) break;\n }\n }\n }\n }\n return [...out].sort((a, b) => a.localeCompare(b));\n}\n\n// ── Protobuf ───────────────────────────────────────────────────────────────\n\nfunction isProtoCandidate(rel: string): boolean {\n return rel.toLowerCase().endsWith('.proto');\n}\n\n// ── GraphQL ────────────────────────────────────────────────────────────────\n\nfunction isGraphqlCandidate(rel: string, raw: string): boolean {\n const lower = rel.toLowerCase();\n if (lower.endsWith('.graphql') || lower.endsWith('.gql')) return true;\n if (lower.includes('schema') && /#\\s*import\\b/.test(raw)) return true;\n return false;\n}\n\n/**\n * GraphQL import forms: `#import \"./user.graphql\"`, `#import * from \"../shared/x.graphql\"`.\n */\nexport function extractGraphqlRefs(raw: string): string[] {\n const out = new Set<string>();\n const re = /#\\s*import\\s+(?:\\*\\s+from\\s+)?[\"']([^\"']+)[\"']/g;\n let m: RegExpExecArray | null;\n while ((m = re.exec(raw)) !== null) {\n if (m[1] && !m[1].startsWith('http')) out.add(m[1]);\n }\n return [...out].sort((a, b) => a.localeCompare(b));\n}\n\n/** `import \"foo/bar.proto\";` and `import public \"…\"`. */\nexport function extractProtoImports(raw: string): string[] {\n const out = new Set<string>();\n const re = /^\\s*import\\s+(?:public\\s+|weak\\s+)?[\"']([^\"']+)[\"']\\s*;/gm;\n let m: RegExpExecArray | null;\n while ((m = re.exec(raw)) !== null) {\n if (m[1] && !m[1].startsWith('google/protobuf/')) out.add(m[1]);\n }\n return [...out].sort((a, b) => a.localeCompare(b));\n}\n\n// ── path → member ──────────────────────────────────────────────────────────\n\nfunction resolvePathToMember(\n fromRoot: string,\n relOrAbs: string,\n members: Array<{ root: string; repositoryId: string }>,\n): { root: string; repositoryId: string } | null {\n let abs: string;\n try {\n abs = path.isAbsolute(relOrAbs) ? path.resolve(relOrAbs) : path.resolve(fromRoot, relOrAbs);\n } catch {\n return null;\n }\n // Prefer the most specific (longest) member root containing the path.\n let best: { root: string; repositoryId: string } | null = null;\n for (const m of members) {\n if (abs === m.root || abs.startsWith(m.root + path.sep)) {\n if (!best || m.root.length > best.root.length) best = m;\n }\n }\n return best;\n}\n\nfunction resolveProtoImportToMember(\n fromRoot: string,\n importPath: string,\n members: Array<{ root: string; repositoryId: string }>,\n fs: InterfaceBridgeFs,\n): { root: string; repositoryId: string } | null {\n // Try relative to the importing package, then each member root as include path.\n const candidates = [\n path.resolve(fromRoot, importPath),\n ...members.map((m) => path.resolve(m.root, importPath)),\n ];\n for (const abs of candidates) {\n const hit = resolvePathToMember(fromRoot, abs, members);\n if (!hit) continue;\n // Prefer hits where the file exists under another member.\n if (fs.readFile(abs) !== null || pathIsUnder(abs, hit.root)) {\n if (hit.root !== path.resolve(fromRoot)) return hit;\n }\n }\n // Soft match: import path prefix equals a member basename (e.g. services/api/…)\n const parts = importPath.replace(/\\\\/g, '/').split('/');\n if (parts.length >= 2) {\n const prefix = parts[0]!;\n for (const m of members) {\n if (path.basename(m.root) === prefix && m.root !== path.resolve(fromRoot)) return m;\n }\n }\n return null;\n}\n\nfunction pathIsUnder(child: string, parent: string): boolean {\n const rel = path.relative(path.resolve(parent), path.resolve(child));\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));\n}\n","/**\n * Automatic workspace discovery (Fusion Runtime Phase 6).\n *\n * Finds additional package roots under a primary project without inventing\n * product names — package.json workspaces, pnpm-workspace.yaml, git\n * submodules, and VS Code `.code-workspace` folders. Pure over an injected\n * filesystem so unit tests never touch the real disk layout of the monorepo.\n *\n * Conservative: only returns paths that look like package roots (have\n * package.json or are listed explicitly). No network.\n */\n\nimport * as nodeFs from 'node:fs';\nimport * as path from 'node:path';\nimport { normalizeWorkspaceRoots, type WorkspaceRoot } from '../engine/workspace-roots.js';\n\nexport const DISCOVER_WORKSPACES_VERSION = 'discover-workspaces/0' as const;\n\nexport interface DiscoverFs {\n readFile(absPath: string): string | null;\n /** Directory entries (names only). Missing dir → []. */\n readdir(absPath: string): string[];\n isDirectory(absPath: string): boolean;\n exists(absPath: string): boolean;\n}\n\nexport type DiscoverSource =\n | 'package-workspaces'\n | 'pnpm-workspace'\n | 'git-submodule'\n | 'code-workspace'\n | 'explicit';\n\nexport interface DiscoveredRoot {\n root: string;\n label: string;\n source: DiscoverSource;\n}\n\nexport interface DiscoverWorkspacesResult {\n schemaVersion: typeof DISCOVER_WORKSPACES_VERSION;\n primaryRoot: string;\n /** Unique absolute roots including the primary. Sorted by path. */\n roots: DiscoveredRoot[];\n}\n\n/**\n * Discover workspace package roots under `primaryRoot`. Always includes the\n * primary itself as `source: 'explicit'`.\n */\nexport function discoverWorkspaceRoots(\n primaryRoot: string,\n fs: DiscoverFs,\n options: { maxDepth?: number; maxRoots?: number } = {},\n): DiscoverWorkspacesResult {\n const primary = path.resolve(primaryRoot);\n const maxDepth = options.maxDepth ?? 4;\n const maxRoots = options.maxRoots ?? 64;\n const byRoot = new Map<string, DiscoveredRoot>();\n\n const add = (abs: string, source: DiscoverSource, label?: string): void => {\n const root = path.resolve(abs);\n if (byRoot.has(root)) {\n // Prefer a more specific source label if we already have explicit.\n return;\n }\n if (byRoot.size >= maxRoots) return;\n byRoot.set(root, {\n root,\n label: label ?? (path.basename(root) || root),\n source,\n });\n };\n\n add(primary, 'explicit', path.basename(primary) || primary);\n\n // package.json \"workspaces\"\n for (const dir of expandPackageWorkspaces(primary, fs, maxDepth)) {\n add(dir, 'package-workspaces');\n }\n\n // pnpm-workspace.yaml\n for (const dir of expandPnpmWorkspace(primary, fs, maxDepth)) {\n add(dir, 'pnpm-workspace');\n }\n\n // .gitmodules\n for (const dir of expandGitSubmodules(primary, fs)) {\n add(dir, 'git-submodule');\n }\n\n // *.code-workspace next to primary or inside it\n for (const dir of expandCodeWorkspace(primary, fs)) {\n add(dir, 'code-workspace');\n }\n\n const roots = [...byRoot.values()].sort((a, b) => a.root.localeCompare(b.root));\n return {\n schemaVersion: DISCOVER_WORKSPACES_VERSION,\n primaryRoot: primary,\n roots,\n };\n}\n\n/** Convert discovery result into normalizeWorkspaceRoots-compatible paths. */\nexport function discoveredToWorkspaceRoots(result: DiscoverWorkspacesResult): WorkspaceRoot[] {\n return normalizeWorkspaceRoots(\n result.roots.map((r) => r.root),\n result.primaryRoot,\n );\n}\n\n// ── expanders ──────────────────────────────────────────────────────────────\n\nfunction expandPackageWorkspaces(primary: string, fs: DiscoverFs, maxDepth: number): string[] {\n const pkgPath = path.join(primary, 'package.json');\n const raw = fs.readFile(pkgPath);\n if (!raw) return [];\n let pkg: { workspaces?: unknown };\n try {\n pkg = JSON.parse(raw) as { workspaces?: unknown };\n } catch {\n return [];\n }\n const patterns = workspacePatterns(pkg.workspaces);\n return expandGlobPatterns(primary, patterns, fs, maxDepth);\n}\n\nfunction workspacePatterns(workspaces: unknown): string[] {\n if (Array.isArray(workspaces)) {\n return workspaces.filter((p): p is string => typeof p === 'string' && p.trim().length > 0);\n }\n if (workspaces && typeof workspaces === 'object' && Array.isArray((workspaces as { packages?: unknown }).packages)) {\n return ((workspaces as { packages: unknown[] }).packages).filter(\n (p): p is string => typeof p === 'string' && p.trim().length > 0,\n );\n }\n return [];\n}\n\nfunction expandPnpmWorkspace(primary: string, fs: DiscoverFs, maxDepth: number): string[] {\n const raw = fs.readFile(path.join(primary, 'pnpm-workspace.yaml'));\n if (!raw) return [];\n const patterns: string[] = [];\n // Minimal YAML: lines under `packages:` that look like ` - 'packages/*'`\n let inPackages = false;\n for (const line of raw.split(/\\r?\\n/)) {\n if (/^packages\\s*:/.test(line)) {\n inPackages = true;\n continue;\n }\n if (inPackages) {\n if (/^\\S/.test(line) && !/^\\s/.test(line)) break; // next top-level key\n const m = line.match(/^\\s*-\\s*['\"]?([^'\"]+)['\"]?\\s*$/);\n if (m?.[1]) patterns.push(m[1].trim());\n }\n }\n return expandGlobPatterns(primary, patterns, fs, maxDepth);\n}\n\nfunction expandGitSubmodules(primary: string, fs: DiscoverFs): string[] {\n const raw = fs.readFile(path.join(primary, '.gitmodules'));\n if (!raw) return [];\n const out: string[] = [];\n for (const line of raw.split(/\\r?\\n/)) {\n const m = line.match(/^\\s*path\\s*=\\s*(.+)\\s*$/);\n if (!m?.[1]) continue;\n const abs = path.resolve(primary, m[1].trim());\n if (fs.exists(abs) && fs.isDirectory(abs)) out.push(abs);\n }\n return out.sort((a, b) => a.localeCompare(b));\n}\n\nfunction expandCodeWorkspace(primary: string, fs: DiscoverFs): string[] {\n const out: string[] = [];\n const candidates = [\n ...fs.readdir(primary).filter((n) => n.endsWith('.code-workspace')).map((n) => path.join(primary, n)),\n ];\n // Also accept a single workspace file named after the folder.\n for (const file of candidates) {\n const raw = fs.readFile(file);\n if (!raw) continue;\n let doc: { folders?: Array<{ path?: string; name?: string }> };\n try {\n doc = JSON.parse(raw) as { folders?: Array<{ path?: string; name?: string }> };\n } catch {\n continue;\n }\n const base = path.dirname(file);\n for (const folder of doc.folders ?? []) {\n if (typeof folder.path !== 'string' || !folder.path.trim()) continue;\n const abs = path.resolve(base, folder.path.trim());\n if (fs.exists(abs) && fs.isDirectory(abs)) out.push(abs);\n }\n }\n return out.sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Expand simple workspace globs (star segments, double-star walk, or exact\n * relative paths). No full micromatch — keep deterministic and dependency-free.\n */\nfunction expandGlobPatterns(\n primary: string,\n patterns: string[],\n fs: DiscoverFs,\n maxDepth: number,\n): string[] {\n const out = new Set<string>();\n for (const pattern of patterns) {\n const p = pattern.replace(/\\\\/g, '/').replace(/^\\.\\//, '');\n if (!p || p.startsWith('..')) continue; // never climb out via pattern\n if (p.includes('*')) {\n for (const hit of expandSimpleGlob(primary, p, fs, maxDepth)) {\n if (looksLikePackageRoot(hit, fs)) out.add(hit);\n }\n } else {\n const abs = path.resolve(primary, p);\n if (fs.exists(abs) && fs.isDirectory(abs) && looksLikePackageRoot(abs, fs)) out.add(abs);\n }\n }\n return [...out].sort((a, b) => a.localeCompare(b));\n}\n\nfunction expandSimpleGlob(primary: string, pattern: string, fs: DiscoverFs, maxDepth: number): string[] {\n // Support: packages/*, packages/*/*, apps/**\n const parts = pattern.split('/').filter(Boolean);\n let currents = [primary];\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i]!;\n const next: string[] = [];\n const isLast = i === parts.length - 1;\n for (const cur of currents) {\n if (part === '**') {\n // One-level recursive: all dirs up to maxDepth from cur.\n for (const d of walkDirs(cur, fs, Math.min(maxDepth, 3))) next.push(d);\n continue;\n }\n if (part === '*') {\n for (const name of fs.readdir(cur)) {\n // Never expand into agent worktrees / hidden tool dirs.\n if (name.startsWith('.')) continue;\n const abs = path.join(cur, name);\n if (fs.isDirectory(abs)) next.push(abs);\n }\n continue;\n }\n const abs = path.join(cur, part);\n if (fs.exists(abs) && (isLast ? fs.isDirectory(abs) || fs.exists(abs) : fs.isDirectory(abs))) {\n next.push(abs);\n }\n }\n currents = next;\n if (!currents.length) break;\n }\n return currents.filter((d) => fs.isDirectory(d));\n}\n\nfunction walkDirs(root: string, fs: DiscoverFs, depth: number): string[] {\n if (depth <= 0) return [];\n const out: string[] = [];\n for (const name of fs.readdir(root)) {\n if (name.startsWith('.') || name === 'node_modules' || name === 'dist' || name === 'build') continue;\n const abs = path.join(root, name);\n if (!fs.isDirectory(abs)) continue;\n out.push(abs);\n out.push(...walkDirs(abs, fs, depth - 1));\n }\n return out;\n}\n\nfunction looksLikePackageRoot(dir: string, fs: DiscoverFs): boolean {\n return fs.exists(path.join(dir, 'package.json'));\n}\n\n/** Node fs adapter for production callers. */\nexport function nodeDiscoverFs(): DiscoverFs {\n return {\n readFile(absPath) {\n try {\n return nodeFs.readFileSync(absPath, 'utf8');\n } catch {\n return null;\n }\n },\n readdir(absPath) {\n try {\n return nodeFs.readdirSync(absPath).sort((a, b) => a.localeCompare(b));\n } catch {\n return [];\n }\n },\n isDirectory(absPath) {\n try {\n return nodeFs.statSync(absPath).isDirectory();\n } catch {\n return false;\n }\n },\n exists(absPath) {\n try {\n return nodeFs.existsSync(absPath);\n } catch {\n return false;\n }\n },\n };\n}\n","/**\n * Federated workspaces (Fusion Runtime Phase 6 foundation).\n *\n * A federation is a primary repository plus zero or more member roots that\n * share a local vgd session. Layout is declared in `.vibgrate/federation.json`\n * so multi-repo monorepos and sibling packages can register together without\n * inventing product names. When no file exists, {@link loadOrDiscoverFederation}\n * auto-discovers package workspaces / pnpm / submodules / `.code-workspace`\n * and attaches conservative package-dependency bridge edges.\n *\n * Schema: federation/0\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { repositoryIdFromRoot, globalGraphPath, globalGraphPathForRef } from './paths.js';\nimport { detectGitRef } from './git-ref.js';\nimport { isSkippedDirName } from '../engine/discover.js';\nimport { normalizeWorkspaceRoots } from '../engine/workspace-roots.js';\nimport {\n discoverBridgeEdges,\n highConfidenceBridges,\n parsePackageManifest,\n type BridgeEdge,\n} from './bridge-edges.js';\nimport { discoverInterfaceBridges } from './interface-bridges.js';\nimport { discoverWorkspaceRoots, nodeDiscoverFs, type DiscoverFs } from './discover-workspaces.js';\n\nexport const FEDERATION_SCHEMA_VERSION = 'federation/0' as const;\n\nexport type FederationMemberRole = 'primary' | 'member';\n\nexport interface FederationMember {\n /** Absolute root path. */\n root: string;\n /** Optional human label (folder name by default). */\n label: string;\n role: FederationMemberRole;\n repositoryId: string;\n graphPath: string;\n}\n\nexport interface FederatedWorkspace {\n schemaVersion: typeof FEDERATION_SCHEMA_VERSION;\n /** Absolute path of the primary root (where the federation file lives). */\n primaryRoot: string;\n members: FederationMember[];\n /**\n * Cross-member package dependency bridges (optional). High-stakes capsules\n * should prefer {@link highConfidenceBridges} only.\n */\n bridges?: BridgeEdge[];\n}\n\nexport interface FederationFile {\n schemaVersion?: string;\n members?: Array<{ root?: string; label?: string; role?: string }>;\n bridges?: BridgeEdge[];\n}\n\n/**\n * Load `.vibgrate/federation.json` under `primaryRoot`, or synthesize a\n * single-member federation for the primary alone.\n */\nexport function loadFederation(primaryRoot: string, options: { requireFile?: boolean } = {}): FederatedWorkspace | null {\n const primary = path.resolve(primaryRoot);\n const file = federationPath(primary);\n if (!fs.existsSync(file)) {\n if (options.requireFile) return null;\n return singleMemberFederation(primary);\n }\n let raw: FederationFile;\n try {\n raw = JSON.parse(fs.readFileSync(file, 'utf8')) as FederationFile;\n } catch {\n return null;\n }\n return parseFederationFile(primary, raw);\n}\n\n/**\n * Load federation.json when present; otherwise auto-discover workspace package\n * roots and package-dependency bridges. Prefer this for host UIs / `vg code`\n * session start so monorepos work without a hand-written federation file.\n */\nexport function loadOrDiscoverFederation(\n primaryRoot: string,\n options: { discoverFs?: DiscoverFs; minBridgeConfidence?: number } = {},\n): FederatedWorkspace {\n const primary = path.resolve(primaryRoot);\n const existing = loadFederation(primary, { requireFile: true });\n if (existing) {\n // File wins for membership; still compute bridges if absent.\n if (!existing.bridges?.length) {\n existing.bridges = bridgesForMembers(existing.members, options.minBridgeConfidence);\n }\n return existing;\n }\n\n const dfs = options.discoverFs ?? nodeDiscoverFs();\n const discovered = discoverWorkspaceRoots(primary, dfs);\n const roots = discovered.roots.map((r) => r.root);\n const fed = federationFromWorkspaceRoots(roots, { preferredPrimary: primary });\n fed.bridges = bridgesForMembers(fed.members, options.minBridgeConfidence);\n return fed;\n}\n\nfunction bridgesForMembers(members: FederationMember[], minConfidence = 0.5): BridgeEdge[] {\n const memberRefs = members.map((m) => ({ root: m.root, repositoryId: m.repositoryId }));\n const pkgEdges = discoverBridgeEdges(\n memberRefs,\n (root) => {\n try {\n const raw = fs.readFileSync(path.join(root, 'package.json'), 'utf8');\n return parsePackageManifest(raw);\n } catch {\n return null;\n }\n },\n { minConfidence },\n );\n const ifaceEdges = discoverInterfaceBridges(\n memberRefs,\n {\n readFile(absPath) {\n try {\n return fs.readFileSync(absPath, 'utf8');\n } catch {\n return null;\n }\n },\n readdir(absPath) {\n try {\n return fs.readdirSync(absPath).sort((a, b) => a.localeCompare(b));\n } catch {\n return [];\n }\n },\n isDirectory(absPath) {\n try {\n return fs.statSync(absPath).isDirectory();\n } catch {\n return false;\n }\n },\n },\n { minConfidence },\n );\n // Merge package + interface bridges; stable unique by from/to/kind/evidence.\n const seen = new Set<string>();\n const out: BridgeEdge[] = [];\n for (const e of [...pkgEdges, ...ifaceEdges].sort(\n (a, b) =>\n a.fromRoot.localeCompare(b.fromRoot) ||\n a.toRoot.localeCompare(b.toRoot) ||\n a.kind.localeCompare(b.kind) ||\n a.evidence.localeCompare(b.evidence),\n )) {\n const key = `${e.fromRepositoryId}|${e.toRepositoryId}|${e.kind}|${e.evidence}`;\n if (seen.has(key)) continue;\n seen.add(key);\n out.push(e);\n }\n return out;\n}\n\nexport { highConfidenceBridges, type BridgeEdge };\n\nexport function federationPath(primaryRoot: string): string {\n return path.join(path.resolve(primaryRoot), '.vibgrate', 'federation.json');\n}\n\nexport function singleMemberFederation(primaryRoot: string): FederatedWorkspace {\n const primary = path.resolve(primaryRoot);\n const [ws] = normalizeWorkspaceRoots([primary], primary);\n return {\n schemaVersion: FEDERATION_SCHEMA_VERSION,\n primaryRoot: primary,\n members: [\n memberFromRoot(ws?.root ?? primary, 'primary', ws?.label ?? (path.basename(primary) || primary)),\n ],\n };\n}\n\nexport function parseFederationFile(primaryRoot: string, raw: FederationFile): FederatedWorkspace | null {\n const primary = path.resolve(primaryRoot);\n if (!raw || typeof raw !== 'object') return null;\n const list = Array.isArray(raw.members) ? raw.members : [];\n if (!list.length) return singleMemberFederation(primary);\n\n const members: FederationMember[] = [];\n const seen = new Set<string>();\n let hasPrimary = false;\n\n for (const entry of list) {\n if (!entry || typeof entry.root !== 'string' || !entry.root.trim()) continue;\n const abs = path.resolve(primary, entry.root.trim());\n if (isNestedAgentWorktree(abs, primary)) continue;\n const id = repositoryIdFromRoot(abs);\n if (seen.has(id)) continue;\n seen.add(id);\n const role: FederationMemberRole = entry.role === 'primary' || abs === primary ? 'primary' : 'member';\n if (role === 'primary') hasPrimary = true;\n members.push(memberFromRoot(abs, role, typeof entry.label === 'string' && entry.label.trim() ? entry.label.trim() : path.basename(abs) || abs));\n }\n\n if (!members.length) return singleMemberFederation(primary);\n if (!hasPrimary) {\n // Ensure the primary root is present and marked primary.\n const id = repositoryIdFromRoot(primary);\n if (!seen.has(id)) {\n members.unshift(memberFromRoot(primary, 'primary', path.basename(primary) || primary));\n } else {\n const existing = members.find((m) => m.repositoryId === id);\n if (existing) existing.role = 'primary';\n }\n }\n\n members.sort((a, b) => {\n if (a.role !== b.role) return a.role === 'primary' ? -1 : 1;\n return a.root.localeCompare(b.root);\n });\n\n const fed: FederatedWorkspace = {\n schemaVersion: FEDERATION_SCHEMA_VERSION,\n primaryRoot: primary,\n members,\n };\n if (Array.isArray(raw.bridges) && raw.bridges.length) {\n fed.bridges = raw.bridges\n .filter((b) => b && typeof b === 'object' && typeof b.fromRoot === 'string' && typeof b.toRoot === 'string')\n .map((b) => ({\n ...b,\n fromRoot: path.resolve(primary, b.fromRoot),\n toRoot: path.resolve(primary, b.toRoot),\n }));\n }\n return fed;\n}\n\n/** True when `abs` sits under a hidden agent/tool dir of `primaryRoot`. */\nexport function isNestedAgentWorktree(abs: string, primaryRoot: string): boolean {\n const rel = path.relative(path.resolve(primaryRoot), path.resolve(abs));\n if (!rel || rel === '.') return false;\n return rel.split(/[/\\\\]/).filter(Boolean).some((p) => isSkippedDirName(p));\n}\n\nfunction memberFromRoot(root: string, role: FederationMemberRole, label: string): FederationMember {\n const git = detectGitRef(root);\n const graphPath = git.kind !== 'none' && git.ref ? globalGraphPathForRef(root, git.ref) : globalGraphPath(root);\n return {\n root,\n label,\n role,\n repositoryId: repositoryIdFromRoot(root),\n graphPath,\n };\n}\n\n/**\n * Build a federation from an explicit list of workspace folder paths (e.g. VS\n * Code multi-root `workspaceFolders`). First root (or `preferredPrimary`) is\n * primary; remaining roots are members. Pure over path math + git-ref detect.\n */\nexport function federationFromWorkspaceRoots(\n roots: string[],\n options: { preferredPrimary?: string } = {},\n): FederatedWorkspace {\n const normalized = normalizeWorkspaceRoots(roots, options.preferredPrimary ?? roots[0] ?? process.cwd());\n if (!normalized.length) {\n const fallback = path.resolve(options.preferredPrimary ?? process.cwd());\n return singleMemberFederation(fallback);\n }\n const preferred = options.preferredPrimary?.trim()\n ? path.resolve(options.preferredPrimary.trim())\n : normalized[0]!.root;\n const primaryHit =\n normalized.find((r) => r.root === preferred) ??\n normalized.find((r) => r.id === repositoryIdFromRoot(preferred)) ??\n normalized[0]!;\n const primaryRoot = primaryHit.root;\n const members: FederationMember[] = normalized\n .filter((ws) => !isNestedAgentWorktree(ws.root, primaryRoot))\n .map((ws) =>\n memberFromRoot(ws.root, ws.root === primaryRoot ? 'primary' : 'member', ws.label),\n );\n members.sort((a, b) => {\n if (a.role !== b.role) return a.role === 'primary' ? -1 : 1;\n return a.root.localeCompare(b.root);\n });\n return {\n schemaVersion: FEDERATION_SCHEMA_VERSION,\n primaryRoot,\n members,\n };\n}\n\n/**\n * Persist a federation under `primaryRoot/.vibgrate/federation.json`.\n * Returns the absolute path written. Creates `.vibgrate/` as needed.\n */\nexport function writeFederationFile(primaryRoot: string, federation: FederatedWorkspace): string {\n const primary = path.resolve(primaryRoot);\n const file = federationPath(primary);\n fs.mkdirSync(path.dirname(file), { recursive: true });\n const body: FederationFile = {\n schemaVersion: FEDERATION_SCHEMA_VERSION,\n members: federation.members.map((m) => ({\n // Prefer path relative to primary when possible so the file is portable.\n root: path.relative(primary, m.root) || '.',\n label: m.label,\n role: m.role,\n })),\n };\n if (federation.bridges?.length) {\n // Persist portable roots for bridges (relative to primary when possible).\n body.bridges = federation.bridges.map((b) => ({\n ...b,\n fromRoot: path.relative(primary, b.fromRoot) || '.',\n toRoot: path.relative(primary, b.toRoot) || '.',\n }));\n }\n fs.writeFileSync(file, `${JSON.stringify(body, null, 2)}\\n`, 'utf8');\n return file;\n}\n"]}
|
|
@@ -917,7 +917,7 @@ var LocalLlamaProvider = class _LocalLlamaProvider {
|
|
|
917
917
|
acquireHostSession,
|
|
918
918
|
generateOnSession,
|
|
919
919
|
evictIdleSessions
|
|
920
|
-
} = await import('./llm-host-
|
|
920
|
+
} = await import('./llm-host-QVTJJVER.js');
|
|
921
921
|
const isolation = resolveInferenceIsolation(this.isolation);
|
|
922
922
|
try {
|
|
923
923
|
const chatMessages = messages.map((m) => ({
|
|
@@ -1005,5 +1005,5 @@ var LocalLlamaProvider = class _LocalLlamaProvider {
|
|
|
1005
1005
|
};
|
|
1006
1006
|
|
|
1007
1007
|
export { LocalLlamaProvider, MockProvider, OPENAI_COMPATIBLE, OllamaProvider, OpenAiCompatibleProvider, ScriptedProvider, applyEdit, applyEdits, buildAgentMessages, buildMessages, parseEdits, parseReasoningEffort, redactSecrets, summarizeDiffs, unifiedDiff };
|
|
1008
|
-
//# sourceMappingURL=chunk-
|
|
1009
|
-
//# sourceMappingURL=chunk-
|
|
1008
|
+
//# sourceMappingURL=chunk-SHD5TCZ5.js.map
|
|
1009
|
+
//# sourceMappingURL=chunk-SHD5TCZ5.js.map
|