@pella-labs/pinakes 0.3.15 → 0.4.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/README.md +16 -7
- package/dist/cli/audit-wiki.d.ts +45 -1
- package/dist/cli/audit-wiki.d.ts.map +1 -1
- package/dist/cli/audit-wiki.js +346 -117
- package/dist/cli/audit-wiki.js.map +1 -1
- package/dist/cli/claims.d.ts +49 -0
- package/dist/cli/claims.d.ts.map +1 -0
- package/dist/cli/claims.js +169 -0
- package/dist/cli/claims.js.map +1 -0
- package/dist/cli/contradiction.d.ts +46 -28
- package/dist/cli/contradiction.d.ts.map +1 -1
- package/dist/cli/contradiction.js +182 -115
- package/dist/cli/contradiction.js.map +1 -1
- package/dist/cli/index.js +4 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/progress.d.ts +19 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +44 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/db/client.js +1 -1
- package/dist/db/migrations/0003_add_pinakes_claims.sql +13 -0
- package/dist/db/migrations/0004_add_confidence_score.sql +12 -0
- package/dist/db/migrations/meta/_journal.json +14 -0
- package/dist/db/schema.d.ts +161 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +24 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/gate/confidence.d.ts +82 -0
- package/dist/gate/confidence.d.ts.map +1 -0
- package/dist/gate/confidence.js +190 -0
- package/dist/gate/confidence.js.map +1 -0
- package/dist/ingest/ingester.d.ts.map +1 -1
- package/dist/ingest/ingester.js +4 -3
- package/dist/ingest/ingester.js.map +1 -1
- package/dist/ingest/repo-mirror.d.ts.map +1 -1
- package/dist/ingest/repo-mirror.js +5 -1
- package/dist/ingest/repo-mirror.js.map +1 -1
- package/dist/init/copy.d.ts.map +1 -1
- package/dist/init/copy.js +9 -0
- package/dist/init/copy.js.map +1 -1
- package/dist/init/scanner.js +7 -0
- package/dist/init/scanner.js.map +1 -1
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +2 -2
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/retrieval/fts.d.ts +1 -0
- package/dist/retrieval/fts.d.ts.map +1 -1
- package/dist/retrieval/fts.js +18 -2
- package/dist/retrieval/fts.js.map +1 -1
- package/dist/retrieval/hybrid.d.ts +1 -0
- package/dist/retrieval/hybrid.d.ts.map +1 -1
- package/dist/retrieval/hybrid.js +5 -0
- package/dist/retrieval/hybrid.js.map +1 -1
- package/dist/retrieval/vec.d.ts +1 -0
- package/dist/retrieval/vec.d.ts.map +1 -1
- package/dist/retrieval/vec.js +17 -2
- package/dist/retrieval/vec.js.map +1 -1
- package/dist/sandbox/bindings/pinakes.d.ts.map +1 -1
- package/dist/sandbox/bindings/pinakes.js +9 -2
- package/dist/sandbox/bindings/pinakes.js.map +1 -1
- package/package.json +31 -20
package/dist/cli/audit-wiki.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { existsSync, writeFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
3
|
import { closeDb, openDb } from '../db/client.js';
|
|
4
4
|
import { queryGaps } from '../gaps/detector.js';
|
|
5
5
|
import { createLlmProvider } from '../llm/provider.js';
|
|
6
6
|
import { resolveAbs, projectWikiPath as defaultProjectWikiPath, projectDbPath as defaultProjectDbPath, personalWikiPath as defaultPersonalWikiPath, personalDbPath as defaultPersonalDbPath, } from '../paths.js';
|
|
7
7
|
import { contradictionScan } from './contradiction.js';
|
|
8
|
+
import { createProgressReporter } from './progress.js';
|
|
8
9
|
/**
|
|
9
10
|
* `pinakes audit-wiki` — LLM-powered wiki audit command.
|
|
10
11
|
*
|
|
@@ -16,7 +17,7 @@ import { contradictionScan } from './contradiction.js';
|
|
|
16
17
|
* error message if no provider is available.
|
|
17
18
|
*/
|
|
18
19
|
const GAP_MENTION_THRESHOLD = 10;
|
|
19
|
-
const MIN_TOPIC_LENGTH =
|
|
20
|
+
const MIN_TOPIC_LENGTH = 5; // filter out short tokens (D42 tightened from 4)
|
|
20
21
|
export async function auditWikiCommand(opts) {
|
|
21
22
|
const scope = opts.scope ?? 'project';
|
|
22
23
|
const projectRoot = resolveAbs(opts.projectRoot ?? process.cwd());
|
|
@@ -31,13 +32,13 @@ export async function auditWikiCommand(opts) {
|
|
|
31
32
|
const bundle = openDb(dbPath);
|
|
32
33
|
try {
|
|
33
34
|
const llmProvider = createLlmProvider();
|
|
35
|
+
const progress = createProgressReporter({ quiet: opts.quiet });
|
|
34
36
|
// eslint-disable-next-line no-console
|
|
35
37
|
console.log(`Running wiki audit (LLM provider: ${llmProvider.name})...`);
|
|
36
38
|
// 1. Contradiction scan (requires LLM provider)
|
|
37
39
|
let contradictions;
|
|
38
40
|
if (llmProvider.available()) {
|
|
39
|
-
|
|
40
|
-
console.log(' Scanning for contradictions...');
|
|
41
|
+
progress.startPhase('Phase 1/3: Scanning for contradictions', 1);
|
|
41
42
|
contradictions = await contradictionScan({
|
|
42
43
|
bundle,
|
|
43
44
|
scope,
|
|
@@ -45,61 +46,51 @@ export async function auditWikiCommand(opts) {
|
|
|
45
46
|
wikiRoot: wikiPath,
|
|
46
47
|
});
|
|
47
48
|
if (contradictions.rate_limited) {
|
|
48
|
-
|
|
49
|
-
console.log(' Contradiction scan rate-limited (last scan < 1h ago)');
|
|
49
|
+
progress.endPhase('Rate-limited (last scan < 1h ago)');
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
52
|
-
|
|
53
|
-
console.log(` Scanned ${contradictions.scanned_pairs} pairs, found ${contradictions.contradictions.length} contradictions`);
|
|
52
|
+
progress.endPhase(`Scanned ${contradictions.scanned_pairs} pairs, found ${contradictions.contradictions.length} contradictions`);
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
else {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
contradictions = { scanned_pairs: 0, contradictions: [], rate_limited: false };
|
|
56
|
+
progress.startPhase('Phase 1/3: Contradiction scan', 0);
|
|
57
|
+
progress.endPhase('Skipped (no LLM provider available)');
|
|
58
|
+
contradictions = { scanned_pairs: 0, topics_scanned: 0, claims_extracted: 0, contradictions: [], rate_limited: false };
|
|
60
59
|
}
|
|
61
|
-
// 2. Gap detection — filter
|
|
62
|
-
// eslint-disable-next-line no-console
|
|
63
|
-
console.log(' Checking for documentation gaps...');
|
|
60
|
+
// 2. Gap detection — syntactic filter + LLM filter + graph topology (D42)
|
|
64
61
|
const allGaps = queryGaps(bundle.writer, scope);
|
|
65
|
-
const
|
|
66
|
-
const significantGaps =
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
// eslint-disable-next-line no-console
|
|
73
|
-
console.log(' Generating stub pages for significant gaps...');
|
|
74
|
-
const MAX_STUBS = 20;
|
|
75
|
-
let generated = 0;
|
|
76
|
-
for (const gap of significantGaps) {
|
|
77
|
-
if (generated >= MAX_STUBS)
|
|
78
|
-
break;
|
|
79
|
-
try {
|
|
80
|
-
const stubPath = await generateStubPage(gap, wikiPath, llmProvider);
|
|
81
|
-
if (stubPath) {
|
|
82
|
-
stubPages.push(stubPath);
|
|
83
|
-
generated++;
|
|
84
|
-
// eslint-disable-next-line no-console
|
|
85
|
-
console.log(` Created: ${stubPath.split('/').pop()}`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (err) {
|
|
89
|
-
// eslint-disable-next-line no-console
|
|
90
|
-
console.log(` Failed: ${gap.topic} — ${err instanceof Error ? err.message.slice(0, 80) : err}`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
62
|
+
const syntacticGaps = allGaps.filter((g) => isRealGap(g.topic));
|
|
63
|
+
const significantGaps = syntacticGaps.filter((g) => g.mentions_count >= GAP_MENTION_THRESHOLD);
|
|
64
|
+
progress.startPhase('Phase 2/3: Filtering documentation gaps', allGaps.length);
|
|
65
|
+
// LLM batch filter (Tier 2)
|
|
66
|
+
let filteredGaps;
|
|
67
|
+
if (llmProvider.available() && significantGaps.length > 0) {
|
|
68
|
+
filteredGaps = await llmFilterGaps(significantGaps, llmProvider, progress);
|
|
93
69
|
}
|
|
94
|
-
|
|
70
|
+
else {
|
|
71
|
+
filteredGaps = significantGaps;
|
|
72
|
+
}
|
|
73
|
+
// Add graph topology gaps (high in-degree, no dedicated page)
|
|
74
|
+
const topoGaps = findTopologyGaps(bundle.writer, scope);
|
|
75
|
+
progress.endPhase(`${allGaps.length} raw → ${syntacticGaps.length} syntactic → ${filteredGaps.length} LLM-filtered, ${topoGaps.length} topology gaps`);
|
|
76
|
+
// 3. Gather context for each confirmed gap
|
|
77
|
+
const gapContexts = gatherGapContexts(bundle.writer, scope, filteredGaps);
|
|
78
|
+
// 4. Opt-in synthesis stubs (D43 — --generate-stubs flag)
|
|
79
|
+
let stubsGenerated = 0;
|
|
80
|
+
if (opts.generateStubs && filteredGaps.length > 0 && llmProvider.available()) {
|
|
81
|
+
stubsGenerated = await generateSynthesisStubs(filteredGaps, gapContexts, wikiPath, llmProvider, progress);
|
|
82
|
+
}
|
|
83
|
+
// 5. Generate audit report (D46 restructured: contradictions, gaps, health)
|
|
84
|
+
const healthMetrics = getHealthMetrics(bundle.writer, scope);
|
|
95
85
|
const reportPath = join(wikiPath, '_audit-report.md');
|
|
96
|
-
writeAuditReport(reportPath, contradictions,
|
|
86
|
+
writeAuditReport(reportPath, contradictions, filteredGaps, topoGaps, gapContexts, healthMetrics, stubsGenerated);
|
|
97
87
|
// eslint-disable-next-line no-console
|
|
98
88
|
console.log(`\nAudit report written to: ${reportPath}`);
|
|
99
89
|
return {
|
|
100
90
|
contradictions,
|
|
101
|
-
gaps_found:
|
|
102
|
-
|
|
91
|
+
gaps_found: filteredGaps.length,
|
|
92
|
+
topology_gaps: topoGaps.length,
|
|
93
|
+
stubs_generated: stubsGenerated,
|
|
103
94
|
audit_report_path: reportPath,
|
|
104
95
|
};
|
|
105
96
|
}
|
|
@@ -108,77 +99,273 @@ export async function auditWikiCommand(opts) {
|
|
|
108
99
|
}
|
|
109
100
|
}
|
|
110
101
|
// ---------------------------------------------------------------------------
|
|
111
|
-
//
|
|
102
|
+
// LLM gap filtering (D42 Tier 2)
|
|
112
103
|
// ---------------------------------------------------------------------------
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
104
|
+
const GAP_FILTER_SYSTEM = `You are a documentation quality analyst. Given a list of terms extracted from a technical wiki, identify which represent real documentation topics that would benefit from a dedicated wiki page.
|
|
105
|
+
|
|
106
|
+
Return ONLY a JSON array of the real topics: ["topic1", "topic2", ...]
|
|
107
|
+
|
|
108
|
+
Filter out:
|
|
109
|
+
- Common words and generic technical terms
|
|
110
|
+
- Code syntax, variable names, file extensions
|
|
111
|
+
- Terms too specific or too vague to be standalone pages
|
|
112
|
+
- Terms that are part of larger concepts already documented`;
|
|
113
|
+
const LLM_FILTER_BATCH_SIZE = 50;
|
|
114
|
+
export async function llmFilterGaps(gaps, llmProvider, progress) {
|
|
115
|
+
const result = [];
|
|
116
|
+
for (let i = 0; i < gaps.length; i += LLM_FILTER_BATCH_SIZE) {
|
|
117
|
+
const batch = gaps.slice(i, i + LLM_FILTER_BATCH_SIZE);
|
|
118
|
+
const topics = batch.map((g) => g.topic);
|
|
119
|
+
try {
|
|
120
|
+
const response = await llmProvider.complete({
|
|
121
|
+
system: GAP_FILTER_SYSTEM,
|
|
122
|
+
prompt: `Filter these ${topics.length} terms:\n${JSON.stringify(topics)}`,
|
|
123
|
+
maxTokens: 1000,
|
|
124
|
+
});
|
|
125
|
+
const kept = parseLlmFilterResponse(response);
|
|
126
|
+
const keptSet = new Set(kept.map((t) => t.toLowerCase()));
|
|
127
|
+
for (const gap of batch) {
|
|
128
|
+
if (keptSet.has(gap.topic.toLowerCase())) {
|
|
129
|
+
result.push(gap);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
progress?.tick(`batch ${Math.floor(i / LLM_FILTER_BATCH_SIZE) + 1}`, `${kept.length}/${batch.length} kept`);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// LLM filter failed — keep all gaps in this batch (graceful degradation)
|
|
136
|
+
result.push(...batch);
|
|
137
|
+
progress?.tick(`batch ${Math.floor(i / LLM_FILTER_BATCH_SIZE) + 1}`, 'LLM filter failed, keeping all');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
export function parseLlmFilterResponse(response) {
|
|
143
|
+
try {
|
|
144
|
+
const fenceMatch = response.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
145
|
+
const jsonStr = fenceMatch ? fenceMatch[1] : response;
|
|
146
|
+
const arrMatch = jsonStr.match(/\[[\s\S]*\]/);
|
|
147
|
+
if (!arrMatch)
|
|
148
|
+
return [];
|
|
149
|
+
const parsed = JSON.parse(arrMatch[0]);
|
|
150
|
+
if (!Array.isArray(parsed))
|
|
151
|
+
return [];
|
|
152
|
+
return parsed.filter((t) => typeof t === 'string');
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
132
157
|
}
|
|
133
|
-
function
|
|
158
|
+
export function findTopologyGaps(reader, scope) {
|
|
159
|
+
// Find nodes referenced by wikilink edges that don't have their own page
|
|
160
|
+
// We look for edge targets (dst_id) that appear frequently but
|
|
161
|
+
// whose corresponding node titles don't exist as dedicated pages
|
|
162
|
+
try {
|
|
163
|
+
const rows = reader
|
|
164
|
+
.prepare(`SELECT n.title, COUNT(*) as cnt
|
|
165
|
+
FROM pinakes_edges e
|
|
166
|
+
JOIN pinakes_nodes n ON e.dst_id = n.id
|
|
167
|
+
WHERE n.scope = ? AND e.edge_kind = ?
|
|
168
|
+
GROUP BY n.title
|
|
169
|
+
HAVING cnt >= 3
|
|
170
|
+
ORDER BY cnt DESC
|
|
171
|
+
LIMIT 20`)
|
|
172
|
+
.all(scope, 'wikilink');
|
|
173
|
+
return rows.map((r) => ({
|
|
174
|
+
topic: r.title ?? 'untitled',
|
|
175
|
+
in_degree: r.cnt,
|
|
176
|
+
source: 'graph-topology',
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return []; // Table might not have edges yet
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export function gatherGapContexts(reader, scope, gaps) {
|
|
184
|
+
const contexts = [];
|
|
185
|
+
for (const gap of gaps.slice(0, 20)) {
|
|
186
|
+
try {
|
|
187
|
+
const mentions = reader
|
|
188
|
+
.prepare(`SELECT n.source_uri, c.text
|
|
189
|
+
FROM pinakes_chunks c
|
|
190
|
+
JOIN pinakes_nodes n ON c.node_id = n.id
|
|
191
|
+
WHERE n.scope = ? AND c.text LIKE '%' || ? || '%' COLLATE NOCASE
|
|
192
|
+
LIMIT 5`)
|
|
193
|
+
.all(scope, gap.topic);
|
|
194
|
+
contexts.push({
|
|
195
|
+
topic: gap.topic,
|
|
196
|
+
mentions: mentions.map((m) => ({
|
|
197
|
+
source_uri: m.source_uri,
|
|
198
|
+
excerpt: truncate(m.text, 200),
|
|
199
|
+
})),
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Non-fatal
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return contexts;
|
|
207
|
+
}
|
|
208
|
+
// ---------------------------------------------------------------------------
|
|
209
|
+
// Synthesis stubs (D43 — opt-in via --generate-stubs)
|
|
210
|
+
// ---------------------------------------------------------------------------
|
|
211
|
+
const SYNTHESIS_SYSTEM = `You are a technical documentation writer. Based on the following excerpts from a knowledge wiki, write a concise wiki page about the given topic.
|
|
212
|
+
|
|
213
|
+
Rules:
|
|
214
|
+
- Include ONLY facts present in the excerpts
|
|
215
|
+
- Mark any inferences with "(inferred)"
|
|
216
|
+
- Format as markdown with a title (H1), summary paragraph, and relevant details
|
|
217
|
+
- Keep it under 500 words
|
|
218
|
+
- Output only the markdown content`;
|
|
219
|
+
export async function generateSynthesisStubs(gaps, contexts, wikiRoot, llmProvider, progress) {
|
|
220
|
+
const draftsDir = resolve(wikiRoot, '_audit-drafts');
|
|
221
|
+
mkdirSync(draftsDir, { recursive: true });
|
|
222
|
+
// Ensure _audit-drafts is gitignored
|
|
223
|
+
ensureGitignored(wikiRoot, '_audit-drafts/');
|
|
224
|
+
const MAX_STUBS = 20;
|
|
225
|
+
const toGenerate = gaps.slice(0, MAX_STUBS);
|
|
226
|
+
progress?.startPhase('Phase 3/3: Generating synthesis drafts', toGenerate.length);
|
|
227
|
+
let generated = 0;
|
|
228
|
+
for (const gap of toGenerate) {
|
|
229
|
+
const ctx = contexts.find((c) => c.topic === gap.topic);
|
|
230
|
+
if (!ctx || ctx.mentions.length === 0) {
|
|
231
|
+
progress?.tick(gap.topic, 'skipped (no context)');
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const slug = gap.topic
|
|
235
|
+
.toLowerCase()
|
|
236
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
237
|
+
.replace(/(^-|-$)/g, '');
|
|
238
|
+
if (!slug) {
|
|
239
|
+
progress?.tick(gap.topic, 'skipped (invalid slug)');
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const filePath = join(draftsDir, `${slug}.md`);
|
|
243
|
+
try {
|
|
244
|
+
const excerpts = ctx.mentions
|
|
245
|
+
.map((m) => `From ${m.source_uri}:\n${m.excerpt}`)
|
|
246
|
+
.join('\n\n');
|
|
247
|
+
const content = await llmProvider.complete({
|
|
248
|
+
system: SYNTHESIS_SYSTEM,
|
|
249
|
+
prompt: `Write a wiki page about "${gap.topic}" based on these excerpts:\n\n${excerpts}`,
|
|
250
|
+
maxTokens: 1000,
|
|
251
|
+
});
|
|
252
|
+
writeFileSync(filePath, content, 'utf-8');
|
|
253
|
+
generated++;
|
|
254
|
+
progress?.tick(gap.topic, 'draft created');
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
progress?.tick(gap.topic, `failed: ${err instanceof Error ? err.message.slice(0, 60) : err}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
progress?.endPhase(`${generated} drafts written to _audit-drafts/`);
|
|
261
|
+
return generated;
|
|
262
|
+
}
|
|
263
|
+
function ensureGitignored(wikiRoot, entry) {
|
|
264
|
+
// Look for .gitignore in the .pinakes parent directory
|
|
265
|
+
const pinakesDir = resolve(wikiRoot, '..');
|
|
266
|
+
const gitignorePath = join(pinakesDir, '.gitignore');
|
|
267
|
+
if (!existsSync(gitignorePath))
|
|
268
|
+
return;
|
|
269
|
+
const content = readFileSync(gitignorePath, 'utf-8');
|
|
270
|
+
if (content.includes(entry))
|
|
271
|
+
return;
|
|
272
|
+
appendFileSync(gitignorePath, `\n${entry}\n`, 'utf-8');
|
|
273
|
+
}
|
|
274
|
+
export function getHealthMetrics(reader, scope) {
|
|
275
|
+
const fileCount = reader.prepare(`SELECT COUNT(DISTINCT source_uri) as c FROM pinakes_nodes WHERE scope = ?`).get(scope)?.c ?? 0;
|
|
276
|
+
const chunkCount = reader.prepare(`SELECT COUNT(*) as c FROM pinakes_chunks ch
|
|
277
|
+
JOIN pinakes_nodes n ON ch.node_id = n.id WHERE n.scope = ?`).get(scope)?.c ?? 0;
|
|
278
|
+
const nodeCount = reader.prepare(`SELECT COUNT(*) as c FROM pinakes_nodes WHERE scope = ?`).get(scope)?.c ?? 0;
|
|
279
|
+
const edgeCount = reader.prepare(`SELECT COUNT(*) as c FROM pinakes_edges e
|
|
280
|
+
JOIN pinakes_nodes n ON e.src_id = n.id WHERE n.scope = ?`).get(scope)?.c ?? 0;
|
|
281
|
+
return { file_count: fileCount, chunk_count: chunkCount, node_count: nodeCount, edge_count: edgeCount };
|
|
282
|
+
}
|
|
283
|
+
// ---------------------------------------------------------------------------
|
|
284
|
+
// Audit report (D46 restructured)
|
|
285
|
+
// ---------------------------------------------------------------------------
|
|
286
|
+
function writeAuditReport(reportPath, contradictions, filteredGaps, topoGaps, gapContexts, health, stubsGenerated = 0) {
|
|
134
287
|
const lines = [
|
|
135
288
|
'# Wiki Audit Report',
|
|
136
289
|
'',
|
|
137
290
|
`*Generated: ${new Date().toISOString()}*`,
|
|
138
291
|
'',
|
|
139
|
-
'## Summary',
|
|
140
|
-
'',
|
|
141
292
|
];
|
|
293
|
+
// Section 1: Contradictions
|
|
294
|
+
lines.push('## Contradictions');
|
|
295
|
+
lines.push('');
|
|
142
296
|
if (contradictions.rate_limited) {
|
|
143
|
-
lines.push('
|
|
297
|
+
lines.push('*Scan rate-limited (last scan < 1h ago)*');
|
|
144
298
|
}
|
|
145
|
-
else {
|
|
146
|
-
lines.push(
|
|
299
|
+
else if (contradictions.contradictions.length === 0) {
|
|
300
|
+
lines.push(`*No contradictions found (${contradictions.topics_scanned} topics, ${contradictions.claims_extracted} claims scanned)*`);
|
|
147
301
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
lines.push('');
|
|
151
|
-
if (contradictions.contradictions.length > 0) {
|
|
152
|
-
lines.push('## Contradictions');
|
|
302
|
+
else {
|
|
303
|
+
lines.push(`**${contradictions.contradictions.length} contradictions found** (${contradictions.topics_scanned} topics scanned)`);
|
|
153
304
|
lines.push('');
|
|
154
305
|
for (const c of contradictions.contradictions) {
|
|
155
|
-
lines.push(`### ${c.
|
|
306
|
+
lines.push(`### ${c.topic}`);
|
|
156
307
|
lines.push('');
|
|
157
|
-
lines.push(`-
|
|
158
|
-
lines.push(`-
|
|
159
|
-
lines.push(`-
|
|
160
|
-
lines.push(`- Chunk B: *"${truncate(c.chunkB.text, 150)}"*`);
|
|
308
|
+
lines.push(`- **${c.claimA.source_uri}**: "${truncate(c.claimA.claim, 150)}"`);
|
|
309
|
+
lines.push(`- **${c.claimB.source_uri}**: "${truncate(c.claimB.claim, 150)}"`);
|
|
310
|
+
lines.push(`- **Why**: ${c.explanation} *(${c.confidence} confidence)*`);
|
|
161
311
|
lines.push('');
|
|
162
312
|
}
|
|
163
313
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
314
|
+
lines.push('');
|
|
315
|
+
// Section 2: Documentation Gaps
|
|
316
|
+
lines.push('## Documentation Gaps');
|
|
317
|
+
lines.push('');
|
|
318
|
+
if (filteredGaps.length === 0 && topoGaps.length === 0) {
|
|
319
|
+
lines.push('*No significant gaps found*');
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
if (filteredGaps.length > 0) {
|
|
323
|
+
lines.push(`### By mention frequency (${filteredGaps.length} topics)`);
|
|
324
|
+
lines.push('');
|
|
325
|
+
lines.push('| Topic | Mentions | Context |');
|
|
326
|
+
lines.push('|---|---|---|');
|
|
327
|
+
for (const g of filteredGaps) {
|
|
328
|
+
const ctx = gapContexts.find((c) => c.topic === g.topic);
|
|
329
|
+
const ctxSummary = ctx?.mentions.length
|
|
330
|
+
? `Referenced in ${ctx.mentions.map((m) => m.source_uri).join(', ')}`
|
|
331
|
+
: '';
|
|
332
|
+
lines.push(`| ${g.topic} | ${g.mentions_count} | ${ctxSummary} |`);
|
|
333
|
+
}
|
|
334
|
+
lines.push('');
|
|
335
|
+
}
|
|
336
|
+
if (topoGaps.length > 0) {
|
|
337
|
+
lines.push(`### By link topology (${topoGaps.length} topics)`);
|
|
338
|
+
lines.push('');
|
|
339
|
+
lines.push('| Topic | In-degree |');
|
|
340
|
+
lines.push('|---|---|');
|
|
341
|
+
for (const g of topoGaps) {
|
|
342
|
+
lines.push(`| ${g.topic} | ${g.in_degree} |`);
|
|
343
|
+
}
|
|
344
|
+
lines.push('');
|
|
172
345
|
}
|
|
346
|
+
}
|
|
347
|
+
lines.push('');
|
|
348
|
+
// Section 3: Health Metrics
|
|
349
|
+
lines.push('## Health Metrics');
|
|
350
|
+
lines.push('');
|
|
351
|
+
lines.push(`| Metric | Value |`);
|
|
352
|
+
lines.push(`|---|---|`);
|
|
353
|
+
lines.push(`| Files | ${health.file_count} |`);
|
|
354
|
+
lines.push(`| Nodes | ${health.node_count} |`);
|
|
355
|
+
lines.push(`| Chunks | ${health.chunk_count} |`);
|
|
356
|
+
lines.push(`| Edges | ${health.edge_count} |`);
|
|
357
|
+
lines.push('');
|
|
358
|
+
// Generated drafts section
|
|
359
|
+
if (stubsGenerated > 0) {
|
|
360
|
+
lines.push('## Generated Drafts');
|
|
361
|
+
lines.push('');
|
|
362
|
+
lines.push(`${stubsGenerated} synthesis drafts written to \`_audit-drafts/\`. Review before promoting to wiki.`);
|
|
173
363
|
lines.push('');
|
|
174
364
|
}
|
|
175
|
-
|
|
176
|
-
lines.push('
|
|
365
|
+
else {
|
|
366
|
+
lines.push('---');
|
|
177
367
|
lines.push('');
|
|
178
|
-
|
|
179
|
-
const name = p.split('/').pop() ?? p;
|
|
180
|
-
lines.push(`- [[${name.replace('.md', '')}]]`);
|
|
181
|
-
}
|
|
368
|
+
lines.push('*Run with `--generate-stubs` to auto-generate draft pages for gaps.*');
|
|
182
369
|
lines.push('');
|
|
183
370
|
}
|
|
184
371
|
writeFileSync(reportPath, lines.join('\n'), 'utf-8');
|
|
@@ -189,12 +376,16 @@ function truncate(s, maxLen) {
|
|
|
189
376
|
return s.slice(0, maxLen) + '...';
|
|
190
377
|
}
|
|
191
378
|
/**
|
|
192
|
-
* Filter out noise from the gap detector
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* -
|
|
379
|
+
* Filter out noise from the gap detector (D42 Tier 1 tightening).
|
|
380
|
+
*
|
|
381
|
+
* Rejects topics that are:
|
|
382
|
+
* - Too short
|
|
383
|
+
* - URLs, file paths, qualified names
|
|
384
|
+
* - Code fragments (snake_case, camelCase, SCREAMING_SNAKE)
|
|
385
|
+
* - Common stopwords (English + technical)
|
|
386
|
+
* - Single-word generic terms that aren't proper nouns/acronyms
|
|
196
387
|
*/
|
|
197
|
-
function isRealGap(topic) {
|
|
388
|
+
export function isRealGap(topic) {
|
|
198
389
|
if (topic.length < MIN_TOPIC_LENGTH)
|
|
199
390
|
return false;
|
|
200
391
|
// Skip URLs, file paths, code fragments
|
|
@@ -202,24 +393,62 @@ function isRealGap(topic) {
|
|
|
202
393
|
return false;
|
|
203
394
|
if (topic.includes('://'))
|
|
204
395
|
return false;
|
|
205
|
-
//
|
|
206
|
-
if (
|
|
396
|
+
// Qualified names (e.g., "fs.readFileSync", "path.join")
|
|
397
|
+
if (topic.includes('.') && !topic.includes(' '))
|
|
207
398
|
return false;
|
|
208
|
-
// Skip
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
'can', 'not', 'but', 'all', 'has', 'have', 'had', 'been', 'would', 'could',
|
|
212
|
-
'should', 'may', 'might', 'must', 'shall', 'into', 'than', 'then', 'when',
|
|
213
|
-
'where', 'which', 'while', 'about', 'after', 'before', 'between', 'under',
|
|
214
|
-
'over', 'only', 'also', 'just', 'like', 'more', 'most', 'some', 'such',
|
|
215
|
-
'each', 'every', 'both', 'either', 'neither', 'other', 'another',
|
|
216
|
-
'true', 'false', 'null', 'none', 'yes', 'done',
|
|
217
|
-
]);
|
|
218
|
-
if (stopwords.has(topic.toLowerCase()))
|
|
399
|
+
// Skip code-like patterns
|
|
400
|
+
// snake_case: all lowercase with underscores
|
|
401
|
+
if (/^[a-z_]+$/.test(topic) && topic.includes('_'))
|
|
219
402
|
return false;
|
|
220
|
-
//
|
|
221
|
-
if (!topic.includes(' ')
|
|
403
|
+
// camelCase: starts lowercase then has uppercase
|
|
404
|
+
if (/^[a-z]+[A-Z]/.test(topic) && !topic.includes(' '))
|
|
222
405
|
return false;
|
|
406
|
+
// SCREAMING_SNAKE_CASE
|
|
407
|
+
if (/^[A-Z][A-Z0-9_]+$/.test(topic))
|
|
408
|
+
return false;
|
|
409
|
+
const lower = topic.toLowerCase();
|
|
410
|
+
// Skip common English stopwords
|
|
411
|
+
if (STOPWORDS.has(lower))
|
|
412
|
+
return false;
|
|
413
|
+
// Skip common technical terms that aren't real topics
|
|
414
|
+
if (TECH_STOPWORDS.has(lower))
|
|
415
|
+
return false;
|
|
416
|
+
// Single-word topics: only keep proper nouns/acronyms (starts with uppercase
|
|
417
|
+
// or is all-caps like "OAuth2", "Docker", "PostgreSQL")
|
|
418
|
+
if (!topic.includes(' ')) {
|
|
419
|
+
const looksProper = /^[A-Z]/.test(topic);
|
|
420
|
+
if (!looksProper)
|
|
421
|
+
return false;
|
|
422
|
+
}
|
|
223
423
|
return true;
|
|
224
424
|
}
|
|
425
|
+
const STOPWORDS = new Set([
|
|
426
|
+
'the', 'and', 'for', 'with', 'that', 'this', 'from', 'are', 'was', 'will',
|
|
427
|
+
'can', 'not', 'but', 'all', 'has', 'have', 'had', 'been', 'would', 'could',
|
|
428
|
+
'should', 'may', 'might', 'must', 'shall', 'into', 'than', 'then', 'when',
|
|
429
|
+
'where', 'which', 'while', 'about', 'after', 'before', 'between', 'under',
|
|
430
|
+
'over', 'only', 'also', 'just', 'like', 'more', 'most', 'some', 'such',
|
|
431
|
+
'each', 'every', 'both', 'either', 'neither', 'other', 'another',
|
|
432
|
+
'true', 'false', 'null', 'none', 'yes', 'done', 'note', 'using',
|
|
433
|
+
'first', 'still', 'instead', 'enable', 'default', 'since', 'based',
|
|
434
|
+
'here', 'there', 'these', 'those', 'above', 'below', 'through',
|
|
435
|
+
]);
|
|
436
|
+
const TECH_STOPWORDS = new Set([
|
|
437
|
+
'example', 'section', 'configuration', 'implementation', 'method',
|
|
438
|
+
'function', 'parameter', 'argument', 'option', 'value', 'result',
|
|
439
|
+
'output', 'input', 'error', 'warning', 'status', 'type', 'string',
|
|
440
|
+
'number', 'boolean', 'object', 'array', 'list', 'file', 'path',
|
|
441
|
+
'name', 'version', 'update', 'change', 'create', 'delete', 'read',
|
|
442
|
+
'write', 'server', 'client', 'request', 'response', 'source', 'model',
|
|
443
|
+
'command', 'description', 'detail', 'content', 'window', 'provider',
|
|
444
|
+
'module', 'package', 'import', 'export', 'return', 'class', 'interface',
|
|
445
|
+
'property', 'field', 'table', 'column', 'index', 'query', 'schema',
|
|
446
|
+
'handler', 'callback', 'promise', 'async', 'await', 'event', 'action',
|
|
447
|
+
'state', 'props', 'component', 'render', 'route', 'endpoint', 'context',
|
|
448
|
+
'scope', 'token', 'session', 'header', 'body', 'payload', 'message',
|
|
449
|
+
'process', 'service', 'manager', 'factory', 'builder', 'helper',
|
|
450
|
+
'utility', 'config', 'setting', 'feature', 'support', 'format',
|
|
451
|
+
'connection', 'database', 'storage', 'cache', 'buffer', 'stream',
|
|
452
|
+
'directory', 'folder', 'entry', 'record', 'document', 'resource',
|
|
453
|
+
]);
|
|
225
454
|
//# sourceMappingURL=audit-wiki.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-wiki.js","sourceRoot":"","sources":["../../src/cli/audit-wiki.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit-wiki.js","sourceRoot":"","sources":["../../src/cli/audit-wiki.ts"],"names":[],"mappings":"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"}
|