@wiki0/cli 0.0.6 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # @wiki0/cli
2
2
 
3
- Command line interface for wiki0 local-first Markdown wiki memory.
3
+ Command line interface for wiki0: search a project's docs and get the
4
+ right section with a `path:start-end` citation.
4
5
 
5
6
  ## Install
6
7
 
@@ -8,40 +9,34 @@ Command line interface for wiki0 local-first Markdown wiki memory.
8
9
  pnpm add -g @wiki0/cli
9
10
  ```
10
11
 
11
- The package exposes the `wiki0` binary.
12
-
13
12
  ## Commands
14
13
 
15
14
  ```sh
16
- wiki0 init ./my-wiki
17
- wiki0 init ./my-project --wiki-dir docs
18
- wiki0 page create "projects/wiki0" --body "Local-first [[topics/memory]]." --root ./my-wiki
19
- wiki0 plan --source_type codebase --scope "current repository" --sources README.md,package.json
20
- wiki0 extract docs/guide.md --root ./my-wiki
21
- wiki0 sync docs --root ./my-wiki
22
- wiki0 index --root ./my-wiki
23
- wiki0 status --root ./my-wiki
24
- wiki0 search "memory" --root ./my-wiki
25
- wiki0 context "what is wiki0?" --root ./my-wiki
26
- wiki0 show topics/memory.md:12 --root ./my-wiki
27
- wiki0 lint --root ./my-wiki
28
- wiki0 graph --root ./my-wiki
29
- wiki0 facts add "Markdown is source of truth" --category decision --confidence high --source decisions/storage.md:12 --root ./my-wiki
30
- wiki0 facts list --root ./my-wiki
31
- wiki0 topics --root ./my-wiki
32
- wiki0 events --root ./my-wiki
33
- wiki0 review --root ./my-wiki
15
+ wiki0 index # index the project docs
16
+ wiki0 status # index path and staleness
17
+ wiki0 search "query" [--limit 5] # one cited section per document
18
+ wiki0 show <target> [--tokens 2000] [--neighbours 1]
19
+ wiki0 context "query" # top sections as cited Markdown
20
+ wiki0 lint # broken links and anchors
21
+ wiki0 graph # documents and links
22
+ wiki0 documents # outline and link counts per document
23
+ wiki0 backlinks <path-or-title>
24
+ wiki0 ui [--no-open] [--stop] # browse the docs in a local web app
34
25
  ```
35
26
 
36
- ## Content folder and index
27
+ `show` targets: `path:12`, `path:12-40`, `path#heading`, `path` or a
28
+ document title. When the text is longer than the token budget, the
29
+ output ends with the range to read next.
30
+
31
+ To show a user this project's docs, an agent runs `npx @wiki0/cli ui`:
32
+ it prints the URL and returns, and a second run reuses the open
33
+ server. Flags: [`@wiki0/ui`](../ui/README.md).
37
34
 
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.
35
+ Every command takes `--root`; by default the project root is the
36
+ nearest folder with `.git` or `wiki0.toml`. `lint` exits with code 1
37
+ when it finds errors.
42
38
 
43
39
  ## Output
44
40
 
45
- Most commands return JSON so agents and shell scripts can consume the
46
- results. `wiki0 context` returns Markdown by default and supports
47
- `--json` for structured output.
41
+ `show` and `context` print Markdown (`--json` for structured output).
42
+ `ui` prints the URL. The other commands print JSON.
package/dist/actions.d.ts CHANGED
@@ -1,8 +1 @@
1
- import { type WikiFrontmatter } from '@wiki0/core';
2
- export declare function init_workspace(root: string, wiki_dir?: string): string;
3
- export declare function read_markdown_input(options: {
4
- file?: string;
5
- body?: string;
6
- }): string;
7
- export declare function parse_frontmatter_json(data: string): WikiFrontmatter;
8
1
  export declare function print_json(value: unknown): void;
