@vibgrate/cli 2026.818.2 → 2026.819.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agent-X6VYCE63.js → agent-3CKNTCRX.js} +12 -12
- package/dist/{agent-X6VYCE63.js.map → agent-3CKNTCRX.js.map} +1 -1
- package/dist/{approvals-TPQFQSWG.js → approvals-DHTG3HI4.js} +5 -5
- package/dist/{approvals-TPQFQSWG.js.map → approvals-DHTG3HI4.js.map} +1 -1
- package/dist/{attach-G5JUIWIT.js → attach-OCQ3I76L.js} +3 -3
- package/dist/{attach-G5JUIWIT.js.map → attach-OCQ3I76L.js.map} +1 -1
- package/dist/baseline-QDC6OQ2X.js +9 -0
- package/dist/{baseline-DXI64VLW.js.map → baseline-QDC6OQ2X.js.map} +1 -1
- package/dist/{chunk-NJQZRM55.js → chunk-4VAA2XSM.js} +3 -3
- package/dist/{chunk-NJQZRM55.js.map → chunk-4VAA2XSM.js.map} +1 -1
- package/dist/{chunk-YF54UMOU.js → chunk-5O6O7DJH.js} +3 -3
- package/dist/{chunk-YF54UMOU.js.map → chunk-5O6O7DJH.js.map} +1 -1
- package/dist/{chunk-6ABMV74F.js → chunk-5XY4EFR7.js} +4 -4
- package/dist/{chunk-6ABMV74F.js.map → chunk-5XY4EFR7.js.map} +1 -1
- package/dist/{chunk-MRZHNUN7.js → chunk-6F52QR6F.js} +4 -4
- package/dist/{chunk-MRZHNUN7.js.map → chunk-6F52QR6F.js.map} +1 -1
- package/dist/{chunk-ZUOBPKVK.js → chunk-D33M2ARL.js} +3 -3
- package/dist/{chunk-ZUOBPKVK.js.map → chunk-D33M2ARL.js.map} +1 -1
- package/dist/{chunk-X2MQ7UFL.js → chunk-D44PGMH7.js} +9 -9
- package/dist/{chunk-X2MQ7UFL.js.map → chunk-D44PGMH7.js.map} +1 -1
- package/dist/chunk-DHU3OOEI.js +6 -0
- package/dist/{chunk-4NTNMT6T.js.map → chunk-DHU3OOEI.js.map} +1 -1
- package/dist/{chunk-BMOFJIMG.js → chunk-EI5AKDSC.js} +3 -3
- package/dist/{chunk-BMOFJIMG.js.map → chunk-EI5AKDSC.js.map} +1 -1
- package/dist/{chunk-AEJYA6HZ.js → chunk-EIESBKLW.js} +5 -5
- package/dist/{chunk-AEJYA6HZ.js.map → chunk-EIESBKLW.js.map} +1 -1
- package/dist/{chunk-B4EXD5LK.js → chunk-EMEMHNE3.js} +9 -7
- package/dist/chunk-EMEMHNE3.js.map +1 -0
- package/dist/{chunk-VQ5KMHW6.js → chunk-F46Q3AEI.js} +7 -7
- package/dist/{chunk-VQ5KMHW6.js.map → chunk-F46Q3AEI.js.map} +1 -1
- package/dist/{chunk-VMAIDM4K.js → chunk-FFY6NW7P.js} +3 -3
- package/dist/{chunk-VMAIDM4K.js.map → chunk-FFY6NW7P.js.map} +1 -1
- package/dist/{chunk-PRHH4DVO.js → chunk-FQVAQVJV.js} +3 -3
- package/dist/{chunk-PRHH4DVO.js.map → chunk-FQVAQVJV.js.map} +1 -1
- package/dist/{chunk-E3O5UKNA.js → chunk-JGBOYZAF.js} +7 -7
- package/dist/{chunk-E3O5UKNA.js.map → chunk-JGBOYZAF.js.map} +1 -1
- package/dist/{chunk-L2OS4WHT.js → chunk-KFEM6FWP.js} +4 -4
- package/dist/{chunk-L2OS4WHT.js.map → chunk-KFEM6FWP.js.map} +1 -1
- package/dist/{chunk-RHKOUPWT.js → chunk-KKQX3F5F.js} +3 -3
- package/dist/{chunk-RHKOUPWT.js.map → chunk-KKQX3F5F.js.map} +1 -1
- package/dist/{chunk-V6WONSIK.js → chunk-NWWLUFN5.js} +3 -3
- package/dist/{chunk-V6WONSIK.js.map → chunk-NWWLUFN5.js.map} +1 -1
- package/dist/{chunk-KU7FI5EV.js → chunk-O5ASXWKF.js} +3 -3
- package/dist/{chunk-KU7FI5EV.js.map → chunk-O5ASXWKF.js.map} +1 -1
- package/dist/{chunk-V2UGRUTL.js → chunk-OQT3JBWW.js} +11 -11
- package/dist/{chunk-V2UGRUTL.js.map → chunk-OQT3JBWW.js.map} +1 -1
- package/dist/{chunk-NG4KIJW6.js → chunk-PVNALGTG.js} +10 -6
- package/dist/chunk-PVNALGTG.js.map +1 -0
- package/dist/{chunk-2C33WR5O.js → chunk-QMRSCJUN.js} +3 -3
- package/dist/{chunk-2C33WR5O.js.map → chunk-QMRSCJUN.js.map} +1 -1
- package/dist/{chunk-NKLYDSB7.js → chunk-QSLVOVNZ.js} +8 -8
- package/dist/{chunk-NKLYDSB7.js.map → chunk-QSLVOVNZ.js.map} +1 -1
- package/dist/{chunk-6PFHDHOL.js → chunk-TS25WFAT.js} +16 -14
- package/dist/chunk-TS25WFAT.js.map +1 -0
- package/dist/{chunk-5I4VSBWQ.js → chunk-TS7STRMI.js} +370 -111
- package/dist/chunk-TS7STRMI.js.map +1 -0
- package/dist/{chunk-FFXGWFAE.js → chunk-U7A7D2HP.js} +3 -3
- package/dist/{chunk-FFXGWFAE.js.map → chunk-U7A7D2HP.js.map} +1 -1
- package/dist/{chunk-O5IJDMTB.js → chunk-VYSDR2QE.js} +3 -3
- package/dist/{chunk-O5IJDMTB.js.map → chunk-VYSDR2QE.js.map} +1 -1
- package/dist/{chunk-JGA63RGF.js → chunk-WJYJCDNY.js} +11 -11
- package/dist/{chunk-JGA63RGF.js.map → chunk-WJYJCDNY.js.map} +1 -1
- package/dist/{chunk-HF6R73UC.js → chunk-YIEP5GK5.js} +22 -12
- package/dist/chunk-YIEP5GK5.js.map +1 -0
- package/dist/cli.js +61 -67
- package/dist/cli.js.map +1 -1
- package/dist/{daemon-GUMWMKCA.js → daemon-UNL65PTP.js} +10 -11
- package/dist/{daemon-GUMWMKCA.js.map → daemon-UNL65PTP.js.map} +1 -1
- package/dist/embed-worker-main.js +3 -3
- package/dist/{ensure-map-FHDJTO7Y.js → ensure-map-4D2HJ6MA.js} +17 -18
- package/dist/{ensure-map-FHDJTO7Y.js.map → ensure-map-4D2HJ6MA.js.map} +1 -1
- package/dist/federation-SZYVHYB2.js +8 -0
- package/dist/{federation-MDQPO3PW.js.map → federation-SZYVHYB2.js.map} +1 -1
- package/dist/fs-FO3NQHPT.js +4 -0
- package/dist/fs-FO3NQHPT.js.map +1 -0
- package/dist/{graph-backend-W2D3HRRD.js → graph-backend-36EIAAPQ.js} +7 -7
- package/dist/{graph-backend-W2D3HRRD.js.map → graph-backend-36EIAAPQ.js.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +17 -18
- package/dist/index.js.map +1 -1
- package/dist/{interactive-2MK4TLRD.js → interactive-ZZMHSZ3W.js} +27 -28
- package/dist/interactive-ZZMHSZ3W.js.map +1 -0
- package/dist/load-6CYLMUT5.js +11 -0
- package/dist/{load-4R4HYMBB.js.map → load-6CYLMUT5.js.map} +1 -1
- package/dist/parse-worker.js +2 -2
- package/dist/{run-outcome-H5GVDDZJ.js → run-outcome-ADEAKXHH.js} +5 -5
- package/dist/{run-outcome-H5GVDDZJ.js.map → run-outcome-ADEAKXHH.js.map} +1 -1
- package/dist/{runtime-session-JBIHHH5N.js → runtime-session-VNSXQAEO.js} +10 -11
- package/dist/{runtime-session-JBIHHH5N.js.map → runtime-session-VNSXQAEO.js.map} +1 -1
- package/dist/{session-N5IU4K5Q.js → session-3A6LKJHD.js} +8 -8
- package/dist/{session-N5IU4K5Q.js.map → session-3A6LKJHD.js.map} +1 -1
- package/dist/{stream-json-4WLSUF6I.js → stream-json-S2TP2VPU.js} +12 -12
- package/dist/{stream-json-4WLSUF6I.js.map → stream-json-S2TP2VPU.js.map} +1 -1
- package/dist/version-SZI6I3A2.js +4 -0
- package/dist/{version-DTEU3SQD.js.map → version-SZI6I3A2.js.map} +1 -1
- package/dist/{vg-mcp-bridge-KDVYIMFX.js → vg-mcp-bridge-IIBEAOEB.js} +12 -11
- package/dist/vg-mcp-bridge-IIBEAOEB.js.map +1 -0
- package/dist/{vgd-M7UOPWLB.js → vgd-KGXIKGOS.js} +9 -10
- package/dist/vgd-KGXIKGOS.js.map +1 -0
- package/package.json +1 -1
- 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-B4EXD5LK.js.map +0 -1
- package/dist/chunk-HF6R73UC.js.map +0 -1
- package/dist/chunk-NG4KIJW6.js.map +0 -1
- package/dist/chunk-POOL355F.js +0 -237
- package/dist/chunk-POOL355F.js.map +0 -1
- package/dist/federation-MDQPO3PW.js +0 -7
- package/dist/fs-TLPOWC2D.js +0 -4
- package/dist/fs-TLPOWC2D.js.map +0 -1
- package/dist/interactive-2MK4TLRD.js.map +0 -1
- package/dist/load-4R4HYMBB.js +0 -11
- 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
package/dist/chunk-POOL355F.js
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import { langById, langForExtension } from './chunk-6WRG7VDO.js';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import ignore from 'ignore';
|
|
5
|
-
|
|
6
|
-
var SKIP_DIRS = /* @__PURE__ */ new Set([
|
|
7
|
-
// Version control, IDE & tool metadata
|
|
8
|
-
".git",
|
|
9
|
-
".svn",
|
|
10
|
-
".hg",
|
|
11
|
-
".idea",
|
|
12
|
-
".vscode",
|
|
13
|
-
".vs",
|
|
14
|
-
// Claude Code agent state / worktrees (full monorepo copies under .claude/worktrees/)
|
|
15
|
-
".claude",
|
|
16
|
-
".vibgrate",
|
|
17
|
-
".wrangler",
|
|
18
|
-
".turbo",
|
|
19
|
-
".cache",
|
|
20
|
-
// Migration / tool backup trees (NativeScript, codemods, agent worktrees)
|
|
21
|
-
".migration_backup",
|
|
22
|
-
".update_backup",
|
|
23
|
-
".backup",
|
|
24
|
-
".bak",
|
|
25
|
-
".history",
|
|
26
|
-
".snapshots",
|
|
27
|
-
".snapshots_bak",
|
|
28
|
-
// JavaScript / Node — installed dependency trees
|
|
29
|
-
"node_modules",
|
|
30
|
-
"bower_components",
|
|
31
|
-
"jspm_packages",
|
|
32
|
-
"web_modules",
|
|
33
|
-
".pnpm-store",
|
|
34
|
-
".yarn",
|
|
35
|
-
// JS/TS meta-framework & bundler build output
|
|
36
|
-
".next",
|
|
37
|
-
".nuxt",
|
|
38
|
-
".output",
|
|
39
|
-
".svelte-kit",
|
|
40
|
-
".astro",
|
|
41
|
-
".vercel",
|
|
42
|
-
".netlify",
|
|
43
|
-
".angular",
|
|
44
|
-
".parcel-cache",
|
|
45
|
-
".docusaurus",
|
|
46
|
-
"storybook-static",
|
|
47
|
-
// Generic build / dist / coverage output
|
|
48
|
-
"dist",
|
|
49
|
-
"build",
|
|
50
|
-
"out",
|
|
51
|
-
"coverage",
|
|
52
|
-
// Native mobile platform build trees (NativeScript / Cordova / Capacitor)
|
|
53
|
-
"platforms",
|
|
54
|
-
"App_Resources",
|
|
55
|
-
// Vendored third-party source trees
|
|
56
|
-
"vendor",
|
|
57
|
-
"Pods",
|
|
58
|
-
"Carthage",
|
|
59
|
-
// Python — virtualenvs & tool caches
|
|
60
|
-
".venv",
|
|
61
|
-
"venv",
|
|
62
|
-
"virtualenv",
|
|
63
|
-
".tox",
|
|
64
|
-
".nox",
|
|
65
|
-
"__pycache__",
|
|
66
|
-
".mypy_cache",
|
|
67
|
-
".pytest_cache",
|
|
68
|
-
".ruff_cache",
|
|
69
|
-
".eggs",
|
|
70
|
-
".ipynb_checkpoints",
|
|
71
|
-
// Ruby
|
|
72
|
-
".bundle",
|
|
73
|
-
// Rust / Maven / sbt / Clojure — all build into target/
|
|
74
|
-
"target",
|
|
75
|
-
// JVM (Gradle / Maven) & .NET build output
|
|
76
|
-
".gradle",
|
|
77
|
-
"bin",
|
|
78
|
-
"obj",
|
|
79
|
-
"TestResults",
|
|
80
|
-
// Swift / Xcode
|
|
81
|
-
".build",
|
|
82
|
-
".swiftpm",
|
|
83
|
-
"DerivedData",
|
|
84
|
-
// Dart / Flutter
|
|
85
|
-
".dart_tool",
|
|
86
|
-
// Elixir / Erlang
|
|
87
|
-
"_build",
|
|
88
|
-
"deps",
|
|
89
|
-
// Haskell (Cabal / Stack)
|
|
90
|
-
"dist-newstyle",
|
|
91
|
-
".stack-work",
|
|
92
|
-
// Infrastructure-as-code build/state
|
|
93
|
-
".terraform",
|
|
94
|
-
".serverless",
|
|
95
|
-
"cdk.out",
|
|
96
|
-
".aws-sam"
|
|
97
|
-
]);
|
|
98
|
-
function isSkippedDirName(name) {
|
|
99
|
-
if (!name) return false;
|
|
100
|
-
if (SKIP_DIRS.has(name)) return true;
|
|
101
|
-
if (name.startsWith(".venv") || name.startsWith("venv-")) return true;
|
|
102
|
-
if (name === "site-packages") return true;
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
var SKIP_FILES = /* @__PURE__ */ new Set([
|
|
106
|
-
// JavaScript / Node
|
|
107
|
-
"package-lock.json",
|
|
108
|
-
"npm-shrinkwrap.json",
|
|
109
|
-
"yarn.lock",
|
|
110
|
-
"pnpm-lock.yaml",
|
|
111
|
-
"bun.lockb",
|
|
112
|
-
"bun.lock",
|
|
113
|
-
"deno.lock",
|
|
114
|
-
".pnp.cjs",
|
|
115
|
-
".pnp.data.json",
|
|
116
|
-
".pnp.loader.mjs",
|
|
117
|
-
// Python
|
|
118
|
-
"poetry.lock",
|
|
119
|
-
"pipfile.lock",
|
|
120
|
-
"pdm.lock",
|
|
121
|
-
"uv.lock",
|
|
122
|
-
"pylock.toml",
|
|
123
|
-
"conda-lock.yml",
|
|
124
|
-
// Ruby
|
|
125
|
-
"gemfile.lock",
|
|
126
|
-
// PHP
|
|
127
|
-
"composer.lock",
|
|
128
|
-
// Rust
|
|
129
|
-
"cargo.lock",
|
|
130
|
-
// Go
|
|
131
|
-
"go.sum",
|
|
132
|
-
"go.work.sum",
|
|
133
|
-
"gopkg.lock",
|
|
134
|
-
"glide.lock",
|
|
135
|
-
// .NET
|
|
136
|
-
"packages.lock.json",
|
|
137
|
-
// Java / JVM (Gradle)
|
|
138
|
-
"gradle.lockfile",
|
|
139
|
-
// Swift / Xcode
|
|
140
|
-
"package.resolved",
|
|
141
|
-
// Dart / Flutter
|
|
142
|
-
"pubspec.lock",
|
|
143
|
-
// Elixir
|
|
144
|
-
"mix.lock",
|
|
145
|
-
// Haskell (Cabal / Stack)
|
|
146
|
-
"cabal.project.freeze",
|
|
147
|
-
"stack.yaml.lock",
|
|
148
|
-
// Julia
|
|
149
|
-
"manifest.toml",
|
|
150
|
-
// R
|
|
151
|
-
"renv.lock",
|
|
152
|
-
// Perl (Carton)
|
|
153
|
-
"cpanfile.snapshot",
|
|
154
|
-
// CocoaPods / Carthage
|
|
155
|
-
"podfile.lock",
|
|
156
|
-
"cartfile.resolved",
|
|
157
|
-
// Terraform / IaC
|
|
158
|
-
".terraform.lock.hcl",
|
|
159
|
-
// Helm
|
|
160
|
-
"chart.lock",
|
|
161
|
-
// C / C++ (Conan)
|
|
162
|
-
"conan.lock",
|
|
163
|
-
// Bazel
|
|
164
|
-
"module.bazel.lock",
|
|
165
|
-
// Nix
|
|
166
|
-
"flake.lock"
|
|
167
|
-
]);
|
|
168
|
-
function toPosix(p) {
|
|
169
|
-
return p.split(path.sep).join("/");
|
|
170
|
-
}
|
|
171
|
-
function buildRootIgnore(root, exclude) {
|
|
172
|
-
const ig = ignore();
|
|
173
|
-
const gitignorePath = path.join(root, ".gitignore");
|
|
174
|
-
if (fs.existsSync(gitignorePath)) {
|
|
175
|
-
ig.add(fs.readFileSync(gitignorePath, "utf8"));
|
|
176
|
-
}
|
|
177
|
-
if (exclude.length) ig.add(exclude);
|
|
178
|
-
return ig;
|
|
179
|
-
}
|
|
180
|
-
function discover(options) {
|
|
181
|
-
const root = path.resolve(options.root);
|
|
182
|
-
const onlyLangs = (options.only ?? []).filter(Boolean);
|
|
183
|
-
const allowLang = (lang) => onlyLangs.length === 0 || onlyLangs.includes(lang.id);
|
|
184
|
-
for (const id of onlyLangs) {
|
|
185
|
-
if (!langById(id)) {
|
|
186
|
-
throw new UsageError(`unknown language "${id}" for --only`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
const rootIg = buildRootIgnore(root, options.exclude ?? []);
|
|
190
|
-
const scopeAbs = (options.paths && options.paths.length ? options.paths.map((p) => path.resolve(root, p)) : [root]).filter((p) => fs.existsSync(p));
|
|
191
|
-
const found = /* @__PURE__ */ new Map();
|
|
192
|
-
const considerFile = (abs) => {
|
|
193
|
-
const rel = toPosix(path.relative(root, abs));
|
|
194
|
-
if (rel.startsWith("..")) return;
|
|
195
|
-
if (rel === "" || rootIg.ignores(rel)) return;
|
|
196
|
-
if (SKIP_FILES.has(path.basename(abs).toLowerCase())) return;
|
|
197
|
-
const lang = langForExtension(path.extname(abs));
|
|
198
|
-
if (!lang || !allowLang(lang)) return;
|
|
199
|
-
found.set(rel, { rel, abs, lang });
|
|
200
|
-
};
|
|
201
|
-
const walk = (dir) => {
|
|
202
|
-
let entries;
|
|
203
|
-
try {
|
|
204
|
-
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
205
|
-
} catch {
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
for (const entry of entries) {
|
|
209
|
-
const abs = path.join(dir, entry.name);
|
|
210
|
-
const rel = toPosix(path.relative(root, abs));
|
|
211
|
-
if (entry.isDirectory()) {
|
|
212
|
-
if (isSkippedDirName(entry.name)) continue;
|
|
213
|
-
if (rel && rootIg.ignores(`${rel}/`)) continue;
|
|
214
|
-
walk(abs);
|
|
215
|
-
} else if (entry.isFile()) {
|
|
216
|
-
considerFile(abs);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
for (const scope of scopeAbs) {
|
|
221
|
-
const stat = fs.statSync(scope);
|
|
222
|
-
if (stat.isDirectory()) walk(scope);
|
|
223
|
-
else if (stat.isFile()) considerFile(scope);
|
|
224
|
-
}
|
|
225
|
-
return [...found.values()].sort((a, b) => a.rel < b.rel ? -1 : a.rel > b.rel ? 1 : 0);
|
|
226
|
-
}
|
|
227
|
-
var UsageError = class extends Error {
|
|
228
|
-
isUsageError = true;
|
|
229
|
-
constructor(message) {
|
|
230
|
-
super(message);
|
|
231
|
-
this.name = "UsageError";
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
export { SKIP_DIRS, SKIP_FILES, UsageError, discover, isSkippedDirName };
|
|
236
|
-
//# sourceMappingURL=chunk-POOL355F.js.map
|
|
237
|
-
//# sourceMappingURL=chunk-POOL355F.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/engine/discover.ts"],"names":[],"mappings":"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","file":"chunk-POOL355F.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. For prefix patterns (`.venv-*`, `venv-*`) and install\n// trees (`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 * True when a directory basename must be pruned from discovery / scoring walks.\n * Covers exact {@link SKIP_DIRS} names plus common virtualenv naming variants\n * (`.venv-contextbench`, `venv-tools`, …) and Python install trees\n * (`site-packages`) that mint hundreds of phantom nested \"projects\".\n */\nexport function isSkippedDirName(name: string): boolean {\n if (!name) return false;\n if (SKIP_DIRS.has(name)) return true;\n // Custom-named virtualenvs (uv/poetry/team convention: `.venv-<purpose>`).\n if (name.startsWith('.venv') || name.startsWith('venv-')) return true;\n // Python install tree — never source we own.\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/** 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"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { FEDERATION_SCHEMA_VERSION, federationFromWorkspaceRoots, federationPath, highConfidenceBridges, loadFederation, loadOrDiscoverFederation, parseFederationFile, singleMemberFederation, writeFederationFile } from './chunk-5I4VSBWQ.js';
|
|
2
|
-
import './chunk-BWPBB45M.js';
|
|
3
|
-
import './chunk-JFGYT6BI.js';
|
|
4
|
-
import './chunk-BPF3YX2U.js';
|
|
5
|
-
import './chunk-Z6ZWNWWR.js';
|
|
6
|
-
//# sourceMappingURL=federation-MDQPO3PW.js.map
|
|
7
|
-
//# sourceMappingURL=federation-MDQPO3PW.js.map
|
package/dist/fs-TLPOWC2D.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { FileCache, SKIP_DIRS, SOURCE_EXCLUDE_FILES, bytesInDir, countFilesInDir, ensureDir, findCsprojFiles, findFiles, findPackageJsonFiles, findSolutionFiles, isSkippedDirName, normalizeGlobForRipgrep, pathExists, quickTreeCount, readJsonFile, readTextFile, stripBom, writeJsonFile, writeTextFile } from './chunk-NG4KIJW6.js';
|
|
2
|
-
import './chunk-Z6ZWNWWR.js';
|
|
3
|
-
//# sourceMappingURL=fs-TLPOWC2D.js.map
|
|
4
|
-
//# sourceMappingURL=fs-TLPOWC2D.js.map
|
package/dist/fs-TLPOWC2D.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"fs-TLPOWC2D.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/code/wizard.ts","../src/code/cost.ts","../src/runtime/bridge-facts.ts","../src/code/interactive.ts"],"names":["group","model","sp"],"mappings":"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","file":"interactive-2MK4TLRD.js","sourcesContent":["/**\n * The `vg code` guided provider/model wizard (VG-CLI-CODE §8).\n *\n * Walks the developer from \"I want to code\" to a concrete (provider, model)\n * choice: run locally, or pick one of the current top hosted providers\n * (Claude / GPT / Grok / Gemini / …) surfaced live from the model catalog — with\n * an \"enter a slug myself\" escape hatch at every step. Pure over an injected\n * {@link Prompter} + catalog + local fleet, so the whole decision tree is\n * unit-tested with a scripted prompter and no network or TTY.\n */\n\nimport type { Prompter } from './ui.js';\nimport type { Catalog } from './catalog.js';\nimport { topProviders } from './catalog.js';\nimport type { LocalModel } from '../engine/models.js';\n\nexport interface WizardResult {\n kind: 'hosted' | 'local';\n /** The router `--provider` value: `openrouter` for hosted picks, `ollama` for local. */\n provider: 'openrouter' | 'ollama';\n /** The concrete model slug/tag to run. */\n model: string;\n /** The display provider for per-model savings attribution (e.g. `anthropic`, `ollama`). */\n providerSlug: string;\n /** For a local model not yet present on the machine → pull it first. */\n needsPull?: boolean;\n}\n\nconst ENTER_SLUG = '__enter_slug__';\nconst LOCAL = '__local__';\nconst BROWSE = '__browse__';\n\nexport interface WizardDeps {\n catalog: Catalog;\n localModels: LocalModel[];\n topN?: number;\n}\n\n/** Run the guided selection and return the resolved provider + model. */\nexport async function runProviderWizard(prompter: Prompter, deps: WizardDeps): Promise<WizardResult> {\n const providers = topProviders(deps.catalog, deps.topN ?? 6);\n\n // Screen 1 — where should the model run?\n const choice = await prompter.select<string>('Where should the model run?', [\n { label: 'Local model (on your machine)', value: LOCAL, hint: deps.localModels.length ? `${deps.localModels.length} found` : 'nothing installed yet' },\n ...providers.map((p) => ({ label: p.label, value: p.id, hint: 'via OpenRouter' })),\n { label: 'Enter a provider or model slug myself', value: ENTER_SLUG },\n ]);\n\n if (choice === LOCAL) return pickLocal(prompter, deps);\n if (choice === ENTER_SLUG) {\n const slug = (await prompter.input('Model slug (e.g. anthropic/claude-3.5-sonnet, or a provider like openai)')).trim();\n // A full `provider/model` slug is a hosted pick; a bare provider name → show its models.\n if (slug.includes('/')) return { kind: 'hosted', provider: 'openrouter', model: slug, providerSlug: slug.split('/')[0] };\n const group = deps.catalog.providers.find((p) => p.id === slug);\n if (group && group.models.length) return pickHostedModel(prompter, group.id, group.models);\n // Unknown provider → let them type the full model slug.\n const model = (await prompter.input(`Model id for \"${slug}\"`)).trim();\n return { kind: 'hosted', provider: 'openrouter', model: model || slug, providerSlug: slug };\n }\n\n // A hosted provider was chosen → pick one of its models.\n const group = providers.find((p) => p.id === choice)!;\n return pickHostedModel(prompter, group.id, group.models);\n}\n\nasync function pickHostedModel(prompter: Prompter, providerSlug: string, models: Catalog['providers'][number]['models']) {\n if (models.length === 0) {\n const model = (await prompter.input(`Enter a ${providerSlug} model id`)).trim();\n return { kind: 'hosted' as const, provider: 'openrouter' as const, model, providerSlug };\n }\n const model = await prompter.select<string>('Choose a model', [\n ...models.slice(0, 12).map((m) => ({ label: m.name, value: m.id, hint: modelHint(m.contextLength, m.promptPricePerM) })),\n { label: 'Enter a model slug myself', value: ENTER_SLUG },\n ]);\n if (model === ENTER_SLUG) {\n const typed = (await prompter.input(`Enter a ${providerSlug} model id`)).trim();\n return { kind: 'hosted' as const, provider: 'openrouter' as const, model: typed, providerSlug };\n }\n return { kind: 'hosted' as const, provider: 'openrouter' as const, model, providerSlug };\n}\n\nasync function pickLocal(prompter: Prompter, deps: WizardDeps): Promise<WizardResult> {\n const installed = deps.localModels.filter((m) => m.runtime === 'ollama');\n const choices = [\n ...installed.map((m) => ({ label: m.name, value: m.name, hint: 'installed' })),\n { label: 'Browse coding models to pull (Ollama)', value: BROWSE },\n { label: 'Enter a model name to pull', value: ENTER_SLUG },\n ];\n const picked = await prompter.select<string>('Local model', choices);\n\n if (picked === ENTER_SLUG) {\n const name = (await prompter.input('Ollama model to pull (e.g. qwen2.5-coder:7b)')).trim();\n return { kind: 'local', provider: 'ollama', model: name, providerSlug: 'ollama', needsPull: true };\n }\n if (picked === BROWSE) {\n // Suggest coding models from the catalog, mapped to a likely Ollama tag.\n const coding = deps.catalog.providers\n .flatMap((p) => p.models)\n .filter((m) => /cod(e|er|ing)/i.test(m.id))\n .slice(0, 10);\n if (coding.length === 0) {\n const name = (await prompter.input('Ollama model to pull (e.g. qwen2.5-coder:7b)')).trim();\n return { kind: 'local', provider: 'ollama', model: name, providerSlug: 'ollama', needsPull: true };\n }\n const slug = await prompter.select<string>('Coding model to pull', [\n ...coding.map((m) => ({ label: m.name, value: toOllamaTag(m.id), hint: m.id })),\n { label: 'Enter a model name myself', value: ENTER_SLUG },\n ]);\n if (slug === ENTER_SLUG) {\n const name = (await prompter.input('Ollama model to pull (e.g. qwen2.5-coder:7b)')).trim();\n return { kind: 'local', provider: 'ollama', model: name, providerSlug: 'ollama', needsPull: true };\n }\n return { kind: 'local', provider: 'ollama', model: slug, providerSlug: 'ollama', needsPull: true };\n }\n // An already-installed model — no pull needed.\n return { kind: 'local', provider: 'ollama', model: picked, providerSlug: 'ollama', needsPull: false };\n}\n\n/** Best-effort map an OpenRouter slug to a likely Ollama tag (`qwen/qwen-2.5-coder-7b` → `qwen2.5-coder:7b`). */\nexport function toOllamaTag(slug: string): string {\n const tail = slug.split('/').pop() ?? slug;\n const size = tail.match(/(\\d+(?:\\.\\d+)?)b\\b/i);\n const base = tail\n .replace(/-instruct\\b/i, '')\n .replace(/(\\d+(?:\\.\\d+)?)b\\b/i, '')\n .replace(/[-.]+$/g, '')\n .replace(/\\s+/g, '-');\n return size ? `${base}:${size[1]}b` : base;\n}\n\nfunction modelHint(contextLength?: number, pricePerM?: number): string {\n const parts: string[] = [];\n if (contextLength) parts.push(`${Math.round(contextLength / 1000)}k ctx`);\n if (typeof pricePerM === 'number') parts.push(pricePerM === 0 ? 'free' : `$${pricePerM}/M in`);\n return parts.join(' · ');\n}\n","/**\n * Live cost / token metering for VG Code (VG-CLI-CODE §15).\n *\n * A session meter accumulates the prompt/completion tokens providers report and\n * turns them into a running dollar estimate from the model's published price\n * (per-million, from the catalog). Local models are free, so cost is 0 and only\n * tokens are shown. Pure and unit-tested; the estimate is labelled as such.\n */\n\nexport interface TokenUsage {\n promptTokens?: number;\n completionTokens?: number;\n}\n\n/** USD per 1M tokens for the active model (from the catalog); absent for local/free. */\nexport interface ModelPricing {\n promptPerM?: number;\n completionPerM?: number;\n}\n\n/** Dollar cost of one usage sample under a pricing table (0 when unpriced/free). */\nexport function costOf(usage: TokenUsage, pricing: ModelPricing): number {\n const inCost = ((usage.promptTokens ?? 0) / 1e6) * (pricing.promptPerM ?? 0);\n const outCost = ((usage.completionTokens ?? 0) / 1e6) * (pricing.completionPerM ?? 0);\n return round4(inCost + outCost);\n}\n\n/** Accumulates usage + cost across a coding session. */\nexport class SessionMeter {\n private prompt = 0;\n private completion = 0;\n private cost = 0;\n private turns = 0;\n\n constructor(private pricing: ModelPricing = {}) {}\n\n /** Update the pricing (e.g. after `/model` switches model mid-session). */\n setPricing(pricing: ModelPricing): void {\n this.pricing = pricing;\n }\n\n /** Record one model turn; returns the incremental cost of just this turn. */\n add(usage: TokenUsage): number {\n this.prompt += usage.promptTokens ?? 0;\n this.completion += usage.completionTokens ?? 0;\n this.turns += 1;\n const delta = costOf(usage, this.pricing);\n this.cost = round4(this.cost + delta);\n return delta;\n }\n\n get totals(): { promptTokens: number; completionTokens: number; totalTokens: number; cost: number; turns: number } {\n return { promptTokens: this.prompt, completionTokens: this.completion, totalTokens: this.prompt + this.completion, cost: this.cost, turns: this.turns };\n }\n\n /** A compact one-line summary, e.g. `3.1k tok · ~$0.0042` (cost only when priced). */\n summary(): string {\n const t = this.totals;\n const tok = `${fmtTokens(t.totalTokens)} tok`;\n const priced = this.pricing.promptPerM || this.pricing.completionPerM;\n return priced ? `${tok} · ~$${t.cost.toFixed(4)}` : tok;\n }\n}\n\nexport function fmtTokens(n: number): string {\n if (n >= 1e6) return `${(n / 1e6).toFixed(2)}M`;\n if (n >= 1e3) return `${(n / 1e3).toFixed(1)}k`;\n return String(n);\n}\n\nfunction round4(x: number): number {\n return Math.round(x * 1e4) / 1e4;\n}\n","/**\n * Project federation bridge edges into capsule pinned facts (Fusion Phase 6).\n *\n * High-confidence bridges become short, secret-free facts the model can see\n * without opening every workspace root. Pure over {@link BridgeEdge}.\n */\n\nimport type { BridgeEdge } from './bridge-edges.js';\n\n/**\n * Turn bridge edges into pinned-fact lines for Task Capsules.\n * Default minConfidence 0.8 keeps only workspace/package-strong links\n * (interface bridges sit ~0.68–0.75 and stay out unless lowered).\n */\nexport function bridgePinnedFacts(\n bridges: BridgeEdge[] | undefined | null,\n options: { minConfidence?: number; maxFacts?: number } = {},\n): string[] {\n if (!bridges?.length) return [];\n const min = options.minConfidence ?? 0.8;\n const max = options.maxFacts ?? 12;\n return bridges\n .filter((b) => b.confidence >= min)\n .map((b) => {\n const from = shortLabel(b.fromRoot);\n const to = shortLabel(b.toRoot);\n const via = b.packageName ? ` package ${b.packageName}` : '';\n return `bridge ${b.kind}: ${from} → ${to}${via} (${b.confidence.toFixed(2)})`;\n })\n .sort((a, b) => a.localeCompare(b))\n .slice(0, max);\n}\n\nfunction shortLabel(root: string): string {\n const parts = root.replace(/\\\\/g, '/').split('/').filter(Boolean);\n return parts[parts.length - 1] || root;\n}\n","/**\n * The `vg code` guided, interactive mode (VG-CLI-CODE §8–§11).\n *\n * Running bare `vg code` at a terminal enters this flow: show the VG Code\n * banner, make sure the code map is built (behind a spinner, no map banner),\n * walk the developer through choosing a provider + model (local or a top hosted\n * provider), run a memory pre-flight before pulling any local model, then drop\n * into a coding REPL that proposes a diff per instruction and writes only what\n * the developer approves.\n *\n * The decision logic (catalog grouping, wizard tree, capability assessment) is\n * pure and unit-tested elsewhere; this module is the I/O shell that wires those\n * pieces to the terminal, the graph build, and the model runtime.\n */\n\nimport { loadGraph } from '../engine/load.js';\nimport { refreshIfStale } from '../engine/refresh.js';\nimport { resolveGraphPath } from '../engine/artifacts.js';\nimport { BranchGraphSession } from '../runtime/branch-graph-session.js';\nimport { discoverModels } from '../engine/models.js';\nimport { ensureCodeMap } from './ensure-map.js';\nimport { printCodeLogo } from '../util/logo.js';\nimport { c, info, out } from '../util/output.js';\nimport type { GlobalOpts } from '../cli-options.js';\nimport { fetchCatalog } from './catalog.js';\nimport { runProviderWizard, type WizardResult } from './wizard.js';\nimport { TtyPrompter, PromptCancelled, type Prompter } from './ui.js';\nimport { estimateModelBytes, assessCapability, fmt } from './capability.js';\nimport { gatherSystemMemory, hasOllama, stopModel, pullModelClean } from './local-runtime.js';\nimport { spawnSync } from 'node:child_process';\nimport { resolveProviders } from './router.js';\nimport { nodeCodeFs, undoChanges } from './session.js';\nimport { runAgent, type AgentEvent, type AgentOptions, type AgentResult } from './agent.js';\nimport { readModelSavings } from '../engine/savings.js';\nimport { SessionMeter } from './cost.js';\nimport { McpToolset, defaultMcpConnect, type McpConnect } from './mcp-tools.js';\nimport { condenseSession, loadLatestSession, loadSession, saveSession, summarizeSession, newSession, recordTask, type StoredSession } from './session-store.js';\nimport type { McpServerConfig } from './config.js';\nimport type { MutatingAction, ShellResult } from './tools.js';\nimport type { FileChange, Provider } from './types.js';\nimport { startCodeRuntimeSession } from './runtime-session.js';\nimport { loadOrDiscoverFederation } from '../runtime/federation.js';\nimport { bridgePinnedFacts } from '../runtime/bridge-facts.js';\nimport { resolveExecutionEnv, type SecurityTier } from '../runtime/execution-env.js';\nimport {\n mergeModelExecutionProfile,\n resolveModelExecutionProfile,\n type ModelExecutionProfile,\n} from '../runtime/model-execution-profile.js';\nimport { vgdIsRunning, vgdRequest } from '../runtime/vgd/index.js';\nimport { resolveGraphBackend } from './graph-backend.js';\nimport { summarizeDiffs } from './diff.js';\n\nexport interface InteractiveOptions {\n provider?: string;\n model?: string;\n modelPath?: string;\n budget?: string;\n file?: string[];\n /** Auto-approve edits and commands (autonomous). */\n auto?: boolean;\n /** Cap on agent steps per instruction. */\n maxSteps?: number;\n /** Extra command-denylist rules for autonomous mode (from config). */\n denyCommands?: string[];\n /** Project test/verify command surfaced to the agent (from config). */\n testCommand?: string;\n /** Transcript compaction budget in tokens (from config / model window). */\n contextBudget?: number;\n /** Stream assistant tokens live. */\n stream?: boolean;\n /** Auto-verify: run the test command after the agent finishes and fix failures. */\n verify?: { command: string; maxRounds?: number };\n /** External MCP servers whose tools the agent may call. */\n mcpServers?: Record<string, McpServerConfig>;\n /** Which config files the MCP servers came from (for a transparent note). */\n mcpSources?: string[];\n /** Resume a session: `true` for the most recent, or an explicit session id. */\n continueSession?: boolean | string;\n /** Prefer source-bearing Task Capsule context (Fusion Runtime A/B). */\n capsule?: boolean;\n /**\n * Security ladder tier for shell (ADR-002). When omitted: L1 under `--auto`,\n * otherwise L0. Explicit value always wins.\n */\n securityTier?: SecurityTier;\n /** Optional Model Execution Profile overrides from code.json. */\n modelProfile?: Partial<ModelExecutionProfile>;\n /** Injectable MCP connect (tests). */\n mcpConnect?: McpConnect;\n}\n\n/** Entry point for guided `vg code` (no instruction, at a TTY). */\nexport async function runInteractive(root: string, global: GlobalOpts, opts: InteractiveOptions, prompter: Prompter = new TtyPrompter()): Promise<void> {\n printCodeLogo(root);\n try {\n await ensureMap(root, global, prompter);\n const selection = await chooseModel(root, global, opts, prompter);\n if (!selection) return; // aborted (e.g. can't run a local model)\n await codingRepl(root, global, opts, selection, prompter);\n } catch (e) {\n if (e instanceof PromptCancelled) {\n info(c.dim('\\n cancelled — no changes were made'));\n return;\n }\n throw e;\n }\n}\n\n/** Build the code map if missing, or refresh it if the tree drifted — behind a spinner, no map banner. */\nasync function ensureMap(root: string, global: GlobalOpts, prompter: Prompter): Promise<void> {\n const existing = loadGraph(root, global.graph);\n if (!existing) {\n const sp = prompter.spinner('Building the code map…');\n try {\n await ensureCodeMap(root, global);\n sp.stop('Code map built');\n } catch (e) {\n sp.fail(`couldn't build the code map: ${(e as Error).message}`);\n throw e;\n }\n return;\n }\n const sp = prompter.spinner('Checking the code map is up to date…');\n const graphPath = resolveGraphPath(root);\n const refreshed = await refreshIfStale(root, { graphPath }).catch(() => null);\n if (refreshed?.status === 'refreshed') sp.stop('Code map refreshed');\n else sp.stop('Code map ready');\n}\n\n/** Resolve the provider/model — from flags if given, else via the guided wizard. */\nasync function chooseModel(root: string, global: GlobalOpts, opts: InteractiveOptions, prompter: Prompter): Promise<WizardResult | null> {\n // Explicit flags skip the wizard entirely.\n if (opts.provider && (opts.model || opts.modelPath)) {\n const local = opts.provider === 'ollama' || opts.provider === 'lmstudio' || opts.provider === 'llama-cpp' || !!global.local;\n return { kind: local ? 'local' : 'hosted', provider: opts.provider === 'ollama' ? 'ollama' : 'openrouter', model: opts.model ?? opts.modelPath ?? '', providerSlug: opts.provider, needsPull: false };\n }\n\n const sp = prompter.spinner('Loading the model catalog…');\n const catalog = await fetchCatalog({ offline: global.local });\n sp.stop(catalog.source === 'network' ? 'Model catalog loaded' : catalog.source === 'cache' ? 'Model catalog (cached)' : 'Model catalog (offline list)');\n const localModels = discoverModels();\n\n const selection = await runProviderWizard(prompter, { catalog, localModels });\n\n if (selection.kind === 'local' && selection.needsPull) {\n const ok = await preflightAndPull(selection, prompter);\n if (!ok) return null;\n }\n if (selection.kind === 'hosted' && !process.env.OPENROUTER_API_KEY) {\n prompter.note(c.yellow('Set OPENROUTER_API_KEY in your environment to use this hosted model (keys are never passed as flags).'));\n }\n return selection;\n}\n\n/** Memory pre-flight, then a clean, wrapped `ollama pull`. Returns false if we shouldn't proceed. */\nasync function preflightAndPull(selection: WizardResult, prompter: Prompter): Promise<boolean> {\n if (!hasOllama()) {\n prompter.note(c.yellow('Ollama isn’t installed — get it from https://ollama.com, then re-run. (We never install a runtime for you.)'));\n return false;\n }\n const estimate = estimateModelBytes(selection.model);\n const report = assessCapability(estimate, gatherSystemMemory());\n\n prompter.note(`${c.bold(selection.model)} — estimated ${fmt(estimate.bytes)}${estimate.guessed ? c.dim(' (size guessed)') : ''}; ~${fmt(report.availableBytes)} free now`);\n for (const s of report.suggestions) prompter.note(c.dim(`· ${s}`));\n\n if (!report.canRun) {\n prompter.note(c.red('This machine doesn’t have enough memory for that model — not pulling it. Pick a smaller model or a lower quant.'));\n return false;\n }\n if (report.needsUnload) {\n const biggest = [...report.loaded].sort((a, b) => b.bytes - a.bytes)[0];\n if (biggest && (await prompter.confirm(`Unload ${biggest.name} to free ~${fmt(biggest.bytes)}?`, true))) {\n stopModel(biggest.name);\n }\n }\n if (!(await prompter.confirm(`Pull ${selection.model} (~${fmt(estimate.bytes)})?`, true))) return false;\n\n const sp = prompter.spinner(`Pulling ${selection.model}…`);\n const ok = await pullModelClean(selection.model, sp);\n if (ok) sp.stop(`Pulled ${selection.model}`);\n else sp.fail(`couldn’t pull ${selection.model}`);\n return ok;\n}\n\n/** The coding REPL: a graph-grounded agent per task, plus slash-commands (/help, /undo, …). */\nasync function codingRepl(root: string, global: GlobalOpts, opts: InteractiveOptions, selection: WizardResult, prompter: Prompter): Promise<void> {\n let sel = selection;\n let route = resolveProviders({\n provider: sel.provider,\n model: sel.model,\n local: sel.kind === 'local' || global.local,\n consent: true, // interactive selection is consent for manager runtime deps\n });\n try {\n const { ensureManagerRuntime } = await import('../runtime/model-manager.js');\n const ensure = await ensureManagerRuntime({\n providerId: route.providers[0]?.id ?? sel.provider,\n model: route.providers[0]?.model ?? sel.model,\n offline: !!global.local,\n consent: true,\n });\n if (!ensure.ok) prompter.note(c.yellow(ensure.error ?? 'model manager not ready'));\n else if (ensure.installed.length || ensure.pulled.length) {\n for (const s of ensure.installed) prompter.note(c.dim(`installed ${s}`));\n for (const s of ensure.pulled) prompter.note(c.dim(`pulled ${s}`));\n }\n prompter.note(c.dim(`manager ${route.managerLine}`));\n } catch {\n /* non-fatal — route still usable */\n }\n const fsImpl = nodeCodeFs(root);\n const meter = new SessionMeter();\n let lastChanges: FileChange[] = [];\n\n // Resume the most recent session (recap for the model + restore /undo).\n let store: StoredSession = newSession(sessionId(), sel.providerSlug, sel.model, Date.now());\n let priorSummary: string | undefined;\n if (opts.continueSession) {\n const prev =\n typeof opts.continueSession === 'string'\n ? loadSession(root, opts.continueSession)\n : loadLatestSession(root);\n if (prev) {\n store = prev;\n lastChanges = prev.lastChanges ?? [];\n priorSummary = summarizeSession(prev);\n prompter.note(c.dim(`resumed session — ${prev.tasks.length} earlier task(s); /undo restores the last change`));\n } else prompter.note(c.dim('no previous session to continue'));\n }\n\n // Live graph holder: filled each turn; MCP builtins always read the current map.\n const graphHolder: { current: import('../schema.js').VgGraph | null } = { current: null };\n\n // Always expose local `vg serve` MCP tools; merge any project-configured servers.\n const { createVgBuiltinMcpTools, mergeExternalToolsets } = await import('./vg-mcp-bridge.js');\n const vgBuiltin = createVgBuiltinMcpTools({\n getGraph: () => {\n if (!graphHolder.current) throw new Error('graph not loaded yet');\n return graphHolder.current;\n },\n root,\n local: global.local === true,\n });\n let mcp: McpToolset | undefined;\n if (opts.mcpServers && Object.keys(opts.mcpServers).length) {\n const sp = prompter.spinner('Connecting MCP tools…');\n const { toolset, warnings } = await McpToolset.connect(opts.mcpServers, opts.mcpConnect ?? defaultMcpConnect);\n mcp = toolset;\n const from = opts.mcpSources?.length ? ` (from ${opts.mcpSources.join(', ')})` : '';\n sp.stop(\n `MCP tools: ${toolset.specs().length} project + ${vgBuiltin.specs.length} local vg` +\n ` (${Object.keys(opts.mcpServers).length} server(s)${from})`,\n );\n for (const w of warnings) prompter.note(c.yellow(` ${w}`));\n } else {\n prompter.note(c.dim(`MCP · ${vgBuiltin.specs.length} local vg tools (mcp__vibgrate__*) always available`));\n }\n const externalToolsMerged = mergeExternalToolsets(\n vgBuiltin,\n mcp ? mcpExternalTools(mcp, agentApprove(opts, prompter)) : undefined,\n );\n\n // Fusion Runtime: attach to the standalone vgd (ensure if needed) instead of\n // spawning `vg serve` as GraphProcess. Failure degrades to the in-process graph.\n const runtime = await startCodeRuntimeSession({ root });\n // Multi-branch ActiveGraph: warm maps per gitRef; ensureCurrent on each turn\n // so `git checkout` mid-session switches the tool-visible graph (plan §4.1.1).\n const branchGraphs = new BranchGraphSession({ root, graphPath: global.graph });\n // Federated workspaces: if `.vibgrate/federation.json` exists and a daemon is\n // reachable, register every member so multi-repo graphs share one vgd session.\n const federation = loadOrDiscoverFederation(root);\n const extraPinnedFacts = bridgePinnedFacts(federation.bridges);\n if (federation.members.length > 1 && (await vgdIsRunning({ socketPath: runtime.socketPath }))) {\n try {\n await vgdRequest(\n {\n op: 'register-federation',\n primaryRoot: federation.primaryRoot,\n members: federation.members.map((m) => ({ root: m.root, label: m.label, role: m.role })),\n },\n { socketPath: runtime.socketPath },\n );\n const bridgeN = federation.bridges?.length ?? 0;\n prompter.note(\n c.dim(\n `federation · ${federation.members.length} workspace(s) registered with vgd` +\n (bridgeN ? ` · ${bridgeN} bridge edge(s)` : ''),\n ),\n );\n } catch {\n /* federation registration is best-effort */\n }\n } else if ((federation.bridges?.length ?? 0) > 0) {\n prompter.note(\n c.dim(\n `federation · ${federation.members.length} member(s) · ${federation.bridges!.length} bridge edge(s) (discovery)`,\n ),\n );\n }\n\n // Model Execution Profile: provider/model heuristics + code.json overrides.\n let modelProfile = mergeModelExecutionProfile(\n resolveModelExecutionProfile({\n providerId: sel.providerSlug,\n model: sel.model,\n budget: opts.budget ? Number(opts.budget) : undefined,\n maxRepairRounds: opts.verify?.maxRounds,\n securityTier: opts.securityTier,\n }),\n opts.modelProfile,\n );\n\n // Security ladder (ADR-002): explicit flag > MEP > --auto → L1 > L0.\n // Writable roots include every federation member so multi-root sessions can\n // write into sibling workspace folders under L1/L2 isolation.\n const securityTier: SecurityTier =\n opts.securityTier ?? modelProfile.securityTier ?? (opts.auto ? 'L1' : 'L0');\n const writableRoots = federation?.members.map((m) => m.root) ?? [root];\n const executionEnv = resolveExecutionEnv(securityTier, { writableRoots });\n\n const cleanup = (): void => {\n void runtime.dispose();\n void mcp?.dispose();\n };\n process.once('SIGINT', cleanup);\n\n const autoNote = opts.auto ? c.yellow(' · auto-approve ON') : '';\n const runtimeNote = runtime.kind !== 'none' ? c.dim(` · ${runtime.label}`) : '';\n const securityNote = c.dim(` · ${executionEnv.tier}/${executionEnv.label}`);\n const mepNote = c.dim(` · mep ${modelProfile.mode}`);\n prompter.intro(`Ready — ${sel.providerSlug}/${sel.model}${runtimeNote}${securityNote}${mepNote}${autoNote}. Describe a task, or /help. Empty line to exit.`);\n\n try {\n for (;;) {\n const line = (await prompter.input('code ›')).trim();\n if (!line || /^(exit|quit)$/i.test(line) || line === '/exit' || line === '/quit') break;\n\n if (line.startsWith('/')) {\n const [cmd] = line.slice(1).split(/\\s+/);\n if (cmd === 'help') {\n prompter.note('commands: /undo /diff /model /cost /compact /clear /exit');\n } else if (cmd === 'undo') {\n if (lastChanges.length === 0) prompter.note(c.dim('nothing to undo'));\n else {\n const restored = undoChanges(lastChanges, fsImpl);\n prompter.note(c.green(`↩ reverted ${restored.length} file(s): ${restored.join(', ')}`));\n lastChanges = [];\n store = { ...store, lastChanges: [] };\n saveSession(root, store);\n }\n } else if (cmd === 'diff') {\n if (lastChanges.length === 0) prompter.note(c.dim('no recent change'));\n else for (const ch of lastChanges) if (ch.diff) out(ch.diff);\n } else if (cmd === 'model') {\n const swapped = await reselectModel(root, global, prompter);\n if (swapped) {\n sel = swapped;\n route = resolveProviders({\n provider: sel.provider,\n model: sel.model,\n local: sel.kind === 'local' || global.local,\n consent: true,\n });\n prompter.note(c.green(`now using ${sel.providerSlug}/${sel.model}`));\n }\n } else if (cmd === 'cost') {\n prompter.note(`this session: ${meter.summary()}`);\n printCost(root);\n } else if (cmd === 'compact') {\n if (store.tasks.length <= 1) prompter.note(c.dim('nothing to compact yet'));\n else {\n const before = store.tasks.length;\n store = condenseSession(store, Date.now());\n saveSession(root, store);\n priorSummary = summarizeSession(store) || undefined;\n prompter.note(c.green(`compacted ${before} task(s) into one checkpoint — future turns carry the short recap`));\n }\n } else if (cmd === 'clear') {\n prompter.note(c.dim('each task already starts fresh — nothing to clear'));\n } else {\n prompter.note(c.yellow(`unknown command /${cmd} — try /help`));\n }\n continue;\n }\n\n const branchLoad = branchGraphs.ensureCurrent();\n const graph = branchLoad.graph;\n graphHolder.current = graph;\n if (!graph) {\n prompter.note(c.red('the code map disappeared — run `vg` to rebuild'));\n break;\n }\n if (branchLoad.switched) {\n prompter.note(\n c.dim(\n `branch · ${branchLoad.gitRef}${branchLoad.fromCache ? ' (warm cache)' : ' (loaded map)'}`,\n ),\n );\n }\n // Share warm slot with a running vgd (local process or long-lived daemon).\n if (runtime.socketPath && graph && branchLoad.gitRef && branchLoad.gitRef !== 'unknown') {\n void vgdRequest(\n {\n op: 'put-graph',\n repositoryId: branchLoad.repositoryId,\n gitRef: branchLoad.gitRef,\n graph,\n },\n { socketPath: runtime.socketPath },\n ).catch(() => {\n /* best-effort IPC */\n });\n }\n // Prefer vgd ActiveGraph for search/impact when the daemon holds this slot.\n const graphBackend = resolveGraphBackend({\n graph,\n repositoryId: branchLoad.repositoryId,\n gitRef: branchLoad.gitRef !== 'unknown' ? branchLoad.gitRef : null,\n socketPath: runtime.socketPath,\n });\n // Refresh MEP if the user swapped models mid-session.\n modelProfile = mergeModelExecutionProfile(\n resolveModelExecutionProfile({\n providerId: sel.providerSlug,\n model: sel.model,\n budget: opts.budget ? Number(opts.budget) : undefined,\n maxRepairRounds: opts.verify?.maxRounds,\n securityTier,\n }),\n opts.modelProfile,\n );\n const result = await agentTask({\n root,\n graph,\n instruction: line,\n providers: route.providers,\n fsImpl,\n attribution: { client: 'vg-code', provider: sel.providerSlug, model: sel.model },\n auto: !!opts.auto,\n maxSteps: opts.maxSteps,\n budget: modelProfile.capsuleBudgetTokens,\n denyCommands: opts.denyCommands,\n testCommand: opts.testCommand,\n contextBudget: opts.contextBudget,\n stream: opts.stream,\n verify: opts.verify\n ? { ...opts.verify, maxRounds: opts.verify.maxRounds ?? modelProfile.maxRepairRounds }\n : undefined,\n priorSummary,\n // Conversation carry-over for capsule seed ranking: the previous\n // task's instruction keeps follow-up asks anchored to the topic.\n priorInstruction: store.tasks.at(-1)?.instruction,\n externalTools: externalToolsMerged,\n meter,\n prompter,\n capsule: opts.capsule,\n executionEnv,\n graphBackend,\n modelProfile,\n extraPinnedFacts,\n llmCompaction: true,\n });\n priorSummary = undefined; // recap only seeds the first task after --continue\n if (result.changes.length) {\n lastChanges = result.changes;\n prompter.note(c.dim(' /undo to revert · /diff to review'));\n }\n // Persist the session after each task so --continue and /undo survive a restart.\n store = recordTask(store, { instruction: line, summary: result.finalText, changes: result.changes, stopped: result.stopped }, Date.now());\n saveSession(root, store);\n }\n } finally {\n cleanup();\n process.removeListener('SIGINT', cleanup);\n }\n prompter.outro('Done.');\n}\n\n/** Approval gate closure for MCP tools (mirrors agentTask's gate). */\nfunction agentApprove(opts: InteractiveOptions, prompter: Prompter): (a: MutatingAction) => Promise<boolean> {\n return async (action) => {\n if (opts.auto) return true;\n if (action.kind === 'tool') return prompter.confirm(`Call ${action.name}?`, false);\n if (action.kind === 'patch') {\n const n = action.files.length;\n const names = action.files\n .slice(0, 6)\n .map((f) => f.file)\n .join(', ');\n const more = n > 6 ? ` (+${n - 6} more)` : '';\n return prompter.confirm(`Apply patch to ${n} file(s): ${names}${more}?`, false);\n }\n return true;\n };\n}\n\n/** Bind an McpToolset to the agent's externalTools shape. */\nfunction mcpExternalTools(mcp: McpToolset, approve: (a: MutatingAction) => Promise<boolean>): AgentOptions['externalTools'] {\n return { specs: mcp.specs(), owns: (name) => mcp.owns(name), execute: (call) => mcp.execute(call, approve) };\n}\n\n/** A time-free-ish session id (runtime randomness is fine — not a graph artifact). */\nfunction sessionId(): string {\n let s = '';\n const alphabet = 'abcdefghijklmnopqrstuvwxyz0123456789';\n for (let i = 0; i < 10; i++) s += alphabet[Math.floor(Math.random() * alphabet.length)];\n return s;\n}\n\n/** Re-run the provider/model wizard mid-session (the `/model` command). */\nasync function reselectModel(root: string, global: GlobalOpts, prompter: Prompter): Promise<WizardResult | null> {\n try {\n const sp = prompter.spinner('Loading the model catalog…');\n const catalog = await fetchCatalog({ offline: global.local });\n sp.stop('Model catalog loaded');\n const selection = await runProviderWizard(prompter, { catalog, localModels: discoverModels() });\n if (selection.kind === 'local' && selection.needsPull) {\n const ok = await preflightAndPull(selection, prompter);\n if (!ok) return null;\n }\n return selection;\n } catch (e) {\n if (e instanceof PromptCancelled) return null;\n prompter.note(c.yellow(`couldn't switch model: ${(e as Error).message}`));\n return null;\n }\n}\n\n/** Print the local per-model savings for `/cost`. */\nfunction printCost(root: string): void {\n const now = Date.now();\n const models = readModelSavings(root, 30, now);\n if (models.length === 0) {\n info(c.dim(' no usage recorded yet this session'));\n return;\n }\n info(c.bold(' savings by model (last 30 days, local)'));\n for (const m of models) info(` ${m.key.padEnd(32)} ${m.queries} call(s) · ~${m.vgTokens} tokens · saved ≈ $${m.saved}`);\n}\n\n/**\n * Run one agentic task and render it to the terminal. Shared by the guided REPL\n * and the one-shot command. Read-only tools stream as dim status lines; each\n * mutating tool (edit / create / delete / run) is gated — auto-approved under\n * `--auto`, otherwise confirmed by the developer (with the diff or command shown).\n */\nexport async function agentTask(params: {\n root: string;\n graph: import('../schema.js').VgGraph;\n instruction: string;\n providers: Provider[];\n fsImpl: ReturnType<typeof nodeCodeFs>;\n attribution: { client: string; provider?: string; model?: string };\n auto: boolean;\n maxSteps?: number;\n budget?: number;\n contextBudget?: number;\n denyCommands?: string[];\n testCommand?: string;\n stream?: boolean;\n verify?: { command: string; maxRounds?: number };\n priorSummary?: string;\n priorInstruction?: string;\n externalTools?: AgentOptions['externalTools'];\n meter?: SessionMeter;\n prompter?: Prompter;\n /** Prefer source-bearing Task Capsule context (Fusion Runtime A/B). */\n capsule?: boolean;\n files?: string[];\n /** Security ladder substrate (ADR-002). */\n executionEnv?: AgentOptions['executionEnv'];\n graphBackend?: AgentOptions['graphBackend'];\n modelProfile?: AgentOptions['modelProfile'];\n advancedMode?: boolean;\n worktreeOverlay?: boolean;\n extraPinnedFacts?: string[];\n /** Model-written checkpoint summaries on compaction (real-model hosts). */\n llmCompaction?: boolean;\n}): Promise<AgentResult> {\n const { prompter } = params;\n const approve = async (action: MutatingAction): Promise<boolean> => {\n if (params.auto) return true;\n if (!prompter) return false; // non-interactive without --auto: refuse mutations\n switch (action.kind) {\n case 'edit':\n out(action.diff);\n return prompter.confirm(`Apply edit to ${action.file}?`, true);\n case 'create':\n return prompter.confirm(`Create ${action.file} (${action.bytes} bytes)?`, true);\n case 'delete':\n return prompter.confirm(`Delete ${action.file}?`, false);\n case 'run':\n return prompter.confirm(`Run \\`${action.command}\\`?`, false);\n case 'tool':\n return prompter.confirm(`Call ${action.name}(${briefArgs(action.args)})?`, false);\n case 'patch': {\n const n = action.files.length;\n for (const f of action.files) {\n if (f.diff) out(f.diff);\n else out(`${f.op} ${f.file}`);\n }\n const names = action.files\n .slice(0, 6)\n .map((f) => f.file)\n .join(', ');\n const more = n > 6 ? ` (+${n - 6} more)` : '';\n return prompter.confirm(`Apply patch to ${n} file(s): ${names}${more}?`, false);\n }\n }\n };\n\n // Event rendering, with live token streaming: raw tokens print inline; any\n // other event first closes the streamed line so the layout stays clean.\n let streaming = false;\n const closeStream = (): void => {\n if (streaming) {\n process.stderr.write('\\n');\n streaming = false;\n }\n };\n const onEvent = (e: AgentEvent): void => {\n if (e.type === 'token') {\n process.stderr.write(e.text);\n streaming = true;\n return;\n }\n closeStream();\n if (e.type === 'assistant') {\n if (e.text.trim()) info(e.text.trim());\n } else if (e.type === 'tool-call') {\n info(c.dim(` → ${e.name}(${briefArgs(e.args)})`));\n } else if (e.type === 'tool-result') {\n info(c.dim(` ${e.mutated ? c.green('✔ ') : ''}${e.content.split('\\n')[0].slice(0, 100)}`));\n } else if (e.type === 'compact') {\n info(c.dim(` · compacted context (${e.droppedRounds} earlier round(s) summarized)`));\n } else if (e.type === 'verify') {\n info(e.passed ? c.green(` ✔ ${e.command} passed`) : c.yellow(` ✗ ${e.command} failed — asking the model to fix it`));\n } else if (e.type === 'ladder') {\n info(e.ok ? c.green(' ✔ verification ladder passed') : c.yellow(' ✗ verification ladder failed — asking the model to fix it'));\n if (!e.ok && e.summary.trim()) {\n for (const line of e.summary.split('\\n').slice(0, 6)) info(c.dim(` ${line}`));\n }\n } else if (e.type === 'notice') {\n info(c.dim(` · ${e.text}`));\n } else if (e.type === 'session-graph') {\n info(c.dim(` · session graph updated (${e.reparsed} reparsed, ${e.dirty} dirty)`));\n } else if (e.type === 'capsule') {\n info(c.dim(` · Task Capsule · ${e.summary.primary.length} primary · ${e.summary.sourceSliceCount} source slice(s) · ~${e.summary.tokensEstimate} tokens`));\n } else if (e.type === 'failure-capsule') {\n info(c.yellow(` · Failure Capsule · ${e.capsule.failedStep.type}${e.capsule.failedStep.command ? ` · ${e.capsule.failedStep.command}` : ''}`));\n } else if (e.type === 'metrics') {\n const m = e.metrics;\n info(c.dim(` · metrics · discovery ${m.discoveryToolCalls} · mutations ${m.mutationToolCalls}${m.znsAt1 ? ' · ZNS@1' : ''}`));\n }\n };\n\n const result = await runAgent({\n graph: params.graph,\n root: params.root,\n instruction: params.instruction,\n providers: params.providers,\n fsImpl: params.fsImpl,\n run: shellRunner(params.root),\n streamShell: !params.executionEnv,\n allowSubagents: true,\n executionEnv: params.executionEnv,\n graphBackend: params.graphBackend,\n modelProfile: params.modelProfile,\n advancedMode: params.advancedMode,\n // Interactive sessions always prefer a worktree-correct map unless disabled.\n worktreeOverlay: params.worktreeOverlay ?? true,\n extraPinnedFacts: params.extraPinnedFacts,\n approve,\n onEvent,\n attribution: params.attribution,\n maxSteps: params.maxSteps,\n budget: params.budget,\n contextBudget: params.contextBudget,\n auto: params.auto,\n denyCommands: params.denyCommands,\n testCommand: params.testCommand,\n stream: params.stream,\n verify: params.verify,\n priorSummary: params.priorSummary,\n priorInstruction: params.priorInstruction,\n externalTools: params.externalTools,\n capsule: params.capsule,\n files: params.files,\n llmCompaction: params.llmCompaction,\n now: () => Date.now(),\n });\n closeStream();\n\n const perTask = params.meter?.add(result.usage);\n const summary = summarizeDiffs(result.changes.map((ch) => ({ file: ch.file, diff: ch.diff })));\n info('');\n info(\n result.stopped === 'finished'\n ? c.green(`✔ ${result.finalText}`)\n : result.stopped === 'max-steps'\n ? c.yellow(`stopped at the step limit — ${result.changes.length} change(s) so far`)\n : c.dim(result.finalText),\n );\n const meterNote = perTask !== undefined ? ` · ${params.meter!.summary()}` : '';\n if (result.changes.length || perTask) info(c.dim(` ${summary} · via ${result.provider.id}/${result.provider.model}${result.provider.fellBack ? ' (fell back)' : ''}${meterNote}`));\n return result;\n}\n\nfunction briefArgs(args: Record<string, unknown>): string {\n const parts: string[] = [];\n for (const [k, v] of Object.entries(args)) {\n const s = typeof v === 'string' ? v : JSON.stringify(v);\n parts.push(`${k}: ${s.length > 40 ? s.slice(0, 40) + '…' : s}`);\n if (parts.length >= 2) break;\n }\n return parts.join(', ');\n}\n\n/** A shell runner for the agent's run_command tool, scoped to the repo root. */\nfunction shellRunner(root: string): (command: string) => ShellResult | Promise<ShellResult> {\n // Prefer async streaming when streamShell is enabled on the agent options;\n // this sync wrapper remains for callers that do not set streamShell.\n return (command: string) => {\n const res = spawnSync(command, { cwd: root, shell: true, encoding: 'utf8', timeout: 120_000, maxBuffer: 10 * 1024 * 1024 });\n const stdout = (res.stdout ?? '') + (res.stderr ? `\\n${res.stderr}` : '');\n return { stdout, exitCode: res.status ?? 1 };\n };\n}\n"]}
|
package/dist/load-4R4HYMBB.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export { loadGraph } from './chunk-KU7FI5EV.js';
|
|
2
|
-
import './chunk-VMAIDM4K.js';
|
|
3
|
-
import './chunk-MVPRPSXU.js';
|
|
4
|
-
import './chunk-O3LABX6I.js';
|
|
5
|
-
import './chunk-4NTNMT6T.js';
|
|
6
|
-
import './chunk-BWPBB45M.js';
|
|
7
|
-
import './chunk-JFGYT6BI.js';
|
|
8
|
-
import './chunk-BPF3YX2U.js';
|
|
9
|
-
import './chunk-Z6ZWNWWR.js';
|
|
10
|
-
//# sourceMappingURL=load-4R4HYMBB.js.map
|
|
11
|
-
//# sourceMappingURL=load-4R4HYMBB.js.map
|
package/dist/version-DTEU3SQD.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/code/vg-mcp-bridge.ts"],"names":[],"mappings":"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","file":"vg-mcp-bridge-KDVYIMFX.js","sourcesContent":["/**\n * Always-on bridge from local `vg serve` (Vibgrate AI Context) tools into the\n * VG Code agent tool list.\n *\n * External project MCP servers (`.mcp.json`, etc.) remain optional. The tools\n * shipped by the installed `vg` CLI — `search_symbols`, `query_graph`,\n * `impact_of`, `library_docs`, … — are available on every run without spawning\n * a separate MCP process: same handlers as stdio `vg serve`, in-process over\n * the session graph.\n *\n * Namespaced as `mcp__vibgrate__<tool>` so they sit next to third-party\n * `mcp__<server>__*` tools without collisions.\n */\n\nimport { TOOLS, type VgTool } from '../mcp/tools.js';\nimport type { VgGraph } from '../schema.js';\nimport type { ToolCall, ToolSpec } from './types.js';\nimport type { ToolResult } from './tools.js';\n\nexport const VG_MCP_SERVER_ID = 'vibgrate' as const;\nconst NS = `mcp__${VG_MCP_SERVER_ID}__`;\n\nexport type ExternalToolset = {\n specs: ToolSpec[];\n owns: (name: string) => boolean;\n execute: (call: ToolCall, live?: { graph: VgGraph }) => Promise<ToolResult>;\n};\n\nexport interface VgBuiltinMcpOptions {\n /** Live graph accessor (session overlay may refresh symbols mid-run). */\n getGraph: () => VgGraph;\n root: string;\n /** Air-gap: no network in library/docs/embedder paths. */\n local?: boolean;\n}\n\n/** In-process toolset matching the local `vg serve` MCP surface. */\nexport function createVgBuiltinMcpTools(opts: VgBuiltinMcpOptions): ExternalToolset {\n const byName = new Map<string, VgTool>();\n for (const t of TOOLS) byName.set(`${NS}${t.name}`, t);\n\n const specs: ToolSpec[] = TOOLS.map((t) => ({\n name: `${NS}${t.name}`,\n description: `[${VG_MCP_SERVER_ID}] ${t.description}`,\n parameters: t.inputSchema && typeof t.inputSchema === 'object' ? t.inputSchema : { type: 'object', properties: {} },\n })).sort((a, b) => a.name.localeCompare(b.name));\n\n return {\n specs,\n owns: (name) => byName.has(name),\n async execute(call, live) {\n const tool = byName.get(call.name);\n if (!tool) return { content: `unknown MCP tool ${call.name}`, mutated: false };\n try {\n const graph = live?.graph ?? opts.getGraph();\n const raw = await tool.handler(graph, call.arguments ?? {}, {\n root: opts.root,\n local: opts.local,\n dedup: false,\n });\n const text = typeof raw === 'string' ? raw : JSON.stringify(raw, null, 2);\n return { content: text.slice(0, 12_000), mutated: false };\n } catch (e) {\n return { content: `MCP tool ${call.name} failed: ${(e as Error).message}`, mutated: false };\n }\n },\n };\n}\n\n/** Merge toolsets; later sets win on name clashes. */\nexport function mergeExternalToolsets(...sets: Array<ExternalToolset | undefined | null>): ExternalToolset | undefined {\n const active = sets.filter((s): s is ExternalToolset => !!s && s.specs.length > 0);\n if (active.length === 0) return undefined;\n if (active.length === 1) return active[0];\n\n const byName = new Map<string, { set: ExternalToolset; spec: ToolSpec }>();\n for (const set of active) {\n for (const spec of set.specs) byName.set(spec.name, { set, spec });\n }\n const specs = [...byName.values()].map((v) => v.spec).sort((a, b) => a.name.localeCompare(b.name));\n return {\n specs,\n owns: (name) => active.some((s) => s.owns(name)),\n async execute(call, live) {\n for (let i = active.length - 1; i >= 0; i--) {\n if (active[i]!.owns(call.name)) return active[i]!.execute(call, live);\n }\n return { content: `unknown external tool ${call.name}`, mutated: false };\n },\n };\n}\n\n/** Namespaced vibgrate tool names for tests / prompts. */\nexport function vgMcpToolNames(): string[] {\n return TOOLS.map((t) => `${NS}${t.name}`);\n}\n"]}
|
package/dist/vgd-M7UOPWLB.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"vgd-M7UOPWLB.js"}
|