doltap-wiki 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/cli.js ADDED
@@ -0,0 +1,591 @@
1
+ import { Command } from "commander";
2
+ import { execFileSync } from "node:child_process";
3
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
4
+ import { createRequire } from "node:module";
5
+ import { randomBytes } from "node:crypto";
6
+ import { homedir } from "node:os";
7
+ import { join, resolve } from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+ import { CATEGORIES, CONFIDENCE, get, getTemplate, lintAll, list, listConflictFiles, loadTags, patchMeta, patchSection, protocolText, syncAll, readIndexMd, related, resolveConfig, search, upsertPage, WikiDb, writeIndexMd, audit, installSchedule, installHttpService, httpServiceStatus, uninstallHttpService, publishHostStats, scheduleStatus, uninstallSchedule, scaffoldWiki, } from "@bluekds/doltap-core";
10
+ const program = new Command();
11
+ program
12
+ .name("doltap")
13
+ .description("Doltap: shared knowledge base for AI agents")
14
+ .version("0.1.0")
15
+ .option("--root <path>", "wiki repository root (default: $DOLTAP_ROOT, nearest ancestor, or ~/.doltap)")
16
+ .option("--agent <name>", "client identity for commit messages (default: $DOLTAP_AGENT or cli)")
17
+ .option("--session <id>", "session id for commit messages")
18
+ .option("--no-sync", "do not pull/push (local only)")
19
+ .option("--json", "machine-readable output");
20
+ function cfgFrom() {
21
+ const g = program.opts();
22
+ const o = { root: g.root, agent: g.agent, session: g.session, noSync: !g.sync };
23
+ return { cfg: resolveConfig(o), json: !!g.json };
24
+ }
25
+ function out(json, data, human) {
26
+ if (json)
27
+ process.stdout.write(JSON.stringify(data, null, 2) + "\n");
28
+ else
29
+ human();
30
+ }
31
+ function syncNotes(sync) {
32
+ const notes = [...sync.messages];
33
+ if (sync.conflicts.length)
34
+ notes.push(`CONFLICTS saved: ${sync.conflicts.join(", ")}`);
35
+ return notes;
36
+ }
37
+ function printIssues(issues) {
38
+ for (const i of issues)
39
+ console.log(`${i.level === "error" ? "ERROR" : "warn "} ${i.id}: [${i.rule}] ${i.message}`);
40
+ }
41
+ function readContent(opts) {
42
+ if (opts.content !== undefined)
43
+ return opts.content;
44
+ if (opts.file)
45
+ return readFileSync(resolve(opts.file), "utf8");
46
+ if (opts.stdin || !process.stdin.isTTY)
47
+ return readFileSync(0, "utf8");
48
+ throw new Error("provide --content, --file, or pipe content on stdin");
49
+ }
50
+ function fail(e) {
51
+ const msg = e instanceof Error ? e.message : String(e);
52
+ if (program.opts().json)
53
+ process.stdout.write(JSON.stringify({ error: msg }) + "\n");
54
+ else
55
+ console.error(`error: ${msg}`);
56
+ process.exit(1);
57
+ }
58
+ // ---------------------------------------------------------------- init
59
+ program
60
+ .command("init")
61
+ .description("set up a wiki on this machine: clone an existing wiki repository (--repo) or create a new one (--new)")
62
+ .option("--repo <url>", "git URL of an existing wiki repository to clone")
63
+ .option("--new", "create a new wiki (protocol, templates, hubs, Obsidian config) and git init it")
64
+ .option("--remote <url>", "with --new: add this empty repository as origin and push")
65
+ .option("--dir <path>", "where to clone or create", join(homedir(), ".doltap"))
66
+ .action((o) => {
67
+ try {
68
+ const dir = resolve(o.dir);
69
+ if (o.new) {
70
+ const r = scaffoldWiki(dir, { remote: o.remote });
71
+ console.log(`created wiki at ${r.dir} (${r.files} files, 1 commit${r.pushed ? ", pushed" : ""})`);
72
+ for (const n of r.notes)
73
+ console.log(`note: ${n}`);
74
+ }
75
+ else if (!existsSync(join(dir, "wiki", "_meta", "PROTOCOL.md"))) {
76
+ if (!o.repo)
77
+ throw new Error(`no wiki at ${dir}; pass --repo <git-url> to clone one or --new to create one`);
78
+ mkdirSync(resolve(dir, ".."), { recursive: true });
79
+ console.log(`cloning ${o.repo} -> ${dir}`);
80
+ execFileSync("git", ["clone", "--quiet", o.repo, dir], { stdio: "inherit" });
81
+ }
82
+ else
83
+ console.log(`existing wiki at ${dir}`);
84
+ const cfg = resolveConfig({ root: dir, noSync: true });
85
+ const db = new WikiDb(cfg);
86
+ const r = db.reindex(true);
87
+ db.close();
88
+ writeIndexMd(cfg);
89
+ console.log(`indexed ${r.total} pages`);
90
+ console.log(`\nnext: export DOLTAP_ROOT=${dir} (or keep the default ~/.doltap)`);
91
+ }
92
+ catch (e) {
93
+ fail(e);
94
+ }
95
+ });
96
+ // ---------------------------------------------------------------- search
97
+ program
98
+ .command("search <query...>")
99
+ .description("full-text search (title/summary/tags weighted above body)")
100
+ .option("-c, --category <cat>", `one of ${CATEGORIES.join("|")}`)
101
+ .option("-t, --tag <tag>")
102
+ .option("--confidence <level>", CONFIDENCE.join("|"))
103
+ .option("-n, --limit <n>", "max results", "10")
104
+ .option("--include-deprecated")
105
+ .action((q, o) => {
106
+ try {
107
+ const { cfg, json } = cfgFrom();
108
+ const { hits, sync } = search(cfg, q.join(" "), { ...o, limit: Number(o.limit) });
109
+ out(json, { hits, sync }, () => {
110
+ if (!hits.length)
111
+ console.log("no results");
112
+ for (const h of hits) {
113
+ console.log(`${h.id} [${h.confidence}] ${h.tags.join(",")}`);
114
+ console.log(` ${h.summary}`);
115
+ if (h.snippet && !h.summary.includes(h.snippet.replace(/[\[\]]/g, "")))
116
+ console.log(` … ${h.snippet.replace(/\n/g, " ")}`);
117
+ }
118
+ for (const n of syncNotes(sync))
119
+ console.error(`note: ${n}`);
120
+ });
121
+ }
122
+ catch (e) {
123
+ fail(e);
124
+ }
125
+ });
126
+ // ---------------------------------------------------------------- get
127
+ program
128
+ .command("get <id>")
129
+ .description("print a page (or one section) by id, e.g. howto/deploy-pypi")
130
+ .option("-s, --section <heading>", "only this ## section")
131
+ .option("--meta", "include frontmatter in human output")
132
+ .action((id, o) => {
133
+ try {
134
+ const { cfg, json } = cfgFrom();
135
+ const { result, sync } = get(cfg, id, o.section);
136
+ if (!result)
137
+ throw new Error(`page not found: ${id}`);
138
+ const { page, text, backlinks } = result;
139
+ out(json, { id, meta: page.meta, section: o.section ?? null, text, links: page.links, backlinks, sections: page.sections.map((s) => s.heading), sync }, () => {
140
+ if (o.meta || !o.section) {
141
+ console.log(`# ${page.meta.title}`);
142
+ console.log(`id: ${id} | confidence: ${page.meta.confidence} | tags: ${page.meta.tags.join(", ")} | updated: ${page.meta.updated}`);
143
+ console.log(`summary: ${page.meta.summary}\n`);
144
+ }
145
+ console.log(text);
146
+ if (!o.section && backlinks.length)
147
+ console.log(`\nbacklinks: ${backlinks.join(", ")}`);
148
+ });
149
+ }
150
+ catch (e) {
151
+ fail(e);
152
+ }
153
+ });
154
+ // ---------------------------------------------------------------- list
155
+ program
156
+ .command("list")
157
+ .description("list pages")
158
+ .option("-c, --category <cat>")
159
+ .option("-t, --tag <tag>")
160
+ .option("--confidence <level>")
161
+ .option("--include-deprecated")
162
+ .action((o) => {
163
+ try {
164
+ const { cfg, json } = cfgFrom();
165
+ const { rows, sync } = list(cfg, o);
166
+ const pages = rows.filter((r) => !r.id.endsWith("/_index") && r.id !== "Home");
167
+ out(json, { pages, sync }, () => {
168
+ for (const r of pages)
169
+ console.log(`${r.id.padEnd(44)} [${r.confidence}] ${r.summary}`);
170
+ });
171
+ }
172
+ catch (e) {
173
+ fail(e);
174
+ }
175
+ });
176
+ // ---------------------------------------------------------------- index / protocol / template / tags
177
+ program.command("index").description("print the generated one-line-per-page index").action(() => {
178
+ try {
179
+ const { cfg } = cfgFrom();
180
+ writeIndexMd(cfg);
181
+ process.stdout.write(readIndexMd(cfg));
182
+ }
183
+ catch (e) {
184
+ fail(e);
185
+ }
186
+ });
187
+ program.command("protocol").description("print _meta/PROTOCOL.md").action(() => {
188
+ try {
189
+ process.stdout.write(protocolText(cfgFrom().cfg));
190
+ }
191
+ catch (e) {
192
+ fail(e);
193
+ }
194
+ });
195
+ program.command("template <category>").description("print the page template for a category with today's date filled in").action((c) => {
196
+ try {
197
+ process.stdout.write(getTemplate(cfgFrom().cfg, c));
198
+ }
199
+ catch (e) {
200
+ fail(e);
201
+ }
202
+ });
203
+ program.command("tags").description("list allowed tags").action(() => {
204
+ try {
205
+ const { cfg, json } = cfgFrom();
206
+ const tags = loadTags(cfg);
207
+ out(json, tags, () => { for (const t of tags)
208
+ console.log(`${t.tag.padEnd(14)} ${t.group.padEnd(9)} ${t.description}`); });
209
+ }
210
+ catch (e) {
211
+ fail(e);
212
+ }
213
+ });
214
+ // ---------------------------------------------------------------- add
215
+ program
216
+ .command("add <id>")
217
+ .description("create a page (id = <category>/<slug>). Body from --file/--stdin or the template.")
218
+ .requiredOption("--title <text>")
219
+ .requiredOption("--summary <text>", "1-2 sentences, max 200 chars")
220
+ .option("--tags <list>", "comma-separated, must exist in _meta/tags.yaml")
221
+ .option("--confidence <level>", "draft|verified", "draft")
222
+ .option("--sources <list>", "comma-separated URLs/ids")
223
+ .option("-f, --file <path>", "markdown body file")
224
+ .option("--stdin", "read body from stdin")
225
+ .option("--force", "create even if similar pages exist")
226
+ .action((id, o) => {
227
+ try {
228
+ const { cfg, json } = cfgFrom();
229
+ const body = o.file || o.stdin ? readContent(o) : undefined;
230
+ const r = upsertPage(cfg, {
231
+ id, title: o.title, summary: o.summary, confidence: o.confidence, body, force: o.force,
232
+ tags: o.tags ? o.tags.split(",").map((s) => s.trim()).filter(Boolean) : undefined,
233
+ sources: o.sources ? o.sources.split(",").map((s) => s.trim()).filter(Boolean) : undefined,
234
+ });
235
+ out(json, r, () => {
236
+ if (r.refused) {
237
+ console.log(`refused: ${r.refused}`);
238
+ printIssues(r.issues);
239
+ for (const s of r.similar ?? [])
240
+ console.log(` similar: ${s.id} — ${s.summary}`);
241
+ process.exitCode = 2;
242
+ return;
243
+ }
244
+ console.log(`${r.created ? "created" : "updated"} ${r.id} (${r.path})`);
245
+ printIssues(r.issues);
246
+ for (const n of syncNotes(r.sync))
247
+ console.log(`note: ${n}`);
248
+ });
249
+ if (r.refused && json)
250
+ process.exitCode = 2;
251
+ }
252
+ catch (e) {
253
+ fail(e);
254
+ }
255
+ });
256
+ // ---------------------------------------------------------------- patch
257
+ program
258
+ .command("patch <id>")
259
+ .description("replace or append one ## section of a page")
260
+ .requiredOption("-s, --section <heading>")
261
+ .option("--content <text>")
262
+ .option("-f, --file <path>")
263
+ .option("--stdin")
264
+ .option("--append", "append to the section instead of replacing")
265
+ .option("--no-touch", "do not bump the updated date (typo fixes)")
266
+ .action((id, o) => {
267
+ try {
268
+ const { cfg, json } = cfgFrom();
269
+ const r = patchSection(cfg, { id, section: o.section, content: readContent(o), mode: o.append ? "append" : "replace", touch: o.touch });
270
+ out(json, r, () => {
271
+ if (r.refused) {
272
+ console.log(`refused: ${r.refused}`);
273
+ printIssues(r.issues);
274
+ process.exitCode = 2;
275
+ return;
276
+ }
277
+ console.log(`updated ${r.id} ## ${o.section}`);
278
+ printIssues(r.issues);
279
+ for (const n of syncNotes(r.sync))
280
+ console.log(`note: ${n}`);
281
+ });
282
+ }
283
+ catch (e) {
284
+ fail(e);
285
+ }
286
+ });
287
+ // ---------------------------------------------------------------- meta (promote / deprecate / retag)
288
+ program
289
+ .command("meta <id>")
290
+ .description("update frontmatter: --confidence, --add-source, --add-tag, --title, --summary")
291
+ .option("--confidence <level>", CONFIDENCE.join("|"))
292
+ .option("--add-source <s>", "repeatable", (v, acc) => [...acc, v], [])
293
+ .option("--add-tag <t>", "repeatable", (v, acc) => [...acc, v], [])
294
+ .option("--title <text>")
295
+ .option("--summary <text>")
296
+ .action((id, o) => {
297
+ try {
298
+ const { cfg, json } = cfgFrom();
299
+ const r = patchMeta(cfg, { id, confidence: o.confidence, addSources: o.addSource, addTags: o.addTag, title: o.title, summary: o.summary });
300
+ out(json, r, () => {
301
+ if (r.refused) {
302
+ console.log(`refused: ${r.refused}`);
303
+ printIssues(r.issues);
304
+ process.exitCode = 2;
305
+ return;
306
+ }
307
+ console.log(`updated ${r.id} frontmatter`);
308
+ printIssues(r.issues);
309
+ for (const n of syncNotes(r.sync))
310
+ console.log(`note: ${n}`);
311
+ });
312
+ }
313
+ catch (e) {
314
+ fail(e);
315
+ }
316
+ });
317
+ // ---------------------------------------------------------------- related
318
+ program.command("related <id>").description("outlinks, backlinks, and pages sharing tags").action((id) => {
319
+ try {
320
+ const { cfg, json } = cfgFrom();
321
+ const { result } = related(cfg, id);
322
+ out(json, result, () => {
323
+ const show = (label, rows) => {
324
+ console.log(`${label}:`);
325
+ if (!rows.length)
326
+ console.log(" (none)");
327
+ for (const r of rows)
328
+ console.log(` ${r.id} — ${r.summary}`);
329
+ };
330
+ show("outlinks", result.outlinks);
331
+ show("backlinks", result.backlinks);
332
+ show("shared tags", result.sharedTags);
333
+ });
334
+ }
335
+ catch (e) {
336
+ fail(e);
337
+ }
338
+ });
339
+ // ---------------------------------------------------------------- lint
340
+ program.command("lint [ids...]").description("validate pages (exit 1 on errors)").action((ids) => {
341
+ try {
342
+ const { cfg, json } = cfgFrom();
343
+ const issues = lintAll(cfg, ids.length ? ids : undefined);
344
+ const errors = issues.filter((i) => i.level === "error").length;
345
+ out(json, { issues, errors, warnings: issues.length - errors }, () => {
346
+ printIssues(issues);
347
+ console.log(`${errors} error(s), ${issues.length - errors} warning(s)`);
348
+ });
349
+ if (errors)
350
+ process.exitCode = 1;
351
+ }
352
+ catch (e) {
353
+ fail(e);
354
+ }
355
+ });
356
+ // ---------------------------------------------------------------- sync / reindex
357
+ program.command("sync").description("pull, push pending commits, reindex, report conflict files").action(() => {
358
+ try {
359
+ const { cfg, json } = cfgFrom();
360
+ const report = syncAll(cfg);
361
+ const db = new WikiDb(cfg);
362
+ const r = db.reindex();
363
+ const published = publishHostStats(cfg, db, report);
364
+ db.close();
365
+ writeIndexMd(cfg);
366
+ const conflicts = listConflictFiles(cfg);
367
+ out(json, { ...report, reindexed: r.indexed, removed: r.removed, total: r.total, statsPublished: published, conflictFiles: conflicts }, () => {
368
+ console.log(`pulled: ${report.pulled} pushed: ${report.pushed} offline: ${report.offline} | pages: ${r.total} (reindexed ${r.indexed}, removed ${r.removed})${published ? " | stats published" : ""}`);
369
+ for (const n of syncNotes(report))
370
+ console.log(`note: ${n}`);
371
+ if (conflicts.length)
372
+ console.log(`conflict files needing manual merge:\n ${conflicts.join("\n ")}`);
373
+ });
374
+ }
375
+ catch (e) {
376
+ fail(e);
377
+ }
378
+ });
379
+ program.command("reindex").description("rebuild the local search index and _meta/index.md").option("--full").action((o) => {
380
+ try {
381
+ const { cfg, json } = cfgFrom();
382
+ const db = new WikiDb(cfg);
383
+ const r = db.reindex(!!o.full);
384
+ db.close();
385
+ const p = writeIndexMd(cfg);
386
+ out(json, { ...r, pages: undefined, indexMd: p }, () => console.log(`indexed ${r.indexed}/${r.total} pages, removed ${r.removed}; wrote ${p}`));
387
+ }
388
+ catch (e) {
389
+ fail(e);
390
+ }
391
+ });
392
+ // ---------------------------------------------------------------- audit
393
+ program
394
+ .command("audit")
395
+ .description("report unreferenced, stale, lingering-draft, orphan and deprecated-but-linked pages (uses stats from all hosts)")
396
+ .option("--unreferenced-days <n>", "no reads within N days", "90")
397
+ .option("--stale-days <n>", "updated older than N days", "90")
398
+ .option("--draft-days <n>", "draft created more than N days ago", "30")
399
+ .action((o) => {
400
+ try {
401
+ const { cfg, json } = cfgFrom();
402
+ const r = audit(cfg, { unreferencedDays: Number(o.unreferencedDays), staleDays: Number(o.staleDays), draftDays: Number(o.draftDays) });
403
+ out(json, r, () => {
404
+ const section = (title, rows) => {
405
+ console.log(`${title} (${rows.length})`);
406
+ for (const e of rows)
407
+ console.log(` ${e.id}${e.updated ? ` updated ${e.updated}` : ""}${e.reads !== undefined ? ` reads ${e.reads}` : ""}${e.lastRead ? ` last ${e.lastRead}` : ""}`);
408
+ };
409
+ console.log(`hosts reporting: ${r.hostsReporting.join(", ") || "(none)"}`);
410
+ section("unreferenced -> deprecate candidates", r.unreferenced);
411
+ section("stale -> re-verify", r.stale);
412
+ section("lingering drafts -> verify or deprecate", r.lingeringDrafts);
413
+ section("orphans -> link from a hub or page", r.orphans.map((id) => ({ id })));
414
+ section("deprecated but still linked", r.deprecatedStillLinked.map((d) => ({ id: `${d.id} <- ${d.linkedFrom.join(", ")}` })));
415
+ section("conflict files -> merge", r.conflictFiles.map((id) => ({ id })));
416
+ section("most read", r.mostRead);
417
+ });
418
+ }
419
+ catch (e) {
420
+ fail(e);
421
+ }
422
+ });
423
+ // ---------------------------------------------------------------- schedule
424
+ const schedule = program.command("schedule").description("periodic `doltap sync` via launchd (macOS) or crontab");
425
+ schedule.command("install").option("--every <minutes>", "interval", "10").action((o) => {
426
+ try {
427
+ const { cfg, json } = cfgFrom();
428
+ // Unix: launchd/cron run the `wiki` shim; Windows: schtasks runs node + this JS entry.
429
+ const bin = process.platform === "win32" ? fileURLToPath(import.meta.url) : process.argv[1];
430
+ const r = installSchedule(cfg, bin, Number(o.every));
431
+ out(json, r, () => console.log(`${r.platform}: ${r.detail}`));
432
+ }
433
+ catch (e) {
434
+ fail(e);
435
+ }
436
+ });
437
+ schedule.command("uninstall").action(() => { try {
438
+ const r = uninstallSchedule();
439
+ out(!!program.opts().json, r, () => console.log(`${r.platform}: ${r.detail}`));
440
+ }
441
+ catch (e) {
442
+ fail(e);
443
+ } });
444
+ schedule.command("status").action(() => { try {
445
+ const r = scheduleStatus();
446
+ out(!!program.opts().json, r, () => console.log(`${r.platform}: ${r.installed ? "installed" : "not installed"} — ${r.detail}`));
447
+ }
448
+ catch (e) {
449
+ fail(e);
450
+ } });
451
+ // ---------------------------------------------------------------- serve (always-on HTTP MCP)
452
+ const serve = program.command("serve").description("always-on HTTP MCP server for remote clients (claude.ai connectors, other machines)");
453
+ serve.command("install").option("--port <n>", "listen port", "8765").option("--host <h>", "bind address", "127.0.0.1").action((o) => {
454
+ try {
455
+ const { cfg, json } = cfgFrom();
456
+ const binDir = resolve(process.argv[1], "..");
457
+ const mcpBin = existsSync(join(binDir, "doltap-mcp")) ? join(binDir, "doltap-mcp") : "doltap-mcp";
458
+ const r = installHttpService(cfg, mcpBin, Number(o.port), o.host);
459
+ const token = readFileSync(join(cfg.stateDir, "http-token"), "utf8").trim();
460
+ out(json, { ...r, url: `http://${o.host}:${o.port}/${token}/mcp` }, () => {
461
+ console.log(`${r.platform}: ${r.detail}`);
462
+ console.log(`local MCP URL: http://${o.host}:${o.port}/${token}/mcp`);
463
+ });
464
+ }
465
+ catch (e) {
466
+ fail(e);
467
+ }
468
+ });
469
+ serve.command("uninstall").action(() => { try {
470
+ const r = uninstallHttpService();
471
+ out(!!program.opts().json, r, () => console.log(`${r.platform}: ${r.detail}`));
472
+ }
473
+ catch (e) {
474
+ fail(e);
475
+ } });
476
+ serve.command("status").action(() => { try {
477
+ const r = httpServiceStatus();
478
+ out(!!program.opts().json, r, () => console.log(`${r.platform}: ${r.detail}`));
479
+ }
480
+ catch (e) {
481
+ fail(e);
482
+ } });
483
+ serve.command("token").description("print the secret path token (rotate with --rotate; restart the service afterwards)").option("--rotate").action((o) => {
484
+ try {
485
+ const { cfg } = cfgFrom();
486
+ const p = join(cfg.stateDir, "http-token");
487
+ if (o.rotate || !existsSync(p))
488
+ writeFileSync(p, randomBytes(32).toString("hex") + "\n", { mode: 0o600 });
489
+ process.stdout.write(readFileSync(p, "utf8"));
490
+ }
491
+ catch (e) {
492
+ fail(e);
493
+ }
494
+ });
495
+ // ---------------------------------------------------------------- integrations (agent clients)
496
+ const INTEGRATIONS_DIR = fileURLToPath(new URL("../integrations/", import.meta.url));
497
+ /** Command that starts the stdio MCP server: the `doltap-mcp` shim next to this binary, or node + the JS entry on Windows. */
498
+ function stdioMcpCommand() {
499
+ const binDir = resolve(process.argv[1], "..");
500
+ if (process.platform !== "win32")
501
+ return [existsSync(join(binDir, "doltap-mcp")) ? join(binDir, "doltap-mcp") : "doltap-mcp"];
502
+ try {
503
+ return ["node", createRequire(import.meta.url).resolve("@bluekds/doltap-mcp/dist/main.js")];
504
+ }
505
+ catch {
506
+ return ["doltap-mcp"];
507
+ }
508
+ }
509
+ function claudeCli(args, allowFail = false) {
510
+ try {
511
+ return execFileSync("claude", args, { encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] }).trim();
512
+ }
513
+ catch (e) {
514
+ if (allowFail)
515
+ return null;
516
+ throw e;
517
+ }
518
+ }
519
+ const integrations = program.command("integrations").description("install the skill, global instruction and MCP registration for an agent client");
520
+ integrations
521
+ .command("install <client>")
522
+ .description("supported clients: claude (Claude Code, user scope: every project on this machine)")
523
+ .option("--remote <url>", "register the always-on HTTPS endpoint instead of the local stdio server")
524
+ .option("--dry-run", "print what would change without writing anything")
525
+ .action((client, o) => {
526
+ try {
527
+ if (client !== "claude")
528
+ throw new Error(`unsupported client: ${client} (supported: claude)`);
529
+ const json = !!program.opts().json;
530
+ const src = join(INTEGRATIONS_DIR, "claude-code");
531
+ const skillDir = join(homedir(), ".claude", "skills", "doltap");
532
+ const claudeMd = join(homedir(), ".claude", "CLAUDE.md");
533
+ const actions = [];
534
+ actions.push(`write ${join(skillDir, "SKILL.md")}`);
535
+ if (!o.dryRun) {
536
+ mkdirSync(skillDir, { recursive: true });
537
+ writeFileSync(join(skillDir, "SKILL.md"), readFileSync(join(src, "skills", "doltap", "SKILL.md")));
538
+ }
539
+ const snippet = readFileSync(join(src, "CLAUDE.md.snippet"), "utf8");
540
+ const existing = existsSync(claudeMd) ? readFileSync(claudeMd, "utf8") : "";
541
+ if (existing.includes("## Doltap"))
542
+ actions.push(`keep ${claudeMd} (already has a Doltap section)`);
543
+ else {
544
+ actions.push(`${existing ? "append Doltap section to" : "create"} ${claudeMd}`);
545
+ if (!o.dryRun) {
546
+ mkdirSync(join(homedir(), ".claude"), { recursive: true });
547
+ writeFileSync(claudeMd, existing ? `${existing.trimEnd()}\n\n${snippet.replace(/^# Global instructions\n\n/, "")}` : snippet);
548
+ }
549
+ }
550
+ const addArgs = o.remote
551
+ ? ["mcp", "add", "-s", "user", "--transport", "http", "doltap", o.remote]
552
+ : ["mcp", "add", "-s", "user", "doltap", "-e", `DOLTAP_ROOT=${cfgFrom().cfg.root}`, "-e", "DOLTAP_AGENT=claude-code", "--", ...stdioMcpCommand()];
553
+ const shown = `claude ${addArgs.map((a) => (/\s/.test(a) ? JSON.stringify(a) : a)).join(" ")}`;
554
+ if (o.dryRun)
555
+ actions.push(`run: ${shown}`);
556
+ else if (claudeCli(["--version"], true) === null)
557
+ actions.push(`claude CLI not found on PATH; run manually: ${shown}`);
558
+ else {
559
+ claudeCli(["mcp", "remove", "-s", "user", "doltap"], true);
560
+ claudeCli(addArgs);
561
+ actions.push(`registered MCP server doltap (${o.remote ? "http" : "stdio"}, user scope)`);
562
+ }
563
+ out(json, { client, dryRun: !!o.dryRun, actions }, () => {
564
+ for (const a of actions)
565
+ console.log(`${o.dryRun ? "would " : ""}${a}`);
566
+ if (!o.dryRun)
567
+ console.log("done: new Claude Code sessions will see the doltap server and skill");
568
+ });
569
+ }
570
+ catch (e) {
571
+ fail(e);
572
+ }
573
+ });
574
+ integrations
575
+ .command("uninstall <client>")
576
+ .description("remove the skill and the MCP registration (the CLAUDE.md section is left for you to delete)")
577
+ .action((client) => {
578
+ try {
579
+ if (client !== "claude")
580
+ throw new Error(`unsupported client: ${client} (supported: claude)`);
581
+ const skillDir = join(homedir(), ".claude", "skills", "doltap");
582
+ rmSync(skillDir, { recursive: true, force: true });
583
+ const removed = claudeCli(["mcp", "remove", "-s", "user", "doltap"], true) !== null;
584
+ console.log(`removed ${skillDir}; MCP registration ${removed ? "removed" : "not found or claude CLI missing"}; edit ${join(homedir(), ".claude", "CLAUDE.md")} by hand`);
585
+ }
586
+ catch (e) {
587
+ fail(e);
588
+ }
589
+ });
590
+ program.parseAsync(process.argv).catch(fail);
591
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "@bluekds/doltap-core/quiet";
package/dist/main.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ // Bootstrap: silence the node:sqlite ExperimentalWarning before any module that imports node:sqlite loads.
3
+ import "@bluekds/doltap-core/quiet";
4
+ await import("./cli.js");
5
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,2GAA2G;AAC3G,OAAO,4BAA4B,CAAC;AACpC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "@bluekds/doltap-mcp/dist/main.js";
package/dist/mcp.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ // `doltap-mcp` shim so `npm install -g doltap` provides both binaries.
3
+ import "@bluekds/doltap-mcp/dist/main.js";
4
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":";AACA,uEAAuE;AACvE,OAAO,kCAAkC,CAAC"}
@@ -0,0 +1,5 @@
1
+ # Global instructions
2
+
3
+ ## Doltap Wiki
4
+
5
+ A shared wiki (Doltap Wiki) is available through the `doltap` MCP server (tools `wiki_search`, `wiki_get`, `wiki_upsert`, `wiki_patch_section`, …) and the `doltap` CLI. Before repetitive or cross-project work (deploy, build, release, auth, retry, config, library version questions), run `wiki_search` first. After solving a problem for the second time or finding an undocumented pitfall, record it with `wiki_upsert` or `wiki_patch_section`. The `doltap` skill has the full procedure.
@@ -0,0 +1,36 @@
1
+ # Claude Code integration
2
+
3
+ After `doltap init` on a machine (see `howto/setup-wiki-on-new-machine` in the wiki), one command installs everything at user scope:
4
+
5
+ ```sh
6
+ doltap integrations install claude # local stdio server (needs the clone)
7
+ doltap integrations install claude --remote <URL> # always-on HTTPS endpoint, no clone needed
8
+ doltap integrations install claude --dry-run # show the changes first
9
+ ```
10
+
11
+ It writes the skill to `~/.claude/skills/doltap/SKILL.md`, appends the `## Doltap` section of `CLAUDE.md.snippet` to `~/.claude/CLAUDE.md` (once), and runs `claude mcp add -s user doltap …`. `doltap integrations uninstall claude` reverses the first and last.
12
+
13
+ Verify inside a new Claude Code session: `/mcp` shows `doltap` connected; ask "search the wiki for obsidian".
14
+
15
+ ## Manual equivalent
16
+
17
+ ```sh
18
+ claude mcp add -s user doltap -e DOLTAP_ROOT="$HOME/.doltap" -e DOLTAP_AGENT=claude-code -- "$(which doltap-mcp)"
19
+ mkdir -p ~/.claude/skills/doltap && cp skills/doltap/SKILL.md ~/.claude/skills/doltap/
20
+ cat CLAUDE.md.snippet >> ~/.claude/CLAUDE.md
21
+ ```
22
+
23
+ Other MCP clients: run `doltap-mcp` over stdio with the same two environment variables. The resource `wiki://protocol` carries the full rules, so a client without skills still gets them.
24
+
25
+ ## Windows (PowerShell)
26
+
27
+ Requires Node >= 22.13 and Git for Windows on `PATH`.
28
+
29
+ ```powershell
30
+ npm install -g doltap-wiki
31
+ doltap init --repo git@github.com:<org>/<wiki-repo>.git # clones to $HOME\.doltap
32
+ doltap integrations install claude # registers node + the MCP JS entry (the .cmd shim is not launched reliably)
33
+ doltap schedule install # Task Scheduler, every 10 minutes
34
+ ```
35
+
36
+ Line endings: `.gitattributes` forces LF for every text file, so leave `core.autocrlf` at its default; the parser also tolerates CRLF.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: doltap
3
+ description: Use the shared wiki (Doltap Wiki; MCP tools wiki_search, wiki_get, wiki_upsert, wiki_patch_section, or the `doltap` CLI) to look up and record cross-project knowledge. Use before deploy/build/release/auth/retry/config work, when you need version-specific facts, when you wonder why something is done a certain way, and after solving a problem for the second time or finding an undocumented pitfall.
4
+ ---
5
+
6
+ # Doltap
7
+
8
+ A knowledge base shared by every agent on every machine. Pages are Markdown under five categories: howto, patterns, reference, decisions, projects. The full rules are in the MCP resource `wiki://protocol` (or `doltap protocol` on the CLI); this skill is the short version.
9
+
10
+ ## Read before you work
11
+
12
+ 1. At the start of a task that is repetitive (deploy, build, release, environment setup) or cross-project (auth, retry, caching, logging, CLI scaffolding), call `wiki_search` with 2–4 keywords. Also search when you need a library's version-specific behavior or limits, or when you wonder "why is it done this way".
13
+ 2. Read the `summary` and `confidence` of each hit. Open a page with `wiki_get`; pass `section` (e.g. `Pitfalls`, `Steps`, `Solution`) when you only need part of it.
14
+ 3. Treat `confidence` as instructions: `verified` = follow it; `draft` = use as a hint and verify; `deprecated` = do not follow, use the replacement linked at the top.
15
+ 4. Use `wiki_related` to move from one hit to adjacent pages when the first page is close but not exact.
16
+
17
+ If a `draft` page turned out to be correct, promote it: `wiki_set_meta` with `confidence: verified` and an `add_sources` entry saying what confirmed it.
18
+
19
+ ## Write when it will save the next agent time
20
+
21
+ Write a page when any of these happened:
22
+
23
+ - You solved the same problem a second time
24
+ - You hit a pitfall that is missing from or contradicts official docs
25
+ - You wrote a procedure or code that applies to more than one project
26
+ - You made a technology choice whose rationale is not visible in the code
27
+ - An existing page is wrong or outdated
28
+
29
+ Do not write session logs, one-off debugging, anything obvious from code or docs, project-only source layout, or secret values (record where a secret lives and how to load it instead; internal hosts and URLs are fine).
30
+
31
+ Procedure:
32
+
33
+ 1. Pick the category by the question the page answers: how do I do X → `howto`; how do I implement X → `patterns`; what is X → `reference`; why X instead of Y → `decisions`; one project's context → `projects/<name>`.
34
+ 2. Prefer editing: if `wiki_search` finds the topic, use `wiki_patch_section` (mode `append` for a new pitfall, `replace` to correct a section). Only create when nothing fits.
35
+ 3. To create: `wiki_template` for the category, fill every section (write `N/A` if one does not apply), then `wiki_upsert` with a `summary` under 200 characters that lets a reader decide without opening the page, 1–3 `tags` from `wiki://tags`, and `[[id]]` links to related pages. Default `confidence` is `draft`.
36
+ 4. If `wiki_upsert` is refused with `similar`, edit the listed page instead, or pass `force: true` only when the topic is genuinely different.
37
+ 5. If the result reports `conflicts`, tell the user: a `*.conflict-<host>.md` file needs a manual merge.
38
+
39
+ All content is English. Writes are linted, committed, and pushed automatically.
40
+
41
+ ## CLI fallback
42
+
43
+ When MCP tools are not available, the same operations exist as a CLI: `doltap search <q>`, `doltap get <id> [-s Section]`, `doltap template <cat>`, `doltap add <id> --title .. --summary .. --tags a,b --stdin`, `doltap patch <id> -s Section --content ..`, `doltap meta <id> --confidence verified`. Add `--json` for structured output. Set `DOLTAP_AGENT=claude-code` so commits record the client.
package/package.json CHANGED
@@ -1,6 +1,41 @@
1
1
  {
2
2
  "name": "doltap-wiki",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "bin": {
6
+ "doltap": "dist/main.js",
7
+ "doltap-mcp": "dist/mcp.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "integrations"
12
+ ],
13
+ "dependencies": {
14
+ "@bluekds/doltap-core": "0.1.0",
15
+ "commander": "^13.0.0",
16
+ "@bluekds/doltap-mcp": "0.1.0"
17
+ },
18
+ "description": "Doltap Wiki: a Markdown+git knowledge base shared by AI agents across machines (CLI, MCP server, Obsidian vault)",
19
+ "keywords": [
20
+ "wiki",
21
+ "knowledge-base",
22
+ "mcp",
23
+ "ai-agents",
24
+ "claude-code",
25
+ "obsidian",
26
+ "markdown",
27
+ "git"
28
+ ],
29
+ "license": "MIT",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/bluekds/doltap-wiki.git"
33
+ },
34
+ "homepage": "https://github.com/bluekds/doltap-wiki#readme",
35
+ "engines": {
36
+ "node": ">=22.13"
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ }
41
+ }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.