mneme-ai 2.63.0 → 2.64.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuIA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA63LvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuIA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAq7LvD"}
package/dist/index.js CHANGED
@@ -4682,6 +4682,68 @@ export async function run(argv) {
4682
4682
  process.exitCode = 1;
4683
4683
  }
4684
4684
  });
4685
+ // v2.64.0 — DIFFERENTIAL ARENA: multi-vendor consensus by default.
4686
+ const diffArenaParent = program
4687
+ .command("diff_arena")
4688
+ .description("v2.64 — multi-vendor consensus. Default action = audit ledger.")
4689
+ .action(async () => {
4690
+ try {
4691
+ const core = await import("@mneme-ai/core");
4692
+ const led = core.diffArena.verifyLedgerChain(process.cwd());
4693
+ const rows = core.diffArena.readLedger(process.cwd());
4694
+ process.stdout.write(JSON.stringify({ ok: led.ok, rows: led.rows, brokenAt: led.brokenAt, recent: rows.slice(-10) }, null, 2) + "\n");
4695
+ }
4696
+ catch (e) {
4697
+ process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
4698
+ process.exitCode = 1;
4699
+ }
4700
+ });
4701
+ diffArenaParent.command("ask")
4702
+ .description("Ask the same prompt to multiple vendors in parallel; return consensus + suggested answer. Default: 2 mock vendors (offline demo).")
4703
+ .requiredOption("--prompt <text>", "Prompt to send")
4704
+ .option("--vendors <list>", "Comma-separated vendor specs. Format: 'name:kind' where kind=mock. Real http/cli wiring needs JS config.", (v) => v.split(",").map((s) => s.trim()).filter(Boolean), ["claude:mock", "gpt:mock", "gemini:mock"])
4705
+ .option("--banner", "Render ASCII banner instead of JSON")
4706
+ .action(async (opts) => {
4707
+ try {
4708
+ const core = await import("@mneme-ai/core");
4709
+ const vendors = (opts.vendors ?? ["claude:mock", "gpt:mock", "gemini:mock"]).map((spec) => {
4710
+ const [name, kind] = spec.split(":");
4711
+ if (kind === "mock")
4712
+ return core.diffArena.mockAdapter({ name: name ?? "unknown" });
4713
+ throw new Error(`CLI only supports mock vendors; got '${kind}'. For http/cli adapters use the SDK programmatically.`);
4714
+ });
4715
+ const r = await core.diffArena.diffArenaAsk({
4716
+ prompt: opts.prompt,
4717
+ vendors,
4718
+ cwd: process.cwd(),
4719
+ });
4720
+ if (opts.banner)
4721
+ process.stdout.write(core.diffArena.renderArenaBanner(r) + "\n");
4722
+ else
4723
+ process.stdout.write(JSON.stringify(r, null, 2) + "\n");
4724
+ }
4725
+ catch (e) {
4726
+ process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
4727
+ process.exitCode = 1;
4728
+ }
4729
+ });
4730
+ diffArenaParent.command("audit")
4731
+ .description("Verify HMAC-chained rounds ledger + last N entries.")
4732
+ .option("--limit <n>", "Max rows", (v) => Number(v), 20)
4733
+ .action(async (opts) => {
4734
+ try {
4735
+ const core = await import("@mneme-ai/core");
4736
+ const led = core.diffArena.verifyLedgerChain(process.cwd());
4737
+ const rows = core.diffArena.readLedger(process.cwd());
4738
+ process.stdout.write(JSON.stringify({ ok: led.ok, totalRows: led.rows, brokenAt: led.brokenAt, recent: rows.slice(-(opts.limit ?? 20)) }, null, 2) + "\n");
4739
+ if (!led.ok)
4740
+ process.exitCode = 1;
4741
+ }
4742
+ catch (e) {
4743
+ process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
4744
+ process.exitCode = 1;
4745
+ }
4746
+ });
4685
4747
  // v2.63.0 — TIME-CRYSTAL: federated agent wisdom.
4686
4748
  // When agent A hits problem P → "342 agents saw same in 7 days; 89%
4687
4749
  // used X; 11% tried Y but broke on pnpm".