@wiki0/cli 0.0.4 → 0.0.6

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 CHANGED
@@ -14,9 +14,11 @@ The package exposes the `wiki0` binary.
14
14
 
15
15
  ```sh
16
16
  wiki0 init ./my-wiki
17
+ wiki0 init ./my-project --wiki-dir docs
17
18
  wiki0 page create "projects/wiki0" --body "Local-first [[topics/memory]]." --root ./my-wiki
18
19
  wiki0 plan --source_type codebase --scope "current repository" --sources README.md,package.json
19
- wiki0 bootstrap --source_type docs --scope "docs folder" --sources docs/guide.md --ingest_sources --root ./my-wiki
20
+ wiki0 extract docs/guide.md --root ./my-wiki
21
+ wiki0 sync docs --root ./my-wiki
20
22
  wiki0 index --root ./my-wiki
21
23
  wiki0 status --root ./my-wiki
22
24
  wiki0 search "memory" --root ./my-wiki
@@ -31,6 +33,13 @@ wiki0 events --root ./my-wiki
31
33
  wiki0 review --root ./my-wiki
32
34
  ```
33
35
 
36
+ ## Content folder and index
37
+
38
+ Page commands write under `wiki/` by default. Use `--wiki-dir docs`
39
+ when you want wiki0-backed project documentation in `docs/` instead.
40
+ The local SQLite index lives under `.wiki0/`; `wiki0 init` adds
41
+ `.wiki0/` to `.gitignore` because it is rebuildable cache data.
42
+
34
43
  ## Output
35
44
 
36
45
  Most commands return JSON so agents and shell scripts can consume the
