@su-record/vibe 4.2.34 → 4.2.36
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/dist/cli/common.js +4 -1
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/heldout.js +10 -4
- package/dist/cli/heldout.js.map +1 -1
- package/dist/cli/human.js +8 -4
- package/dist/cli/human.js.map +1 -1
- package/dist/cli/internal.js +37 -24
- package/dist/cli/internal.js.map +1 -1
- package/dist/cli/ledger.js +67 -0
- package/dist/cli/ledger.js.map +1 -0
- package/dist/cli/map.js +5 -3
- package/dist/cli/map.js.map +1 -1
- package/dist/cli/memory.js +104 -74
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/risks.js +20 -3
- package/dist/cli/risks.js.map +1 -1
- package/dist/cli/session.js +4 -2
- package/dist/cli/session.js.map +1 -1
- package/dist/cli/setup.js +44 -13
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/verification.js +1 -1
- package/dist/cli/verification.js.map +1 -1
- package/dist/cli/work.js +75 -22
- package/dist/cli/work.js.map +1 -1
- package/dist/cli.js +18 -6
- package/dist/cli.js.map +1 -1
- package/dist/core/analyze.js +21 -7
- package/dist/core/analyze.js.map +1 -1
- package/dist/core/artifact-paths.js +14 -3
- package/dist/core/artifact-paths.js.map +1 -1
- package/dist/core/capabilities.js +69 -15
- package/dist/core/capabilities.js.map +1 -1
- package/dist/core/check-authorization.js +37 -0
- package/dist/core/check-authorization.js.map +1 -0
- package/dist/core/check-process.js +12 -4
- package/dist/core/check-process.js.map +1 -1
- package/dist/core/check-report.js +66 -0
- package/dist/core/check-report.js.map +1 -0
- package/dist/core/check-selection.js +4 -2
- package/dist/core/check-selection.js.map +1 -1
- package/dist/core/check.js +66 -130
- package/dist/core/check.js.map +1 -1
- package/dist/core/checks/changed.js +20 -6
- package/dist/core/checks/changed.js.map +1 -1
- package/dist/core/checks/eval.js +35 -10
- package/dist/core/checks/eval.js.map +1 -1
- package/dist/core/checks/file.js +26 -23
- package/dist/core/checks/file.js.map +1 -1
- package/dist/core/checks/fileRules.js +42 -16
- package/dist/core/checks/fileRules.js.map +1 -1
- package/dist/core/checks/http.js +35 -34
- package/dist/core/checks/http.js.map +1 -1
- package/dist/core/checks/packs.js +1 -1
- package/dist/core/checks/packs.js.map +1 -1
- package/dist/core/checks/review.js +75 -40
- package/dist/core/checks/review.js.map +1 -1
- package/dist/core/checks/run.js +5 -2
- package/dist/core/checks/run.js.map +1 -1
- package/dist/core/checks/schema.js +25 -0
- package/dist/core/checks/schema.js.map +1 -0
- package/dist/core/checks/source.js +11 -6
- package/dist/core/checks/source.js.map +1 -1
- package/dist/core/config.js +9 -2
- package/dist/core/config.js.map +1 -1
- package/dist/core/consent.js +24 -16
- package/dist/core/consent.js.map +1 -1
- package/dist/core/context-notes.js +15 -7
- package/dist/core/context-notes.js.map +1 -1
- package/dist/core/context.js +24 -12
- package/dist/core/context.js.map +1 -1
- package/dist/core/conventions.js +22 -9
- package/dist/core/conventions.js.map +1 -1
- package/dist/core/docs/cfb.js +81 -45
- package/dist/core/docs/cfb.js.map +1 -1
- package/dist/core/docs/html.js +14 -3
- package/dist/core/docs/html.js.map +1 -1
- package/dist/core/docs/hwp.js +44 -22
- package/dist/core/docs/hwp.js.map +1 -1
- package/dist/core/docs/office.js +20 -10
- package/dist/core/docs/office.js.map +1 -1
- package/dist/core/docs/pdf.js +10 -4
- package/dist/core/docs/pdf.js.map +1 -1
- package/dist/core/docs/read.js +32 -24
- package/dist/core/docs/read.js.map +1 -1
- package/dist/core/docs/zip.js +32 -15
- package/dist/core/docs/zip.js.map +1 -1
- package/dist/core/evidence.js +17 -7
- package/dist/core/evidence.js.map +1 -1
- package/dist/core/failure-message.js +35 -13
- package/dist/core/failure-message.js.map +1 -1
- package/dist/core/failure.js +49 -14
- package/dist/core/failure.js.map +1 -1
- package/dist/core/github.js +3 -1
- package/dist/core/github.js.map +1 -1
- package/dist/core/handoff.js +20 -7
- package/dist/core/handoff.js.map +1 -1
- package/dist/core/heldout-run.js +6 -3
- package/dist/core/heldout-run.js.map +1 -1
- package/dist/core/heldout.js +24 -13
- package/dist/core/heldout.js.map +1 -1
- package/dist/core/inbox.js +3 -1
- package/dist/core/inbox.js.map +1 -1
- package/dist/core/inputs.js +76 -0
- package/dist/core/inputs.js.map +1 -0
- package/dist/core/inspect.js +61 -20
- package/dist/core/inspect.js.map +1 -1
- package/dist/core/intent.js +50 -12
- package/dist/core/intent.js.map +1 -1
- package/dist/core/knowledge-find.js +31 -12
- package/dist/core/knowledge-find.js.map +1 -1
- package/dist/core/knowledge.js +22 -12
- package/dist/core/knowledge.js.map +1 -1
- package/dist/core/lang.js +5 -2
- package/dist/core/lang.js.map +1 -1
- package/dist/core/ledger.js +44 -20
- package/dist/core/ledger.js.map +1 -1
- package/dist/core/locations.js +12 -0
- package/dist/core/locations.js.map +1 -0
- package/dist/core/map/imports.js +20 -9
- package/dist/core/map/imports.js.map +1 -1
- package/dist/core/map/index.js +28 -13
- package/dist/core/map/index.js.map +1 -1
- package/dist/core/map/symbols.js +27 -12
- package/dist/core/map/symbols.js.map +1 -1
- package/dist/core/output-capture.js +7 -4
- package/dist/core/output-capture.js.map +1 -1
- package/dist/core/paths.js +2 -1
- package/dist/core/paths.js.map +1 -1
- package/dist/core/performance.js +43 -17
- package/dist/core/performance.js.map +1 -1
- package/dist/core/profile.js +6 -3
- package/dist/core/profile.js.map +1 -1
- package/dist/core/reader.js +32 -16
- package/dist/core/reader.js.map +1 -1
- package/dist/core/readerSession.js +34 -14
- package/dist/core/readerSession.js.map +1 -1
- package/dist/core/recent.js +20 -6
- package/dist/core/recent.js.map +1 -1
- package/dist/core/regress.js +21 -12
- package/dist/core/regress.js.map +1 -1
- package/dist/core/repair.js +22 -4
- package/dist/core/repair.js.map +1 -1
- package/dist/core/research-queries.js +85 -0
- package/dist/core/research-queries.js.map +1 -0
- package/dist/core/research.js +89 -88
- package/dist/core/research.js.map +1 -1
- package/dist/core/results.js +89 -0
- package/dist/core/results.js.map +1 -0
- package/dist/core/risk-signals.js +55 -16
- package/dist/core/risk-signals.js.map +1 -1
- package/dist/core/run-id.js +10 -6
- package/dist/core/run-id.js.map +1 -1
- package/dist/core/scenarios.js +97 -57
- package/dist/core/scenarios.js.map +1 -1
- package/dist/core/session.js +3 -2
- package/dist/core/session.js.map +1 -1
- package/dist/core/size-gate.js +57 -0
- package/dist/core/size-gate.js.map +1 -0
- package/dist/core/size.js +32 -10
- package/dist/core/size.js.map +1 -1
- package/dist/core/skills.js +66 -28
- package/dist/core/skills.js.map +1 -1
- package/dist/core/skillsmp.js +26 -12
- package/dist/core/skillsmp.js.map +1 -1
- package/dist/core/source-basis.js +21 -9
- package/dist/core/source-basis.js.map +1 -1
- package/dist/core/status.js +26 -13
- package/dist/core/status.js.map +1 -1
- package/dist/core/table.js +8 -1
- package/dist/core/table.js.map +1 -1
- package/dist/core/tokens.js +20 -10
- package/dist/core/tokens.js.map +1 -1
- package/dist/core/tree.js +26 -16
- package/dist/core/tree.js.map +1 -1
- package/dist/core/verification-plan.js +26 -10
- package/dist/core/verification-plan.js.map +1 -1
- package/dist/core/verification.js +14 -7
- package/dist/core/verification.js.map +1 -1
- package/dist/core/view.js +93 -44
- package/dist/core/view.js.map +1 -1
- package/dist/install/global.js +37 -18
- package/dist/install/global.js.map +1 -1
- package/dist/install/hooks.js +17 -8
- package/dist/install/hooks.js.map +1 -1
- package/dist/install/manifest.js +11 -0
- package/dist/install/manifest.js.map +1 -0
- package/dist/install/mcpb.js +52 -23
- package/dist/install/mcpb.js.map +1 -1
- package/dist/install/plugin.js +73 -33
- package/dist/install/plugin.js.map +1 -1
- package/dist/install/project.js +8 -7
- package/dist/install/project.js.map +1 -1
- package/dist/install/register.js +83 -48
- package/dist/install/register.js.map +1 -1
- package/dist/install/tree.js +27 -11
- package/dist/install/tree.js.map +1 -1
- package/dist/install/update.js +46 -20
- package/dist/install/update.js.map +1 -1
- package/hooks/code-map.cjs +22 -9
- package/hooks/file-size.cjs +83 -0
- package/hooks/journal.cjs +28 -18
- package/hooks/knowledge-auto.cjs +55 -21
- package/hooks/knowledge-journal.cjs +47 -20
- package/hooks/knowledge-projects.cjs +50 -21
- package/hooks/knowledge-recall.cjs +16 -6
- package/hooks/knowledge-upkeep.cjs +22 -5
- package/hooks/locations.cjs +35 -0
- package/hooks/notify.js +52 -24
- package/hooks/obsidian.cjs +17 -7
- package/hooks/private-store.cjs +25 -10
- package/hooks/retest.cjs +39 -16
- package/hooks/session-context.cjs +30 -13
- package/hooks/session-files.cjs +44 -21
- package/hooks/session-repair.cjs +26 -11
- package/hooks/session-state.cjs +78 -38
- package/hooks/session.js +19 -8
- package/hooks/slice-command.cjs +38 -17
- package/hooks/slice-guard.cjs +20 -6
- package/hooks/slice-store.cjs +25 -12
- package/internal/guides/code.md +17 -0
- package/mcpb/server/index.js +40 -12
- package/package.json +1 -1
package/dist/core/skills.js
CHANGED
|
@@ -10,7 +10,10 @@ import { inboxPath } from './inbox.js';
|
|
|
10
10
|
import { record } from './ledger.js';
|
|
11
11
|
import { vibePath } from './paths.js';
|
|
12
12
|
import { listRegressions } from './regress.js';
|
|
13
|
+
import { hostKey } from './research-queries.js';
|
|
14
|
+
import { CLAUDE_DIR, CODEX_DIR } from './locations.js';
|
|
13
15
|
import { readState } from './state.js';
|
|
16
|
+
import { HTTP_OK } from './checks/http.js';
|
|
14
17
|
/**
|
|
15
18
|
* Project-local skills. Nothing accumulates globally: a skill lives in this repository's
|
|
16
19
|
* `.vibe/skills/installed`, is registered in `.vibe/skills/registry.json`, and is
|
|
@@ -19,15 +22,29 @@ import { readState } from './state.js';
|
|
|
19
22
|
*/
|
|
20
23
|
export const COMMON_SKILLS = ['vibe'];
|
|
21
24
|
const SKILL_DIRS = ['.vibe/skills/installed'];
|
|
22
|
-
|
|
25
|
+
/** Where the host clients keep project skills; a pruned skill is removed from these too. */
|
|
26
|
+
const CLIENT_SKILL_DIRS = [`${CLAUDE_DIR}/skills`, `${CODEX_DIR}/skills`];
|
|
27
|
+
const NAME_MAX = 40;
|
|
28
|
+
const NAME_RE = new RegExp(`^[a-z][a-z0-9.-]{0,${NAME_MAX - 1}}$`);
|
|
29
|
+
const REGISTRY_DIR = 'skills';
|
|
30
|
+
const REGISTRY_FILE = 'registry.json';
|
|
31
|
+
const DISMISSED_FILE = 'dismissed.jsonl';
|
|
23
32
|
const DEFAULT_UNUSED_RUNS = 10;
|
|
24
33
|
const MAX_PROPOSALS = 3;
|
|
25
34
|
const MAX_COMMANDS_SHOWN = 20;
|
|
35
|
+
/** A skill is proposed from a repeated signal: this many regressions on a scenario, or this many askings of a question. */
|
|
36
|
+
const REPEAT_SIGNAL = 2;
|
|
37
|
+
const QUESTION_TITLE_MAX = 60;
|
|
38
|
+
const SHORT_SHA = 7;
|
|
39
|
+
const PINNED_SHA = 12;
|
|
40
|
+
const DEFAULT_BRANCH = 'main';
|
|
41
|
+
/** Placeholder URL in a skill scaffolded with an http check. */
|
|
42
|
+
const TEMPLATE_URL = 'https://example.com/health';
|
|
26
43
|
function registryPath(root) {
|
|
27
|
-
return vibePath(root,
|
|
44
|
+
return vibePath(root, REGISTRY_DIR, REGISTRY_FILE);
|
|
28
45
|
}
|
|
29
46
|
function dismissedPath(root) {
|
|
30
|
-
return vibePath(root,
|
|
47
|
+
return vibePath(root, REGISTRY_DIR, DISMISSED_FILE);
|
|
31
48
|
}
|
|
32
49
|
export function readRegistry(root) {
|
|
33
50
|
return readJson(registryPath(root)) ?? { skills: [] };
|
|
@@ -42,7 +59,7 @@ function templateCheck(type, name) {
|
|
|
42
59
|
case 'file':
|
|
43
60
|
return { type: 'file', path: `out/${name}.csv`, exists: true };
|
|
44
61
|
case 'http':
|
|
45
|
-
return { type: 'http', url:
|
|
62
|
+
return { type: 'http', url: TEMPLATE_URL, expect: { status: HTTP_OK } };
|
|
46
63
|
case 'eval':
|
|
47
64
|
return { type: 'eval', cases: `evals/${name}.jsonl`, runner: `node scripts/${name}.js`, expect: { pass: 1 } };
|
|
48
65
|
default:
|
|
@@ -50,12 +67,15 @@ function templateCheck(type, name) {
|
|
|
50
67
|
}
|
|
51
68
|
}
|
|
52
69
|
function skillBody(name, check, from) {
|
|
53
|
-
const
|
|
70
|
+
const then = from ? `[from scenario ${from}] fill in the success statement` : 'fill in the success statement';
|
|
71
|
+
const scenario = YAML.stringify([{ id: name, then, check }]).trim();
|
|
54
72
|
return [
|
|
55
73
|
'---', `name: ${name}`, 'description: "fill in — one line saying when this skill applies"', 'user-invocable: false', '---', '',
|
|
56
74
|
`# ${name}`, '', '## When', '', 'fill in — the situation that repeats in this project', '', '## Procedure', '',
|
|
57
|
-
`1. Run \`vibe skill used ${name}\` so the ledger knows the skill was applied.`, '2. fill in — the steps, each one checkable', '',
|
|
58
|
-
'
|
|
75
|
+
`1. Run \`vibe skill used ${name}\` so the ledger knows the skill was applied.`, '2. fill in — the steps, each one checkable', '',
|
|
76
|
+
'## Check', '',
|
|
77
|
+
'This skill is installed because it is bound to the check below.',
|
|
78
|
+
'Add it to `scenarios.yaml` when the procedure is part of an intent.', '', '```yaml', scenario, '```', '',
|
|
59
79
|
].join('\n');
|
|
60
80
|
}
|
|
61
81
|
function writeSkillFiles(root, name, files) {
|
|
@@ -74,9 +94,12 @@ function register(root, skill) {
|
|
|
74
94
|
registry.skills = [...registry.skills.filter((s) => s.name !== skill.name), skill];
|
|
75
95
|
writeRegistry(root, registry);
|
|
76
96
|
}
|
|
97
|
+
function newSkill(name, kind, source, check, license, run, paths) {
|
|
98
|
+
return { name, kind, source, check, license, installedAt: nowIso(), installedRun: run, lastUsedRun: null, lastUsedAt: null, paths };
|
|
99
|
+
}
|
|
77
100
|
export function createSkill(root, input) {
|
|
78
101
|
if (!NAME_RE.test(input.name))
|
|
79
|
-
throw usage(
|
|
102
|
+
throw usage(`skill name: 1-${NAME_MAX} chars of lowercase letters, digits, dots, hyphens`);
|
|
80
103
|
if (COMMON_SKILLS.includes(input.name))
|
|
81
104
|
throw usage(`${input.name} is a common skill shipped with vibe`);
|
|
82
105
|
let check;
|
|
@@ -95,7 +118,7 @@ export function createSkill(root, input) {
|
|
|
95
118
|
}
|
|
96
119
|
const paths = writeSkillFiles(root, input.name, { 'SKILL.md': skillBody(input.name, check, input.fromScenario ?? null) });
|
|
97
120
|
const run = readState(root).runs;
|
|
98
|
-
register(root,
|
|
121
|
+
register(root, newSkill(input.name, 'created', 'created', check, null, run, paths));
|
|
99
122
|
const edges = input.fromScenario ? [{ type: 'implements', from: `skill:${input.name}`, to: `scenario:${input.fromScenario}` }] : [];
|
|
100
123
|
record(root, { event: 'skill', client: detectClient(), model: detectModel(), detail: `create ${input.name} (${check.type})`, edges });
|
|
101
124
|
return { name: input.name, paths, check };
|
|
@@ -133,10 +156,11 @@ async function locateSkill(client, owner, repo, name, sha) {
|
|
|
133
156
|
/* try the next layout */
|
|
134
157
|
}
|
|
135
158
|
}
|
|
136
|
-
throw usage(`no SKILL.md found in ${owner}/${repo}${name ? ` for ${name}` : ''} at ${sha.slice(0,
|
|
159
|
+
throw usage(`no SKILL.md found in ${owner}/${repo}${name ? ` for ${name}` : ''} at ${sha.slice(0, SHORT_SHA)}`);
|
|
137
160
|
}
|
|
138
161
|
const MAX_SKILL_FILES = 200;
|
|
139
|
-
const
|
|
162
|
+
const BYTES_PER_MB = 1024 * 1024;
|
|
163
|
+
const MAX_SKILL_BYTES = 5 * BYTES_PER_MB;
|
|
140
164
|
/** The whole skill directory — `references/`, `scripts/`, `assets/` and deeper — keyed by path relative to the skill, within a cap. */
|
|
141
165
|
async function fetchFiles(client, owner, repo, entries, sha, base = '') {
|
|
142
166
|
const files = {};
|
|
@@ -159,8 +183,10 @@ async function fetchFiles(client, owner, repo, entries, sha, base = '') {
|
|
|
159
183
|
continue;
|
|
160
184
|
const text = full.encoding === 'base64' ? Buffer.from(full.content, 'base64').toString('utf-8') : full.content;
|
|
161
185
|
bytes += Buffer.byteLength(text);
|
|
162
|
-
if (Object.keys(files).length >= MAX_SKILL_FILES || bytes > MAX_SKILL_BYTES)
|
|
163
|
-
|
|
186
|
+
if (Object.keys(files).length >= MAX_SKILL_FILES || bytes > MAX_SKILL_BYTES) {
|
|
187
|
+
const cap = `${MAX_SKILL_FILES} files, ${MAX_SKILL_BYTES / BYTES_PER_MB} MB`;
|
|
188
|
+
throw usage(`the skill is over the cap (${cap}) at ${rel} — install it by hand if it is really that large`);
|
|
189
|
+
}
|
|
164
190
|
files[rel] = text;
|
|
165
191
|
}
|
|
166
192
|
};
|
|
@@ -178,7 +204,7 @@ export async function addSkill(root, input, client = githubClient()) {
|
|
|
178
204
|
const license = meta.license?.spdx_id ?? null;
|
|
179
205
|
let sha = input.pin ?? null;
|
|
180
206
|
if (!sha) {
|
|
181
|
-
const branch = (await client.get(`/repos/${owner}/${repo}/branches/${meta.default_branch ??
|
|
207
|
+
const branch = (await client.get(`/repos/${owner}/${repo}/branches/${meta.default_branch ?? DEFAULT_BRANCH}`));
|
|
182
208
|
sha = branch.commit?.sha ?? null;
|
|
183
209
|
}
|
|
184
210
|
if (!sha)
|
|
@@ -186,11 +212,11 @@ export async function addSkill(root, input, client = githubClient()) {
|
|
|
186
212
|
const { entries } = await locateSkill(client, owner, repo, name, sha);
|
|
187
213
|
const files = await fetchFiles(client, owner, repo, entries, sha);
|
|
188
214
|
const commands = commandsIn(files['SKILL.md']);
|
|
189
|
-
const ref = `${owner}/${repo}${name ? `@${name}` : ''}#${sha.slice(0,
|
|
215
|
+
const ref = `${owner}/${repo}${name ? `@${name}` : ''}#${sha.slice(0, PINNED_SHA)}`;
|
|
190
216
|
if (!input.yes)
|
|
191
217
|
return { installed: false, ref, sha, license, commands, files: Object.keys(files) };
|
|
192
218
|
const paths = writeSkillFiles(root, skillName, files);
|
|
193
|
-
register(root,
|
|
219
|
+
register(root, newSkill(skillName, 'added', ref, null, license, readState(root).runs, paths));
|
|
194
220
|
record(root, { event: 'skill', client: detectClient(), model: detectModel(), detail: `add ${ref} (${license ?? 'no license'}) confirmed by --yes` });
|
|
195
221
|
return { installed: true, ref, sha, license, commands, paths };
|
|
196
222
|
}
|
|
@@ -214,13 +240,16 @@ export function pruneSkills(root, options = {}) {
|
|
|
214
240
|
const registry = readRegistry(root);
|
|
215
241
|
const stale = registry.skills.filter((s) => current - (s.lastUsedRun ?? s.installedRun) >= unusedRuns);
|
|
216
242
|
if (!options.dryRun) {
|
|
217
|
-
for (const s of stale)
|
|
218
|
-
for (const dir of [...SKILL_DIRS,
|
|
243
|
+
for (const s of stale) {
|
|
244
|
+
for (const dir of [...SKILL_DIRS, ...CLIENT_SKILL_DIRS])
|
|
219
245
|
fs.rmSync(path.join(root, dir, s.name), { recursive: true, force: true });
|
|
246
|
+
}
|
|
220
247
|
registry.skills = registry.skills.filter((s) => !stale.includes(s));
|
|
221
248
|
writeRegistry(root, registry);
|
|
222
|
-
if (stale.length > 0)
|
|
223
|
-
|
|
249
|
+
if (stale.length > 0) {
|
|
250
|
+
const names = stale.map((s) => s.name).join(', ');
|
|
251
|
+
record(root, { event: 'skill', client: detectClient(), model: detectModel(), detail: `prune ${names} (unused ${unusedRuns} runs)` });
|
|
252
|
+
}
|
|
224
253
|
}
|
|
225
254
|
return { removed: stale.map((s) => s.name), kept: registry.skills.filter((s) => !stale.includes(s)).map((s) => s.name), threshold: unusedRuns };
|
|
226
255
|
}
|
|
@@ -237,15 +266,16 @@ function hostSignals(root, project) {
|
|
|
237
266
|
continue;
|
|
238
267
|
let key;
|
|
239
268
|
try {
|
|
240
|
-
key =
|
|
269
|
+
key = hostKey(s.check.url) ?? '';
|
|
241
270
|
}
|
|
242
271
|
catch {
|
|
243
272
|
continue;
|
|
244
273
|
}
|
|
245
274
|
if (!key || key === 'localhost' || /^\d+$/.test(key) || project.some((p) => p.name.includes(key)))
|
|
246
275
|
continue;
|
|
247
|
-
if (
|
|
248
|
-
|
|
276
|
+
if (out.some((p) => p.ref.endsWith(key)))
|
|
277
|
+
continue;
|
|
278
|
+
out.push({ kind: 'import', ref: `vibe skill search ${key}`, why: `scenario ${s.id} targets ${key}; no project skill covers it`, source: 'scenarios' });
|
|
249
279
|
}
|
|
250
280
|
return out;
|
|
251
281
|
}
|
|
@@ -260,9 +290,10 @@ function regressionSignals(root, project) {
|
|
|
260
290
|
const out = [];
|
|
261
291
|
for (const [id, n] of bySource) {
|
|
262
292
|
const scenario = scenarios.find((s) => s.id === id);
|
|
263
|
-
if (n <
|
|
293
|
+
if (n < REPEAT_SIGNAL || !scenario || scenario.check.type === 'human' || project.some((p) => p.name === `${id}-guard`))
|
|
264
294
|
continue;
|
|
265
|
-
|
|
295
|
+
const ref = `vibe skill create ${id}-guard --from-scenario ${id}`;
|
|
296
|
+
out.push({ kind: 'create', ref, why: `${n} regressions trace to scenario ${id}`, source: 'regressions' });
|
|
266
297
|
}
|
|
267
298
|
return out;
|
|
268
299
|
}
|
|
@@ -273,19 +304,26 @@ function questionSignals(root) {
|
|
|
273
304
|
continue;
|
|
274
305
|
counts.set(e.question, (counts.get(e.question) ?? 0) + 1);
|
|
275
306
|
}
|
|
276
|
-
return [...counts.entries()].filter(([, n]) => n >=
|
|
307
|
+
return [...counts.entries()].filter(([, n]) => n >= REPEAT_SIGNAL).map(([q, n]) => ({
|
|
308
|
+
kind: 'knowledge', ref: `vibe knowledge add --title ${JSON.stringify(q.slice(0, QUESTION_TITLE_MAX))}`,
|
|
309
|
+
why: `the same question was asked ${n} times — an answer in knowledge/ stops it`, source: 'inbox',
|
|
310
|
+
}));
|
|
277
311
|
}
|
|
278
312
|
function handoffSignals(root, project) {
|
|
279
313
|
if (readState(root).state !== 'DONE')
|
|
280
314
|
return [];
|
|
281
315
|
return loadScenarios(root)
|
|
282
316
|
.filter((s) => s.irreversible && s.check.type !== 'human' && !project.some((p) => p.name === `run-${s.id}`))
|
|
283
|
-
.map((s) => ({
|
|
317
|
+
.map((s) => ({
|
|
318
|
+
kind: 'create', ref: `vibe skill create run-${s.id} --from-scenario ${s.id}`,
|
|
319
|
+
why: `handoff: ${s.id} is irreversible (${s.irreversible}) — the operator needs the procedure with its check`, source: 'state',
|
|
320
|
+
}));
|
|
284
321
|
}
|
|
285
322
|
export function suggestSkills(root, all = false) {
|
|
286
323
|
const project = readRegistry(root).skills;
|
|
287
324
|
const dismissed = new Set(readJsonl(dismissedPath(root)).map((d) => d.ref));
|
|
288
|
-
const
|
|
325
|
+
const signals = [...handoffSignals(root, project), ...regressionSignals(root, project), ...hostSignals(root, project), ...questionSignals(root)];
|
|
326
|
+
const proposals = signals.filter((p) => !dismissed.has(p.ref));
|
|
289
327
|
return all ? proposals : proposals.slice(0, MAX_PROPOSALS);
|
|
290
328
|
}
|
|
291
329
|
//# sourceMappingURL=skills.js.map
|
package/dist/core/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/core/skillsmp.js
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
const ENDPOINT = 'https://skillsmp.com/api/v1/skills/search';
|
|
2
|
-
const
|
|
2
|
+
const API_KEY_ENV = 'SKILLSMP_API_KEY';
|
|
3
|
+
/** Largest response read; a bigger one is refused. */
|
|
4
|
+
const MAX_BYTES = 128 * 1024;
|
|
5
|
+
const REQUEST_TIMEOUT_MS = 5000;
|
|
6
|
+
/** Skills asked of the catalog and kept from its answer. */
|
|
7
|
+
const RESULT_LIMIT = 5;
|
|
8
|
+
const QUERY_MAX = 500;
|
|
9
|
+
const DESCRIPTION_MAX = 400;
|
|
10
|
+
const GITHUB_URL_MAX = 1000;
|
|
11
|
+
/** Every catalog hit scores the same: the catalog gives no quality signal, so discovery hints rank after scored candidates. */
|
|
12
|
+
const HINT_SCORE = 3;
|
|
13
|
+
/** A GitHub repository URL, optionally pointing at a `tree/` directory or a `blob/` file inside it. */
|
|
14
|
+
const GITHUB_SKILL_URL = /^https:\/\/github\.com\/([\w-]+)\/([\w.-]+)(?:\/(tree|blob)\/([\w.-]+)\/([\w./-]+))?\/?$/;
|
|
15
|
+
/** Shown for any failure; a response body or transport error could hold the API key, so neither is copied. */
|
|
16
|
+
export const SKILLSMP_UNAVAILABLE = 'SkillsMP unavailable, limited or invalid; using existing GitHub search';
|
|
3
17
|
/** Catalog metadata is a discovery hint. Installation still resolves and previews GitHub source. */
|
|
4
18
|
export function skillsmpCandidate(value) {
|
|
5
19
|
if (!value || typeof value !== 'object')
|
|
6
20
|
return null;
|
|
7
21
|
const item = value;
|
|
8
|
-
if (typeof item.githubUrl !== 'string' || item.githubUrl.length >
|
|
22
|
+
if (typeof item.githubUrl !== 'string' || item.githubUrl.length > GITHUB_URL_MAX)
|
|
9
23
|
return null;
|
|
10
|
-
const match =
|
|
24
|
+
const match = GITHUB_SKILL_URL.exec(item.githubUrl);
|
|
11
25
|
if (!match)
|
|
12
26
|
return null;
|
|
13
27
|
let dir = (match[5] ?? '').replace(/\/$/, '');
|
|
@@ -20,21 +34,21 @@ export function skillsmpCandidate(value) {
|
|
|
20
34
|
return null;
|
|
21
35
|
const name = dir.replace(/^skills\//, '');
|
|
22
36
|
const ref = `${match[1]}/${match[2]}${name ? `@${name}` : ''}`;
|
|
23
|
-
const description = typeof item.description === 'string' ? item.description.replace(/[\r\n\t|]/g, ' ').slice(0,
|
|
37
|
+
const description = typeof item.description === 'string' ? item.description.replace(/[\r\n\t|]/g, ' ').slice(0, DESCRIPTION_MAX) : '';
|
|
24
38
|
return { kind: 'skill', ref, url: item.githubUrl, why: `SkillsMP discovery (unverified): ${description}`,
|
|
25
|
-
stars: null, updatedAt: null, license: null, action: `vibe skill add ${ref}`, score:
|
|
39
|
+
stars: null, updatedAt: null, license: null, action: `vibe skill add ${ref}`, score: HINT_SCORE };
|
|
26
40
|
}
|
|
27
41
|
export function skillsmpClient(request = fetch) {
|
|
28
42
|
return { search: async (query) => {
|
|
29
43
|
const headers = { Accept: 'application/json' };
|
|
30
|
-
const key = process.env[
|
|
44
|
+
const key = process.env[API_KEY_ENV]?.trim();
|
|
31
45
|
if (key)
|
|
32
46
|
headers.Authorization = `Bearer ${key}`;
|
|
33
47
|
const url = new URL(ENDPOINT);
|
|
34
|
-
url.searchParams.set('q', query.slice(0,
|
|
35
|
-
url.searchParams.set('limit',
|
|
48
|
+
url.searchParams.set('q', query.slice(0, QUERY_MAX));
|
|
49
|
+
url.searchParams.set('limit', String(RESULT_LIMIT));
|
|
36
50
|
try {
|
|
37
|
-
const response = await request(url, { headers, redirect: 'error', signal: AbortSignal.timeout(
|
|
51
|
+
const response = await request(url, { headers, redirect: 'error', signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS) });
|
|
38
52
|
if (!response.ok)
|
|
39
53
|
throw new Error(`HTTP ${response.status}`);
|
|
40
54
|
const reader = response.body?.getReader();
|
|
@@ -59,11 +73,11 @@ export function skillsmpClient(request = fetch) {
|
|
|
59
73
|
const doc = JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
60
74
|
if (doc?.success !== true || !Array.isArray(doc.data?.skills))
|
|
61
75
|
throw new Error('invalid response');
|
|
62
|
-
return doc.data.skills.slice(0,
|
|
76
|
+
return doc.data.skills.slice(0, RESULT_LIMIT).map(skillsmpCandidate)
|
|
77
|
+
.filter((c) => c !== null);
|
|
63
78
|
}
|
|
64
79
|
catch {
|
|
65
|
-
|
|
66
|
-
throw new Error('SkillsMP unavailable, limited or invalid; using existing GitHub search');
|
|
80
|
+
throw new Error(SKILLSMP_UNAVAILABLE);
|
|
67
81
|
}
|
|
68
82
|
} };
|
|
69
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillsmp.js","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"AAGA,MAAM,QAAQ,GAAG,2CAA2C,CAAC;AAC7D,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"skillsmp.js","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,20 @@ import { createHash } from 'node:crypto';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { denied, usage } from './errors.js';
|
|
5
|
-
import { vibePath } from './paths.js';
|
|
5
|
+
import { VIBE_DIR, vibePath } from './paths.js';
|
|
6
6
|
import { writeJson } from './store.js';
|
|
7
|
+
const SOURCE_BASIS_FILE = 'source-basis.json';
|
|
8
|
+
const SHA256_HEX = /^[a-f0-9]{64}$/;
|
|
9
|
+
/** Project bookkeeping folders that are never an input. */
|
|
10
|
+
const BOOKKEEPING = [VIBE_DIR, '.git'];
|
|
11
|
+
/** File-system error codes that mean the source is gone rather than unreadable. */
|
|
12
|
+
const GONE_CODES = ['ENOENT', 'ENOTDIR'];
|
|
7
13
|
function relativeInput(root, file) {
|
|
8
14
|
const relative = path.relative(path.resolve(root), path.resolve(root, file));
|
|
9
|
-
|
|
15
|
+
const outside = !relative || relative === '..' || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative);
|
|
16
|
+
if (outside)
|
|
10
17
|
throw usage(`source must be a regular file inside the project: ${file}`);
|
|
11
|
-
if (
|
|
18
|
+
if (BOOKKEEPING.includes(relative.split(path.sep)[0] ?? ''))
|
|
12
19
|
throw usage(`source must be an input file, not project bookkeeping: ${file}`);
|
|
13
20
|
return relative.split(path.sep).join('/');
|
|
14
21
|
}
|
|
@@ -23,8 +30,9 @@ function sourceHash(root, file) {
|
|
|
23
30
|
export function captureSources(root, sources) {
|
|
24
31
|
if (sources === undefined)
|
|
25
32
|
return [];
|
|
26
|
-
if (!Array.isArray(sources) || sources.some((file) => typeof file !== 'string' || !file.trim()))
|
|
33
|
+
if (!Array.isArray(sources) || sources.some((file) => typeof file !== 'string' || !file.trim())) {
|
|
27
34
|
throw usage('sources must be an array of nonempty file paths');
|
|
35
|
+
}
|
|
28
36
|
const paths = [...new Set(sources.map((file) => relativeInput(root, file)))].sort();
|
|
29
37
|
return paths.map((file) => {
|
|
30
38
|
try {
|
|
@@ -36,12 +44,15 @@ export function captureSources(root, sources) {
|
|
|
36
44
|
});
|
|
37
45
|
}
|
|
38
46
|
export function readSourceBasis(root) {
|
|
39
|
-
const file = vibePath(root,
|
|
47
|
+
const file = vibePath(root, SOURCE_BASIS_FILE);
|
|
40
48
|
if (!fs.existsSync(file))
|
|
41
49
|
return [];
|
|
42
50
|
try {
|
|
43
51
|
const value = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
44
|
-
|
|
52
|
+
const invalid = (entry) => {
|
|
53
|
+
return !entry || typeof entry.path !== 'string' || !SHA256_HEX.test(entry.sha256 ?? '');
|
|
54
|
+
};
|
|
55
|
+
if (!Array.isArray(value) || value.some(invalid))
|
|
45
56
|
throw new Error('invalid source record');
|
|
46
57
|
return value;
|
|
47
58
|
}
|
|
@@ -50,7 +61,7 @@ export function readSourceBasis(root) {
|
|
|
50
61
|
}
|
|
51
62
|
}
|
|
52
63
|
export function saveSourceBasis(root, sources) {
|
|
53
|
-
const file = vibePath(root,
|
|
64
|
+
const file = vibePath(root, SOURCE_BASIS_FILE);
|
|
54
65
|
if (sources.length)
|
|
55
66
|
writeJson(file, sources);
|
|
56
67
|
else
|
|
@@ -66,10 +77,11 @@ export function sourceValidity(root, basis = readSourceBasis(root)) {
|
|
|
66
77
|
}
|
|
67
78
|
catch (error) {
|
|
68
79
|
const code = error.code;
|
|
69
|
-
return { ...source, currentSha256: null, status: code
|
|
80
|
+
return { ...source, currentSha256: null, status: GONE_CODES.includes(code ?? '') ? 'missing' : 'unreadable' };
|
|
70
81
|
}
|
|
71
82
|
});
|
|
72
83
|
const paths = (status) => sources.filter((source) => source.status === status).map((source) => source.path);
|
|
73
|
-
|
|
84
|
+
const valid = sources.every((source) => source.status === 'unchanged');
|
|
85
|
+
return { sources, valid, changed: paths('changed'), missing: paths('missing'), unreadable: paths('unreadable') };
|
|
74
86
|
}
|
|
75
87
|
//# sourceMappingURL=source-basis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-basis.js","sourceRoot":"","sources":["../../src/core/source-basis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"source-basis.js","sourceRoot":"","sources":["../../src/core/source-basis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBvC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,UAAU,GAAG,gBAAgB,CAAC;AACpC,2DAA2D;AAC3D,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACvC,mFAAmF;AACnF,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEzC,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpH,IAAI,OAAO;QAAE,MAAM,KAAK,CAAC,qDAAqD,IAAI,EAAE,CAAC,CAAC;IACtF,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,MAAM,KAAK,CAAC,0DAA0D,IAAI,EAAE,CAAC,CAAC;IAC3I,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY;IAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;QAAE,MAAM,KAAK,CAAC,6DAA6D,IAAI,EAAE,CAAC,CAAC;IACtH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAkB;IAC7D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAChG,MAAM,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAAC,CAAC;QAC9D,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,KAAK,CAAC,wBAAwB,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,CAAC,KAAiD,EAAW,EAAE;YAC7E,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3F,OAAO,KAA0B,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,MAAM,CAAC,+EAA+E,CAAC,CAAC;IAAC,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAA0B;IACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM;QAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;QACxC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAgB,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACpD,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACzG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QAChH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,CAAC,MAA8B,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;AACnH,CAAC"}
|
package/dist/core/status.js
CHANGED
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
-
import os from 'node:os';
|
|
3
2
|
import { readResults } from './check.js';
|
|
4
3
|
import { readConfig } from './config.js';
|
|
5
4
|
import { openQuestions } from './inbox.js';
|
|
6
5
|
import { loadScenarios } from './intent.js';
|
|
7
6
|
import { globalKnowledgeDir, knowledgeSettings } from './knowledge.js';
|
|
8
7
|
import { projectName } from './knowledge-projects.js';
|
|
8
|
+
import { RUN_PREFIX } from './run-id.js';
|
|
9
|
+
import { defaultHome } from './locations.js';
|
|
9
10
|
import { isHuman } from './scenarios.js';
|
|
10
11
|
import { readState } from './state.js';
|
|
11
12
|
import { retestSummary } from './retest.js';
|
|
12
13
|
import { readText } from './store.js';
|
|
13
14
|
import path from 'node:path';
|
|
14
|
-
const
|
|
15
|
+
const MINUTE_MS = 60 * 1000;
|
|
16
|
+
const WEEK_DAYS = 7;
|
|
17
|
+
const WEEK_MS = WEEK_DAYS * 24 * 60 * MINUTE_MS;
|
|
18
|
+
const WIKI_LOG = 'log.md';
|
|
19
|
+
/** A wiki log line: `- 2026-01-31 09:30 UTC · …`; the group is the time. */
|
|
20
|
+
const LOG_LINE = /^- (\d{4}-\d{2}-\d{2} \d{2}:\d{2}) UTC · /;
|
|
21
|
+
const MINUTES_PER_HOUR = 60;
|
|
22
|
+
/** Ages show in minutes below an hour, in hours up to this many, then in days. */
|
|
23
|
+
const HOURS_BEFORE_DAYS = 48;
|
|
24
|
+
const HOURS_PER_DAY = 24;
|
|
15
25
|
/** Knowledge turns this project had in the last week, counted from the wiki's log; null when the log cannot be read. */
|
|
16
26
|
function knowledgeTurns(root, home, now) {
|
|
17
27
|
try {
|
|
18
|
-
const log = readText(path.join(globalKnowledgeDir(home),
|
|
28
|
+
const log = readText(path.join(globalKnowledgeDir(home), WIKI_LOG));
|
|
19
29
|
if (log === null)
|
|
20
30
|
return 0;
|
|
21
31
|
const link = `[[projects/${projectName(fs.realpathSync(root), home, false)}]]`;
|
|
22
32
|
return log.split('\n').filter((line) => {
|
|
23
|
-
const at =
|
|
33
|
+
const at = LOG_LINE.exec(line)?.[1];
|
|
24
34
|
return at && line.includes(link) && now.getTime() - Date.parse(`${at.replace(' ', 'T')}:00Z`) <= WEEK_MS;
|
|
25
35
|
}).length;
|
|
26
36
|
}
|
|
@@ -48,27 +58,30 @@ export function projectSummary(root, home, now = new Date()) {
|
|
|
48
58
|
tokens: readConfig(root).tokens,
|
|
49
59
|
knowledge: knowledge.auto,
|
|
50
60
|
journal: knowledge.journal,
|
|
51
|
-
knowledgeTurns: knowledge.auto ? knowledgeTurns(root, home ??
|
|
61
|
+
knowledgeTurns: knowledge.auto ? knowledgeTurns(root, home ?? defaultHome(), now) : null,
|
|
52
62
|
retest: retestSummary(root, home).mode,
|
|
53
63
|
},
|
|
54
64
|
questions: openQuestions(root).filter((q) => !q.answer?.trim()).map((q) => q.question),
|
|
55
65
|
};
|
|
56
66
|
}
|
|
57
67
|
function ago(at, now) {
|
|
58
|
-
const minutes = Math.max(0, Math.round((now.getTime() - Date.parse(at)) /
|
|
59
|
-
if (minutes <
|
|
68
|
+
const minutes = Math.max(0, Math.round((now.getTime() - Date.parse(at)) / MINUTE_MS));
|
|
69
|
+
if (minutes < MINUTES_PER_HOUR)
|
|
60
70
|
return `${minutes} minute${minutes === 1 ? '' : 's'} ago`;
|
|
61
|
-
const hours = Math.round(minutes /
|
|
62
|
-
if (hours <
|
|
71
|
+
const hours = Math.round(minutes / MINUTES_PER_HOUR);
|
|
72
|
+
if (hours < HOURS_BEFORE_DAYS)
|
|
63
73
|
return `${hours} hour${hours === 1 ? '' : 's'} ago`;
|
|
64
|
-
return `${Math.round(hours /
|
|
74
|
+
return `${Math.round(hours / HOURS_PER_DAY)} days ago`;
|
|
65
75
|
}
|
|
66
76
|
export function summaryLines(s, now = new Date()) {
|
|
67
77
|
const c = s.checks;
|
|
68
|
-
const run = c.at === null ? 'never run — `vibe check --all`' : `last run
|
|
78
|
+
const run = c.at === null ? 'never run — `vibe check --all`' : `last run ${RUN_PREFIX}${c.run}, ${ago(c.at, now)}`;
|
|
69
79
|
const checks = c.total === 0 ? 'none yet — they are written when a piece of work is approved' : `${c.passed}/${c.total} passed · ${run}`;
|
|
70
|
-
const
|
|
71
|
-
const
|
|
80
|
+
const failed = c.failing.length ? ` · failing: ${c.failing.join(', ')}` : '';
|
|
81
|
+
const stale = c.stale.length ? ` · changed since it passed: ${c.stale.join(', ')}` : '';
|
|
82
|
+
const failing = `${failed}${stale}`;
|
|
83
|
+
const count = s.settings.knowledgeTurns;
|
|
84
|
+
const turns = count === null ? '' : `, ${count} knowledge turn${count === 1 ? '' : 's'} here in ${WEEK_DAYS} days`;
|
|
72
85
|
const knowledge = s.settings.knowledge ? `knowledge on (journal ${s.settings.journal ? 'on' : 'off'})${turns}` : 'knowledge off';
|
|
73
86
|
const waiting = s.questions.length;
|
|
74
87
|
return [
|
package/dist/core/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/core/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/core/status.ts"],"names":[],"mappings":"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"}
|