package/dist/actions.js CHANGED
@@ -1,42 +1,3 @@
1
- import { schema_sql } from '@wiki0/core';
2
- import { existsSync, mkdirSync, readFileSync, writeFileSync, } from 'node:fs';
3
- import { join } from 'node:path';
4
- export function init_workspace(root, wiki_dir = 'wiki') {
5
- for (const dir of [
6
- `${wiki_dir}/inbox`,
7
- `${wiki_dir}/decisions`,
8
- `${wiki_dir}/people`,
9
- `${wiki_dir}/projects`,
10
- `${wiki_dir}/topics`,
11
- '.wiki0',
12
- ]) {
13
- mkdirSync(join(root, dir), { recursive: true });
14
- }
15
- writeFileSync(join(root, wiki_dir, 'index.md'), '# Wiki0\n\nStart here. Link pages with `[[topics/example]]`.\n', { flag: 'wx' });
16
- writeFileSync(join(root, '.wiki0/schema.sql'), schema_sql);
17
- ensure_gitignore_ignores_index(root);
18
- return `Created wiki0 workspace at ${root}`;
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
- }
32
- export function read_markdown_input(options) {
33
- return options.file
34
- ? readFileSync(options.file, 'utf-8')
35
- : (options.body ?? '');
36
- }
37
- export function parse_frontmatter_json(data) {
38
- return JSON.parse(data);
39
- }
40
1
  export function print_json(value) {
41
2
  console.log(JSON.stringify(value, null, 2));
42
3
  }
@@ -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,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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,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,648 +1,215 @@
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';
1
+ import { backlinks_for_page, get_wiki_context, graph_wiki, index_status, index_wiki, lint_wiki, list_documents, search, show, } from '@wiki0/core';
2
2
  import { defineCommand } from 'citty';
