rigjs
Version:
A multi-repos dev tool based on yarn and git.Rigjs is intended to be the simplest way to develop,share and deliver codes between different developers or different projects.
46 lines (38 loc) • 1.63 kB
text/typescript
// `rig wiki rebuild` — refresh local-only caches for a wiki.
//
// Use cases:
// 1. New device: source markdown is checked out, but ~/.rig/state.db and
// ~/.rig/<project>/wiki/<wiki>.sqlite are empty. Rebuild populates both.
// 2. Switched embedding model: old vectors are now meaningless. Rebuild
// re-embeds against the current QMD_EMBED_MODEL.
// 3. Local cache corruption: nuke and start over.
//
// What it does:
// - clear `source_sha` rows for the wiki in ~/.rig/state.db
// - drop the per-wiki qmd sqlite store
// - full re-embed (Qwen3-Embedding by default)
import print from '../print';
import { requireVault } from './config';
import { getDb, recordLastRun } from './db';
import { qmdEmbed, qmdResetStore } from './qmd';
interface RebuildOpts { skipEmbed?: boolean; }
export default async function wikiRebuild(opts: RebuildOpts): Promise<void> {
const t = requireVault();
const db = getDb();
print.start(`rebuild: ${t.name}`);
const del = db.prepare('DELETE FROM source_sha WHERE wiki = ?').run(t.name);
print.info(` cleared ${del.changes} source_sha rows for ${t.name}`);
qmdResetStore(t.name, t.root);
if (!opts.skipEmbed) {
const res = await qmdEmbed(t.name, t.path, t.root, { force: true });
if (res.ok) print.info(` qmd embed: ${t.name} done`);
else {
print.error(` qmd embed: ${t.name} failed: ${res.stderr.trim()}`);
recordLastRun(t.name, 'rebuild', 1);
process.exit(1);
}
}
recordLastRun(t.name, 'rebuild', 0);
print.succeed(`rebuilt: ${t.name}`);
print.info('next: run `rig wiki scan` to baseline the new sha index.');
}