@pella-labs/pinakes 0.1.10 → 0.2.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.
Files changed (45) hide show
  1. package/dist/cli/contradiction-cli.d.ts +11 -0
  2. package/dist/cli/contradiction-cli.d.ts.map +1 -0
  3. package/dist/cli/contradiction-cli.js +26 -0
  4. package/dist/cli/contradiction-cli.js.map +1 -0
  5. package/dist/cli/contradiction.d.ts +59 -0
  6. package/dist/cli/contradiction.d.ts.map +1 -0
  7. package/dist/cli/contradiction.js +172 -0
  8. package/dist/cli/contradiction.js.map +1 -0
  9. package/dist/cli/index.js +24 -1
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/ingest/ingester.d.ts +5 -0
  12. package/dist/ingest/ingester.d.ts.map +1 -1
  13. package/dist/ingest/ingester.js +66 -1
  14. package/dist/ingest/ingester.js.map +1 -1
  15. package/dist/llm/provider.d.ts +70 -0
  16. package/dist/llm/provider.d.ts.map +1 -0
  17. package/dist/llm/provider.js +235 -0
  18. package/dist/llm/provider.js.map +1 -0
  19. package/dist/mcp/tools/execute.d.ts.map +1 -1
  20. package/dist/mcp/tools/execute.js +21 -39
  21. package/dist/mcp/tools/execute.js.map +1 -1
  22. package/dist/mcp/tools/search.d.ts +5 -0
  23. package/dist/mcp/tools/search.d.ts.map +1 -1
  24. package/dist/mcp/tools/search.js +30 -6
  25. package/dist/mcp/tools/search.js.map +1 -1
  26. package/dist/retrieval/dedup.d.ts +25 -0
  27. package/dist/retrieval/dedup.d.ts.map +1 -0
  28. package/dist/retrieval/dedup.js +97 -0
  29. package/dist/retrieval/dedup.js.map +1 -0
  30. package/dist/retrieval/expand.d.ts +18 -0
  31. package/dist/retrieval/expand.d.ts.map +1 -0
  32. package/dist/retrieval/expand.js +89 -0
  33. package/dist/retrieval/expand.js.map +1 -0
  34. package/dist/retrieval/graph.d.ts +47 -0
  35. package/dist/retrieval/graph.d.ts.map +1 -0
  36. package/dist/retrieval/graph.js +144 -0
  37. package/dist/retrieval/graph.js.map +1 -0
  38. package/dist/retrieval/hybrid.d.ts +10 -0
  39. package/dist/retrieval/hybrid.d.ts.map +1 -1
  40. package/dist/retrieval/hybrid.js +57 -2
  41. package/dist/retrieval/hybrid.js.map +1 -1
  42. package/dist/sandbox/bindings/kg.d.ts.map +1 -1
  43. package/dist/sandbox/bindings/kg.js +10 -0
  44. package/dist/sandbox/bindings/kg.js.map +1 -1
  45. package/package.json +16 -27
