@pella-labs/pinakes 0.3.14 → 0.4.0
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 +348 -80
- 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/cli/serve.js +1 -1
- 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/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +19 -5
- package/dist/llm/provider.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 +30 -19
|
@@ -1,15 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contradiction detector v2 (D41 — topic-clustered claim comparison).
|
|
3
|
+
*
|
|
4
|
+
* Two-phase pipeline:
|
|
5
|
+
* Phase A (claims.ts): Per-file LLM extraction of {topic, claims[]}
|
|
6
|
+
* Phase B (this file): Group claims by topic, compare cross-file via LLM
|
|
7
|
+
*
|
|
8
|
+
* Topic dedup uses embedding cosine similarity > threshold (default 0.85)
|
|
9
|
+
* to merge terminology variants like "OAuth2" / "OAuth 2.0".
|
|
10
|
+
*/
|
|
1
11
|
import { writeFileSync } from 'node:fs';
|
|
2
12
|
import { join } from 'node:path';
|
|
3
13
|
import { logger } from '../observability/logger.js';
|
|
4
|
-
const RATE_LIMIT_MS =
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
14
|
+
const RATE_LIMIT_MS = 60 * 60 * 1000; // 1 hour
|
|
15
|
+
const DEFAULT_TOPIC_SIMILARITY = 0.85;
|
|
16
|
+
const COMPARE_SYSTEM = `You are a contradiction detector for a knowledge wiki. Given claims about a topic from different wiki files, identify any contradictions — places where two files make incompatible factual statements.
|
|
17
|
+
|
|
18
|
+
Return ONLY valid JSON:
|
|
19
|
+
{"contradictions":[{"claim_a":"exact claim text","source_a":"file","claim_b":"exact claim text","source_b":"file","explanation":"why these contradict","confidence":"high"|"medium"}]}
|
|
20
|
+
|
|
21
|
+
Rules:
|
|
22
|
+
- Only report genuine factual contradictions, not differences in emphasis or scope
|
|
23
|
+
- "high" confidence = clear logical incompatibility
|
|
24
|
+
- "medium" confidence = likely contradiction but could be context-dependent
|
|
25
|
+
- If no contradictions, return {"contradictions":[]}`;
|
|
26
|
+
// ----------------------------------------------------------------------------
|
|
27
|
+
// Main entry point
|
|
28
|
+
// ----------------------------------------------------------------------------
|
|
8
29
|
/**
|
|
9
|
-
* Run
|
|
30
|
+
* Run contradiction scan using topic-clustered claim comparison (D41).
|
|
31
|
+
* Requires claims to be extracted first (via extractAllClaims).
|
|
10
32
|
*/
|
|
11
33
|
export async function contradictionScan(opts) {
|
|
12
|
-
const { bundle, scope, llmProvider, wikiRoot } = opts;
|
|
34
|
+
const { bundle, scope, llmProvider, wikiRoot, progress } = opts;
|
|
35
|
+
const threshold = opts.topicSimilarity ?? DEFAULT_TOPIC_SIMILARITY;
|
|
13
36
|
// Rate limit check
|
|
14
37
|
const lastScan = bundle.writer
|
|
15
38
|
.prepare(`SELECT value FROM pinakes_meta WHERE key = ?`)
|
|
@@ -17,157 +40,201 @@ export async function contradictionScan(opts) {
|
|
|
17
40
|
if (lastScan) {
|
|
18
41
|
const lastTs = parseInt(lastScan.value, 10);
|
|
19
42
|
if (Date.now() - lastTs < RATE_LIMIT_MS) {
|
|
20
|
-
return { scanned_pairs: 0, contradictions: [], rate_limited: true };
|
|
43
|
+
return { scanned_pairs: 0, topics_scanned: 0, claims_extracted: 0, contradictions: [], rate_limited: true };
|
|
21
44
|
}
|
|
22
45
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
46
|
+
// Get all claims grouped by topic
|
|
47
|
+
const allClaims = bundle.writer
|
|
48
|
+
.prepare(`SELECT topic, claim, source_uri FROM pinakes_claims WHERE scope = ? ORDER BY topic`)
|
|
49
|
+
.all(scope);
|
|
50
|
+
if (allClaims.length === 0) {
|
|
51
|
+
return { scanned_pairs: 0, topics_scanned: 0, claims_extracted: 0, contradictions: [], rate_limited: false };
|
|
52
|
+
}
|
|
53
|
+
// Group claims by topic
|
|
54
|
+
let topicGroups = groupByTopic(allClaims);
|
|
55
|
+
// Topic dedup via embeddings (merge "OAuth2" and "OAuth 2.0")
|
|
56
|
+
if (opts.embedder) {
|
|
57
|
+
topicGroups = await deduplicateTopics(topicGroups, opts.embedder, threshold);
|
|
27
58
|
}
|
|
28
|
-
//
|
|
29
|
-
const
|
|
59
|
+
// Filter to topics with claims from 2+ files (cross-file contradictions only)
|
|
60
|
+
const crossFileTopics = topicGroups.filter((g) => {
|
|
61
|
+
const uniqueFiles = new Set(g.claims.map((c) => c.source_uri));
|
|
62
|
+
return uniqueFiles.size >= 2;
|
|
63
|
+
});
|
|
30
64
|
const contradictions = [];
|
|
31
65
|
let scanned = 0;
|
|
32
|
-
|
|
66
|
+
progress?.startPhase('Phase 1/3: Comparing claims across topics', crossFileTopics.length);
|
|
67
|
+
for (const group of crossFileTopics) {
|
|
68
|
+
const uniqueFiles = new Set(group.claims.map((c) => c.source_uri));
|
|
33
69
|
try {
|
|
70
|
+
const prompt = formatComparisonPrompt(group);
|
|
34
71
|
const response = await llmProvider.complete({
|
|
35
|
-
system:
|
|
36
|
-
prompt
|
|
37
|
-
maxTokens:
|
|
72
|
+
system: COMPARE_SYSTEM,
|
|
73
|
+
prompt,
|
|
74
|
+
maxTokens: 500,
|
|
38
75
|
});
|
|
39
|
-
const
|
|
40
|
-
|
|
76
|
+
const parsed = parseContradictionResponse(response);
|
|
77
|
+
for (const c of parsed) {
|
|
41
78
|
contradictions.push({
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
79
|
+
topic: group.topic,
|
|
80
|
+
claimA: { claim: c.claim_a, source_uri: c.source_a },
|
|
81
|
+
claimB: { claim: c.claim_b, source_uri: c.source_b },
|
|
82
|
+
explanation: c.explanation,
|
|
83
|
+
confidence: c.confidence,
|
|
46
84
|
});
|
|
47
85
|
}
|
|
48
86
|
scanned++;
|
|
87
|
+
progress?.tick(group.topic, `${group.claims.length} claims from ${uniqueFiles.size} files — ${parsed.length > 0 ? `${parsed.length} CONTRADICTION(S)` : 'clean'}`);
|
|
49
88
|
}
|
|
50
89
|
catch (err) {
|
|
51
|
-
logger.warn({ err,
|
|
90
|
+
logger.warn({ err, topic: group.topic }, 'contradiction comparison failed for topic');
|
|
91
|
+
progress?.tick(group.topic, `failed: ${err instanceof Error ? err.message.slice(0, 60) : err}`);
|
|
52
92
|
}
|
|
53
93
|
}
|
|
94
|
+
progress?.endPhase(`${contradictions.length} contradictions found across ${scanned} topics`);
|
|
54
95
|
// Update rate limit timestamp
|
|
55
96
|
bundle.writer
|
|
56
97
|
.prepare(`INSERT OR REPLACE INTO pinakes_meta (key, value) VALUES ('last_contradiction_scan', ?)`)
|
|
57
98
|
.run(String(Date.now()));
|
|
58
|
-
// Write
|
|
99
|
+
// Write report if contradictions found
|
|
59
100
|
if (contradictions.length > 0) {
|
|
60
|
-
writeContradictionReport(wikiRoot, contradictions
|
|
101
|
+
writeContradictionReport(wikiRoot, contradictions);
|
|
61
102
|
}
|
|
62
|
-
return {
|
|
103
|
+
return {
|
|
104
|
+
scanned_pairs: scanned,
|
|
105
|
+
topics_scanned: crossFileTopics.length,
|
|
106
|
+
claims_extracted: allClaims.length,
|
|
107
|
+
contradictions,
|
|
108
|
+
rate_limited: false,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function groupByTopic(claims) {
|
|
112
|
+
const map = new Map();
|
|
113
|
+
for (const c of claims) {
|
|
114
|
+
const key = c.topic.toLowerCase();
|
|
115
|
+
let group = map.get(key);
|
|
116
|
+
if (!group) {
|
|
117
|
+
group = { topic: c.topic, claims: [] };
|
|
118
|
+
map.set(key, group);
|
|
119
|
+
}
|
|
120
|
+
group.claims.push({ claim: c.claim, source_uri: c.source_uri });
|
|
121
|
+
}
|
|
122
|
+
return [...map.values()];
|
|
63
123
|
}
|
|
64
124
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* (which is a prerequisite for them to potentially contradict).
|
|
125
|
+
* Merge topic groups whose topic strings are semantically similar
|
|
126
|
+
* (cosine similarity > threshold). Handles "OAuth2" / "OAuth 2.0" merging.
|
|
68
127
|
*/
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if (sim.distance > SIMILARITY_THRESHOLD)
|
|
97
|
-
continue;
|
|
98
|
-
// Deduplicate symmetric pairs
|
|
99
|
-
const pairKey = [chunk.rowid, sim.rowid].sort().join(':');
|
|
100
|
-
if (pairs.has(pairKey))
|
|
101
|
-
continue;
|
|
102
|
-
pairs.add(pairKey);
|
|
103
|
-
const other = chunks.find((c) => c.rowid === sim.rowid);
|
|
104
|
-
if (!other)
|
|
105
|
-
continue;
|
|
106
|
-
// Skip same-source pairs (they're likely just adjacent sections)
|
|
107
|
-
if (chunk.source_uri === other.source_uri)
|
|
108
|
-
continue;
|
|
109
|
-
result.push({
|
|
110
|
-
a: { id: chunk.id, source_uri: chunk.source_uri, text: chunk.text },
|
|
111
|
-
b: { id: other.id, source_uri: other.source_uri, text: other.text },
|
|
112
|
-
});
|
|
113
|
-
if (result.length >= MAX_PAIRS)
|
|
114
|
-
break;
|
|
128
|
+
export async function deduplicateTopics(groups, embedder, threshold) {
|
|
129
|
+
if (groups.length <= 1)
|
|
130
|
+
return groups;
|
|
131
|
+
// Embed all topic strings
|
|
132
|
+
const embeddings = [];
|
|
133
|
+
for (const g of groups) {
|
|
134
|
+
embeddings.push(await embedder.embed(g.topic));
|
|
135
|
+
}
|
|
136
|
+
// Union-find for merging
|
|
137
|
+
const parent = groups.map((_, i) => i);
|
|
138
|
+
function find(i) {
|
|
139
|
+
while (parent[i] !== i) {
|
|
140
|
+
parent[i] = parent[parent[i]];
|
|
141
|
+
i = parent[i];
|
|
142
|
+
}
|
|
143
|
+
return i;
|
|
144
|
+
}
|
|
145
|
+
function union(a, b) {
|
|
146
|
+
parent[find(b)] = find(a);
|
|
147
|
+
}
|
|
148
|
+
// Compare all pairs
|
|
149
|
+
for (let i = 0; i < groups.length; i++) {
|
|
150
|
+
for (let j = i + 1; j < groups.length; j++) {
|
|
151
|
+
const sim = cosineSimilarity(embeddings[i], embeddings[j]);
|
|
152
|
+
if (sim > threshold) {
|
|
153
|
+
union(i, j);
|
|
154
|
+
}
|
|
115
155
|
}
|
|
116
156
|
}
|
|
117
|
-
|
|
157
|
+
// Merge groups
|
|
158
|
+
const merged = new Map();
|
|
159
|
+
for (let i = 0; i < groups.length; i++) {
|
|
160
|
+
const root = find(i);
|
|
161
|
+
let target = merged.get(root);
|
|
162
|
+
if (!target) {
|
|
163
|
+
target = { topic: groups[root].topic, claims: [] };
|
|
164
|
+
merged.set(root, target);
|
|
165
|
+
}
|
|
166
|
+
target.claims.push(...groups[i].claims);
|
|
167
|
+
}
|
|
168
|
+
return [...merged.values()];
|
|
169
|
+
}
|
|
170
|
+
function cosineSimilarity(a, b) {
|
|
171
|
+
let dot = 0, normA = 0, normB = 0;
|
|
172
|
+
for (let i = 0; i < a.length; i++) {
|
|
173
|
+
dot += a[i] * b[i];
|
|
174
|
+
normA += a[i] * a[i];
|
|
175
|
+
normB += b[i] * b[i];
|
|
176
|
+
}
|
|
177
|
+
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
178
|
+
return denom === 0 ? 0 : dot / denom;
|
|
118
179
|
}
|
|
119
|
-
|
|
180
|
+
// ----------------------------------------------------------------------------
|
|
181
|
+
// LLM prompt + response parsing
|
|
182
|
+
// ----------------------------------------------------------------------------
|
|
183
|
+
function formatComparisonPrompt(group) {
|
|
184
|
+
const lines = [`Topic: "${group.topic}"\n\nClaims from different files:\n`];
|
|
185
|
+
for (const c of group.claims) {
|
|
186
|
+
lines.push(`- [${c.source_uri}]: "${c.claim}"`);
|
|
187
|
+
}
|
|
188
|
+
return lines.join('\n');
|
|
189
|
+
}
|
|
190
|
+
export function parseContradictionResponse(response) {
|
|
120
191
|
try {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
192
|
+
const fenceMatch = response.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
193
|
+
const jsonStr = fenceMatch ? fenceMatch[1] : response;
|
|
194
|
+
const objMatch = jsonStr.match(/\{[\s\S]*\}/);
|
|
195
|
+
if (!objMatch)
|
|
196
|
+
return [];
|
|
197
|
+
const parsed = JSON.parse(objMatch[0]);
|
|
198
|
+
if (!Array.isArray(parsed.contradictions))
|
|
199
|
+
return [];
|
|
200
|
+
return parsed.contradictions.filter((c) => typeof c.claim_a === 'string' &&
|
|
201
|
+
typeof c.claim_b === 'string' &&
|
|
202
|
+
typeof c.explanation === 'string' &&
|
|
203
|
+
(c.confidence === 'high' || c.confidence === 'medium'));
|
|
132
204
|
}
|
|
133
205
|
catch {
|
|
134
|
-
return
|
|
206
|
+
return [];
|
|
135
207
|
}
|
|
136
208
|
}
|
|
137
|
-
|
|
138
|
-
|
|
209
|
+
// ----------------------------------------------------------------------------
|
|
210
|
+
// Report output
|
|
211
|
+
// ----------------------------------------------------------------------------
|
|
212
|
+
function writeContradictionReport(wikiRoot, contradictions) {
|
|
139
213
|
const lines = [
|
|
140
214
|
'# Detected Contradictions',
|
|
141
215
|
'',
|
|
142
216
|
`*Last scanned: ${new Date().toISOString()}*`,
|
|
143
217
|
'',
|
|
144
218
|
];
|
|
219
|
+
// Group by topic
|
|
220
|
+
const byTopic = new Map();
|
|
145
221
|
for (const c of contradictions) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
lines.push(
|
|
222
|
+
const list = byTopic.get(c.topic) ?? [];
|
|
223
|
+
list.push(c);
|
|
224
|
+
byTopic.set(c.topic, list);
|
|
225
|
+
}
|
|
226
|
+
for (const [topic, items] of byTopic) {
|
|
227
|
+
lines.push(`## ${topic}`);
|
|
152
228
|
lines.push('');
|
|
229
|
+
for (const c of items) {
|
|
230
|
+
lines.push(`- **${c.claimA.source_uri}**: "${c.claimA.claim}"`);
|
|
231
|
+
lines.push(`- **${c.claimB.source_uri}**: "${c.claimB.claim}"`);
|
|
232
|
+
lines.push(`- **Explanation**: ${c.explanation} (${c.confidence} confidence)`);
|
|
233
|
+
lines.push('');
|
|
234
|
+
}
|
|
153
235
|
}
|
|
154
236
|
writeFileSync(join(wikiRoot, 'contradictions.md'), lines.join('\n'), 'utf8');
|
|
155
|
-
// Log the scan
|
|
156
|
-
try {
|
|
157
|
-
bundle.writer
|
|
158
|
-
.prepare(`INSERT INTO pinakes_log (ts, scope, kind, source_uri, payload)
|
|
159
|
-
VALUES (?, ?, 'contradiction:scan', NULL, ?)`)
|
|
160
|
-
.run(Date.now(), scope, JSON.stringify({ contradictions_found: contradictions.length }));
|
|
161
|
-
}
|
|
162
|
-
catch {
|
|
163
|
-
// Non-fatal
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
function truncate(s, maxLen) {
|
|
167
|
-
if (s.length <= maxLen)
|
|
168
|
-
return s;
|
|
169
|
-
return s.slice(0, maxLen) + '...';
|
|
170
237
|
}
|
|
171
|
-
// Export for testing
|
|
172
|
-
export {
|
|
238
|
+
// Export internals for testing
|
|
239
|
+
export { groupByTopic as _groupByTopic, cosineSimilarity as _cosineSimilarity };
|
|
173
240
|
//# sourceMappingURL=contradiction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contradiction.js","sourceRoot":"","sources":["../../src/cli/contradiction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"contradiction.js","sourceRoot":"","sources":["../../src/cli/contradiction.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -49,7 +49,9 @@ function getRequiredString(flags, key) {
|
|
|
49
49
|
return v;
|
|
50
50
|
}
|
|
51
51
|
async function main() {
|
|
52
|
-
const
|
|
52
|
+
const rawArgv = process.argv.slice(2);
|
|
53
|
+
// Skip leading '--' from pnpm's argument separator (pnpm run pinakes -- serve)
|
|
54
|
+
const argv = rawArgv[0] === '--' ? rawArgv.slice(1) : rawArgv;
|
|
53
55
|
const subcommand = argv[0];
|
|
54
56
|
const { flags } = parseFlags(argv.slice(1));
|
|
55
57
|
switch (subcommand) {
|
|
@@ -106,7 +108,7 @@ async function main() {
|
|
|
106
108
|
});
|
|
107
109
|
// eslint-disable-next-line no-console
|
|
108
110
|
console.log(`\nAudit complete: ${result.contradictions.contradictions.length} contradictions, ` +
|
|
109
|
-
`${result.gaps_found} gaps, ${result.
|
|
111
|
+
`${result.gaps_found} gaps, ${result.topology_gaps} topology gaps.`);
|
|
110
112
|
break;
|
|
111
113
|
}
|
|
112
114
|
case 'clean-wiki': {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EACL,UAAU,EACV,eAAe,IAAI,sBAAsB,GAC1C,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAgBpD,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,KAAK,GAAU,EAAE,CAAC;IACxB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBAC3B,CAAC,EAAE,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,KAAY,EAAE,GAAW;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAY,EAAE,GAAW;IAClD,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress reporter for long-running CLI operations (D44).
|
|
3
|
+
*
|
|
4
|
+
* Writes phase headers and per-item progress to stderr so it doesn't
|
|
5
|
+
* interfere with structured stdout output or piping.
|
|
6
|
+
*/
|
|
7
|
+
export interface ProgressReporter {
|
|
8
|
+
startPhase(name: string, total: number): void;
|
|
9
|
+
tick(label: string, detail?: string): void;
|
|
10
|
+
endPhase(summary: string): void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a progress reporter that writes to stderr.
|
|
14
|
+
* Pass `quiet: true` to suppress all output (for tests or non-TTY).
|
|
15
|
+
*/
|
|
16
|
+
export declare function createProgressReporter(opts?: {
|
|
17
|
+
quiet?: boolean;
|
|
18
|
+
}): ProgressReporter;
|
|
19
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/cli/progress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAkCnF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress reporter for long-running CLI operations (D44).
|
|
3
|
+
*
|
|
4
|
+
* Writes phase headers and per-item progress to stderr so it doesn't
|
|
5
|
+
* interfere with structured stdout output or piping.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Create a progress reporter that writes to stderr.
|
|
9
|
+
* Pass `quiet: true` to suppress all output (for tests or non-TTY).
|
|
10
|
+
*/
|
|
11
|
+
export function createProgressReporter(opts) {
|
|
12
|
+
const quiet = opts?.quiet ?? false;
|
|
13
|
+
let phaseStart = 0;
|
|
14
|
+
let current = 0;
|
|
15
|
+
let total = 0;
|
|
16
|
+
return {
|
|
17
|
+
startPhase(name, count) {
|
|
18
|
+
total = count;
|
|
19
|
+
current = 0;
|
|
20
|
+
phaseStart = Date.now();
|
|
21
|
+
if (!quiet) {
|
|
22
|
+
process.stderr.write(`${name} (${count} items)...\n`);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
tick(label, detail) {
|
|
26
|
+
current++;
|
|
27
|
+
if (!quiet) {
|
|
28
|
+
const elapsed = ((Date.now() - phaseStart) / 1000).toFixed(1);
|
|
29
|
+
const parts = [` [${current}/${total}] ${label}`];
|
|
30
|
+
if (detail)
|
|
31
|
+
parts.push(` — ${detail}`);
|
|
32
|
+
parts.push(` (${elapsed}s)`);
|
|
33
|
+
process.stderr.write(parts.join('') + '\n');
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
endPhase(summary) {
|
|
37
|
+
if (!quiet) {
|
|
38
|
+
const elapsed = ((Date.now() - phaseStart) / 1000).toFixed(1);
|
|
39
|
+
process.stderr.write(` ${summary} (${elapsed}s total)\n\n`);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/cli/progress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC;IACnC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO;QACL,UAAU,CAAC,IAAY,EAAE,KAAa;YACpC,KAAK,GAAG,KAAK,CAAC;YACd,OAAO,GAAG,CAAC,CAAC;YACZ,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,KAAK,cAAc,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAa,EAAE,MAAe;YACjC,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;gBACnD,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,OAAe;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,KAAK,OAAO,cAAc,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/cli/serve.js
CHANGED
|
@@ -138,7 +138,7 @@ export async function buildServer(options) {
|
|
|
138
138
|
'Only fall back to Grep/Read/Glob after checking the knowledge base, or when you need ' +
|
|
139
139
|
'to find exact symbols, read specific source files, or make code changes. ' +
|
|
140
140
|
`Use \`${executeToolName}\` for advanced operations: graph traversal, gap detection, writing new knowledge.`;
|
|
141
|
-
const mcp = new McpServer({ name: serverName, version: '0.3.
|
|
141
|
+
const mcp = new McpServer({ name: serverName, version: '0.3.15' }, { capabilities: { tools: {} }, instructions });
|
|
142
142
|
mcp.registerTool(searchToolName, searchToolConfig, instrumentHandler(searchToolName, makeSearchHandler({
|
|
143
143
|
repository, embedder, bundle: projectBundle,
|
|
144
144
|
personalBundle: personalBundle ?? undefined,
|
package/dist/db/client.js
CHANGED
|
@@ -121,7 +121,7 @@ export function openDb(path, options = {}) {
|
|
|
121
121
|
if (runMigrations) {
|
|
122
122
|
writer
|
|
123
123
|
.prepare('INSERT OR IGNORE INTO pinakes_meta (key, value) VALUES (?, ?)')
|
|
124
|
-
.run('schema_version', '
|
|
124
|
+
.run('schema_version', '3');
|
|
125
125
|
}
|
|
126
126
|
logger.info({ path: absPath, sqliteVersion: versionRow.v }, 'opened SQLite db');
|
|
127
127
|
return { path: absPath, writer, readers, drizzleWriter };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
CREATE TABLE `pinakes_claims` (
|
|
2
|
+
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
3
|
+
`scope` text NOT NULL,
|
|
4
|
+
`source_uri` text NOT NULL,
|
|
5
|
+
`chunk_id` text REFERENCES `pinakes_chunks`(`id`) ON DELETE SET NULL,
|
|
6
|
+
`topic` text NOT NULL,
|
|
7
|
+
`claim` text NOT NULL,
|
|
8
|
+
`extracted_at` integer NOT NULL
|
|
9
|
+
);
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
CREATE INDEX `idx_claims_topic` ON `pinakes_claims` (`scope`,`topic`);
|
|
12
|
+
--> statement-breakpoint
|
|
13
|
+
CREATE INDEX `idx_claims_source` ON `pinakes_claims` (`scope`,`source_uri`);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
-- Phase 11.1: Add numeric confidence_score with time decay support (D50)
|
|
2
|
+
-- The TEXT confidence column is PRESERVED for backward compatibility.
|
|
3
|
+
|
|
4
|
+
ALTER TABLE `pinakes_nodes` ADD `confidence_score` real NOT NULL DEFAULT 0.7;--> statement-breakpoint
|
|
5
|
+
|
|
6
|
+
-- Backfill from existing TEXT confidence column
|
|
7
|
+
UPDATE `pinakes_nodes` SET `confidence_score` = CASE `confidence`
|
|
8
|
+
WHEN 'extracted' THEN 0.7
|
|
9
|
+
WHEN 'inferred' THEN 0.5
|
|
10
|
+
WHEN 'ambiguous' THEN 0.3
|
|
11
|
+
ELSE 0.7
|
|
12
|
+
END;
|
|
@@ -22,6 +22,20 @@
|
|
|
22
22
|
"when": 1776192000000,
|
|
23
23
|
"tag": "0002_rename_kg_to_pinakes",
|
|
24
24
|
"breakpoints": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"idx": 3,
|
|
28
|
+
"version": "6",
|
|
29
|
+
"when": 1776134400000,
|
|
30
|
+
"tag": "0003_add_pinakes_claims",
|
|
31
|
+
"breakpoints": true
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"idx": 4,
|
|
35
|
+
"version": "6",
|
|
36
|
+
"when": 1776220800000,
|
|
37
|
+
"tag": "0004_add_confidence_score",
|
|
38
|
+
"breakpoints": true
|
|
25
39
|
}
|
|
26
40
|
]
|
|
27
41
|
}
|