@cairnkeep/cli 2.23.0 → 2.24.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/docs/containers.md +4 -0
  3. package/docs/domain-knowledge.md +42 -4
  4. package/docs/learning/CURRICULUM-MAP.md +3 -3
  5. package/docs/learning/FEATURE-GUIDE.md +8 -1
  6. package/docs/learning/lessons/L00-why-cairnkeep.md +1 -1
  7. package/docs/learning/lessons/L01-safe-trial.md +3 -3
  8. package/docs/learning/lessons/L02-installation.md +2 -2
  9. package/docs/learning/lessons/L03-first-project.md +1 -1
  10. package/docs/learning/lessons/L04-memory-fundamentals.md +12 -0
  11. package/docs/learning/lessons/L09-domain-knowledge.md +11 -0
  12. package/docs/learning/lessons/L19-validated-skill-improvement.md +1 -1
  13. package/docs/learning/lessons/L20-mcp-tool-profiles.md +1 -1
  14. package/docs/learning/lessons/L21-context-packs.md +1 -1
  15. package/docs/learning/lessons/L22-native-windows.md +2 -2
  16. package/docs/learning/lessons/L23-guided-setup.md +1 -1
  17. package/docs/learning/lessons/L24-okf-exchange.md +1 -1
  18. package/docs/learning/lessons/L25-playbooks.md +1 -1
  19. package/docs/learning/lessons/L26-context-intelligence.md +1 -1
  20. package/docs/learning/lessons/L27-ecosystem-evidence.md +1 -1
  21. package/docs/learning/lessons/L28-security-assurance.md +2 -2
  22. package/docs/learning/video-scripts/V04-memory-retrieval-supplement.md +13 -0
  23. package/docs/learning/video-scripts/V09-workspace-routing-supplement.md +36 -0
  24. package/docs/mcp-tool-profiles.md +7 -0
  25. package/docs/memory-retrieval.md +84 -2
  26. package/docs/operating.md +5 -0
  27. package/docs/privacy-and-data-flow.md +13 -4
  28. package/examples/eval/bundled-fake.json +1 -1
  29. package/mcp-memory-server/dist/anythingllm-workspace.js +109 -0
  30. package/mcp-memory-server/dist/index.js +41 -6
  31. package/mcp-memory-server/dist/mcp-tool-catalog.js +4 -1
  32. package/mcp-memory-server/dist/memory-reranker.js +109 -0
  33. package/mcp-memory-server/package.json +4 -2
  34. package/package.json +2 -2
  35. package/scripts/doctor.sh +17 -0
  36. package/scripts/probe-memory-reranker.mjs +22 -0
  37. package/scripts/test-container-health.mjs +2 -0
  38. package/scripts/test-container.sh +21 -1
  39. package/scripts/test-dependency-security.mjs +50 -0
  40. package/scripts/test-dependency-security.sh +4 -0
  41. package/scripts/test-doctor.sh +28 -0
  42. package/scripts/test-windows-native.mjs +5 -0
  43. package/scripts/verify-dependency-security.mjs +22 -2
  44. package/scripts/windows-platform.mjs +8 -0
@@ -7,9 +7,10 @@ const ROOT = resolve(process.cwd());
7
7
  const MINIMUM_SDK = [1, 32, 1];
8
8
  const MINIMUM_NODE_SERVER = [2, 0, 5];
9
9
  const TRANSITIVE_MINIMUMS = new Map([
10
- ["fast-uri", [3, 1, 8]],
10
+ ["body-parser", [2, 4, 0]],
11
+ ["fast-uri", [3, 1, 9]],
11
12
  ["hono", [4, 13, 13]],
12
- ["ip-address", [10, 7, 3]],
13
+ ["ip-address", [10, 7, 4]],
13
14
  ["proxy-addr", [2, 0, 8]],
14
15
  ]);
15
16
  const DIRECT_HONO_PACKAGES = new Set(["hono", "@hono/node-server"]);
@@ -130,8 +131,27 @@ function verifyPackageRoot({ label, directory }) {
130
131
  }
131
132
  }
132
133
 
134
+ function verifySchemaDependencyParity() {
135
+ let expectedRange;
136
+ let expectedVersion;
137
+ for (const { label, directory } of PACKAGE_ROOTS) {
138
+ const manifest = readJson(`${directory}/package.json`);
139
+ const lock = readJson(`${directory}/package-lock.json`);
140
+ const range = manifest.dependencies?.zod;
141
+ assert.equal(typeof range, "string", `${label}: direct Zod range is missing`);
142
+ assert.equal(lock.packages?.[""].dependencies?.zod, range, `${label}: manifest and lock root Zod ranges differ`);
143
+ const version = lock.packages?.["node_modules/zod"]?.version;
144
+ parseVersion(version, `${label} direct Zod`);
145
+ expectedRange ??= range;
146
+ expectedVersion ??= version;
147
+ assert.equal(range, expectedRange, "root and server Zod ranges differ");
148
+ assert.equal(version, expectedVersion, "root and server resolved Zod versions differ");
149
+ }
150
+ }
151
+
133
152
  try {
134
153
  PACKAGE_ROOTS.forEach(verifyPackageRoot);
154
+ verifySchemaDependencyParity();
135
155
  process.stdout.write("PASS: dependency manifests and lock graphs exclude known MCP transport advisories\n");
136
156
  } catch (error) {
137
157
  process.stderr.write(`FAIL: dependency security policy: ${error instanceof Error ? error.message : String(error)}\n`);
@@ -526,6 +526,14 @@ async function doctorWindows(root, args) {
526
526
  } catch { line("FAIL", `embedding endpoint request failed (${process.env.CAIRN_MEMORY_EMBEDDING_URL})`); }
527
527
  }
528
528
  } else line("SKIP", "embedding endpoint unset");
529
+ if (process.env.CAIRN_MEMORY_RERANK === "1") {
530
+ let status = 3;
531
+ try { status = await (await import("./probe-memory-reranker.mjs")).probeMemoryReranker(); } catch {}
532
+ line(status === 0 ? "PASS" : "FAIL", status === 0
533
+ ? "memory reranker accepted a synthetic ranking request"
534
+ : status === 2 ? "memory reranker configuration invalid — set URL/model and a timeout within 100–10000 ms"
535
+ : "memory reranker unavailable or returned invalid ranking data — search falls back to its existing order");
536
+ } else line("SKIP", "memory reranker unset/not 1");
529
537
  const provider = process.env.CAIRN_GIT_PROVIDER?.trim();
530
538
  if (!provider || provider === "none") line("SKIP", "git provider unset/none; collaboration commands are off");
531
539
  else if (["github", "gitlab", "codeberg", "forgejo"].includes(provider)) line("PASS", `git provider configured: ${provider}`);