@@ -0,0 +1,11 @@
1
+ import { type ContradictionResult } from './contradiction.js';
2
+ /**
3
+ * CLI wrapper for the contradiction scan command.
4
+ * Sets up DB connection and LLM provider, runs the scan, cleans up.
5
+ */
6
+ export declare function contradictionScanCommand(opts: {
7
+ scope: 'project' | 'personal';
8
+ wikiPath?: string;
9
+ dbPath?: string;
10
+ }): Promise<ContradictionResult>;
11
+ //# sourceMappingURL=contradiction-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contradiction-cli.d.ts","sourceRoot":"","sources":["../../src/cli/contradiction-cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEjF;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgB/B"}
@@ -0,0 +1,26 @@
1
+ import { resolve } from 'node:path';
2
+ import { closeDb, openDb } from '../db/client.js';
3
+ import { createLlmProvider } from '../llm/provider.js';
4
+ import { contradictionScan } from './contradiction.js';
5
+ /**
6
+ * CLI wrapper for the contradiction scan command.
7
+ * Sets up DB connection and LLM provider, runs the scan, cleans up.
8
+ */
9
+ export async function contradictionScanCommand(opts) {
10
+ const wikiPath = resolve(opts.wikiPath ?? '.kg/wiki');
11
+ const dbPath = opts.dbPath ?? resolve(wikiPath, '..', 'kg.db');
12
+ const bundle = openDb(dbPath);
13
+ try {
14
+ const llmProvider = createLlmProvider();
15
+ return await contradictionScan({
16
+ bundle,
17
+ scope: opts.scope,
18
+ llmProvider,
19
+ wikiRoot: wikiPath,
20
+ });
21
+ }
22
+ finally {
23
+ closeDb(bundle);
24
+ }
25
+ }
26
+ //# sourceMappingURL=contradiction-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contradiction-cli.js","sourceRoot":"","sources":["../../src/cli/contradiction-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAA4B,MAAM,oBAAoB,CAAC;AAEjF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAI9C;IACC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,OAAO,MAAM,iBAAiB,CAAC;YAC7B,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW;YACX,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { DbBundle } from '../db/client.js';
2
+ import type { LlmProvider } from '../llm/provider.js';
3
+ /**
4
+ * Contradiction detector CLI command (PRD Phase 8, stretch goal H).
5
+ *
6
+ * Scans wiki chunks for contradictory claims using pairwise LLM judge.
7
+ * Rate-limited to 1 scan per hour. Outputs contradictions.md to wiki root.
8
+ */
9
+ export interface ContradictionScanOpts {
10
+ bundle: DbBundle;
11
+ scope: 'project' | 'personal';
12
+ llmProvider: LlmProvider;
13
+ wikiRoot: string;
14
+ }
15
+ export interface Contradiction {
16
+ chunkA: {
17
+ id: string;
18
+ source_uri: string;
19
+ text: string;
20
+ };
21
+ chunkB: {
22
+ id: string;
23
+ source_uri: string;
24
+ text: string;
25
+ };
26
+ explanation: string;
27
+ confidence: 'high' | 'medium';
28
+ }
29
+ export interface ContradictionResult {
30
+ scanned_pairs: number;
31
+ contradictions: Contradiction[];
32
+ rate_limited: boolean;
33
+ }
34
+ /**
35
+ * Run a contradiction scan. Returns immediately if rate-limited.
36
+ */
37
+ export declare function contradictionScan(opts: ContradictionScanOpts): Promise<ContradictionResult>;
38
+ interface ChunkInfo {
39
+ id: string;
40
+ source_uri: string;
41
+ text: string;
42
+ }
43
+ interface CandidatePair {
44
+ a: ChunkInfo;
45
+ b: ChunkInfo;
46
+ }
47
+ /**
48
+ * Find candidate pairs for contradiction checking.
49
+ * Uses vector similarity to find chunks that are semantically similar
50
+ * (which is a prerequisite for them to potentially contradict).
51
+ */
52
+ declare function findCandidatePairs(bundle: DbBundle, scope: string): CandidatePair[];
53
+ declare function parseJudgment(response: string): {
54
+ contradicts: boolean;
55
+ explanation: string;
56
+ confidence: string;
57
+ } | null;
58
+ export { findCandidatePairs as _findCandidatePairs, parseJudgment as _parseJudgment };
59
+ //# sourceMappingURL=contradiction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contradiction.d.ts","sourceRoot":"","sources":["../../src/cli/contradiction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;;GAKG;AAEH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,YAAY,EAAE,OAAO,CAAC;CACvB;AAQD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAmE9B;AAMD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa;IACrB,CAAC,EAAE,SAAS,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;CACd;AAED;;;;GAIG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAwD5E;AAED,iBAAS,aAAa,CACpB,QAAQ,EAAE,MAAM,GACf;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkB1E;AAyDD,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,aAAa,IAAI,cAAc,EAAE,CAAC"}
@@ -0,0 +1,172 @@
1
+ import { logger } from '../observability/logger.js';
2
+ const RATE_LIMIT_MS = 60 * 60 * 1000; // 1 hour
3
+ const MAX_PAIRS = 50;
4
+ const SIMILARITY_THRESHOLD = 0.3;
5
+ const JUDGE_SYSTEM = `You are a contradiction detector. Given two text chunks from a knowledge wiki, determine if they contain contradictory claims. Respond with ONLY valid JSON: {"contradicts": true/false, "explanation": "why", "confidence": "high"|"medium"|"low"}. Only report contradictions you are confident about.`;
6
+ /**
7
+ * Run a contradiction scan. Returns immediately if rate-limited.
8
+ */
9
+ export async function contradictionScan(opts) {
10
+ const { bundle, scope, llmProvider, wikiRoot } = opts;
11
+ // Rate limit check
12
+ const lastScan = bundle.writer
13
+ .prepare(`SELECT value FROM kg_meta WHERE key = ?`)
14
+ .get('last_contradiction_scan');
15
+ if (lastScan) {
16
+ const lastTs = parseInt(lastScan.value, 10);
17
+ if (Date.now() - lastTs < RATE_LIMIT_MS) {
18
+ return { scanned_pairs: 0, contradictions: [], rate_limited: true };
19
+ }
20
+ }
21
+ if (!llmProvider.available()) {
22
+ throw new Error('No LLM provider available for contradiction detection. ' +
23
+ 'Set KG_OLLAMA_URL, ANTHROPIC_API_KEY, or OPENAI_API_KEY, ' +
24
+ 'or install the claude/codex CLI.');
25
+ }
26
+ // Find candidate pairs via vector similarity
27
+ const pairs = findCandidatePairs(bundle, scope);
28
+ const contradictions = [];
29
+ let scanned = 0;
30
+ for (const pair of pairs) {
31
+ try {
32
+ const response = await llmProvider.complete({
33
+ system: JUDGE_SYSTEM,
34
+ prompt: `Chunk A (from ${pair.a.source_uri}):\n${pair.a.text}\n\nChunk B (from ${pair.b.source_uri}):\n${pair.b.text}`,
35
+ maxTokens: 200,
36
+ });
37
+ const judgment = parseJudgment(response);
38
+ if (judgment && judgment.contradicts && (judgment.confidence === 'high' || judgment.confidence === 'medium')) {
39
+ contradictions.push({
40
+ chunkA: pair.a,
41
+ chunkB: pair.b,
42
+ explanation: judgment.explanation,
43
+ confidence: judgment.confidence,
44
+ });
45
+ }
46
+ scanned++;
47
+ }
48
+ catch (err) {
49
+ logger.warn({ err, pairA: pair.a.id, pairB: pair.b.id }, 'contradiction check failed for pair');
50
+ }
51
+ }
52
+ // Update rate limit timestamp
53
+ bundle.writer
54
+ .prepare(`INSERT OR REPLACE INTO kg_meta (key, value) VALUES ('last_contradiction_scan', ?)`)
55
+ .run(String(Date.now()));
56
+ // Write contradictions.md if any found
57
+ if (contradictions.length > 0) {
58
+ writeContradictionReport(wikiRoot, contradictions, bundle, scope);
59
+ }
60
+ return { scanned_pairs: scanned, contradictions, rate_limited: false };
61
+ }
62
+ /**
63
+ * Find candidate pairs for contradiction checking.
64
+ * Uses vector similarity to find chunks that are semantically similar
65
+ * (which is a prerequisite for them to potentially contradict).
66
+ */
67
+ function findCandidatePairs(bundle, scope) {
68
+ // Get all chunks with their vec embeddings
69
+ const chunks = bundle.writer
70
+ .prepare(`SELECT c.id, n.source_uri, c.text, c.rowid
71
+ FROM kg_chunks c
72
+ JOIN kg_nodes n ON c.node_id = n.id
73
+ WHERE n.scope = ?
74
+ ORDER BY c.rowid`)
75
+ .all(scope);
76
+ if (chunks.length < 2)
77
+ return [];
78
+ // For each chunk, find the top 5 most similar via vec
79
+ const pairs = new Set();
80
+ const result = [];
81
+ for (const chunk of chunks) {
82
+ if (result.length >= MAX_PAIRS)
83
+ break;
84
+ const similar = bundle.writer
85
+ .prepare(`SELECT rowid, distance
86
+ FROM kg_chunks_vec
87
+ WHERE embedding MATCH (SELECT embedding FROM kg_chunks_vec WHERE rowid = ?)
88
+ AND k = ?
89
+ ORDER BY distance`)
90
+ .all(chunk.rowid, 6); // 6 because first result is self
91
+ for (const sim of similar) {
92
+ if (sim.rowid === chunk.rowid)
93
+ continue;
94
+ if (sim.distance > SIMILARITY_THRESHOLD)
95
+ continue;
96
+ // Deduplicate symmetric pairs
97
+ const pairKey = [chunk.rowid, sim.rowid].sort().join(':');
98
+ if (pairs.has(pairKey))
99
+ continue;
100
+ pairs.add(pairKey);
101
+ const other = chunks.find((c) => c.rowid === sim.rowid);
102
+ if (!other)
103
+ continue;
104
+ // Skip same-source pairs (they're likely just adjacent sections)
105
+ if (chunk.source_uri === other.source_uri)
106
+ continue;
107
+ result.push({
108
+ a: { id: chunk.id, source_uri: chunk.source_uri, text: chunk.text },
109
+ b: { id: other.id, source_uri: other.source_uri, text: other.text },
110
+ });
111
+ if (result.length >= MAX_PAIRS)
112
+ break;
113
+ }
114
+ }
115
+ return result;
116
+ }
117
+ function parseJudgment(response) {
118
+ try {
119
+ const match = response.match(/\{[\s\S]*\}/);
120
+ if (!match)
121
+ return null;
122
+ const parsed = JSON.parse(match[0]);
123
+ if (typeof parsed.contradicts !== 'boolean')
124
+ return null;
125
+ return {
126
+ contradicts: parsed.contradicts,
127
+ explanation: parsed.explanation ?? '',
128
+ confidence: parsed.confidence ?? 'low',
129
+ };
130
+ }
131
+ catch {
132
+ return null;
133
+ }
134
+ }
135
+ function writeContradictionReport(wikiRoot, contradictions, bundle, scope) {
136
+ const { writeFileSync } = require('node:fs');
137
+ const { join } = require('node:path');
138
+ const lines = [
139
+ '# Detected Contradictions',
140
+ '',
141
+ `*Last scanned: ${new Date().toISOString()}*`,
142
+ '',
143
+ ];
144
+ for (const c of contradictions) {
145
+ lines.push(`## ${c.chunkA.source_uri} vs ${c.chunkB.source_uri}`);
146
+ lines.push('');
147
+ lines.push(`- **Chunk A** (${c.chunkA.source_uri}): "${truncate(c.chunkA.text, 200)}"`);
148
+ lines.push(`- **Chunk B** (${c.chunkB.source_uri}): "${truncate(c.chunkB.text, 200)}"`);
149
+ lines.push(`- **Explanation**: ${c.explanation}`);
150
+ lines.push(`- **Confidence**: ${c.confidence}`);
151
+ lines.push('');
152
+ }
153
+ writeFileSync(join(wikiRoot, 'contradictions.md'), lines.join('\n'), 'utf8');
154
+ // Log the scan
155
+ try {
156
+ bundle.writer
157
+ .prepare(`INSERT INTO kg_log (ts, scope, kind, source_uri, payload)
158
+ VALUES (?, ?, 'contradiction:scan', NULL, ?)`)
159
+ .run(Date.now(), scope, JSON.stringify({ contradictions_found: contradictions.length }));
160
+ }
161
+ catch {
162
+ // Non-fatal
163
+ }
164
+ }
165
+ function truncate(s, maxLen) {
166
+ if (s.length <= maxLen)
167
+ return s;
168
+ return s.slice(0, maxLen) + '...';
169
+ }
170
+ // Export for testing
171
+ export { findCandidatePairs as _findCandidatePairs, parseJudgment as _parseJudgment };
172
+ //# sourceMappingURL=contradiction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contradiction.js","sourceRoot":"","sources":["../../src/cli/contradiction.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { auditCommand, renderAudit } from './audit.js';
3
+ import { contradictionScanCommand } from './contradiction-cli.js';
3
4
  import { exportCommand, renderExport } from './export.js';