package/dist/actions.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type WikiFrontmatter } from '@wiki0/core';
2
- export declare function init_workspace(root: string): string;
2
+ export declare function init_workspace(root: string, wiki_dir?: string): string;
3
3
  export declare function read_markdown_input(options: {
4
4
  file?: string;
5
5
  body?: string;
package/dist/actions.js CHANGED
@@ -1,21 +1,34 @@
1
1
  import { schema_sql } from '@wiki0/core';
2
- import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- export function init_workspace(root) {
4
+ export function init_workspace(root, wiki_dir = 'wiki') {
5
5
  for (const dir of [
6
- 'wiki/inbox',
7
- 'wiki/decisions',
8
- 'wiki/people',
9
- 'wiki/projects',
10
- 'wiki/topics',
6
+ `${wiki_dir}/inbox`,
7
+ `${wiki_dir}/decisions`,
8
+ `${wiki_dir}/people`,
9
+ `${wiki_dir}/projects`,
10
+ `${wiki_dir}/topics`,
11
11
  '.wiki0',
12
12
  ]) {
13
13
  mkdirSync(join(root, dir), { recursive: true });
14
14
  }
15
- writeFileSync(join(root, 'wiki/index.md'), '# Wiki0\n\nStart here. Link pages with `[[topics/example]]`.\n', { flag: 'wx' });
15
+ writeFileSync(join(root, wiki_dir, 'index.md'), '# Wiki0\n\nStart here. Link pages with `[[topics/example]]`.\n', { flag: 'wx' });
16
16
  writeFileSync(join(root, '.wiki0/schema.sql'), schema_sql);
17
+ ensure_gitignore_ignores_index(root);
17
18
  return `Created wiki0 workspace at ${root}`;
18
19
  }
20
+ function ensure_gitignore_ignores_index(root) {
21
+ const path = join(root, '.gitignore');
22
+ const entry = '.wiki0/';
23
+ if (!existsSync(path)) {
24
+ writeFileSync(path, `${entry}\n`, { flag: 'wx' });
25
+ return;
26
+ }
27
+ const body = readFileSync(path, 'utf-8');
28
+ if (body.split(/\r?\n/u).includes(entry))
29
+ return;
30
+ writeFileSync(path, `${body}${body.endsWith('\n') ? '' : '\n'}${entry}\n`);
31
+ }
19
32
  export function read_markdown_input(options) {
20
33
  return options.file
21
34
  ? readFileSync(options.file, 'utf-8')
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,KAAK,MAAM,GAAG,IAAI;QACjB,YAAY;QACZ,gBAAgB;QAChB,aAAa;QACb,eAAe;QACf,aAAa;QACb,QAAQ;KACR,EAAE,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,aAAa,CACZ,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EAC3B,gEAAgE,EAChE,EAAE,IAAI,EAAE,IAAI,EAAE,CACd,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3D,OAAO,8BAA8B,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAGnC;IACA,OAAO,OAAO,CAAC,IAAI;QAClB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;QACrC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,IAAY;IAEZ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwB,MAAM,aAAa,CAAC;AAC/D,OAAO,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,cAAc,CAC7B,IAAY,EACZ,QAAQ,GAAG,MAAM;IAEjB,KAAK,MAAM,GAAG,IAAI;QACjB,GAAG,QAAQ,QAAQ;QACnB,GAAG,QAAQ,YAAY;QACvB,GAAG,QAAQ,SAAS;QACpB,GAAG,QAAQ,WAAW;QACtB,GAAG,QAAQ,SAAS;QACpB,QAAQ;KACR,EAAE,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,aAAa,CACZ,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAChC,gEAAgE,EAChE,EAAE,IAAI,EAAE,IAAI,EAAE,CACd,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3D,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,8BAA8B,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAY;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,aAAa,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,OAAO;IACR,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO;IACjD,aAAa,CACZ,IAAI,EACJ,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,CACrD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAGnC;IACA,OAAO,OAAO,CAAC,IAAI;QAClB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;QACrC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,IAAY;IAEZ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
package/dist/commands.js CHANGED
@@ -1,5 +1,6 @@
1
- import { add_fact, append_page, backlinks_for_page, bootstrap_wiki, create_page, get_wiki_context, graph_wiki, index_status, index_wiki, lint_wiki, list_facts, list_topic_threads, list_wiki_events, plan_wiki, read_page, review_wiki, search_wiki, set_page_frontmatter, show_wiki_chunk, } from '@wiki0/core';
1
+ import { add_fact, append_page, backlinks_for_page, create_page, get_wiki_context, graph_wiki, index_status, index_wiki, lint_wiki, list_facts, list_topic_threads, list_wiki_events, parse_document, plan_wiki, read_page, review_wiki, search_wiki, set_page_frontmatter, show_wiki_chunk, sync_documents, } from '@wiki0/core';
2
2
  import { defineCommand } from 'citty';
3
+ import { isAbsolute, resolve } from 'node:path';
3
4
  import { init_workspace, parse_frontmatter_json, print_json, read_markdown_input, } from './actions.js';
4
5
  function parse_wiki_source_type(value) {
5
6
  const source_type = typeof value === 'string' ? value : 'general';
@@ -21,6 +22,17 @@ function parse_sources(value) {
21
22
  .map((source) => source.trim())
22
23
  .filter(Boolean);
23
24
  }
25
+ function parse_optional_sources(value) {
26
+ return parse_sources(value);
27
+ }
28
+ function wiki_dir_arg(args) {
29
+ return typeof args.wikiDir === 'string' && args.wikiDir.length > 0
30
+ ? args.wikiDir
31
+ : 'wiki';
32
+ }
33
+ function resolve_cli_source(root, source) {
34
+ return isAbsolute(source) ? source : resolve(root, source);
35
+ }
24
36
  function parse_fact_confidence(value) {
25
37
  const confidence = typeof value === 'string' ? value : 'unknown';
26
38
  if (confidence === 'unknown' ||
@@ -46,9 +58,14 @@ export const main = defineCommand({
46
58
  description: 'Wiki root path',
47
59
  default: '.',
48
60
  },
61
+ wikiDir: {
62
+ type: 'string',
63
+ description: 'Content folder to store pages (for example docs)',
64
+ default: 'wiki',
65
+ },
49
66
  },
50
67
  run({ args }) {
51
- console.log(init_workspace(String(args.path ?? '.')));
68
+ console.log(init_workspace(String(args.path ?? '.'), wiki_dir_arg(args)));
52
69
  },
53
70
  }),
54
71
  page: defineCommand({
@@ -74,6 +91,11 @@ export const main = defineCommand({
74
91
  description: 'Wiki root path',
75
92
  default: '.',
76
93
  },
94
+ wikiDir: {
95
+ type: 'string',
96
+ description: 'Content folder to store pages (for example docs)',
97
+ default: 'wiki',
98
+ },
77
99
  overwrite: {
78
100
  type: 'boolean',
79
101
  description: 'Overwrite an existing page',
@@ -82,6 +104,7 @@ export const main = defineCommand({
82
104
  run({ args }) {
83
105
  const page = create_page(String(args.title), read_markdown_input(args), {
84
106
  root: String(args.root ?? '.'),
107
+ wiki_dir: wiki_dir_arg(args),
85
108
  overwrite: Boolean(args.overwrite),
86
109
  });
87
110
  print_json(page);
@@ -100,9 +123,14 @@ export const main = defineCommand({
100
123
  description: 'Wiki root path',
101
124
  default: '.',
102
125
  },
126
+ wikiDir: {
127
+ type: 'string',
128
+ description: 'Content folder to store pages (for example docs)',
129
+ default: 'wiki',
130
+ },
103
131
  },
104
132
  run({ args }) {
105
- print_json(read_page(String(args.title), String(args.root ?? '.')));
133
+ print_json(read_page(String(args.title), String(args.root ?? '.'), wiki_dir_arg(args)));
106
134
  },
107
135
  }),
108
136
  frontmatter: defineCommand({
@@ -125,6 +153,11 @@ export const main = defineCommand({
125
153
  description: 'Wiki root path',
126
154
  default: '.',
127
155
  },
156
+ wikiDir: {
157
+ type: 'string',
158
+ description: 'Content folder to store pages (for example docs)',
159
+ default: 'wiki',
160
+ },
128
161
  merge: {
129
162
  type: 'boolean',
130
163
  description: 'Merge with existing frontmatter',
@@ -133,6 +166,7 @@ export const main = defineCommand({
133
166
  run({ args }) {
134
167
  const page = set_page_frontmatter(String(args.title), parse_frontmatter_json(args.data), {
135
168
  root: String(args.root ?? '.'),
169
+ wiki_dir: wiki_dir_arg(args),
136
170
  merge: Boolean(args.merge),
137
171
  });
138
172
  print_json(page);
@@ -159,54 +193,95 @@ export const main = defineCommand({
159
193
  description: 'Wiki root path',
160
194
  default: '.',
161
195
  },
196
+ wikiDir: {
197
+ type: 'string',
198
+ description: 'Content folder to store pages (for example docs)',
199
+ default: 'wiki',
200
+ },
162
201
  },
163
202
  run({ args }) {
164
- const page = append_page(String(args.title), read_markdown_input(args), String(args.root ?? '.'));
203
+ const page = append_page(String(args.title), read_markdown_input(args), String(args.root ?? '.'), wiki_dir_arg(args));
165
204
  print_json(page);
166
205
  },
167
206
  }),
168
207
  },
169
208
  }),
170
- bootstrap: defineCommand({
209
+ extract: defineCommand({
171
210
  meta: {
172
- description: 'Create starter wiki pages from a deterministic wiki-building plan',
211
+ description: 'Extract normalized text and metadata from a source document',
173
212
  },
174
213
  args: {
214
+ source: {
215
+ type: 'positional',
216
+ required: true,
217
+ description: 'Source document path',
218
+ },
175
219
  root: {
176
220
  type: 'string',
177
- description: 'Wiki root path',
221
+ description: 'Wiki root path for relative sources',
178
222
  default: '.',
179
223
  },
180
- source_type: {
224
+ },
225
+ async run({ args }) {
226
+ print_json(await parse_document(resolve_cli_source(String(args.root ?? '.'), String(args.source))));
227
+ },
228
+ }),
229
+ sync: defineCommand({
230
+ meta: {
231
+ description: 'Sync source documents into wiki source pages, then index the wiki',
232
+ },
233
+ args: {
234
+ sources: {
235
+ type: 'positional',
236
+ required: true,
237
+ description: 'Comma-separated source paths or directories',
238
+ },
239
+ root: {
181
240
  type: 'string',
182
- description: 'general, codebase, docs, research, or notes',
183
- default: 'general',
241
+ description: 'Wiki root path',
242
+ default: '.',
184
243
  },
185
- scope: {
244
+ wikiDir: {
186
245
  type: 'string',
187
- description: 'Source scope description',
246
+ description: 'Content folder to store pages (for example docs)',
247
+ default: 'wiki',
188
248
  },
189
249
  overwrite: {
190
250
  type: 'boolean',
191
- description: 'Overwrite existing starter pages',
251
+ description: 'Overwrite existing synced source pages',
192
252
  },
193
- ingest_sources: {
194
- type: 'boolean',
195
- description: 'Create source note pages for detected sources',
253
+ include: {
254
+ type: 'string',
255
+ description: 'Comma-separated glob patterns to include during recursive sync',
196
256
  },
197
- sources: {
257
+ ignore: {
198
258
  type: 'string',
199
- description: 'Comma-separated source paths or URLs',
259
+ description: 'Comma-separated glob patterns to ignore during recursive sync',
260
+ },
261
+ noFacts: {
262
+ type: 'boolean',
263
+ description: 'Skip deriving SQLite facts from source text',
264
+ },
265
+ proposePages: {
266
+ type: 'boolean',
267
+ description: 'Generate proposed concept/workflow pages from source text',
268
+ },
269
+ noIndex: {
270
+ type: 'boolean',
271
+ description: 'Skip rebuilding the SQLite index after sync',
200
272
  },
201
273
  },
202
- run({ args }) {
203
- print_json(bootstrap_wiki({
274
+ async run({ args }) {
275
+ print_json(await sync_documents({
204
276
  root: String(args.root ?? '.'),
205
- source_type: parse_wiki_source_type(args.source_type),
206
- scope: args.scope ? String(args.scope) : undefined,
277
+ wiki_dir: wiki_dir_arg(args),
278
+ sources: parse_sources(args.sources) ?? [],
207
279
  overwrite: Boolean(args.overwrite),
208
- ingest_sources: Boolean(args.ingest_sources),
209
- sources: parse_sources(args.sources),
280
+ index: !args.noIndex,
281
+ include: parse_optional_sources(args.include),
282
+ ignore: parse_optional_sources(args.ignore),
283
+ derive_facts: !args.noFacts,
284
+ propose_pages: Boolean(args.proposePages),
210
285
  }));
211
286
  },
212
287
  }),
@@ -272,10 +347,16 @@ export const main = defineCommand({
272
347
  description: 'Wiki root path',
273
348
  default: '.',
274
349
  },
350
+ wikiDir: {
351
+ type: 'string',
352
+ description: 'Content folder to store pages (for example docs)',
353
+ default: 'wiki',
354
+ },
275
355
  },
276
356
  run({ args }) {
277
357
  print_json(add_fact({
278
358
  root: String(args.root ?? '.'),
359
+ wiki_dir: wiki_dir_arg(args),
279
360
  page: args.page ? String(args.page) : undefined,
280
361
  category: String(args.category ?? 'note'),
281
362
  summary: String(args.summary),
@@ -300,6 +381,11 @@ export const main = defineCommand({
300
381
  description: 'Wiki root path',
301
382
  default: '.',
302
383
  },
384
+ wikiDir: {
385
+ type: 'string',
386
+ description: 'Content folder to store pages (for example docs)',
387
+ default: 'wiki',
388
+ },
303
389
  },
304
390
  run({ args }) {
305
391
  print_json(list_facts(String(args.root ?? '.'), args.category ? String(args.category) : undefined));
@@ -315,6 +401,11 @@ export const main = defineCommand({
315
401
  description: 'Wiki root path',
316
402
  default: '.',
317
403
  },
404
+ wikiDir: {
405
+ type: 'string',
406
+ description: 'Content folder to store pages (for example docs)',
407
+ default: 'wiki',
408
+ },
318
409
  limit: {
319
410
  type: 'string',
320
411
  description: 'Maximum number of events',
@@ -335,6 +426,11 @@ export const main = defineCommand({
335
426
  description: 'Wiki root path',
336
427
  default: '.',
337
428
  },
429
+ wikiDir: {
430
+ type: 'string',
431
+ description: 'Content folder to store pages (for example docs)',
432
+ default: 'wiki',
433
+ },
338
434
  limit: {
339
435
  type: 'string',
340
436
  description: 'Maximum number of topics',
@@ -353,9 +449,14 @@ export const main = defineCommand({
353
449
  description: 'Wiki root path',
354
450
  default: '.',
355
451
  },
452
+ wikiDir: {
453
+ type: 'string',
454
+ description: 'Content folder to store pages (for example docs)',
455
+ default: 'wiki',
456
+ },
356
457
  },
357
458
  run({ args }) {
358
- print_json(index_wiki(String(args.root ?? '.')));
459
+ print_json(index_wiki(String(args.root ?? '.'), wiki_dir_arg(args)));
359
460
  },
360
461
  }),
361
462
  status: defineCommand({
@@ -366,9 +467,14 @@ export const main = defineCommand({
366
467
  description: 'Wiki root path',
367
468
  default: '.',
368
469
  },
470
+ wikiDir: {
471
+ type: 'string',
472
+ description: 'Content folder to store pages (for example docs)',
473
+ default: 'wiki',
474
+ },
369
475
  },
370
476
  run({ args }) {
371
- print_json(index_status(String(args.root ?? '.')));
477
+ print_json(index_status(String(args.root ?? '.'), wiki_dir_arg(args)));
372
478
  },
373
479
  }),
374
480
  search: defineCommand({
@@ -380,6 +486,11 @@ export const main = defineCommand({
380
486
  description: 'Wiki root path',
381
487
  default: '.',
382
488
  },
489
+ wikiDir: {
490
+ type: 'string',
491
+ description: 'Content folder to store pages (for example docs)',
492
+ default: 'wiki',
493
+ },
383
494
  limit: {
384
495
  type: 'string',
385
496
  description: 'Maximum number of results',
@@ -405,13 +516,18 @@ export const main = defineCommand({
405
516
  description: 'Wiki root path',
406
517
  default: '.',
407
518
  },
519
+ wikiDir: {
520
+ type: 'string',
521
+ description: 'Content folder to store pages (for example docs)',
522
+ default: 'wiki',
523
+ },
408
524
  json: {
409
525
  type: 'boolean',
410
526
  description: 'Output structured JSON instead of Markdown',
411
527
  },
412
528
  },
413
529
  run({ args }) {
414
- const result = show_wiki_chunk(String(args.target), String(args.root ?? '.'));
530
+ const result = show_wiki_chunk(String(args.target), String(args.root ?? '.'), wiki_dir_arg(args));
415
531
  if (args.json)
416
532
  print_json(result);
417
533
  else
@@ -429,6 +545,11 @@ export const main = defineCommand({
429
545
  description: 'Wiki root path',
430
546
  default: '.',
431
547
  },
548
+ wikiDir: {
549
+ type: 'string',
550
+ description: 'Content folder to store pages (for example docs)',
551
+ default: 'wiki',
552
+ },
432
553
  limit: {
433
554
  type: 'string',
434
555
  description: 'Maximum number of context results',
@@ -440,7 +561,7 @@ export const main = defineCommand({
440
561
  },
441
562
  },
442
563
  run({ args }) {
443
- const result = get_wiki_context(String(args.query), String(args.root ?? '.'), Number(args.limit ?? 5));
564
+ const result = get_wiki_context(String(args.query), String(args.root ?? '.'), Number(args.limit ?? 5), wiki_dir_arg(args));
444
565
  console.log(args.json
445
566
  ? JSON.stringify(result, null, 2)
446
567
  : result.markdown);
@@ -454,6 +575,11 @@ export const main = defineCommand({
454
575
  description: 'Wiki root path',
455
576
  default: '.',
456
577
  },
578
+ wikiDir: {
579
+ type: 'string',
580
+ description: 'Content folder to store pages (for example docs)',
581
+ default: 'wiki',
582
+ },
457
583
  },
458
584
  run({ args }) {
459
585
  print_json(graph_wiki(String(args.root ?? '.')));
@@ -467,9 +593,14 @@ export const main = defineCommand({
467
593
  description: 'Wiki root path',
468
594
  default: '.',
469
595
  },
596
+ wikiDir: {
597
+ type: 'string',
598
+ description: 'Content folder to store pages (for example docs)',
599
+ default: 'wiki',
600
+ },
470
601
  },
471
602
  run({ args }) {
472
- const result = lint_wiki(String(args.root ?? '.'));
603
+ const result = lint_wiki(String(args.root ?? '.'), wiki_dir_arg(args));
473
604
  print_json(result);
474
605
  if (!result.ok)
475
606
  process.exitCode = 1;
@@ -484,9 +615,14 @@ export const main = defineCommand({
484
615
  description: 'Wiki root path',
485
616
  default: '.',
486
617
  },
618
+ wikiDir: {
619
+ type: 'string',
620
+ description: 'Content folder to store pages (for example docs)',
621
+ default: 'wiki',
622
+ },
487
623
  },
488
624
  run({ args }) {
489
- print_json(backlinks_for_page(String(args.title), String(args.root ?? '.')));
625
+ print_json(backlinks_for_page(String(args.title), String(args.root ?? '.'), wiki_dir_arg(args)));
490
626
  },
491
627
  }),
492
628
  review: defineCommand({
@@ -499,9 +635,14 @@ export const main = defineCommand({
499
635
  description: 'Wiki root path',
500
636
  default: '.',
501
637
  },
638
+ wikiDir: {
639
+ type: 'string',
640
+ description: 'Content folder to store pages (for example docs)',
641
+ default: 'wiki',
642
+ },
502
643
  },
503
644
  run({ args }) {
504
- print_json(review_wiki(String(args.root ?? '.')));
645
+ print_json(review_wiki(String(args.root ?? '.'), wiki_dir_arg(args)));
505
646
  },
506
647
  }),
507
648
  },
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function serve_viewer(root: string, host: string, port: number, open: boolean): void;
package/dist/viewer.js ADDED
@@ -0,0 +1,186 @@
1
+ import { backlinks_for_page, graph_wiki, index_status, index_wiki, read_page, review_wiki, search_wiki, } from '@wiki0/core';
2
+ import { spawn } from 'node:child_process';
3
+ import { createServer } from 'node:http';
4
+ function send_json(response, status_code, data) {
5
+ response.writeHead(status_code, {
6
+ 'content-type': 'application/json; charset=utf-8',
7
+ 'cache-control': 'no-store',
8
+ });
9
+ response.end(JSON.stringify(data));
10
+ }
11
+ function send_html(response, html) {
12
+ response.writeHead(200, {
13
+ 'content-type': 'text/html; charset=utf-8',
14
+ 'cache-control': 'no-store',
15
+ });
16
+ response.end(html);
17
+ }
18
+ function open_url(url) {
19
+ const command = process.platform === 'darwin'
20
+ ? 'open'
21
+ : process.platform === 'win32'
22
+ ? 'cmd'
23
+ : 'xdg-open';
24
+ const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
25
+ const child = spawn(command, args, { detached: true, stdio: 'ignore' });
26
+ child.unref();
27
+ }
28
+ function read_view_state(root, url) {
29
+ const status = index_status(root);
30
+ if (status.stale)
31
+ index_wiki(root);
32
+ const graph = graph_wiki(root);
33
+ const review = review_wiki(root);
34
+ const query = url.searchParams.get('q')?.trim() ?? '';
35
+ const search = query ? search_wiki(query, root, 8) : [];
36
+ const selected_path = url.searchParams.get('page') ?? graph.nodes[0]?.path ?? null;
37
+ let selected_page = null;
38
+ let backlinks = [];
39
+ if (selected_path) {
40
+ try {
41
+ const selected_title = selected_path.replace(/\.md$/u, '');
42
+ selected_page = read_page(selected_title, root);
43
+ backlinks = backlinks_for_page(selected_title, root);
44
+ }
45
+ catch {
46
+ selected_page = null;
47
+ }
48
+ }
49
+ return {
50
+ root,
51
+ status: status.stale ? index_status(root) : status,
52
+ graph,
53
+ review,
54
+ query,
55
+ search,
56
+ selected_path,
57
+ selected_page,
58
+ backlinks,
59
+ };
60
+ }
61
+ function viewer_html() {
62
+ return `<!doctype html>
63
+ <html lang="en">
64
+ <head>
65
+ <meta charset="utf-8" />
66
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
67
+ <title>wiki0 viewer</title>
68
+ <style>
69
+ :root{color-scheme:light dark;font-family:Inter,ui-sans-serif,system-ui,sans-serif;background:#0f172a;color:#e2e8f0}body{margin:0}main{padding:24px;display:grid;gap:16px}header{display:flex;justify-content:space-between;gap:16px;align-items:end;flex-wrap:wrap}.muted{color:#94a3b8}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.card{background:#111827;border:1px solid #334155;border-radius:14px;padding:16px;box-shadow:0 12px 40px #02061740}.value{font-size:28px;font-weight:700}input,button{border-radius:10px;border:1px solid #475569;background:#020617;color:#e2e8f0;padding:10px 12px}button{cursor:pointer}button:hover{border-color:#93c5fd}.layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px}.graph{min-height:520px;overflow:hidden}.side{display:grid;gap:16px;align-content:start}.page-list{display:grid;gap:6px;max-height:220px;overflow:auto}.page-list button{text-align:left}.selected{border-color:#38bdf8;background:#082f49}svg{width:100%;height:520px}.node{fill:#38bdf8;cursor:pointer}.node.selected{fill:#f59e0b}.edge{stroke:#64748b;stroke-width:1.4}.edge.unresolved{stroke:#f97316;stroke-dasharray:4 4}.label{fill:#cbd5e1;font-size:12px;pointer-events:none}pre{white-space:pre-wrap;max-height:420px;overflow:auto}.result{border-top:1px solid #334155;padding:10px 0}@media(max-width:900px){.layout{grid-template-columns:1fr}}
70
+ </style>
71
+ </head>
72
+ <body>
73
+ <main>
74
+ <header><div><h1>wiki0 viewer</h1><p id="root" class="muted"></p></div><form id="search"><input id="q" name="q" placeholder="Search wiki" /><button>Search</button></form></header>
75
+ <section class="cards"><div class="card"><div class="muted">Pages</div><div id="pages" class="value">0</div></div><div class="card"><div class="muted">Edges</div><div id="edges" class="value">0</div></div><div class="card"><div class="muted">Unresolved</div><div id="unresolved" class="value">0</div></div><div class="card"><div class="muted">Review</div><div id="review" class="value">0</div></div></section>
76
+ <section class="layout"><div class="card graph"><svg id="graph" role="img" aria-label="Wiki graph"></svg></div><aside class="side"><div class="card"><h2>Pages</h2><div id="page-list" class="page-list"></div></div><div class="card"><h2 id="page-title">Select a page</h2><p id="page-path" class="muted"></p><pre id="page-content"></pre><div id="backlinks"></div></div></aside></section>
77
+ <section id="search-results" class="card" hidden><h2>Search results</h2><div id="results"></div></section>
78
+ </main>
79
+ <script>
80
+ const state = { data: null };
81
+ const esc = (value) => String(value ?? '').replace(/[&<>"']/g, (char) => ({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[char]));
82
+ async function load_state() {
83
+ const params = new URLSearchParams(location.search);
84
+ const response = await fetch('/api/state?' + params.toString());
85
+ state.data = await response.json();
86
+ render_state(state.data);
87
+ }
88
+ function select_page(path) {
89
+ const params = new URLSearchParams(location.search);
90
+ params.set('page', path);
91
+ history.pushState(null, '', '?' + params.toString());
92
+ load_state();
93
+ }
94
+ function render_state(data) {
95
+ document.getElementById('root').textContent = data.root;
96
+ document.getElementById('q').value = data.query;
97
+ document.getElementById('pages').textContent = data.graph.nodes.length;
98
+ document.getElementById('edges').textContent = data.graph.edges.length;
99
+ document.getElementById('unresolved').textContent = data.graph.edges.filter((edge) => edge.status === 'unresolved').length;
100
+ document.getElementById('review').textContent = data.review.length;
101
+ document.getElementById('page-list').innerHTML = data.graph.nodes.map((node) => '<button class="' + (node.path === data.selected_path ? 'selected' : '') + '" type="button" onclick="select_page(' + JSON.stringify(node.path).replace(/"/g, '&quot;') + ')">' + esc(node.title) + '</button>').join('');
102
+ render_graph(data);
103
+ render_page(data);
104
+ render_search(data);
105
+ }
106
+ function render_graph(data) {
107
+ const svg = document.getElementById('graph');
108
+ const nodes = data.graph.nodes;
109
+ const width = svg.clientWidth || 800;
110
+ const height = svg.clientHeight || 520;
111
+ const radius = Math.max(130, Math.min(width, height) / 2 - 70);
112
+ const center_x = width / 2;
113
+ const center_y = height / 2;
114
+ const positions = new Map(nodes.map((node, index) => {
115
+ const angle = (Math.PI * 2 * index) / Math.max(nodes.length, 1) - Math.PI / 2;
116
+ return [node.path, { x: center_x + Math.cos(angle) * radius, y: center_y + Math.sin(angle) * radius }];
117
+ }));
118
+ const edge_markup = data.graph.edges.map((edge) => {
119
+ const from = positions.get(edge.from);
120
+ const to = positions.get(edge.to);
121
+ if (!from || !to) return '';
122
+ return '<line class="edge ' + edge.status + '" x1="' + from.x + '" y1="' + from.y + '" x2="' + to.x + '" y2="' + to.y + '"></line>';
123
+ }).join('');
124
+ const node_markup = nodes.map((node) => {
125
+ const point = positions.get(node.path);
126
+ const selected = node.path === data.selected_path ? ' selected' : '';
127
+ return '<g onclick="select_page(' + JSON.stringify(node.path).replace(/"/g, '&quot;') + ')"><circle class="node' + selected + '" cx="' + point.x + '" cy="' + point.y + '" r="8"></circle><text class="label" x="' + (point.x + 12) + '" y="' + (point.y + 4) + '">' + esc(node.title) + '</text></g>';
128
+ }).join('');
129
+ svg.innerHTML = edge_markup + node_markup;
130
+ }
131
+ function render_page(data) {
132
+ const page = data.selected_page;
133
+ document.getElementById('page-title').textContent = page ? page.title : 'Select a page';
134
+ document.getElementById('page-path').textContent = page ? page.path : '';
135
+ document.getElementById('page-content').textContent = page ? page.content : '';
136
+ document.getElementById('backlinks').innerHTML = '<h3>Backlinks</h3>' + (data.backlinks.length ? data.backlinks.map((link) => '<button type="button" onclick="select_page(' + JSON.stringify(link.path).replace(/"/g, '&quot;') + ')">' + esc(link.title) + '</button>').join(' ') : '<p class="muted">No backlinks.</p>');
137
+ }
138
+ function render_search(data) {
139
+ const section = document.getElementById('search-results');
140
+ section.hidden = !data.query;
141
+ document.getElementById('results').innerHTML = data.search.length ? data.search.map((result) => '<article class="result"><strong>' + esc(result.title) + '</strong><p class="muted">' + esc(result.path) + '</p><p>' + esc(result.snippet) + '</p></article>').join('') : '<p class="muted">No results.</p>';
142
+ }
143
+ document.getElementById('search').addEventListener('submit', (event) => {
144
+ event.preventDefault();
145
+ const params = new URLSearchParams(location.search);
146
+ const q = document.getElementById('q').value.trim();
147
+ if (q) params.set('q', q); else params.delete('q');
148
+ history.pushState(null, '', '?' + params.toString());
149
+ load_state();
150
+ });
151
+ addEventListener('popstate', load_state);
152
+ addEventListener('resize', () => state.data && render_graph(state.data));
153
+ load_state();
154
+ </script>
155
+ </body>
156
+ </html>`;
157
+ }
158
+ export function serve_viewer(root, host, port, open) {
159
+ const server = createServer((request, response) => {
160
+ const url = new URL(request.url ?? '/', `http://${host}:${port}`);
161
+ try {
162
+ if (url.pathname === '/api/state') {
163
+ send_json(response, 200, read_view_state(root, url));
164
+ return;
165
+ }
166
+ if (url.pathname === '/') {
167
+ send_html(response, viewer_html());
168
+ return;
169
+ }
170
+ send_json(response, 404, { error: 'Not found' });
171
+ }
172
+ catch (error) {
173
+ send_json(response, 500, {
174
+ error: error instanceof Error ? error.message : String(error),
175
+ });
176
+ }
177
+ });
178
+ server.listen(port, host, () => {
179
+ const address = `http://${host}:${port}`;
180
+ console.log(`Serving wiki0 viewer for ${root}`);
181
+ console.log(address);
182
+ if (open)
183
+ open_url(address);
184
+ });
185
+ }
186
+ //# sourceMappingURL=viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../src/viewer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wiki0/cli",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "wiki0 command line interface",
5
5
  "homepage": "https://github.com/spences10/wiki0/tree/main/packages/cli#readme",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "citty": "^0.2.2",
34
- "@wiki0/core": "0.0.4"
34
+ "@wiki0/core": "0.0.6"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "^25.8.0",