@su-record/vibe 4.1.19 → 4.1.21
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +17 -1
- package/card.md +10 -10
- package/dist/cli/common.js +3 -0
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/context.js +11 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/conventions.js +13 -0
- package/dist/cli/conventions.js.map +1 -0
- package/dist/cli/map.js +59 -0
- package/dist/cli/map.js.map +1 -0
- package/dist/cli/memory.js +17 -8
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/setup.js +6 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/work.js +8 -1
- package/dist/cli/work.js.map +1 -1
- package/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/analyze.js +82 -0
- package/dist/core/analyze.js.map +1 -0
- package/dist/core/capabilities.js +60 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/check.js +17 -1
- package/dist/core/check.js.map +1 -1
- package/dist/core/checks/changed.js +17 -3
- package/dist/core/checks/changed.js.map +1 -1
- package/dist/core/checks/mutation.js +31 -0
- package/dist/core/checks/mutation.js.map +1 -0
- package/dist/core/checks/source.js +2 -1
- package/dist/core/checks/source.js.map +1 -1
- package/dist/core/context.js +206 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/conventions.js +149 -0
- package/dist/core/conventions.js.map +1 -0
- package/dist/core/knowledge.js +9 -3
- package/dist/core/knowledge.js.map +1 -1
- package/dist/core/ledger.js +57 -4
- package/dist/core/ledger.js.map +1 -1
- package/dist/core/map/format.js +52 -0
- package/dist/core/map/format.js.map +1 -0
- package/dist/core/map/imports.js +152 -0
- package/dist/core/map/imports.js.map +1 -0
- package/dist/core/map/index.js +142 -0
- package/dist/core/map/index.js.map +1 -0
- package/dist/core/map/symbols.js +123 -0
- package/dist/core/map/symbols.js.map +1 -0
- package/dist/core/paths.js +4 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/reader.js +17 -3
- package/dist/core/reader.js.map +1 -1
- package/dist/core/readerSession.js +16 -2
- package/dist/core/readerSession.js.map +1 -1
- package/dist/core/regress.js +3 -0
- package/dist/core/regress.js.map +1 -1
- package/dist/core/scenarios.js +9 -0
- package/dist/core/scenarios.js.map +1 -1
- package/dist/core/size.js +13 -9
- package/dist/core/size.js.map +1 -1
- package/dist/core/view.js +38 -1
- package/dist/core/view.js.map +1 -1
- package/hooks/notify.js +14 -9
- package/package.json +1 -1
- package/skills/vibe/SKILL.md +13 -12
- package/skills/vibe-build/SKILL.md +3 -2
- package/skills/vibe-discover/SKILL.md +2 -0
- package/skills/vibe-handoff/SKILL.md +1 -1
- package/skills/vibe-prove/SKILL.md +4 -0
- package/skills/vibe-scope/SKILL.md +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { readLedger } from './ledger.js';
|
|
4
|
+
import { vibePath } from './paths.js';
|
|
5
|
+
import { listRegressions } from './regress.js';
|
|
6
|
+
import { ensureDir, readJson, readText, writeAtomic } from './store.js';
|
|
7
|
+
const LINT_FILES = ['.eslintrc.json', '.eslintrc.js', '.eslintrc.cjs', '.eslintrc.yml', '.eslintrc.yaml', '.eslintrc', 'eslint.config.js', 'eslint.config.mjs', 'eslint.config.cjs', 'eslint.config.ts'];
|
|
8
|
+
const FORMAT_FILES = ['.prettierrc', '.prettierrc.json', '.prettierrc.js', '.prettierrc.cjs', '.prettierrc.yml', '.prettierrc.yaml', 'prettier.config.js', 'biome.json', '.editorconfig', 'rustfmt.toml', '.golangci.yml', '.golangci.yaml'];
|
|
9
|
+
const TS_FLAGS = ['strict', 'noUncheckedIndexedAccess', 'noImplicitReturns', 'noFallthroughCasesInSwitch', 'exactOptionalPropertyTypes'];
|
|
10
|
+
function existingFiles(root, names) {
|
|
11
|
+
return names.filter((n) => fs.existsSync(path.join(root, n)));
|
|
12
|
+
}
|
|
13
|
+
function lintLines(root) {
|
|
14
|
+
const out = [];
|
|
15
|
+
for (const f of existingFiles(root, LINT_FILES))
|
|
16
|
+
out.push({ text: `lint config present (${f})`, source: f });
|
|
17
|
+
for (const f of existingFiles(root, FORMAT_FILES))
|
|
18
|
+
out.push({ text: `formatter config present (${f})`, source: f });
|
|
19
|
+
if (fs.existsSync(path.join(root, 'ruff.toml')))
|
|
20
|
+
out.push({ text: 'Python lint config present (ruff.toml)', source: 'ruff.toml' });
|
|
21
|
+
const pyproject = readText(path.join(root, 'pyproject.toml'));
|
|
22
|
+
if (pyproject && /\[tool\.(ruff|black)\]/.test(pyproject))
|
|
23
|
+
out.push({ text: 'Python lint/format config in pyproject.toml ([tool.ruff]/[tool.black])', source: 'pyproject.toml' });
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
function tsconfigLines(root) {
|
|
27
|
+
const raw = readJson(path.join(root, 'tsconfig.json'));
|
|
28
|
+
const options = raw?.compilerOptions;
|
|
29
|
+
if (!options)
|
|
30
|
+
return [];
|
|
31
|
+
const on = TS_FLAGS.filter((f) => options[f] === true);
|
|
32
|
+
return on.length ? [{ text: `tsconfig strict flags: ${on.join(', ')}`, source: 'tsconfig.json' }] : [];
|
|
33
|
+
}
|
|
34
|
+
function projectFileLines(root) {
|
|
35
|
+
const out = [];
|
|
36
|
+
const pyproject = readText(path.join(root, 'pyproject.toml'));
|
|
37
|
+
if (pyproject) {
|
|
38
|
+
const version = /^version\s*=\s*"([^"]+)"/m.exec(pyproject)?.[1];
|
|
39
|
+
out.push({ text: `Python project (pyproject.toml)${version ? ` version ${version}` : ''}`, source: 'pyproject.toml' });
|
|
40
|
+
}
|
|
41
|
+
const goMod = readText(path.join(root, 'go.mod'));
|
|
42
|
+
if (goMod) {
|
|
43
|
+
const mod = /^module\s+(\S+)/m.exec(goMod)?.[1] ?? '(unnamed)';
|
|
44
|
+
const goVersion = /^go\s+(\S+)/m.exec(goMod)?.[1];
|
|
45
|
+
out.push({ text: `Go module ${mod}${goVersion ? ` (go ${goVersion})` : ''}`, source: 'go.mod' });
|
|
46
|
+
}
|
|
47
|
+
const cargo = readText(path.join(root, 'Cargo.toml'));
|
|
48
|
+
if (cargo) {
|
|
49
|
+
const name = /^name\s*=\s*"([^"]+)"/m.exec(cargo)?.[1] ?? '(unnamed)';
|
|
50
|
+
const version = /^version\s*=\s*"([^"]+)"/m.exec(cargo)?.[1];
|
|
51
|
+
out.push({ text: `Rust crate ${name}${version ? ` ${version}` : ''}`, source: 'Cargo.toml' });
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
function scriptLines(root) {
|
|
56
|
+
const pkg = readJson(path.join(root, 'package.json'));
|
|
57
|
+
const scripts = pkg?.scripts ?? {};
|
|
58
|
+
const out = [];
|
|
59
|
+
for (const key of ['test', 'lint', 'build']) {
|
|
60
|
+
const cmd = scripts[key];
|
|
61
|
+
if (cmd)
|
|
62
|
+
out.push({ text: `package.json script ${key}: "${cmd}"`, source: 'package.json' });
|
|
63
|
+
}
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
function headingLines(root) {
|
|
67
|
+
const out = [];
|
|
68
|
+
for (const name of ['AGENTS.md', 'CLAUDE.md']) {
|
|
69
|
+
const text = readText(path.join(root, name));
|
|
70
|
+
const heading = text?.split('\n').find((l) => l.trim().startsWith('#'));
|
|
71
|
+
if (heading)
|
|
72
|
+
out.push({ text: `${name}: ${heading.replace(/^#+\s*/, '').trim()}`, source: name });
|
|
73
|
+
}
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
/** What the repository declares, one line per finding, each with the file it came from. */
|
|
77
|
+
export function readConventions(root) {
|
|
78
|
+
return [...lintLines(root), ...tsconfigLines(root), ...projectFileLines(root), ...scriptLines(root), ...headingLines(root)];
|
|
79
|
+
}
|
|
80
|
+
const REJECT_ITEM_RE = /^[^|]+\|[^|]+\|[^|]+\|[^|]+$/;
|
|
81
|
+
const KEEP_RE = /^KEEP\s*\|/;
|
|
82
|
+
/** Every reviewer line across every `check` run's evidence, grouped by exact text, with the runs that said it. */
|
|
83
|
+
function reviewLines(root) {
|
|
84
|
+
const byLine = new Map();
|
|
85
|
+
for (const e of readLedger(root)) {
|
|
86
|
+
if (e.event !== 'check' || !e.run)
|
|
87
|
+
continue;
|
|
88
|
+
const evidence = readJson(vibePath(root, 'evidence', `${e.run}.json`));
|
|
89
|
+
for (const r of evidence?.results ?? []) {
|
|
90
|
+
for (const raw of (r.tail ?? '').split('\n')) {
|
|
91
|
+
const line = raw.trim();
|
|
92
|
+
const kind = KEEP_RE.test(line) ? 'keep' : REJECT_ITEM_RE.test(line) && line !== 'REJECT' ? 'reject' : null;
|
|
93
|
+
if (!kind)
|
|
94
|
+
continue;
|
|
95
|
+
const entry = byLine.get(line) ?? { kind, runs: new Set() };
|
|
96
|
+
entry.runs.add(e.run);
|
|
97
|
+
byLine.set(line, entry);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return byLine;
|
|
102
|
+
}
|
|
103
|
+
/** A REJECT reason or a KEEP line that recurs across two or more `check` runs — the review is telling us something twice. */
|
|
104
|
+
function recurringReviewLines(root) {
|
|
105
|
+
const out = [];
|
|
106
|
+
for (const [line, { kind, runs }] of reviewLines(root)) {
|
|
107
|
+
if (runs.size < 2)
|
|
108
|
+
continue;
|
|
109
|
+
const label = kind === 'keep' ? 'KEEP line' : 'REJECT reason';
|
|
110
|
+
out.push({ text: `recurring ${label}: ${line}`, source: `check ${[...runs].sort().join(', ')}` });
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
function regressionLines(root) {
|
|
115
|
+
return listRegressions(root).map((r) => {
|
|
116
|
+
const title = /^\[regression\]\s*(.+?)\s*—\s*source/.exec(r.then)?.[1] ?? r.then;
|
|
117
|
+
return { text: `regression: ${title}`, source: `.vibe/regressions/${r.id}.yaml` };
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function decisionLines(root) {
|
|
121
|
+
return readLedger(root)
|
|
122
|
+
.filter((e) => e.event === 'approve')
|
|
123
|
+
.map((e) => ({ text: `decided: ${e.detail ?? ''}`, source: `ledger:approve ${e.at}` }));
|
|
124
|
+
}
|
|
125
|
+
/** What the ledger showed: recurring review findings, every regression, every approval decided. */
|
|
126
|
+
export function learnConventions(root) {
|
|
127
|
+
return [...recurringReviewLines(root), ...regressionLines(root), ...decisionLines(root)];
|
|
128
|
+
}
|
|
129
|
+
export function conventionsPath(root) {
|
|
130
|
+
return vibePath(root, 'knowledge', 'conventions.md');
|
|
131
|
+
}
|
|
132
|
+
function formatLine(l) {
|
|
133
|
+
return `- ${l.text} — source: ${l.source}`;
|
|
134
|
+
}
|
|
135
|
+
/** Append-only: a line already present, byte for byte, is never written twice. */
|
|
136
|
+
export function updateConventions(root) {
|
|
137
|
+
const lines = [...new Set([...readConventions(root), ...learnConventions(root)].map(formatLine))];
|
|
138
|
+
const file = conventionsPath(root);
|
|
139
|
+
const existingText = readText(file);
|
|
140
|
+
const existingLines = new Set((existingText ?? '').split('\n').map((l) => l.trim()).filter(Boolean));
|
|
141
|
+
const added = lines.filter((l) => !existingLines.has(l));
|
|
142
|
+
if (added.length > 0) {
|
|
143
|
+
ensureDir(path.dirname(file));
|
|
144
|
+
const prefix = existingText && existingText.trim() ? `${existingText.trimEnd()}\n` : '';
|
|
145
|
+
writeAtomic(file, `${prefix}${added.join('\n')}\n`);
|
|
146
|
+
}
|
|
147
|
+
return { added, total: existingLines.size + added.length };
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=conventions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/core/conventions.ts"],"names":[],"mappings":"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"}
|
package/dist/core/knowledge.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
import { detectClient, detectModel } from './client.js';
|
|
3
4
|
import { usage } from './errors.js';
|
|
@@ -8,15 +9,20 @@ import { writeAtomic } from './store.js';
|
|
|
8
9
|
export function knowledgeDir(root) {
|
|
9
10
|
return vibePath(root, 'knowledge');
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
/** Cross-project knowledge, outside any `.vibe/` — the same plain-file format, read after a project's own. */
|
|
13
|
+
export function globalKnowledgeDir(home = process.env['VIBE_HOME_DIR'] ?? os.homedir()) {
|
|
14
|
+
return path.join(home, '.config', 'vibe', 'knowledge');
|
|
15
|
+
}
|
|
16
|
+
export function addKnowledge(root, title, body, options = {}) {
|
|
12
17
|
if (!title.trim())
|
|
13
18
|
throw usage('--title is required');
|
|
14
19
|
if (!body.trim())
|
|
15
20
|
throw usage('body is empty');
|
|
16
21
|
const slug = title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '').slice(0, 48) || 'note';
|
|
17
|
-
const
|
|
22
|
+
const dir = options.global ? globalKnowledgeDir() : knowledgeDir(root);
|
|
23
|
+
const file = path.join(dir, `${slug}.md`);
|
|
18
24
|
writeAtomic(file, `# ${title}\n\n${body.trim()}\n`);
|
|
19
|
-
record(root, { event: 'knowledge', client: detectClient(), model: detectModel(), detail: slug });
|
|
25
|
+
record(root, { event: 'knowledge', client: detectClient(), model: detectModel(), detail: options.global ? `global:${slug}` : slug });
|
|
20
26
|
return { file };
|
|
21
27
|
}
|
|
22
28
|
//# sourceMappingURL=knowledge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/core/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/core/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACrC,CAAC;AAED,8GAA8G;AAC9G,MAAM,UAAU,kBAAkB,CAAC,OAAe,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;IAC5F,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAMD,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,UAA+B,EAAE;IACvG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;IAC5G,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1C,WAAW,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrI,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC"}
|
package/dist/core/ledger.js
CHANGED
|
@@ -17,6 +17,11 @@ export function recordUsage(root, input) {
|
|
|
17
17
|
const run = `r-${readState(root).runs + 1}`;
|
|
18
18
|
return record(root, { event: 'usage', client: input.client, model: input.model, run, detail: input.detail, tokens: input.tokens ?? null, costUsd: input.costUsd, ms: input.ms });
|
|
19
19
|
}
|
|
20
|
+
/** An authorize record for `action` inside the window — what lets an irreversible scenario run at all. */
|
|
21
|
+
export function recentAuthorize(root, action, windowMs = 10 * 60 * 1000) {
|
|
22
|
+
const cutoff = Date.now() - windowMs;
|
|
23
|
+
return readLedger(root).some((e) => e.event === 'authorize' && (e.detail ?? '').startsWith(`${action}:`) && new Date(e.at).getTime() >= cutoff);
|
|
24
|
+
}
|
|
20
25
|
export function readLedger(root, sinceMs) {
|
|
21
26
|
const all = readJsonl(ledgerPath(root));
|
|
22
27
|
if (!sinceMs)
|
|
@@ -74,8 +79,54 @@ function metricOf(e, metric) {
|
|
|
74
79
|
return typeof e.passed === 'number' ? e.passed : null;
|
|
75
80
|
if (metric === 'turns')
|
|
76
81
|
return typeof e.turns === 'number' ? e.turns : null;
|
|
82
|
+
if (metric === 'ms')
|
|
83
|
+
return typeof e.ms === 'number' ? e.ms : null;
|
|
77
84
|
return typeof e.costUsd === 'number' ? e.costUsd : null;
|
|
78
85
|
}
|
|
86
|
+
/** A run "passed" for pairing purposes when every scenario in it passed. */
|
|
87
|
+
function armPassed(e) {
|
|
88
|
+
return e.armPassed ?? (typeof e.failed === 'number' && e.failed === 0);
|
|
89
|
+
}
|
|
90
|
+
/** The key that lines up the same run across two arms: the `pair` field bench/run.js writes, or — for a
|
|
91
|
+
* ledger without one — the nth occurrence of a task within its own arm, in the order it was recorded. */
|
|
92
|
+
function pairKey(e, seenPerTask) {
|
|
93
|
+
if (e.pair)
|
|
94
|
+
return e.pair;
|
|
95
|
+
const task = e.task ?? 'unknown';
|
|
96
|
+
const n = seenPerTask.get(task) ?? 0;
|
|
97
|
+
seenPerTask.set(task, n + 1);
|
|
98
|
+
return `${task}#${n}`;
|
|
99
|
+
}
|
|
100
|
+
/** Keep only runs that pair with a run in the other arm on the same task, both of which passed. Needs
|
|
101
|
+
* exactly two arms — pairing across more than two has no single "other side" to match against. */
|
|
102
|
+
function pairedOnly(checks, by) {
|
|
103
|
+
const arms = new Map();
|
|
104
|
+
for (const e of checks) {
|
|
105
|
+
const key = armKey(e, by);
|
|
106
|
+
arms.set(key, [...(arms.get(key) ?? []), e]);
|
|
107
|
+
}
|
|
108
|
+
const [armA, armB] = [...arms.keys()];
|
|
109
|
+
if (arms.size !== 2 || armA === undefined || armB === undefined)
|
|
110
|
+
return checks;
|
|
111
|
+
const seenA = new Map();
|
|
112
|
+
const seenB = new Map();
|
|
113
|
+
const bByKey = new Map((arms.get(armB) ?? []).map((e) => [pairKey(e, seenB), e]));
|
|
114
|
+
const out = [];
|
|
115
|
+
for (const e of arms.get(armA) ?? []) {
|
|
116
|
+
const other = bByKey.get(pairKey(e, seenA));
|
|
117
|
+
if (other && armPassed(e) && armPassed(other))
|
|
118
|
+
out.push(e, other);
|
|
119
|
+
}
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
/** costRecomputed far (more than 3×) from the client-reported costUsd — a run worth a second look. */
|
|
123
|
+
function costMismatched(e) {
|
|
124
|
+
const a = e.costRecomputed;
|
|
125
|
+
const b = e.costUsd;
|
|
126
|
+
if (typeof a !== 'number' || typeof b !== 'number' || a === 0 || b === 0)
|
|
127
|
+
return false;
|
|
128
|
+
return Math.max(a, b) / Math.min(a, b) > 3;
|
|
129
|
+
}
|
|
79
130
|
function withUsage(e, metric, usageByRun) {
|
|
80
131
|
const own = metricOf(e, metric);
|
|
81
132
|
if (metric !== 'cost')
|
|
@@ -100,10 +151,11 @@ function armKey(e, by) {
|
|
|
100
151
|
return e.model ?? 'unknown';
|
|
101
152
|
return e.harness ?? 'unknown';
|
|
102
153
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const events =
|
|
106
|
-
const
|
|
154
|
+
export function compare(root, by, metric, minRuns = 5, ledgerFile, paired = false, filter = {}) {
|
|
155
|
+
const all = ledgerFile ? readJsonl(ledgerFile) : readLedger(root);
|
|
156
|
+
const events = all.filter((e) => (!filter.client || e.client === filter.client) && (!filter.task || e.task === filter.task));
|
|
157
|
+
const allChecks = events.filter((e) => e.event === 'check');
|
|
158
|
+
const checks = paired ? pairedOnly(allChecks, by) : allChecks;
|
|
107
159
|
// What the readers and reviewers spent during a run belongs to that run's cost.
|
|
108
160
|
const usageByRun = new Map();
|
|
109
161
|
for (const e of events)
|
|
@@ -122,6 +174,7 @@ export function compare(root, by, metric, minRuns = 5, ledgerFile) {
|
|
|
122
174
|
usable: values.length,
|
|
123
175
|
scenarioSets: [...new Set(events.map((e) => e.scenarioSet ?? 'unknown'))],
|
|
124
176
|
range: range(values),
|
|
177
|
+
costMismatch: events.filter(costMismatched).length,
|
|
125
178
|
};
|
|
126
179
|
});
|
|
127
180
|
const base = { by, metric, arms, delta: null };
|
package/dist/core/ledger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/core/ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/core/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
/** Text rendering for `vibe map`, `symbols`, `callers` and `blast` — one representation, whatever the caller (CLI, `changed`, `reader`). */
|
|
3
|
+
export function formatMap(map) {
|
|
4
|
+
const files = Object.keys(map.files).sort();
|
|
5
|
+
const lines = [`${files.length} files`];
|
|
6
|
+
let lastDir = '';
|
|
7
|
+
for (const rel of files) {
|
|
8
|
+
const dir = path.dirname(rel);
|
|
9
|
+
if (dir !== lastDir) {
|
|
10
|
+
lines.push(`${dir}/`);
|
|
11
|
+
lastDir = dir;
|
|
12
|
+
}
|
|
13
|
+
const f = map.files[rel];
|
|
14
|
+
lines.push(` ${path.basename(rel)}${f.imports.length ? ` → ${f.imports.join(', ')}` : ''}`);
|
|
15
|
+
for (const s of f.symbols)
|
|
16
|
+
lines.push(` ${s.kind} ${s.signature} L${s.startLine}-${s.endLine}${s.exported ? ' export' : ''}`);
|
|
17
|
+
}
|
|
18
|
+
return lines.join('\n');
|
|
19
|
+
}
|
|
20
|
+
export function formatSymbols(file, symbols) {
|
|
21
|
+
if (symbols.length === 0)
|
|
22
|
+
return `${file}: no symbols found`;
|
|
23
|
+
return [file, ...symbols.map((s) => ` ${s.kind} ${s.signature} L${s.startLine}-${s.endLine}${s.exported ? ' export' : ''}`)].join('\n');
|
|
24
|
+
}
|
|
25
|
+
export function formatCallers(symbol, callers) {
|
|
26
|
+
if (callers.length === 0)
|
|
27
|
+
return `${symbol}: no callers found`;
|
|
28
|
+
return [`${symbol}:`, ...callers.map((c) => ` ${c.file} (${c.confidence})`)].join('\n');
|
|
29
|
+
}
|
|
30
|
+
export function formatBlast(result) {
|
|
31
|
+
const changedLines = result.changed.length ? result.changed.map((c) => ` ${c.file} › ${c.name}() L${c.startLine}-${c.endLine}`) : [' none'];
|
|
32
|
+
const callerLines = result.callers.length ? result.callers.map((c) => ` ${c.file} (${c.confidence}, via ${c.symbol})`) : [' none'];
|
|
33
|
+
return ['Changed symbols:', ...changedLines, 'Affected symbols:', ...callerLines].join('\n');
|
|
34
|
+
}
|
|
35
|
+
/** The two summary lines `review`'s changed-with-blast bundle opens with, and the caller files behind them. */
|
|
36
|
+
export function blastSummary(result) {
|
|
37
|
+
const changedNames = [...new Set(result.changed.map((c) => c.name))];
|
|
38
|
+
const files = [...new Set(result.callers.map((c) => c.file))].sort();
|
|
39
|
+
return {
|
|
40
|
+
changedLine: `Changed symbols: ${changedNames.join(', ') || 'none'}`,
|
|
41
|
+
affectedLine: `Affected symbols: ${files.join(', ') || 'none'}`,
|
|
42
|
+
files,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** The skeleton `vibe read --ask` prepends to a code file: one line per symbol, name and signature with its line range. */
|
|
46
|
+
export function skeletonBlock(relPath, symbols) {
|
|
47
|
+
if (symbols.length === 0)
|
|
48
|
+
return '';
|
|
49
|
+
const lines = symbols.map((s) => `${s.signature} L${s.startLine}-${s.endLine}`);
|
|
50
|
+
return `<skeleton path="${relPath}">\n${lines.join('\n')}\n</skeleton>`;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/core/map/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { relPosix } from '../paths.js';
|
|
4
|
+
/**
|
|
5
|
+
* Import edges, resolved to a file that exists (or, for Go, a package directory expanded to the
|
|
6
|
+
* files inside it): JS/TS relative specifiers, Python `from`/`import`, Go module-relative imports
|
|
7
|
+
* against `go.mod`, Rust `use crate::…` / `mod x;`, and Java/Kotlin `import a.b.C` against a
|
|
8
|
+
* `src`/`java`/`kotlin` source root. Every result is filtered to files this map already knows.
|
|
9
|
+
*/
|
|
10
|
+
const JS_IMPORT = /(?:from\s+|import\s*\(?\s*|require\s*\(\s*)['"]([^'"]+)['"]/g;
|
|
11
|
+
const PY_FROM = /^\s*from\s+([.\w]+)\s+import\b/gm;
|
|
12
|
+
const PY_IMPORT = /^\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/gm;
|
|
13
|
+
const GO_IMPORT_BLOCK = /import\s*\(([^)]*)\)/gs;
|
|
14
|
+
const GO_IMPORT_SINGLE = /^\s*import\s+"([^"]+)"/gm;
|
|
15
|
+
const GO_PATH = /"([^"]+)"/g;
|
|
16
|
+
const RUST_USE = /^\s*(?:pub\s+)?use\s+((?:crate|self|super)(?:::[\w]+)+);/gm;
|
|
17
|
+
const RUST_MOD = /^\s*(?:pub\s+)?mod\s+([A-Za-z_]\w*)\s*;/gm;
|
|
18
|
+
const JAVA_IMPORT = /^\s*import\s+(?:static\s+)?([\w.]+)\s*;/gm;
|
|
19
|
+
const JS_EXTS = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
|
|
20
|
+
function firstExisting(candidates) {
|
|
21
|
+
return candidates.find((c) => fs.existsSync(c) && fs.statSync(c).isFile()) ?? null;
|
|
22
|
+
}
|
|
23
|
+
/** A relative JS/TS specifier: as written, with an extension, `.js` read as `.ts`, or an index file. */
|
|
24
|
+
function jsTargets(fromDir, spec) {
|
|
25
|
+
if (!spec.startsWith('.'))
|
|
26
|
+
return [];
|
|
27
|
+
const base = path.resolve(fromDir, spec);
|
|
28
|
+
const out = [base, ...JS_EXTS.map((e) => base + e), ...JS_EXTS.map((e) => path.join(base, `index${e}`))];
|
|
29
|
+
if (/\.[cm]?js$/.test(base))
|
|
30
|
+
out.push(base.replace(/\.[cm]?js$/, '.ts'), base.replace(/\.[cm]?js$/, '.tsx'));
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/** `from .x import` relative to the file, `from pkg.x import` / `import pkg.x` from the root and the file's directory. */
|
|
34
|
+
function pyTargets(root, fromDir, mod) {
|
|
35
|
+
if (mod.startsWith('.')) {
|
|
36
|
+
const ups = mod.match(/^\.+/)[0].length - 1;
|
|
37
|
+
const rest = mod.slice(ups + 1).split('.').filter(Boolean);
|
|
38
|
+
const base = path.resolve(fromDir, ...Array(ups).fill('..'), ...rest);
|
|
39
|
+
return [`${base}.py`, path.join(base, '__init__.py')];
|
|
40
|
+
}
|
|
41
|
+
const rest = mod.split('.');
|
|
42
|
+
return [root, fromDir].flatMap((start) => {
|
|
43
|
+
const base = path.resolve(start, ...rest);
|
|
44
|
+
return [`${base}.py`, path.join(base, '__init__.py')];
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** The nearest ancestor `go.mod`'s module path, and the directory it lives in. */
|
|
48
|
+
function findGoModule(dir, root) {
|
|
49
|
+
let cur = dir;
|
|
50
|
+
for (;;) {
|
|
51
|
+
const gomod = path.join(cur, 'go.mod');
|
|
52
|
+
if (fs.existsSync(gomod)) {
|
|
53
|
+
const m = /^module\s+(\S+)/m.exec(fs.readFileSync(gomod, 'utf-8'));
|
|
54
|
+
return m ? { name: m[1], dir: cur } : null;
|
|
55
|
+
}
|
|
56
|
+
const parent = path.dirname(cur);
|
|
57
|
+
if (cur === root || parent === cur)
|
|
58
|
+
return null;
|
|
59
|
+
cur = parent;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** A Go import path under the module: the package directory it names, expanded to its files by the caller. */
|
|
63
|
+
function goTargets(mod, importPath) {
|
|
64
|
+
if (!mod || !(importPath === mod.name || importPath.startsWith(`${mod.name}/`)))
|
|
65
|
+
return [];
|
|
66
|
+
const rel = importPath.slice(mod.name.length).replace(/^\//, '');
|
|
67
|
+
return [path.join(mod.dir, rel)];
|
|
68
|
+
}
|
|
69
|
+
/** `crate::a::b` against the crate's `src/`, most specific candidate first. */
|
|
70
|
+
function rustTargets(file, use) {
|
|
71
|
+
let srcRoot = path.dirname(file);
|
|
72
|
+
while (srcRoot && path.basename(srcRoot) !== 'src') {
|
|
73
|
+
const parent = path.dirname(srcRoot);
|
|
74
|
+
srcRoot = parent === srcRoot ? null : parent;
|
|
75
|
+
}
|
|
76
|
+
if (!srcRoot)
|
|
77
|
+
return [];
|
|
78
|
+
const parts = use.split('::').filter((p) => !['crate', 'self', 'super'].includes(p));
|
|
79
|
+
const out = [];
|
|
80
|
+
for (let k = parts.length; k >= 1; k -= 1) {
|
|
81
|
+
const base = path.join(srcRoot, ...parts.slice(0, k));
|
|
82
|
+
out.push(`${base}.rs`, path.join(base, 'mod.rs'));
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
/** `import a.b.C` against the nearest `java`/`kotlin`/`src` ancestor. */
|
|
87
|
+
function javaTargets(file, importPath) {
|
|
88
|
+
let root = path.dirname(file);
|
|
89
|
+
while (root && !['java', 'kotlin', 'src'].includes(path.basename(root))) {
|
|
90
|
+
const parent = path.dirname(root);
|
|
91
|
+
root = parent === root ? null : parent;
|
|
92
|
+
}
|
|
93
|
+
if (!root)
|
|
94
|
+
return [];
|
|
95
|
+
const base = path.join(root, ...importPath.split('.'));
|
|
96
|
+
return [`${base}.java`, `${base}.kt`];
|
|
97
|
+
}
|
|
98
|
+
function goFilesIn(dir, knownFiles, root) {
|
|
99
|
+
return [...knownFiles].filter((rel) => path.dirname(path.resolve(root, rel)) === dir);
|
|
100
|
+
}
|
|
101
|
+
function targetsFor(root, file, text) {
|
|
102
|
+
const dir = path.dirname(file);
|
|
103
|
+
const ext = path.extname(file);
|
|
104
|
+
const out = [];
|
|
105
|
+
if (JS_EXTS.includes(ext)) {
|
|
106
|
+
for (const m of text.matchAll(JS_IMPORT))
|
|
107
|
+
out.push(...jsTargets(dir, m[1]));
|
|
108
|
+
}
|
|
109
|
+
else if (ext === '.py') {
|
|
110
|
+
for (const m of text.matchAll(PY_FROM))
|
|
111
|
+
out.push(...pyTargets(root, dir, m[1]));
|
|
112
|
+
for (const m of text.matchAll(PY_IMPORT))
|
|
113
|
+
for (const mod of m[1].split(','))
|
|
114
|
+
out.push(...pyTargets(root, dir, mod.trim()));
|
|
115
|
+
}
|
|
116
|
+
else if (ext === '.go') {
|
|
117
|
+
const mod = findGoModule(dir, root);
|
|
118
|
+
const block = [...text.matchAll(GO_IMPORT_BLOCK)].map((m) => m[1]).join('\n');
|
|
119
|
+
for (const m of [...block.matchAll(GO_PATH), ...text.matchAll(GO_IMPORT_SINGLE)])
|
|
120
|
+
out.push(...goTargets(mod, (m[1] ?? m[0]).replace(/^"|"$/g, '')));
|
|
121
|
+
}
|
|
122
|
+
else if (ext === '.rs') {
|
|
123
|
+
for (const m of text.matchAll(RUST_USE))
|
|
124
|
+
out.push(...rustTargets(file, m[1]));
|
|
125
|
+
for (const m of text.matchAll(RUST_MOD))
|
|
126
|
+
out.push(...rustTargets(file, `crate::${m[1]}`));
|
|
127
|
+
}
|
|
128
|
+
else if (ext === '.java' || ext === '.kt') {
|
|
129
|
+
for (const m of text.matchAll(JAVA_IMPORT))
|
|
130
|
+
out.push(...javaTargets(file, m[1]));
|
|
131
|
+
}
|
|
132
|
+
return out;
|
|
133
|
+
}
|
|
134
|
+
/** `file`'s import edges resolved to files this map knows, as paths relative to `root`. Go targets that name a directory expand to every known file directly inside it. */
|
|
135
|
+
export function resolveImports(root, file, text, knownFiles) {
|
|
136
|
+
const out = new Set();
|
|
137
|
+
for (const candidate of targetsFor(root, file, text)) {
|
|
138
|
+
if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
|
|
139
|
+
for (const rel of goFilesIn(candidate, knownFiles, root))
|
|
140
|
+
out.add(rel);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const hit = firstExisting([candidate]) ?? (path.extname(candidate) ? null : firstExisting([`${candidate}.go`]));
|
|
144
|
+
if (!hit)
|
|
145
|
+
continue;
|
|
146
|
+
const rel = relPosix(root, hit);
|
|
147
|
+
if (knownFiles.has(rel))
|
|
148
|
+
out.add(rel);
|
|
149
|
+
}
|
|
150
|
+
return [...out].sort();
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../src/core/map/imports.ts"],"names":[],"mappings":"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"}
|