4
5
  import { importCommand, renderImport } from './import.js';
5
6
  import { purgeCommand, renderPurge } from './purge.js';
@@ -143,6 +144,27 @@ async function main() {
143
144
  console.log(renderImport(result));
144
145
  break;
145
146
  }
147
+ case 'contradiction-scan': {
148
+ const scope = (getString(flags, 'scope') ?? 'project');
149
+ const result = await contradictionScanCommand({
150
+ scope,
151
+ wikiPath: getString(flags, 'wiki-path'),
152
+ dbPath: getString(flags, 'db-path'),
153
+ });
154
+ if (result.rate_limited) {
155
+ // eslint-disable-next-line no-console
156
+ console.log('Rate limited — last scan was less than 1 hour ago.');
157
+ }
158
+ else {
159
+ // eslint-disable-next-line no-console
160
+ console.log(`Scanned ${result.scanned_pairs} pairs, found ${result.contradictions.length} contradictions.`);
161
+ if (result.contradictions.length > 0) {
162
+ // eslint-disable-next-line no-console
163
+ console.log('Wrote contradictions.md to wiki root.');
164
+ }
165
+ }
166
+ break;
167
+ }
146
168
  case undefined:
147
169
  case 'help':
148
170
  case '-h':
@@ -157,7 +179,8 @@ Usage:
157
179
  kg audit [--tail] [--n <count>] [--scope project|personal] [--db-path <path>]