3
- import { isAbsolute, resolve } from 'node:path';
4
- import { init_workspace, parse_frontmatter_json, print_json, read_markdown_input, } from './actions.js';
5
- function parse_wiki_source_type(value) {
6
- const source_type = typeof value === 'string' ? value : 'general';
7
- if (source_type === 'general' ||
8
- source_type === 'codebase' ||
9
- source_type === 'docs' ||
10
- source_type === 'research' ||
11
- source_type === 'notes') {
12
- return source_type;
13
- }
14
- throw new Error(`Invalid wiki source type: ${source_type}`);
15
- }
16
- function parse_sources(value) {
17
- if (typeof value !== 'string' || value.trim().length === 0) {
18
- return undefined;
19
- }
20
- return value
21
- .split(',')
22
- .map((source) => source.trim())
23
- .filter(Boolean);
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
- }
36
- function parse_fact_confidence(value) {
37
- const confidence = typeof value === 'string' ? value : 'unknown';
38
- if (confidence === 'unknown' ||
39
- confidence === 'low' ||
40
- confidence === 'medium' ||
41
- confidence === 'high' ||
42
- confidence === 'verified') {
43
- return confidence;
44
- }
45
- throw new Error(`Invalid fact confidence: ${confidence}`);
46
- }
3
+ import { print_json } from './actions.js';
4
+ import { run_ui } from './ui.js';
5
+ const root_arg = {
6
+ root: {
7
+ type: 'string',
8
+ description: 'Project root (default: nearest folder with .git)',
9
+ default: '.',
10
+ },
11
+ };
12
+ const json_arg = {
13
+ json: {
14
+ type: 'boolean',
15
+ description: 'Output JSON instead of Markdown',
16
+ },
17
+ };
47
18
  export const main = defineCommand({
48
19
  meta: {
49
20
  name: 'wiki0',
50
- description: 'Local-first Markdown wiki memory for humans and agents',
21
+ description: 'Search a project’s docs and get the right section with a path:line citation',
51
22
  },
52
23
  subCommands: {
53
- init: defineCommand({
54
- meta: { description: 'Create a wiki0 folder structure' },
55
- args: {
56
- path: {
57
- type: 'positional',
58
- description: 'Wiki root path',
59
- default: '.',
60
- },
61
- wikiDir: {
62
- type: 'string',
63
- description: 'Content folder to store pages (for example docs)',
64
- default: 'wiki',
65
- },
66
- },
67
- run({ args }) {
68
- console.log(init_workspace(String(args.path ?? '.'), wiki_dir_arg(args)));
69
- },
70
- }),
71
- page: defineCommand({
72
- meta: {
73
- description: 'Create, read, append, and tag wiki pages',
74
- },
75
- subCommands: {
76
- create: defineCommand({
77
- meta: { description: 'Create a wiki page' },
78
- args: {
79
- title: {
80
- type: 'positional',
81
- required: true,
82
- description: 'Page title or path',
83
- },
84
- body: { type: 'string', description: 'Markdown body' },
85
- file: {
86
- type: 'string',
87
- description: 'Read Markdown body from a file',
88
- },
89
- root: {
90
- type: 'string',
91
- description: 'Wiki root path',
92
- default: '.',
93
- },
94
- wikiDir: {
95
- type: 'string',
96
- description: 'Content folder to store pages (for example docs)',
97
- default: 'wiki',
98
- },
99
- overwrite: {
100
- type: 'boolean',
101
- description: 'Overwrite an existing page',
102
- },
103
- },
104
- run({ args }) {
105
- const page = create_page(String(args.title), read_markdown_input(args), {
106
- root: String(args.root ?? '.'),
107
- wiki_dir: wiki_dir_arg(args),
108
- overwrite: Boolean(args.overwrite),
109
- });
110
- print_json(page);
111
- },
112
- }),
113
- read: defineCommand({
114
- meta: { description: 'Read a wiki page' },
115
- args: {
116
- title: {
117
- type: 'positional',
118
- required: true,
119
- description: 'Page title or path',
120
- },
121
- root: {
122
- type: 'string',
123
- description: 'Wiki root path',
124
- default: '.',
125
- },
126
- wikiDir: {
127
- type: 'string',
128
- description: 'Content folder to store pages (for example docs)',
129
- default: 'wiki',
130
- },
131
- },
132
- run({ args }) {
133
- print_json(read_page(String(args.title), String(args.root ?? '.'), wiki_dir_arg(args)));
134
- },
135
- }),
136
- frontmatter: defineCommand({
137
- meta: {
138
- description: 'Set YAML frontmatter on a wiki page',
139
- },
140
- args: {
141
- title: {
142
- type: 'positional',
143
- required: true,
144
- description: 'Page title or path',
145
- },
146
- data: {
147
- type: 'string',
148
- required: true,
149
- description: 'Frontmatter as a JSON object',
150
- },
151
- root: {
152
- type: 'string',
153
- description: 'Wiki root path',
154
- default: '.',
155
- },
156
- wikiDir: {
157
- type: 'string',
158
- description: 'Content folder to store pages (for example docs)',
159
- default: 'wiki',
160
- },
161
- merge: {
162
- type: 'boolean',
163
- description: 'Merge with existing frontmatter',
164
- },
165
- },
166
- run({ args }) {
167
- const page = set_page_frontmatter(String(args.title), parse_frontmatter_json(args.data), {
168
- root: String(args.root ?? '.'),
169
- wiki_dir: wiki_dir_arg(args),
170
- merge: Boolean(args.merge),
171
- });
172
- print_json(page);
173
- },
174
- }),
175
- append: defineCommand({
176
- meta: { description: 'Append Markdown to a wiki page' },
177
- args: {
178
- title: {
179
- type: 'positional',
180
- required: true,
181
- description: 'Page title or path',
182
- },
183
- body: {
184
- type: 'string',
185
- description: 'Markdown body to append',
186
- },
187
- file: {
188
- type: 'string',
189
- description: 'Read Markdown body from a file',
190
- },
191
- root: {
192
- type: 'string',
193
- description: 'Wiki root path',
194
- default: '.',
195
- },
196
- wikiDir: {
197
- type: 'string',
198
- description: 'Content folder to store pages (for example docs)',
199
- default: 'wiki',
200
- },
201
- },
202
- run({ args }) {
203
- const page = append_page(String(args.title), read_markdown_input(args), String(args.root ?? '.'), wiki_dir_arg(args));
204
- print_json(page);
205
- },
206
- }),
207
- },
208
- }),
209
- extract: defineCommand({
210
- meta: {
211
- description: 'Extract normalized text and metadata from a source document',
212
- },
213
- args: {
214
- source: {
215
- type: 'positional',
216
- required: true,
217
- description: 'Source document path',
218
- },
219
- root: {
220
- type: 'string',
221
- description: 'Wiki root path for relative sources',
222
- default: '.',
223
- },
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: {
240
- type: 'string',
241
- description: 'Wiki root path',
242
- default: '.',
243
- },
244
- wikiDir: {
245
- type: 'string',
246
- description: 'Content folder to store pages (for example docs)',
247
- default: 'wiki',
248
- },
249
- overwrite: {
250
- type: 'boolean',
251
- description: 'Overwrite existing synced source pages',
252
- },
253
- include: {
254
- type: 'string',
255
- description: 'Comma-separated glob patterns to include during recursive sync',
256
- },
257
- ignore: {
258
- type: 'string',
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',
272
- },
273
- },
24
+ index: defineCommand({
25
+ meta: { description: 'Index the project docs' },
26
+ args: { ...root_arg },
274
27
  async run({ args }) {
275
- print_json(await sync_documents({
276
- root: String(args.root ?? '.'),
277
- wiki_dir: wiki_dir_arg(args),
278
- sources: parse_sources(args.sources) ?? [],
279
- overwrite: Boolean(args.overwrite),
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),
285
- }));
28
+ print_json(await index_wiki(String(args.root)));
286
29
  },
287
30
  }),
288
- plan: defineCommand({
31
+ status: defineCommand({
289
32
  meta: {
290
- description: 'Print a deterministic workflow and starter page plan for building a wiki',
291
- },
292
- args: {
293
- source_type: {
294
- type: 'string',
295
- description: 'general, codebase, docs, research, or notes',
296
- default: 'general',
297
- },
298
- scope: {
299
- type: 'string',
300
- description: 'Source scope description',
301
- },
302
- sources: {
303
- type: 'string',
304
- description: 'Comma-separated source paths or URLs',
305
- },
33
+ description: 'Show where the index is and whether it is stale',
306
34
  },
35
+ args: { ...root_arg },
307
36
  run({ args }) {
308
- print_json(plan_wiki({
309
- source_type: parse_wiki_source_type(args.source_type),
310
- scope: args.scope ? String(args.scope) : undefined,
311
- sources: parse_sources(args.sources),
312
- }));
37
+ print_json(index_status(String(args.root)));
313
38
  },
314
39
  }),
315
- facts: defineCommand({
316
- meta: { description: 'Add and list structured wiki facts' },
317
- subCommands: {
318
- add: defineCommand({
319
- meta: { description: 'Add a structured wiki fact' },
320
- args: {
321
- summary: { type: 'positional', required: true },
322
- category: {
323
- type: 'string',
324
- description: 'Fact category',
325
- default: 'note',
326
- },
327
- body: { type: 'string', description: 'Fact details' },
328
- confidence: {
329
- type: 'string',
330
- description: 'unknown, low, medium, high, or verified',
331
- default: 'unknown',
332
- },
333
- page: {
334
- type: 'string',
335
- description: 'Related page title or path',
336
- },
337
- source: {
338
- type: 'string',
339
- description: 'Source page or page:line target for provenance',
340
- },
341
- sourceQuote: {
342
- type: 'string',
343
- description: 'Exact source quote for provenance',
344
- },
345
- root: {
346
- type: 'string',
347
- description: 'Wiki root path',
348
- default: '.',
349
- },
350
- wikiDir: {
351
- type: 'string',
352
- description: 'Content folder to store pages (for example docs)',
353
- default: 'wiki',
354
- },
355
- },
356
- run({ args }) {
357
- print_json(add_fact({
358
- root: String(args.root ?? '.'),
359
- wiki_dir: wiki_dir_arg(args),
360
- page: args.page ? String(args.page) : undefined,
361
- category: String(args.category ?? 'note'),
362
- summary: String(args.summary),
363
- body: args.body ? String(args.body) : undefined,
364
- confidence: parse_fact_confidence(args.confidence),
365
- source: args.source ? String(args.source) : undefined,
366
- source_quote: args.sourceQuote
367
- ? String(args.sourceQuote)
368
- : undefined,
369
- }));
370
- },
371
- }),
372
- list: defineCommand({
373
- meta: { description: 'List structured wiki facts' },
374
- args: {
375
- category: {
376
- type: 'string',
377
- description: 'Filter by category',
378
- },
379
- root: {
380
- type: 'string',
381
- description: 'Wiki root path',
382
- default: '.',
383
- },
384
- wikiDir: {
385
- type: 'string',
386
- description: 'Content folder to store pages (for example docs)',
387
- default: 'wiki',
388
- },
389
- },
390
- run({ args }) {
391
- print_json(list_facts(String(args.root ?? '.'), args.category ? String(args.category) : undefined));
392
- },
393
- }),
394
- },
395
- }),
396
- events: defineCommand({
397
- meta: { description: 'List recent wiki operation log events' },
398
- args: {
399
- root: {
400
- type: 'string',
401
- description: 'Wiki root path',
402
- default: '.',
403
- },
404
- wikiDir: {
405
- type: 'string',
406
- description: 'Content folder to store pages (for example docs)',
407
- default: 'wiki',
408
- },
409
- limit: {
410
- type: 'string',
411
- description: 'Maximum number of events',
412
- default: '50',
413
- },
414
- },
415
- run({ args }) {
416
- print_json(list_wiki_events(String(args.root ?? '.'), Number(args.limit ?? 50)));
417
- },
418
- }),
419
- topics: defineCommand({
40
+ search: defineCommand({
420
41
  meta: {
421
- description: 'List lightweight topic threads from indexed chunks',
42
+ description: 'Search the docs; one cited section per document, most authoritative first',
422
43
  },
423
- args: {
424
- root: {
425
- type: 'string',
426
- description: 'Wiki root path',
427
- default: '.',
428
- },
429
- wikiDir: {
430
- type: 'string',
431
- description: 'Content folder to store pages (for example docs)',
432
- default: 'wiki',
433
- },
434
- limit: {
435
- type: 'string',
436
- description: 'Maximum number of topics',
437
- default: '50',
438
- },
439
- },
440
- run({ args }) {
441
- print_json(list_topic_threads(String(args.root ?? '.'), Number(args.limit ?? 50)));
442
- },
443
- }),
444
- index: defineCommand({
445
- meta: { description: 'Index Markdown pages into SQLite' },
446
- args: {
447
- root: {
448
- type: 'string',
449
- description: 'Wiki root path',
450
- default: '.',
451
- },
452
- wikiDir: {
453
- type: 'string',
454
- description: 'Content folder to store pages (for example docs)',
455
- default: 'wiki',
456
- },
457
- },
458
- run({ args }) {
459
- print_json(index_wiki(String(args.root ?? '.'), wiki_dir_arg(args)));
460
- },
461
- }),
462
- status: defineCommand({
463
- meta: { description: 'Show index freshness and schema status' },
464
- args: {
465
- root: {
466
- type: 'string',
467
- description: 'Wiki root path',
468
- default: '.',
469
- },
470
- wikiDir: {
471
- type: 'string',
472
- description: 'Content folder to store pages (for example docs)',
473
- default: 'wiki',
474
- },
475
- },
476
- run({ args }) {
477
- print_json(index_status(String(args.root ?? '.'), wiki_dir_arg(args)));
478
- },
479
- }),
480
- search: defineCommand({
481
- meta: { description: 'Search indexed wiki pages' },
482
44
  args: {
483
45
  query: { type: 'positional', required: true },
484
- root: {
485
- type: 'string',
486
- description: 'Wiki root path',
487
- default: '.',
488
- },
489
- wikiDir: {
490
- type: 'string',
491
- description: 'Content folder to store pages (for example docs)',
492
- default: 'wiki',
493
- },
46
+ ...root_arg,
494
47
  limit: {
495
48
  type: 'string',
496
- description: 'Maximum number of results',
497
- default: '10',
49
+ description: 'Maximum number of documents',
50
+ default: '5',
51
+ },
52
+ includeSuperseded: {
53
+ type: 'boolean',
54
+ description: 'Keep superseded documents in results',
55
+ default: true,
498
56
  },
499
57
  },
500
58
  run({ args }) {
501
- print_json(search_wiki(String(args.query), String(args.root ?? '.'), Number(args.limit ?? 10)));
59
+ print_json(search(String(args.query), String(args.root), {
60
+ limit: Number(args.limit),
61
+ include_superseded: args.includeSuperseded !== false,
62
+ }));
502
63
  },
503
64
  }),
504
65
  show: defineCommand({
505
66
  meta: {
506
- description: 'Show the indexed wiki chunk for a page or page:line target',
67
+ description: 'Show a cited section: path:line, path:start-end, path#heading, path or title',
507
68
  },
508
69
  args: {
509
- target: {
510
- type: 'positional',
511
- required: true,
512
- description: 'Page path/title, optionally with :line',
513
- },
514
- root: {
70
+ target: { type: 'positional', required: true },
71
+ ...root_arg,
72
+ tokens: {
515
73
  type: 'string',
516
- description: 'Wiki root path',
517
- default: '.',
74
+ description: 'Token budget for the returned text',
75
+ default: '2000',
518
76
  },
519
- wikiDir: {
77
+ neighbours: {
520
78
  type: 'string',
521
- description: 'Content folder to store pages (for example docs)',
522
- default: 'wiki',
523
- },
524
- json: {
525
- type: 'boolean',
526
- description: 'Output structured JSON instead of Markdown',
79
+ description: 'Also include this many sections either side',
80
+ default: '0',
527
81
  },
82
+ ...json_arg,
528
83
  },
529
84
  run({ args }) {
530
- const result = show_wiki_chunk(String(args.target), String(args.root ?? '.'), wiki_dir_arg(args));
531
- if (args.json)
85
+ const result = show(String(args.target), String(args.root), {
86
+ token_budget: Number(args.tokens),
87
+ neighbours: Number(args.neighbours),
88
+ });
89
+ if (args.json) {
532
90
  print_json(result);
533
- else
534
- console.log(result?.body ?? 'No indexed chunk found.');
91
+ return;
92
+ }
93
+ if (!result) {
94
+ console.log('No indexed section found.');
95
+ process.exitCode = 1;
96
+ return;
97
+ }
98
+ console.log(`Source: ${result.citation}`);
99
+ for (const warning of result.warnings) {
100
+ console.log(`Warning: ${warning}`);
101
+ }
102
+ if (result.superseded_by) {
103
+ console.log(`Superseded by: ${result.superseded_by}`);
104
+ }
105
+ console.log('');
106
+ console.log(result.markdown);
107
+ if (result.next) {
108
+ console.log(`\nMore: wiki0 show ${result.next}`);
109
+ }
535
110
  },
536
111
  }),
537
112
  context: defineCommand({
538
113
  meta: {
539
- description: 'Retrieve indexed context with citations',
114
+ description: 'Search and return the top sections as cited Markdown',
540
115
  },
541
116
  args: {
542
117
  query: { type: 'positional', required: true },
543
- root: {
544
- type: 'string',
545
- description: 'Wiki root path',
546
- default: '.',
547
- },
548
- wikiDir: {
549
- type: 'string',
550
- description: 'Content folder to store pages (for example docs)',
551
- default: 'wiki',
552
- },
118
+ ...root_arg,
553
119
  limit: {
554
120
  type: 'string',
555
- description: 'Maximum number of context results',
556
- default: '5',
557
- },
558
- json: {
559
- type: 'boolean',
560
- description: 'Output structured JSON instead of Markdown',
121
+ description: 'Maximum number of sections',
122
+ default: '3',
561
123
  },
124
+ ...json_arg,
562
125
  },
563
126
  run({ args }) {
564
- const result = get_wiki_context(String(args.query), String(args.root ?? '.'), Number(args.limit ?? 5), wiki_dir_arg(args));
127
+ const result = get_wiki_context(String(args.query), String(args.root), Number(args.limit));
565
128
  console.log(args.json
566
129
  ? JSON.stringify(result, null, 2)
567
130
  : result.markdown);
568
131
  },
569
132
  }),
570
- graph: defineCommand({
571
- meta: { description: 'Output indexed wiki graph data' },
572
- args: {
573
- root: {
574
- type: 'string',
575
- description: 'Wiki root path',
576
- default: '.',
577
- },
578
- wikiDir: {
579
- type: 'string',
580
- description: 'Content folder to store pages (for example docs)',
581
- default: 'wiki',
582
- },
583
- },
584
- run({ args }) {
585
- print_json(graph_wiki(String(args.root ?? '.')));
586
- },
587
- }),
588
133
  lint: defineCommand({
589
- meta: { description: 'Lint wiki links and duplicate names' },
590
- args: {
591
- root: {
592
- type: 'string',
593
- description: 'Wiki root path',
594
- default: '.',
595
- },
596
- wikiDir: {
597
- type: 'string',
598
- description: 'Content folder to store pages (for example docs)',
599
- default: 'wiki',
600
- },
134
+ meta: {
135
+ description: 'Report broken links, missing headings and other link problems',
601
136
  },
137
+ args: { ...root_arg },
602
138
  run({ args }) {
603
- const result = lint_wiki(String(args.root ?? '.'), wiki_dir_arg(args));
139
+ const result = lint_wiki(String(args.root));
604
140
  print_json(result);
605
141
  if (!result.ok)
606
142
  process.exitCode = 1;
607
143
  },
608
144
  }),
145
+ graph: defineCommand({
146
+ meta: { description: 'Output the document link graph' },
147
+ args: { ...root_arg },
148
+ run({ args }) {
149
+ print_json(graph_wiki(String(args.root)));
150
+ },
151
+ }),
152
+ documents: defineCommand({
153
+ meta: {
154
+ description: 'List indexed documents with outlines and link counts',
155
+ },
156
+ args: { ...root_arg },
157
+ run({ args }) {
158
+ print_json(list_documents(String(args.root)));
159
+ },
160
+ }),
609
161
  backlinks: defineCommand({
610
- meta: { description: 'List resolved backlinks for a page' },
162
+ meta: { description: 'List documents that link to a document' },
611
163
  args: {
612
- title: { type: 'positional', required: true },
613
- root: {
614
- type: 'string',
615
- description: 'Wiki root path',
616
- default: '.',
617
- },
618
- wikiDir: {
619
- type: 'string',
620
- description: 'Content folder to store pages (for example docs)',
621
- default: 'wiki',
622
- },
164
+ target: { type: 'positional', required: true },
165
+ ...root_arg,
623
166
  },
624
167
  run({ args }) {
625
- print_json(backlinks_for_page(String(args.title), String(args.root ?? '.'), wiki_dir_arg(args)));
168
+ print_json(backlinks_for_page(String(args.target), String(args.root)));
626
169
  },
627
170
  }),
628
- review: defineCommand({
171
+ ui: defineCommand({
629
172
  meta: {
630
- description: 'List pages marked for review',
173
+ description: 'Open the project docs in the browser; prints the URL and reuses a running server',
631
174
  },
632
175
  args: {
633
- root: {
176
+ ...root_arg,
177
+ host: {
634
178
  type: 'string',
635
- description: 'Wiki root path',
636
- default: '.',
179
+ description: 'Host to bind (default: 127.0.0.1)',
637
180
  },
638
- wikiDir: {
181
+ port: {
639
182
  type: 'string',
640
- description: 'Content folder to store pages (for example docs)',
641
- default: 'wiki',
183
+ description: 'Port (default: 4100 or WIKI0_UI_PORT; a busy port falls back)',
184
+ },
185
+ open: {
186
+ type: 'boolean',
187
+ description: 'Open a browser (--no-open to only print the URL)',
188
+ default: true,
189
+ },
190
+ detach: {
191
+ type: 'boolean',
192
+ description: 'Run in the background and return (default when not in a terminal)',
193
+ },
194
+ foreground: {
195
+ type: 'boolean',
196
+ description: 'Stay in the foreground until Ctrl-C',
197
+ },
198
+ stop: {
199
+ type: 'boolean',
200
+ description: 'Stop the server for this project',
642
201
  },
643
202
  },
644
- run({ args }) {
645
- print_json(review_wiki(String(args.root ?? '.'), wiki_dir_arg(args)));
203
+ async run({ args }) {
204
+ await run_ui({
205
+ root: String(args.root),
206
+ host: args.host,
207
+ port: args.port,
208
+ open: args.open,
209
+ detach: args.detach,
210
+ foreground: args.foreground,
211
+ stop: args.stop,
212
+ });
646
213
  },
647
214
  }),
648
215
  },
@@ -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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"}
package/dist/ui.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ import type { LaunchOptions } from '@wiki0/ui';
2
+ export type UiArgs = {
3
+ root: string;
4
+ host?: string;
5
+ port?: string;
6
+ open?: boolean;
7
+ detach?: boolean;
8
+ foreground?: boolean;
9
+ stop?: boolean;
10
+ };
11
+ export declare function ui_launch_options(args: UiArgs, parse_port: (value: string | undefined) => number | undefined, env?: NodeJS.ProcessEnv): LaunchOptions;
12
+ export declare function run_ui(args: UiArgs): Promise<void>;
package/dist/ui.js ADDED
@@ -0,0 +1,25 @@
1
+ // Maps `wiki0 ui` flags to launch options. Detach is left unset
2
+ // unless asked for, so @wiki0/ui can detach when stdout is not a
3
+ // terminal, as when an agent runs the command.
4
+ export function ui_launch_options(args, parse_port, env = process.env) {
5
+ return {
6
+ root: args.root,
7
+ host: args.host || undefined,
8
+ port: parse_port(args.port || env.WIKI0_UI_PORT),
9
+ open: args.open !== false,
10
+ detach: args.foreground ? false : args.detach ? true : undefined,
11
+ stop: args.stop === true,
12
+ };
13
+ }
14
+ export async function run_ui(args) {
15
+ // Loaded on use, so other commands don't pay for the server.
16
+ const { launch_ui, parse_port } = await import('@wiki0/ui');
17
+ try {
18
+ await launch_ui(ui_launch_options(args, parse_port));
19
+ }
20
+ catch (error) {
21
+ console.error(error instanceof Error ? error.message : error);
22
+ process.exitCode = 1;
23
+ }
24
+ }
25
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAYA,gEAAgE;AAChE,iEAAiE;AACjE,+CAA+C;AAC/C,MAAM,UAAU,iBAAiB,CAChC,IAAY,EACZ,UAA6D,EAC7D,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,OAAO;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;QAC5B,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC;QAChD,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK;QACzB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAChE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI;KACxB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACxC,6DAA6D;IAC7D,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC;QACJ,MAAM,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wiki0/cli",
3
- "version": "0.0.6",
3
+ "version": "0.1.1",
4
4
  "description": "wiki0 command line interface",
5
5
  "homepage": "https://github.com/spences10/wiki0/tree/main/packages/cli#readme",
6
6
  "license": "MIT",
@@ -30,14 +30,15 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "citty": "^0.2.2",
34
- "@wiki0/core": "0.0.6"
33
+ "@wiki0/core": "0.1.0",
34
+ "@wiki0/ui": "0.1.1",
35
+ "citty": "^0.2.2"
35
36
  },
36
37
  "devDependencies": {
37
- "@types/node": "^25.8.0",
38
- "typescript": "^6.0.3",
39
- "vite-plus": "^0.1.22",
40
- "vitest": "4.1.7"
38
+ "@types/node": "^24.0.0",
39
+ "typescript": "^7.0.2",
40
+ "vite-plus": "1.1.0",
41
+ "vitest": "5.0.3"
41
42
  },
42
43
  "engines": {
43
44
  "node": ">=24.15.0"
@@ -45,6 +46,6 @@
45
46
  "scripts": {
46
47
  "build:self": "vp exec tsc -p tsconfig.build.json && chmod +x dist/index.js",
47
48
  "check:self": "vp exec tsc --noEmit -p tsconfig.json",
48
- "test:self": "vitest run"
49
+ "test:self": "vp test"
49
50
  }
50
51
  }