mneme-ai 2.64.0 → 2.65.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/index.d.ts.map +1 -1
- package/dist/index.js +137 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,CAgjMvD"}
|
package/dist/index.js
CHANGED
|
@@ -4682,6 +4682,143 @@ export async function run(argv) {
|
|
|
4682
4682
|
process.exitCode = 1;
|
|
4683
4683
|
}
|
|
4684
4684
|
});
|
|
4685
|
+
// v2.65.0 — SWARM BUS: cross-agent message bus.
|
|
4686
|
+
const swarmBusParent = program
|
|
4687
|
+
.command("swarm_bus")
|
|
4688
|
+
.description("v2.65 — cross-agent message bus. Default action = audit ledger.")
|
|
4689
|
+
.action(async () => {
|
|
4690
|
+
try {
|
|
4691
|
+
const core = await import("@mneme-ai/core");
|
|
4692
|
+
const led = core.swarmBus.verifyLedgerChain(process.cwd());
|
|
4693
|
+
const rows = core.swarmBus.readLedger(process.cwd());
|
|
4694
|
+
process.stdout.write(JSON.stringify({ ok: led.ok, rows: led.rows, brokenAt: led.brokenAt, channels: core.swarmBus.listChannels(process.cwd()), 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
|
+
swarmBusParent.command("subscribe")
|
|
4702
|
+
.description("Subscribe an agent to a channel. Auto-creates public channel if not exists.")
|
|
4703
|
+
.requiredOption("--channel <name>", "Channel name")
|
|
4704
|
+
.requiredOption("--agent <id>", "Agent id")
|
|
4705
|
+
.option("--passport <token>", "Capability passport (required for private channels)")
|
|
4706
|
+
.action(async (opts) => {
|
|
4707
|
+
try {
|
|
4708
|
+
const core = await import("@mneme-ai/core");
|
|
4709
|
+
const r = await core.swarmBus.subscribe({ channel: opts.channel, agent: opts.agent, passportToken: opts.passport, cwd: process.cwd() });
|
|
4710
|
+
process.stdout.write(JSON.stringify(r, null, 2) + "\n");
|
|
4711
|
+
if (!r.ok)
|
|
4712
|
+
process.exitCode = 1;
|
|
4713
|
+
}
|
|
4714
|
+
catch (e) {
|
|
4715
|
+
process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
|
|
4716
|
+
process.exitCode = 1;
|
|
4717
|
+
}
|
|
4718
|
+
});
|
|
4719
|
+
swarmBusParent.command("broadcast")
|
|
4720
|
+
.description("Broadcast a message to a channel. Optional artifact HMAC for tamper-evident handoffs.")
|
|
4721
|
+
.requiredOption("--channel <name>", "Channel name")
|
|
4722
|
+
.requiredOption("--from <agent>", "Sender agent id")
|
|
4723
|
+
.requiredOption("--text <text>", "Message text")
|
|
4724
|
+
.option("--artifact-path <path>", "Optional relative path to artifact")
|
|
4725
|
+
.option("--artifact-hmac <hash>", "Optional HMAC/SHA of artifact for tamper detection")
|
|
4726
|
+
.option("--passport <token>", "Capability passport (required for private channels)")
|
|
4727
|
+
.action(async (opts) => {
|
|
4728
|
+
try {
|
|
4729
|
+
const core = await import("@mneme-ai/core");
|
|
4730
|
+
const r = await core.swarmBus.broadcast({ channel: opts.channel, from: opts.from, text: opts.text, artifactPath: opts.artifactPath, artifactHmac: opts.artifactHmac, passportToken: opts.passport, cwd: process.cwd() });
|
|
4731
|
+
process.stdout.write(JSON.stringify(r, null, 2) + "\n");
|
|
4732
|
+
if (!r.ok)
|
|
4733
|
+
process.exitCode = 1;
|
|
4734
|
+
}
|
|
4735
|
+
catch (e) {
|
|
4736
|
+
process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
|
|
4737
|
+
process.exitCode = 1;
|
|
4738
|
+
}
|
|
4739
|
+
});
|
|
4740
|
+
swarmBusParent.command("drain")
|
|
4741
|
+
.description("Drain (pop) pending messages for an agent. Returns inbox content + clears it.")
|
|
4742
|
+
.requiredOption("--agent <id>", "Agent id")
|
|
4743
|
+
.option("--channel <name>", "Optional channel filter")
|
|
4744
|
+
.option("--limit <n>", "Max messages to drain", (v) => Number(v))
|
|
4745
|
+
.option("--banner", "Render ASCII inbox banner")
|
|
4746
|
+
.action(async (opts) => {
|
|
4747
|
+
try {
|
|
4748
|
+
const core = await import("@mneme-ai/core");
|
|
4749
|
+
const r = core.swarmBus.drain({ agent: opts.agent, channel: opts.channel, limit: opts.limit, cwd: process.cwd() });
|
|
4750
|
+
if (opts.banner)
|
|
4751
|
+
process.stdout.write(core.swarmBus.renderInbox(r.messages) + "\n");
|
|
4752
|
+
else
|
|
4753
|
+
process.stdout.write(JSON.stringify(r, null, 2) + "\n");
|
|
4754
|
+
}
|
|
4755
|
+
catch (e) {
|
|
4756
|
+
process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
|
|
4757
|
+
process.exitCode = 1;
|
|
4758
|
+
}
|
|
4759
|
+
});
|
|
4760
|
+
swarmBusParent.command("peek")
|
|
4761
|
+
.description("Peek at an agent's inbox without consuming.")
|
|
4762
|
+
.requiredOption("--agent <id>", "Agent id")
|
|
4763
|
+
.action(async (opts) => {
|
|
4764
|
+
try {
|
|
4765
|
+
const core = await import("@mneme-ai/core");
|
|
4766
|
+
const messages = core.swarmBus.peekInbox(process.cwd(), opts.agent);
|
|
4767
|
+
process.stdout.write(JSON.stringify({ ok: true, count: messages.length, messages }, null, 2) + "\n");
|
|
4768
|
+
}
|
|
4769
|
+
catch (e) {
|
|
4770
|
+
process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
|
|
4771
|
+
process.exitCode = 1;
|
|
4772
|
+
}
|
|
4773
|
+
});
|
|
4774
|
+
swarmBusParent.command("handoff")
|
|
4775
|
+
.description("Render the agent → agent → agent handoff chain for a channel with HMAC proof per step.")
|
|
4776
|
+
.requiredOption("--channel <name>", "Channel name")
|
|
4777
|
+
.option("--banner", "Render ASCII")
|
|
4778
|
+
.action(async (opts) => {
|
|
4779
|
+
try {
|
|
4780
|
+
const core = await import("@mneme-ai/core");
|
|
4781
|
+
const r = core.swarmBus.auditHandoff(process.cwd(), opts.channel);
|
|
4782
|
+
if (opts.banner)
|
|
4783
|
+
process.stdout.write(r.rendered + "\n");
|
|
4784
|
+
else
|
|
4785
|
+
process.stdout.write(JSON.stringify(r, null, 2) + "\n");
|
|
4786
|
+
}
|
|
4787
|
+
catch (e) {
|
|
4788
|
+
process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
|
|
4789
|
+
process.exitCode = 1;
|
|
4790
|
+
}
|
|
4791
|
+
});
|
|
4792
|
+
swarmBusParent.command("channels")
|
|
4793
|
+
.description("List all channels with kind + subscriber count + Lamport clock.")
|
|
4794
|
+
.action(async () => {
|
|
4795
|
+
try {
|
|
4796
|
+
const core = await import("@mneme-ai/core");
|
|
4797
|
+
const channels = core.swarmBus.listChannels(process.cwd());
|
|
4798
|
+
process.stdout.write(JSON.stringify({ ok: true, count: channels.length, channels }, null, 2) + "\n");
|
|
4799
|
+
}
|
|
4800
|
+
catch (e) {
|
|
4801
|
+
process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
|
|
4802
|
+
process.exitCode = 1;
|
|
4803
|
+
}
|
|
4804
|
+
});
|
|
4805
|
+
swarmBusParent.command("audit")
|
|
4806
|
+
.description("Verify HMAC-chained bus ledger + show last N entries.")
|
|
4807
|
+
.option("--limit <n>", "Max rows", (v) => Number(v), 20)
|
|
4808
|
+
.action(async (opts) => {
|
|
4809
|
+
try {
|
|
4810
|
+
const core = await import("@mneme-ai/core");
|
|
4811
|
+
const led = core.swarmBus.verifyLedgerChain(process.cwd());
|
|
4812
|
+
const rows = core.swarmBus.readLedger(process.cwd());
|
|
4813
|
+
process.stdout.write(JSON.stringify({ ok: led.ok, totalRows: led.rows, brokenAt: led.brokenAt, recent: rows.slice(-(opts.limit ?? 20)) }, null, 2) + "\n");
|
|
4814
|
+
if (!led.ok)
|
|
4815
|
+
process.exitCode = 1;
|
|
4816
|
+
}
|
|
4817
|
+
catch (e) {
|
|
4818
|
+
process.stdout.write(JSON.stringify({ ok: false, error: e.message }) + "\n");
|
|
4819
|
+
process.exitCode = 1;
|
|
4820
|
+
}
|
|
4821
|
+
});
|
|
4685
4822
|
// v2.64.0 — DIFFERENTIAL ARENA: multi-vendor consensus by default.
|
|
4686
4823
|
const diffArenaParent = program
|
|
4687
4824
|
.command("diff_arena")
|