158
180
  kg purge --scope <project|personal> --confirm [--db-path <path>]
159
181
  kg export --scope <project|personal> [--out file.json] [--db-path <path>]
160
- kg import --scope <project|personal> --in file.json [--db-path <path>]`);
182
+ kg import --scope <project|personal> --in file.json [--db-path <path>]
183
+ kg contradiction-scan [--scope project|personal] [--wiki-path <dir>] [--db-path <path>]`);
161
184
  break;
162
185
  }
163
186
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,11 @@ export declare class IngesterService {
112
112
  * caller passes `--clean` to force a full re-ingest from scratch.
113
113
  */
114
114
  export declare function freshManifest(): Manifest;
115
+ /**
116
+ * Extract wikilink targets from markdown content.
117
+ * Returns deduplicated, normalized (trimmed, lowercase) link targets.
118
+ */
119
+ export declare function extractWikilinks(content: string): string[];
115
120
  export type { ChunkText };
116
121
  export { manifestPathFor };
117
122
  export { fileSha };
@@ -1 +1 @@
1
- {"version":3,"file":"ingester.d.ts","sourceRoot":"","sources":["../../src/ingest/ingester.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACL,KAAK,QAAQ,EAGb,OAAO,EACP,eAAe,EAOhB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAgB,KAAK,KAAK,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAMH,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoBD,gFAAgF;AAChF,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAMD,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGf,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB;IAO/B;;;;;;OAMG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBxD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAcjC;;;OAGG;IACH,WAAW,IAAI,QAAQ;IAIvB;;;OAGG;IACH,cAAc,IAAI,IAAI;YAQR,cAAc;IAkM5B;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,SAAS;CAYlB;AAsCD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAExC;AAGD,YAAY,EAAE,SAAS,EAAE,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"ingester.d.ts","sourceRoot":"","sources":["../../src/ingest/ingester.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACL,KAAK,QAAQ,EAGb,OAAO,EACP,eAAe,EAOhB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAgB,KAAK,KAAK,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAMH,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoBD,gFAAgF;AAChF,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAMD,qBAAa,eAAe;IAMxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGf,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,eAAoB;IAO/B;;;;;;OAMG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBxD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAcjC;;;OAGG;IACH,WAAW,IAAI,QAAQ;IAIvB;;;OAGG;IACH,cAAc,IAAI,IAAI;YAQR,cAAc;IAmO5B;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,SAAS;CAYlB;AAsCD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAExC;AASD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAO1D;AAiCD,YAAY,EAAE,SAAS,EAAE,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -166,7 +166,7 @@ export class IngesterService {
166
166
  }
167
167
  }
168
168
  }
169
- // Step 6: transaction — delete-then-insert nodes/chunks/vec for this file
169
+ // Step 6: transaction — delete-then-insert nodes/chunks/vec/edges for this file
170
170
  const now = Date.now();
171
171
  const totalChunks = planned.reduce((acc, n) => acc + n.chunks.length, 0);
172
172
  this.runInTransaction((w) => {
@@ -183,6 +183,17 @@ export class IngesterService {
183
183
  w.prepare(`DELETE FROM kg_chunks_vec WHERE rowid IN (${placeholders})`).run(...oldRowids.map((r) => r.rowid));
184
184
  }
185
185
  // Delete old nodes for this file (cascades to chunks → FTS5 trigger fires).
186
+ // Also delete outbound edges from this file's nodes (edges don't cascade
187
+ // from kg_nodes FK — they reference src_id/dst_id without ON DELETE CASCADE
188
+ // on dst_id, so we delete src edges explicitly).
189
+ const oldNodeIds = w
190
+ .prepare(`SELECT id FROM kg_nodes WHERE scope = ? AND source_uri = ?`)
191
+ .all(this.scope, sourceUri)
192
+ .map((r) => r.id);
193
+ if (oldNodeIds.length > 0) {
194
+ const ph = oldNodeIds.map(() => '?').join(',');
195
+ w.prepare(`DELETE FROM kg_edges WHERE src_id IN (${ph})`).run(...oldNodeIds);
196
+ }
186
197
  w.prepare('DELETE FROM kg_nodes WHERE scope = ? AND source_uri = ?').run(this.scope, sourceUri);
187
198
  // Insert new nodes
188
199
  const insertNode = w.prepare(`INSERT INTO kg_nodes (id, scope, source_uri, section_path, kind, title, content, source_sha, token_count, created_at, updated_at, last_accessed_at, confidence)
@@ -211,6 +222,20 @@ export class IngesterService {
211
222
  }
212
223
  }
213
224
  }
225
+ // Step 6.5: wikilink edge extraction (D39)
226
+ // Scan each node's content for [[wikilinks]], resolve targets to
227
+ // existing node IDs, and insert edges. Unresolved links are silently
228
+ // skipped (gap detector already surfaces those).
229
+ const insertEdge = w.prepare(`INSERT OR IGNORE INTO kg_edges (src_id, dst_id, edge_kind) VALUES (?, ?, 'wikilink')`);
230
+ for (const node of planned) {
231
+ const links = extractWikilinks(node.section.content);
232
+ for (const linkTarget of links) {
233
+ const dstId = resolveWikilinkTarget(w, this.scope, linkTarget);
234
+ if (dstId && dstId !== node.nodeId) {
235
+ insertEdge.run(node.nodeId, dstId);
236
+ }
237
+ }
238
+ }
214
239
  });
215
240
  // Step 7: append kg_log row
216
241
  this.appendLog('ingest:done', absPath, {
@@ -309,6 +334,46 @@ function sha1(input) {
309
334
  export function freshManifest() {
310
335
  return emptyManifest();
311
336
  }
337
+ // ----------------------------------------------------------------------------
338
+ // Wikilink extraction + resolution (D39)
339
+ // ----------------------------------------------------------------------------
340
+ /** Wikilink regex: [[term]] or [[term|display]] — reuses pattern from gaps/detector.ts */
341
+ const WIKILINK_RE = /\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g;
342
+ /**
343
+ * Extract wikilink targets from markdown content.
344
+ * Returns deduplicated, normalized (trimmed, lowercase) link targets.
345
+ */
346
+ export function extractWikilinks(content) {
347
+ const targets = new Set();
348
+ for (const m of content.matchAll(WIKILINK_RE)) {
349
+ const target = (m[1] ?? '').trim().toLowerCase();
350
+ if (target.length >= 1)
351
+ targets.add(target);
352
+ }
353
+ return [...targets];
354
+ }
355
+ /**
356
+ * Resolve a wikilink target string to a node ID. Checks:
357
+ * 1. source_uri basename match (e.g. "auth" → "auth.md")
358
+ * 2. title match (case-insensitive)
359
+ *
360
+ * Returns the first matching node ID, or null if unresolved.
361
+ */
362
+ function resolveWikilinkTarget(w, scope, target) {
363
+ // Try source_uri basename match: "auth" should match "auth.md" or "guides/auth.md"
364
+ // We match the last path component without .md extension.
365
+ const withMd = target.endsWith('.md') ? target : `${target}.md`;
366
+ const row = w
367
+ .prepare(`SELECT id FROM kg_nodes
368
+ WHERE scope = ? AND (
369
+ source_uri = ? OR
370
+ source_uri LIKE ? OR
371
+ LOWER(title) = ?
372
+ )
373
+ LIMIT 1`)
374
+ .get(scope, withMd, `%/${withMd}`, target);
375
+ return row?.id ?? null;
376
+ }
312
377
  export { manifestPathFor };
313
378
  export { fileSha };
314
379
  //# sourceMappingURL=ingester.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingester.js","sourceRoot":"","sources":["../../src/ingest/ingester.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingester.js","sourceRoot":"","sources":["../../src/ingest/ingester.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * LLM provider factory (D36).
3
+ *
4
+ * Tiered cascade for lightweight completions (query expansion,
5
+ * contradiction detection) without requiring the user to set up
6
+ * a separate API key:
7
+ *
8
+ * 1. MCP Sampling — if client declares capability (future-proof)
9
+ * 2. Ollama — local HTTP, free, ~100ms
10
+ * 3. API key — ANTHROPIC_API_KEY or OPENAI_API_KEY via fetch()
11
+ * 4. `claude -p` subprocess — user's Claude subscription (~2-5s)
12
+ * 5. `codex exec` subprocess — user's ChatGPT subscription (~2-5s)
13
+ * 6. Disabled — graceful degradation
14
+ *
15
+ * No new dependencies. Uses fetch() for HTTP, child_process for CLI.
16
+ */
17
+ export interface LlmProvider {
18
+ readonly name: string;
19
+ available(): boolean;
20
+ complete(opts: {
21
+ system: string;
22
+ prompt: string;
23
+ maxTokens: number;
24
+ }): Promise<string>;
25
+ }
26
+ /**
27
+ * Server type — minimal shape we need from the MCP SDK's Server class.
28
+ * Using a structural type to avoid importing the SDK at the module level.
29
+ */
30
+ export interface McpServerLike {
31
+ getClientCapabilities?(): {
32
+ sampling?: Record<string, unknown>;
33
+ } | undefined;
34
+ createMessage?(params: {
35
+ messages: Array<{
36
+ role: string;
37
+ content: {
38
+ type: string;
39
+ text: string;
40
+ };
41
+ }>;
42
+ systemPrompt?: string;
43
+ maxTokens: number;
44
+ modelPreferences?: {
45
+ hints?: Array<{
46
+ name: string;
47
+ }>;
48
+ costPriority?: number;
49
+ };
50
+ }): Promise<{
51
+ content: {
52
+ type: string;
53
+ text?: string;
54
+ };
55
+ }>;
56
+ }
57
+ /**
58
+ * Create the best available LLM provider by probing the environment.
59
+ * First available provider in the cascade wins.
60
+ */
61
+ export declare function createLlmProvider(mcpServer?: McpServerLike): LlmProvider;
62
+ declare class DisabledProvider implements LlmProvider {
63
+ readonly name = "disabled";
64
+ available(): boolean;
65
+ complete(): Promise<string>;
66
+ }
67
+ declare function whichSync(name: string): boolean;
68
+ export { DisabledProvider as _DisabledProvider };
69
+ export { whichSync as _whichSync };
70
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,SAAS,IAAI,OAAO,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxF;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,qBAAqB,CAAC,IAAI;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7E,aAAa,CAAC,CAAC,MAAM,EAAE;QACrB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;QAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/E,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,WAAW,CAqCxE;AA2JD,cAAM,gBAAiB,YAAW,WAAW;IAC3C,QAAQ,CAAC,IAAI,cAAc;IAE3B,SAAS,IAAI,OAAO;IAId,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;CAMlC;AASD,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAaxC;AAiBD,OAAO,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;AACjD,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,CAAC"}