@swarmvaultai/cli 0.1.30 → 0.1.31

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
@@ -135,7 +135,8 @@ Measure graph-guided context reduction against a naive full-corpus read.
135
135
  Inspect and resolve staged approval bundles created by `swarmvault compile --approve`.
136
136
 
137
137
  - `review list` shows pending, accepted, and rejected entry counts per bundle
138
- - `review show <approvalId>` shows each staged entry plus its current and staged content
138
+ - `review show <approvalId>` shows each staged entry plus its current and staged content, including a section-level change summary when available
139
+ - `review show <approvalId> --diff` adds a unified diff between current and staged content
139
140
  - `review accept <approvalId> [targets...]` applies pending entries to the live wiki
140
141
  - `review reject <approvalId> [targets...]` marks pending entries as rejected without mutating active wiki paths
141
142
 
@@ -179,13 +180,14 @@ Each step:
179
180
 
180
181
  The command also writes a hub page linking the root question, saved step pages, and generated follow-up questions.
181
182
 
182
- ### `swarmvault lint [--deep] [--web]`
183
+ ### `swarmvault lint [--deep] [--web] [--conflicts]`
183
184
 
184
- Run anti-drift and vault health checks such as stale pages, missing graph artifacts, and other structural issues.
185
+ Run anti-drift and vault health checks such as stale pages, missing graph artifacts, contradiction findings, and other structural issues.
185
186
 
186
187
  `--deep` adds an LLM-powered advisory pass that can report:
187
188
 
188
189
  - `coverage_gap`
190
+ - `contradiction`
189
191
  - `contradiction_candidate`
190
192
  - `missing_citation`
191
193
  - `candidate_page`
@@ -193,6 +195,8 @@ Run anti-drift and vault health checks such as stale pages, missing graph artifa
193
195
 
194
196
  `--web` can only be used with `--deep`. It enriches deep-lint findings with external evidence snippets and URLs from a configured web-search provider.
195
197
 
198
+ `--conflicts` filters the results down to contradiction-focused findings so you can audit conflicting claims without the rest of the lint output.
199
+
196
200
  ### `swarmvault watch [--lint] [--repo] [--once] [--debounce <ms>]`
197
201
 
198
202
  Watch the inbox directory and trigger import and compile cycles when files change. With `--repo`, each cycle also refreshes tracked repo roots that were previously ingested through directory ingest. With `--once`, SwarmVault runs one refresh cycle immediately instead of starting a long-running watcher. With `--lint`, each cycle also runs linting. Each cycle writes a canonical session artifact to `state/sessions/`, and compatibility run metadata is still appended to `state/jobs.ndjson`.
package/dist/index.js CHANGED
@@ -217,9 +217,9 @@ program.name("swarmvault").description("SwarmVault is a local-first LLM wiki com
217
217
  function readCliVersion() {
218
218
  try {
219
219
  const packageJson = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
220
- return typeof packageJson.version === "string" && packageJson.version.trim() ? packageJson.version : "0.1.30";
220
+ return typeof packageJson.version === "string" && packageJson.version.trim() ? packageJson.version : "0.1.31";
221
221
  } catch {
222
- return "0.1.30";
222
+ return "0.1.31";
223
223
  }
224
224
  }
225
225
  function parsePositiveInt(value, fallback) {
@@ -397,10 +397,11 @@ program.command("benchmark").description("Measure graph-guided context reduction
397
397
  log(`Reduction ratio: ${(result.reductionRatio * 100).toFixed(1)}%`);
398
398
  }
399
399
  });
400
- program.command("lint").description("Run anti-drift and wiki-health checks.").option("--deep", "Run LLM-powered advisory lint", false).option("--web", "Augment deep lint with configured web search", false).action(async (options) => {
400
+ program.command("lint").description("Run anti-drift and wiki-health checks.").option("--deep", "Run LLM-powered advisory lint", false).option("--web", "Augment deep lint with configured web search", false).option("--conflicts", "Filter to contradiction findings only", false).action(async (options) => {
401
401
  const findings = await lintVault(process2.cwd(), {
402
402
  deep: options.deep ?? false,
403
- web: options.web ?? false
403
+ web: options.web ?? false,
404
+ conflicts: options.conflicts ?? false
404
405
  });
405
406
  if (isJson()) {
406
407
  emitJson(findings);
@@ -542,8 +543,8 @@ review.command("list").description("List staged approval bundles and their resol
542
543
  );
543
544
  }
544
545
  });
545
- review.command("show").description("Show the entries inside a staged approval bundle.").argument("<approvalId>", "Approval bundle identifier").action(async (approvalId) => {
546
- const approval = await readApproval(process2.cwd(), approvalId);
546
+ review.command("show").description("Show the entries inside a staged approval bundle.").argument("<approvalId>", "Approval bundle identifier").option("--diff", "Show unified diff for each entry", false).action(async (approvalId, options) => {
547
+ const approval = await readApproval(process2.cwd(), approvalId, { diff: options.diff });
547
548
  if (isJson()) {
548
549
  emitJson(approval);
549
550
  return;
@@ -551,6 +552,12 @@ review.command("show").description("Show the entries inside a staged approval bu
551
552
  log(`${approval.approvalId} pending=${approval.pendingCount} accepted=${approval.acceptedCount} rejected=${approval.rejectedCount}`);
552
553
  for (const entry of approval.entries) {
553
554
  log(`- ${entry.status} ${entry.changeType} ${entry.pageId} ${entry.nextPath ?? entry.previousPath ?? ""}`.trim());
555
+ if (entry.changeSummary) log(` Summary: ${entry.changeSummary}`);
556
+ if (entry.diff) {
557
+ log("");
558
+ log(entry.diff);
559
+ log("");
560
+ }
554
561
  }
555
562
  });
556
563
  review.command("accept").description("Accept all pending entries, or selected entries, from a staged approval bundle.").argument("<approvalId>", "Approval bundle identifier").argument("[targets...]", "Optional page ids or paths to accept").action(async (approvalId, targets) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swarmvaultai/cli",
3
- "version": "0.1.30",
3
+ "version": "0.1.31",
4
4
  "description": "Global CLI for SwarmVault.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,7 +43,7 @@
43
43
  "typecheck": "tsc --noEmit"
44
44
  },
45
45
  "dependencies": {
46
- "@swarmvaultai/engine": "0.1.30",
46
+ "@swarmvaultai/engine": "0.1.31",
47
47
  "commander": "^14.0.1"
48
48
  },
49
49
  "devDependencies": {