@wiki0/core 0.0.3 → 0.0.5
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 +38 -23
- package/dist/documents.d.ts +12 -0
- package/dist/documents.js +143 -0
- package/dist/documents.js.map +1 -0
- package/dist/events.d.ts +9 -0
- package/dist/events.js +56 -0
- package/dist/events.js.map +1 -0
- package/dist/facts.d.ts +4 -0
- package/dist/facts.js +108 -16
- package/dist/facts.js.map +1 -1
- package/dist/graph.js +14 -2
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts +11 -1
- package/dist/indexer.js +132 -21
- package/dist/indexer.js.map +1 -1
- package/dist/ingest.d.ts +2 -0
- package/dist/ingest.js +253 -0
- package/dist/ingest.js.map +1 -0
- package/dist/lint.js +1 -1
- package/dist/lint.js.map +1 -1
- package/dist/pages.js +25 -3
- package/dist/pages.js.map +1 -1
- package/dist/schema.sql +32 -0
- package/dist/search.d.ts +4 -2
- package/dist/search.js +162 -6
- package/dist/search.js.map +1 -1
- package/dist/sync.d.ts +2 -0
- package/dist/sync.js +340 -0
- package/dist/sync.js.map +1 -0
- package/dist/topics.d.ts +2 -0
- package/dist/topics.js +55 -0
- package/dist/topics.js.map +1 -0
- package/dist/types.d.ts +83 -29
- package/dist/workflow.d.ts +2 -3
- package/dist/workflow.js +5 -92
- package/dist/workflow.js.map +1 -1
- package/package.json +3 -1
package/dist/schema.sql
CHANGED
|
@@ -24,6 +24,23 @@ CREATE TABLE IF NOT EXISTS page_links (
|
|
|
24
24
|
created_at TEXT DEFAULT (datetime('now'))
|
|
25
25
|
);
|
|
26
26
|
|
|
27
|
+
CREATE TABLE IF NOT EXISTS page_chunks (
|
|
28
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
29
|
+
page_id INTEGER NOT NULL REFERENCES pages(id) ON DELETE CASCADE,
|
|
30
|
+
path TEXT NOT NULL,
|
|
31
|
+
title TEXT NOT NULL,
|
|
32
|
+
heading TEXT,
|
|
33
|
+
body TEXT NOT NULL,
|
|
34
|
+
start_line INTEGER NOT NULL,
|
|
35
|
+
end_line INTEGER NOT NULL,
|
|
36
|
+
sequence INTEGER NOT NULL,
|
|
37
|
+
page_priority INTEGER NOT NULL DEFAULT 0,
|
|
38
|
+
page_status TEXT,
|
|
39
|
+
page_tags TEXT,
|
|
40
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
41
|
+
UNIQUE(page_id, sequence)
|
|
42
|
+
);
|
|
43
|
+
|
|
27
44
|
CREATE TABLE IF NOT EXISTS facts (
|
|
28
45
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
29
46
|
page_id INTEGER REFERENCES pages(id) ON DELETE SET NULL,
|
|
@@ -31,6 +48,11 @@ CREATE TABLE IF NOT EXISTS facts (
|
|
|
31
48
|
summary TEXT NOT NULL,
|
|
32
49
|
body TEXT,
|
|
33
50
|
confidence TEXT NOT NULL DEFAULT 'unknown',
|
|
51
|
+
source_path TEXT,
|
|
52
|
+
source_heading TEXT,
|
|
53
|
+
source_start_line INTEGER,
|
|
54
|
+
source_end_line INTEGER,
|
|
55
|
+
source_quote TEXT,
|
|
34
56
|
created_at TEXT DEFAULT (datetime('now'))
|
|
35
57
|
);
|
|
36
58
|
|
|
@@ -40,4 +62,14 @@ CREATE TABLE IF NOT EXISTS wiki_meta (
|
|
|
40
62
|
updated_at TEXT DEFAULT (datetime('now'))
|
|
41
63
|
);
|
|
42
64
|
|
|
65
|
+
CREATE TABLE IF NOT EXISTS wiki_events (
|
|
66
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
67
|
+
operation TEXT NOT NULL,
|
|
68
|
+
summary TEXT NOT NULL,
|
|
69
|
+
target TEXT,
|
|
70
|
+
details TEXT,
|
|
71
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
72
|
+
);
|
|
73
|
+
|
|
43
74
|
CREATE VIRTUAL TABLE IF NOT EXISTS fts_pages USING fts5(path, title, body);
|
|
75
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS fts_page_chunks USING fts5(chunk_id UNINDEXED, path, title, heading, body);
|
package/dist/search.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { BacklinkResult, ContextResult, SearchResult } from './types.js';
|
|
1
|
+
import type { BacklinkResult, ChunkSearchResult, ContextResult, SearchResult, ShowChunkResult } from './types.js';
|
|
2
2
|
export declare function search_wiki(query: string, root?: string, limit?: number): SearchResult[];
|
|
3
3
|
export declare function plain_text_fts_query(query: string): string;
|
|
4
4
|
export declare function relaxed_plain_text_fts_query(query: string): string;
|
|
5
|
+
export declare function search_wiki_chunks(query: string, root?: string, limit?: number): ChunkSearchResult[];
|
|
6
|
+
export declare function show_wiki_chunk(target: string, root?: string): ShowChunkResult | null;
|
|
5
7
|
export declare function get_wiki_context(query: string, root?: string, limit?: number): ContextResult;
|
|
6
|
-
export declare function format_context_markdown(query: string, results:
|
|
8
|
+
export declare function format_context_markdown(query: string, results: ChunkSearchResult[], warnings?: string[]): string;
|
|
7
9
|
export declare function backlinks_for_page(title: string, root?: string): BacklinkResult[];
|
package/dist/search.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
1
3
|
import { open_wiki_database } from './database.js';
|
|
4
|
+
import { index_status } from './indexer.js';
|
|
2
5
|
import { resolve_page_path } from './pages.js';
|
|
6
|
+
import { resolve_wiki_root } from './paths.js';
|
|
3
7
|
export function search_wiki(query, root = '.', limit = 10) {
|
|
4
8
|
const db = open_wiki_database(root);
|
|
5
9
|
const statement = db.prepare(`SELECT path, title,
|
|
@@ -84,22 +88,165 @@ function plain_text_terms(query) {
|
|
|
84
88
|
function quote_fts_term(term) {
|
|
85
89
|
return `"${term.replace(/"/gu, '""')}"`;
|
|
86
90
|
}
|
|
91
|
+
export function search_wiki_chunks(query, root = '.', limit = 10) {
|
|
92
|
+
const db = open_wiki_database(root);
|
|
93
|
+
const statement = db.prepare(`SELECT fts_page_chunks.chunk_id AS chunk_id,
|
|
94
|
+
fts_page_chunks.path,
|
|
95
|
+
fts_page_chunks.title,
|
|
96
|
+
page_chunks.heading,
|
|
97
|
+
page_chunks.body,
|
|
98
|
+
page_chunks.start_line AS start_line,
|
|
99
|
+
page_chunks.end_line AS end_line,
|
|
100
|
+
page_chunks.page_priority,
|
|
101
|
+
page_chunks.page_status,
|
|
102
|
+
page_chunks.page_tags,
|
|
103
|
+
snippet(fts_page_chunks, 4, '[', ']', '…', 12) AS snippet,
|
|
104
|
+
bm25(fts_page_chunks) AS rank
|
|
105
|
+
FROM fts_page_chunks
|
|
106
|
+
JOIN page_chunks ON page_chunks.id = fts_page_chunks.chunk_id
|
|
107
|
+
WHERE fts_page_chunks MATCH ?
|
|
108
|
+
ORDER BY rank
|
|
109
|
+
LIMIT ?`);
|
|
110
|
+
const fts_query = plain_text_fts_query(query);
|
|
111
|
+
if (!fts_query) {
|
|
112
|
+
db.close();
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const rows = boosted_chunk_rows(statement.all(fts_query, limit * 5).map(chunk_row_from_sql), limit);
|
|
117
|
+
if (rows.length > 0)
|
|
118
|
+
return rows;
|
|
119
|
+
const relaxed_query = relaxed_plain_text_fts_query(query);
|
|
120
|
+
if (!relaxed_query || relaxed_query === fts_query)
|
|
121
|
+
return rows;
|
|
122
|
+
return boosted_chunk_rows(statement.all(relaxed_query, limit * 5).map(chunk_row_from_sql), limit);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
throw new Error(`Invalid wiki chunk search query: ${query}`, {
|
|
126
|
+
cause: error,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
db.close();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function chunk_row_from_sql(row) {
|
|
134
|
+
return {
|
|
135
|
+
chunk_id: Number(row.chunk_id),
|
|
136
|
+
path: String(row.path),
|
|
137
|
+
title: String(row.title),
|
|
138
|
+
heading: row.heading === null ? null : String(row.heading),
|
|
139
|
+
body: String(row.body),
|
|
140
|
+
start_line: Number(row.start_line),
|
|
141
|
+
end_line: Number(row.end_line),
|
|
142
|
+
page_priority: Number(row.page_priority ?? 0),
|
|
143
|
+
page_status: row.page_status === null ? null : String(row.page_status),
|
|
144
|
+
page_tags: parse_page_tags(row.page_tags),
|
|
145
|
+
snippet: String(row.snippet),
|
|
146
|
+
rank: Number(row.rank),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function boosted_chunk_rows(rows, limit) {
|
|
150
|
+
return rows
|
|
151
|
+
.map(normalize_chunk_row)
|
|
152
|
+
.map((row) => ({ ...row, rank: boosted_rank(row) }))
|
|
153
|
+
.sort((left, right) => left.rank - right.rank)
|
|
154
|
+
.slice(0, limit);
|
|
155
|
+
}
|
|
156
|
+
function normalize_chunk_row(row) {
|
|
157
|
+
return {
|
|
158
|
+
...row,
|
|
159
|
+
page_tags: parse_page_tags(row.page_tags),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function boosted_rank(row) {
|
|
163
|
+
const priority = row.page_priority ?? 0;
|
|
164
|
+
const status = (row.page_status ?? '').toLowerCase();
|
|
165
|
+
const tags = row.page_tags ?? [];
|
|
166
|
+
let rank = row.rank - priority * 0.1;
|
|
167
|
+
if (status === 'verified' || status === 'accepted')
|
|
168
|
+
rank -= 0.5;
|
|
169
|
+
if (status === 'draft' || status === 'review')
|
|
170
|
+
rank += 0.5;
|
|
171
|
+
if (status === 'stale' ||
|
|
172
|
+
status === 'superseded' ||
|
|
173
|
+
status === 'archived') {
|
|
174
|
+
rank += 2;
|
|
175
|
+
}
|
|
176
|
+
if (tags.includes('canonical') || tags.includes('source'))
|
|
177
|
+
rank -= 0.25;
|
|
178
|
+
if (tags.includes('archive') || tags.includes('superseded'))
|
|
179
|
+
rank += 2;
|
|
180
|
+
return rank;
|
|
181
|
+
}
|
|
182
|
+
function parse_page_tags(value) {
|
|
183
|
+
if (Array.isArray(value))
|
|
184
|
+
return value.filter((item) => typeof item === 'string');
|
|
185
|
+
if (typeof value !== 'string')
|
|
186
|
+
return [];
|
|
187
|
+
try {
|
|
188
|
+
const parsed = JSON.parse(value);
|
|
189
|
+
return Array.isArray(parsed)
|
|
190
|
+
? parsed.filter((item) => typeof item === 'string')
|
|
191
|
+
: [];
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return [];
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export function show_wiki_chunk(target, root = '.') {
|
|
198
|
+
const { path, line } = parse_chunk_target(target, root);
|
|
199
|
+
const db = open_wiki_database(root);
|
|
200
|
+
const row = db
|
|
201
|
+
.prepare(`SELECT id AS chunk_id, path, title, heading, body,
|
|
202
|
+
start_line AS start_line, end_line AS end_line,
|
|
203
|
+
body AS snippet, 0 AS rank
|
|
204
|
+
FROM page_chunks
|
|
205
|
+
WHERE path = ? AND (? IS NULL OR (start_line <= ? AND end_line >= ?))
|
|
206
|
+
ORDER BY sequence
|
|
207
|
+
LIMIT 1`)
|
|
208
|
+
.get(path, line, line, line);
|
|
209
|
+
db.close();
|
|
210
|
+
return row ?? null;
|
|
211
|
+
}
|
|
212
|
+
function parse_chunk_target(target, root) {
|
|
213
|
+
const match = target.match(/^(.*?)(?::(\d+))?$/u);
|
|
214
|
+
const title = match?.[1]?.trim() ?? target;
|
|
215
|
+
const line = match?.[2] ? Number(match[2]) : null;
|
|
216
|
+
const wiki_root = resolve_wiki_root(root);
|
|
217
|
+
const direct_path = title.endsWith('.md') ? title : `${title}.md`;
|
|
218
|
+
if (existsSync(join(wiki_root, 'wiki', direct_path))) {
|
|
219
|
+
return { path: direct_path, line };
|
|
220
|
+
}
|
|
221
|
+
return { path: resolve_page_path(title, root), line };
|
|
222
|
+
}
|
|
87
223
|
export function get_wiki_context(query, root = '.', limit = 5) {
|
|
88
|
-
const
|
|
224
|
+
const status = index_status(root);
|
|
225
|
+
const warnings = status.stale
|
|
226
|
+
? [
|
|
227
|
+
`Index is stale (${status.reasons.join(', ')}); run index_wiki before relying on these results.`,
|
|
228
|
+
]
|
|
229
|
+
: [];
|
|
230
|
+
const results = search_wiki_chunks(query, root, limit);
|
|
89
231
|
return {
|
|
90
232
|
query,
|
|
91
233
|
results,
|
|
92
|
-
|
|
234
|
+
warnings,
|
|
235
|
+
markdown: format_context_markdown(query, results, warnings),
|
|
93
236
|
};
|
|
94
237
|
}
|
|
95
|
-
export function format_context_markdown(query, results) {
|
|
238
|
+
export function format_context_markdown(query, results, warnings = []) {
|
|
96
239
|
const lines = [`# wiki0 context: ${query}`, ''];
|
|
240
|
+
if (warnings.length > 0) {
|
|
241
|
+
lines.push('## Warnings', '', ...warnings.map((warning) => `- ${warning}`), '');
|
|
242
|
+
}
|
|
97
243
|
if (results.length === 0) {
|
|
98
244
|
lines.push('No indexed wiki context found.');
|
|
99
245
|
return `${lines.join('\n')}\n`;
|
|
100
246
|
}
|
|
101
247
|
for (const [index, result] of results.entries()) {
|
|
102
|
-
|
|
248
|
+
const line_range = `${result.start_line}-${result.end_line}`;
|
|
249
|
+
lines.push(`## ${index + 1}. ${result.title}`, `Source: \`wiki/${result.path}:${line_range}\``, result.heading ? `Heading: ${result.heading}` : '', '', result.body.trim(), '');
|
|
103
250
|
}
|
|
104
251
|
return `${lines.join('\n').trimEnd()}\n`;
|
|
105
252
|
}
|
|
@@ -107,7 +254,7 @@ export function backlinks_for_page(title, root = '.') {
|
|
|
107
254
|
const db = open_wiki_database(root);
|
|
108
255
|
const page_path = resolve_page_path(title, root);
|
|
109
256
|
const rows = db
|
|
110
|
-
.prepare(`SELECT pages.path, pages.title, page_links.raw_text AS
|
|
257
|
+
.prepare(`SELECT pages.path, pages.title, page_links.raw_text AS raw_text,
|
|
111
258
|
page_links.alias, page_links.embed
|
|
112
259
|
FROM page_links
|
|
113
260
|
JOIN pages ON pages.id = page_links.from_page_id
|
|
@@ -115,6 +262,15 @@ export function backlinks_for_page(title, root = '.') {
|
|
|
115
262
|
ORDER BY pages.path`)
|
|
116
263
|
.all(page_path);
|
|
117
264
|
db.close();
|
|
118
|
-
return rows.map(
|
|
265
|
+
return rows.map(backlink_from_row);
|
|
266
|
+
}
|
|
267
|
+
function backlink_from_row(row) {
|
|
268
|
+
return {
|
|
269
|
+
path: String(row.path),
|
|
270
|
+
title: String(row.title),
|
|
271
|
+
raw_text: String(row.raw_text),
|
|
272
|
+
alias: row.alias === null ? null : String(row.alias),
|
|
273
|
+
embed: Boolean(row.embed),
|
|
274
|
+
};
|
|
119
275
|
}
|
|
120
276
|
//# sourceMappingURL=search.js.map
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.d.ts
ADDED
package/dist/sync.js
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { existsSync, readFileSync, readdirSync, statSync, } from 'node:fs';
|
|
3
|
+
import { join, relative, resolve } from 'node:path';
|
|
4
|
+
import { parse_document } from './documents.js';
|
|
5
|
+
import { log_wiki_event } from './events.js';
|
|
6
|
+
import { add_fact, derive_facts_from_markdown } from './facts.js';
|
|
7
|
+
import { index_wiki } from './indexer.js';
|
|
8
|
+
import { parse_markdown, serialize_frontmatter } from './markdown.js';
|
|
9
|
+
import { create_page } from './pages.js';
|
|
10
|
+
import { page_file_path, resolve_wiki_root, slugify_title, } from './paths.js';
|
|
11
|
+
const supported_extensions = new Set([
|
|
12
|
+
'.md',
|
|
13
|
+
'.markdown',
|
|
14
|
+
'.txt',
|
|
15
|
+
'.pdf',
|
|
16
|
+
'.docx',
|
|
17
|
+
]);
|
|
18
|
+
export async function sync_documents(options) {
|
|
19
|
+
const root = resolve_wiki_root(options.root);
|
|
20
|
+
const sources = discover_sources(root, options.sources, {
|
|
21
|
+
include: options.include,
|
|
22
|
+
ignore: options.ignore,
|
|
23
|
+
});
|
|
24
|
+
const display_sources = sources.map((source) => source_display_path(root, source));
|
|
25
|
+
const created = [];
|
|
26
|
+
const skipped = [];
|
|
27
|
+
const proposed_pages = [];
|
|
28
|
+
const fact_inputs = [];
|
|
29
|
+
const synced_sources = [];
|
|
30
|
+
for (const source of sources) {
|
|
31
|
+
const display_source = source_display_path(root, source);
|
|
32
|
+
const page = source_page_path(display_source);
|
|
33
|
+
const file_path = page_file_path(page, root);
|
|
34
|
+
const page_exists = existsSync(file_path);
|
|
35
|
+
const fingerprint = source_fingerprint(source);
|
|
36
|
+
const existing_fingerprint = page_exists
|
|
37
|
+
? existing_source_fingerprint(file_path)
|
|
38
|
+
: null;
|
|
39
|
+
const existing_kind = page_exists
|
|
40
|
+
? existing_source_kind(file_path)
|
|
41
|
+
: 'unsupported';
|
|
42
|
+
if (page_exists &&
|
|
43
|
+
fingerprint !== null &&
|
|
44
|
+
existing_fingerprint === fingerprint) {
|
|
45
|
+
skipped.push(page);
|
|
46
|
+
synced_sources.push({
|
|
47
|
+
source: display_source,
|
|
48
|
+
page: `${page}.md`,
|
|
49
|
+
kind: existing_kind,
|
|
50
|
+
status: 'unchanged',
|
|
51
|
+
warnings: [],
|
|
52
|
+
});
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (page_exists && !options.overwrite) {
|
|
56
|
+
skipped.push(page);
|
|
57
|
+
synced_sources.push({
|
|
58
|
+
source: display_source,
|
|
59
|
+
page: `${page}.md`,
|
|
60
|
+
kind: existing_kind,
|
|
61
|
+
status: 'changed',
|
|
62
|
+
warnings: [
|
|
63
|
+
'Source page exists and source fingerprint changed; rerun with overwrite to refresh generated content.',
|
|
64
|
+
],
|
|
65
|
+
});
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const parsed = await parse_document(source);
|
|
69
|
+
create_page(page, source_page_template(parsed, display_source, fingerprint), {
|
|
70
|
+
root,
|
|
71
|
+
overwrite: options.overwrite,
|
|
72
|
+
});
|
|
73
|
+
created.push(page);
|
|
74
|
+
if (options.derive_facts !== false && options.index !== false) {
|
|
75
|
+
for (const fact of derive_facts_from_markdown(parsed.text)) {
|
|
76
|
+
fact_inputs.push({ page, fact });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (options.propose_pages) {
|
|
80
|
+
proposed_pages.push(...create_proposed_pages(parsed, display_source, root));
|
|
81
|
+
}
|
|
82
|
+
synced_sources.push({
|
|
83
|
+
source: display_source,
|
|
84
|
+
page: `${page}.md`,
|
|
85
|
+
kind: parsed.kind,
|
|
86
|
+
status: parsed.kind === 'unsupported'
|
|
87
|
+
? 'warning'
|
|
88
|
+
: page_exists
|
|
89
|
+
? 'updated'
|
|
90
|
+
: 'created',
|
|
91
|
+
warnings: parsed.warnings,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const indexed = options.index === false ? null : index_wiki(root);
|
|
95
|
+
const derived_facts = fact_inputs.map(({ page, fact }) => add_fact({
|
|
96
|
+
root,
|
|
97
|
+
page,
|
|
98
|
+
source: `${page}.md:${fact.line}`,
|
|
99
|
+
...fact,
|
|
100
|
+
}));
|
|
101
|
+
log_wiki_event({
|
|
102
|
+
root,
|
|
103
|
+
operation: 'sync_documents',
|
|
104
|
+
summary: `Synced ${created.length} document sources`,
|
|
105
|
+
target: root,
|
|
106
|
+
details: {
|
|
107
|
+
sources: display_sources,
|
|
108
|
+
created,
|
|
109
|
+
skipped,
|
|
110
|
+
proposed_pages,
|
|
111
|
+
derived_fact_count: derived_facts.length,
|
|
112
|
+
synced_sources,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
root,
|
|
117
|
+
sources: display_sources,
|
|
118
|
+
created,
|
|
119
|
+
skipped,
|
|
120
|
+
proposed_pages,
|
|
121
|
+
derived_facts,
|
|
122
|
+
synced_sources,
|
|
123
|
+
indexed,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function discover_sources(root, sources, filters = {}) {
|
|
127
|
+
const discovered = [];
|
|
128
|
+
for (const source of sources) {
|
|
129
|
+
const absolute_source = resolve(root, source);
|
|
130
|
+
if (!existsSync(absolute_source)) {
|
|
131
|
+
discovered.push(absolute_source);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const stats = statSync(absolute_source);
|
|
135
|
+
if (stats.isDirectory()) {
|
|
136
|
+
discovered.push(...discover_directory(absolute_source, root, filters));
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (matches_source_filters(root, absolute_source, filters)) {
|
|
140
|
+
discovered.push(absolute_source);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return [...new Set(discovered)].sort();
|
|
144
|
+
}
|
|
145
|
+
function discover_directory(directory, root, filters) {
|
|
146
|
+
const sources = [];
|
|
147
|
+
for (const entry of readdirSync(directory, {
|
|
148
|
+
withFileTypes: true,
|
|
149
|
+
})) {
|
|
150
|
+
if (entry.name.startsWith('.'))
|
|
151
|
+
continue;
|
|
152
|
+
const entry_path = join(directory, entry.name);
|
|
153
|
+
if (entry.isDirectory()) {
|
|
154
|
+
sources.push(...discover_directory(entry_path, root, filters));
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (supported_extensions.has(extension(entry.name)) &&
|
|
158
|
+
matches_source_filters(root, entry_path, filters)) {
|
|
159
|
+
sources.push(entry_path);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return sources;
|
|
163
|
+
}
|
|
164
|
+
function matches_source_filters(root, source, filters) {
|
|
165
|
+
const display = source_display_path(root, source);
|
|
166
|
+
const included = !filters.include ||
|
|
167
|
+
filters.include.length === 0 ||
|
|
168
|
+
filters.include.some((pattern) => glob_match(pattern, display));
|
|
169
|
+
const ignored = (filters.ignore ?? []).some((pattern) => glob_match(pattern, display));
|
|
170
|
+
return included && !ignored;
|
|
171
|
+
}
|
|
172
|
+
function glob_match(pattern, value) {
|
|
173
|
+
let regex = '';
|
|
174
|
+
for (let index = 0; index < pattern.length; index += 1) {
|
|
175
|
+
const character = pattern[index];
|
|
176
|
+
const next = pattern[index + 1];
|
|
177
|
+
if (character === '*' && next === '*') {
|
|
178
|
+
regex += '.*';
|
|
179
|
+
index += 1;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (character === '*') {
|
|
183
|
+
regex += '[^/]*';
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
regex += character?.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&') ?? '';
|
|
187
|
+
}
|
|
188
|
+
return new RegExp(`^${regex}$`, 'u').test(value);
|
|
189
|
+
}
|
|
190
|
+
function source_page_path(source) {
|
|
191
|
+
return `sources/synced/${slugify_title(source)}`;
|
|
192
|
+
}
|
|
193
|
+
function source_page_template(parsed, display_source, fingerprint) {
|
|
194
|
+
const frontmatter = serialize_frontmatter({
|
|
195
|
+
title: `Source: ${parsed.title ?? display_source}`,
|
|
196
|
+
tags: ['source', parsed.kind],
|
|
197
|
+
status: parsed.kind === 'unsupported' ? 'review' : 'draft',
|
|
198
|
+
source_path: display_source,
|
|
199
|
+
source_kind: parsed.kind,
|
|
200
|
+
source_fingerprint: fingerprint,
|
|
201
|
+
});
|
|
202
|
+
return `${frontmatter}# Source: ${parsed.title ?? display_source}
|
|
203
|
+
|
|
204
|
+
Source path: \`${display_source}\`
|
|
205
|
+
Source kind: \`${parsed.kind}\`
|
|
206
|
+
|
|
207
|
+
## Extracted text
|
|
208
|
+
|
|
209
|
+
${format_extracted_text(parsed)}
|
|
210
|
+
|
|
211
|
+
## Parser metadata
|
|
212
|
+
|
|
213
|
+
${format_metadata(parsed)}
|
|
214
|
+
|
|
215
|
+
## Parser warnings
|
|
216
|
+
|
|
217
|
+
${format_list(parsed.warnings, '- None.')}
|
|
218
|
+
|
|
219
|
+
## Candidate facts
|
|
220
|
+
|
|
221
|
+
${format_candidate_facts(parsed.text)}
|
|
222
|
+
|
|
223
|
+
## Open questions
|
|
224
|
+
|
|
225
|
+
- What claims from this source should become stable wiki pages?
|
|
226
|
+
- What needs citation, owner confirmation, or freshness review?
|
|
227
|
+
`;
|
|
228
|
+
}
|
|
229
|
+
function format_extracted_text(parsed) {
|
|
230
|
+
if (parsed.text.length === 0)
|
|
231
|
+
return '- No text extracted.';
|
|
232
|
+
const fence = markdown_code_fence(parsed.text);
|
|
233
|
+
return `${fence}\n${parsed.text}\n${fence}`;
|
|
234
|
+
}
|
|
235
|
+
function markdown_code_fence(text) {
|
|
236
|
+
const longest_backtick_run = Math.max(0, ...Array.from(text.matchAll(/`+/gu), (match) => match[0]?.length ?? 0));
|
|
237
|
+
return '`'.repeat(Math.max(3, longest_backtick_run + 1));
|
|
238
|
+
}
|
|
239
|
+
function format_metadata(parsed) {
|
|
240
|
+
const entries = Object.entries(parsed.metadata);
|
|
241
|
+
if (entries.length === 0)
|
|
242
|
+
return '- None.';
|
|
243
|
+
return entries
|
|
244
|
+
.map(([key, value]) => `- ${key}: ${value ?? 'null'}`)
|
|
245
|
+
.join('\n');
|
|
246
|
+
}
|
|
247
|
+
function format_list(items, empty) {
|
|
248
|
+
return items.length > 0
|
|
249
|
+
? items.map((item) => `- ${item}`).join('\n')
|
|
250
|
+
: empty;
|
|
251
|
+
}
|
|
252
|
+
function format_candidate_facts(text) {
|
|
253
|
+
const facts = derive_facts_from_markdown(text).map((fact) => `- Candidate from extracted line ${fact.line}: ${fact.summary}`);
|
|
254
|
+
return facts.length > 0
|
|
255
|
+
? facts.join('\n')
|
|
256
|
+
: '- Review this source and promote durable claims into wiki pages.';
|
|
257
|
+
}
|
|
258
|
+
function create_proposed_pages(parsed, display_source, root) {
|
|
259
|
+
const pages = [];
|
|
260
|
+
for (const proposal of propose_pages(parsed, display_source)) {
|
|
261
|
+
if (existsSync(page_file_path(proposal.path, root)))
|
|
262
|
+
continue;
|
|
263
|
+
create_page(proposal.path, proposal.body, {
|
|
264
|
+
root,
|
|
265
|
+
overwrite: false,
|
|
266
|
+
});
|
|
267
|
+
pages.push(proposal.path);
|
|
268
|
+
}
|
|
269
|
+
return pages;
|
|
270
|
+
}
|
|
271
|
+
function propose_pages(parsed, display_source) {
|
|
272
|
+
const headings = parsed.text
|
|
273
|
+
.split(/\n/u)
|
|
274
|
+
.map((line) => line.match(/^#{1,3}\s+(.+)$/u)?.[1]?.trim())
|
|
275
|
+
.filter((heading) => Boolean(heading))
|
|
276
|
+
.slice(0, 5);
|
|
277
|
+
const workflow_lines = parsed.text
|
|
278
|
+
.split(/\n/u)
|
|
279
|
+
.filter((line) => /\b(workflow|process|step|how to)\b/iu.test(line))
|
|
280
|
+
.slice(0, 3);
|
|
281
|
+
return [
|
|
282
|
+
...headings.map((heading) => proposed_page('concepts', heading, display_source)),
|
|
283
|
+
...workflow_lines.map((line) => proposed_page('workflows', line.replace(/^[-*]\s*/u, '').slice(0, 80), display_source)),
|
|
284
|
+
];
|
|
285
|
+
}
|
|
286
|
+
function proposed_page(section, title, display_source) {
|
|
287
|
+
const clean_title = title.replace(/[#:]/gu, '').trim();
|
|
288
|
+
const path = `${section}/proposed/${slugify_title(clean_title)}`;
|
|
289
|
+
const frontmatter = serialize_frontmatter({
|
|
290
|
+
title: clean_title,
|
|
291
|
+
tags: [section.slice(0, -1), 'proposed', 'needs-review'],
|
|
292
|
+
status: 'review',
|
|
293
|
+
source_path: display_source,
|
|
294
|
+
});
|
|
295
|
+
return {
|
|
296
|
+
path,
|
|
297
|
+
body: `${frontmatter}# ${clean_title}\n\nProposed from [[${source_page_path(display_source)}|${display_source}]].\n\n## Notes\n\n- Needs human review before becoming a stable wiki page.\n`,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
function extension(path) {
|
|
301
|
+
return path.slice(path.lastIndexOf('.')).toLowerCase();
|
|
302
|
+
}
|
|
303
|
+
function source_display_path(root, source) {
|
|
304
|
+
const relative_source = relative(root, source);
|
|
305
|
+
return relative_source.startsWith('..') || relative_source === ''
|
|
306
|
+
? source
|
|
307
|
+
: relative_source;
|
|
308
|
+
}
|
|
309
|
+
function source_fingerprint(source) {
|
|
310
|
+
try {
|
|
311
|
+
const stats = statSync(source);
|
|
312
|
+
if (!stats.isFile())
|
|
313
|
+
return null;
|
|
314
|
+
return createHash('sha256')
|
|
315
|
+
.update(readFileSync(source))
|
|
316
|
+
.digest('hex');
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
return null;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function existing_source_fingerprint(file_path) {
|
|
323
|
+
const fingerprint = parse_markdown(readFileSync(file_path, 'utf-8'))
|
|
324
|
+
.frontmatter.source_fingerprint;
|
|
325
|
+
return typeof fingerprint === 'string' && fingerprint.length > 0
|
|
326
|
+
? fingerprint
|
|
327
|
+
: null;
|
|
328
|
+
}
|
|
329
|
+
function existing_source_kind(file_path) {
|
|
330
|
+
const kind = parse_markdown(readFileSync(file_path, 'utf-8'))
|
|
331
|
+
.frontmatter.source_kind;
|
|
332
|
+
return kind === 'markdown' ||
|
|
333
|
+
kind === 'text' ||
|
|
334
|
+
kind === 'pdf' ||
|
|
335
|
+
kind === 'docx' ||
|
|
336
|
+
kind === 'unsupported'
|
|
337
|
+
? kind
|
|
338
|
+
: 'unsupported';
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=sync.js.map
|
package/dist/sync.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/topics.d.ts
ADDED