@neuroverseos/governance 0.10.0 → 0.12.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 (95) hide show
  1. package/dist/adapters/autoresearch.cjs +19 -1
  2. package/dist/adapters/autoresearch.d.cts +1 -1
  3. package/dist/adapters/autoresearch.d.ts +1 -1
  4. package/dist/adapters/autoresearch.js +2 -2
  5. package/dist/adapters/deep-agents.cjs +19 -1
  6. package/dist/adapters/deep-agents.d.cts +2 -2
  7. package/dist/adapters/deep-agents.d.ts +2 -2
  8. package/dist/adapters/deep-agents.js +2 -2
  9. package/dist/adapters/express.cjs +19 -1
  10. package/dist/adapters/express.d.cts +1 -1
  11. package/dist/adapters/express.d.ts +1 -1
  12. package/dist/adapters/express.js +2 -2
  13. package/dist/adapters/github.cjs +19 -1
  14. package/dist/adapters/github.d.cts +2 -2
  15. package/dist/adapters/github.d.ts +2 -2
  16. package/dist/adapters/github.js +2 -2
  17. package/dist/adapters/index.cjs +19 -1
  18. package/dist/adapters/index.d.cts +2 -2
  19. package/dist/adapters/index.d.ts +2 -2
  20. package/dist/adapters/index.js +8 -8
  21. package/dist/adapters/langchain.cjs +19 -1
  22. package/dist/adapters/langchain.d.cts +2 -2
  23. package/dist/adapters/langchain.d.ts +2 -2
  24. package/dist/adapters/langchain.js +2 -2
  25. package/dist/adapters/mentraos.cjs +19 -1
  26. package/dist/adapters/mentraos.d.cts +2 -2
  27. package/dist/adapters/mentraos.d.ts +2 -2
  28. package/dist/adapters/mentraos.js +2 -2
  29. package/dist/adapters/openai.cjs +19 -1
  30. package/dist/adapters/openai.d.cts +2 -2
  31. package/dist/adapters/openai.d.ts +2 -2
  32. package/dist/adapters/openai.js +2 -2
  33. package/dist/adapters/openclaw.cjs +19 -1
  34. package/dist/adapters/openclaw.d.cts +2 -2
  35. package/dist/adapters/openclaw.d.ts +2 -2
  36. package/dist/adapters/openclaw.js +2 -2
  37. package/dist/admin/index.cjs +19 -1
  38. package/dist/admin/index.js +1 -1
  39. package/dist/audit-JYNN3MOQ.js +98 -0
  40. package/dist/audit-behavior-C62FdRAC.d.cts +100 -0
  41. package/dist/audit-behavior-DFy7LeYv.d.ts +100 -0
  42. package/dist/{behavioral-SPWPGYXL.js → behavioral-4TKMHZQZ.js} +2 -2
  43. package/dist/{chunk-OQU65525.js → chunk-24YW7BHC.js} +1 -1
  44. package/dist/{chunk-BZYQHJDM.js → chunk-2KTPIE57.js} +25 -5
  45. package/dist/{chunk-TJ5L2UTE.js → chunk-5K3LATTM.js} +1 -1
  46. package/dist/{chunk-HDNDL6D5.js → chunk-5LDBYOSJ.js} +1 -1
  47. package/dist/{chunk-FDPPZLSQ.js → chunk-5ZWKM7MO.js} +1 -1
  48. package/dist/{chunk-B3IIPTY3.js → chunk-6MB6TMAG.js} +1 -1
  49. package/dist/{chunk-IOVXB6QN.js → chunk-GXTAHCND.js} +1 -1
  50. package/dist/{chunk-FKQCPRKI.js → chunk-MAOIHKFO.js} +1 -1
  51. package/dist/{chunk-ZAF6JH23.js → chunk-MBOW6YXN.js} +19 -1
  52. package/dist/{chunk-A2UZTLRV.js → chunk-MLXKSX3L.js} +1 -1
  53. package/dist/{chunk-7FL3U7Z5.js → chunk-MWGEXHOD.js} +1 -1
  54. package/dist/{chunk-6CV4XG3J.js → chunk-QFDFAWZ6.js} +1 -1
  55. package/dist/{chunk-2VAWP6FI.js → chunk-RAS62JXV.js} +1 -1
  56. package/dist/{chunk-OTZU76DH.js → chunk-XAF3CYCW.js} +1 -1
  57. package/dist/{chunk-T6GMRZWC.js → chunk-XTYQCTDD.js} +1 -1
  58. package/dist/{chunk-TIXVEPS2.js → chunk-YN7OI5ZV.js} +1 -1
  59. package/dist/cli/neuroverse.cjs +229 -93
  60. package/dist/cli/neuroverse.js +16 -12
  61. package/dist/cli/plan.cjs +18 -0
  62. package/dist/cli/radiant.cjs +42 -4
  63. package/dist/cli/radiant.js +3 -3
  64. package/dist/cli/run.cjs +18 -0
  65. package/dist/cli/run.js +4 -4
  66. package/dist/{decision-flow-IJPNMVQK.js → decision-flow-5VI5YG6A.js} +2 -2
  67. package/dist/{demo-6W3YXLAX.js → demo-GYX6CYHC.js} +2 -2
  68. package/dist/engine/guard-engine.cjs +19 -1
  69. package/dist/engine/guard-engine.d.cts +21 -1
  70. package/dist/engine/guard-engine.d.ts +21 -1
  71. package/dist/engine/guard-engine.js +1 -1
  72. package/dist/{equity-penalties-CCO3GVHS.js → equity-penalties-NOM46NEO.js} +2 -2
  73. package/dist/{guard-IHJEKHL2.js → guard-PQ3SYV4Y.js} +3 -3
  74. package/dist/{guard-contract-ddiIPlOg.d.cts → guard-contract-Oznf-Kgq.d.cts} +32 -0
  75. package/dist/{guard-contract-q6HJAq3Q.d.ts → guard-contract-w_i_6gh-.d.ts} +32 -0
  76. package/dist/{impact-WIAM66IH.js → impact-LDJLTVRU.js} +3 -3
  77. package/dist/index.cjs +62 -1
  78. package/dist/index.d.cts +4 -3
  79. package/dist/index.d.ts +4 -3
  80. package/dist/index.js +49 -8
  81. package/dist/{mcp-server-CKYBHXWK.js → mcp-server-W3MWSKD7.js} +2 -2
  82. package/dist/{playground-3TTBN7XD.js → playground-SSZRNUAF.js} +1 -1
  83. package/dist/radiant/index.cjs +450 -5
  84. package/dist/radiant/index.d.cts +151 -1
  85. package/dist/radiant/index.d.ts +151 -1
  86. package/dist/radiant/index.js +405 -2
  87. package/dist/{redteam-W644UMWN.js → redteam-KCULS7EW.js} +1 -1
  88. package/dist/{server-EI5JCIBU.js → server-EGRGGSM2.js} +2 -2
  89. package/dist/{session-FMAROEIE.js → session-PZLTL22G.js} +2 -2
  90. package/dist/{shared-PpalGKxc.d.cts → shared-BC8mOpt0.d.cts} +1 -1
  91. package/dist/{shared-DAzdfWtU.d.ts → shared-CP63gNNW.d.ts} +1 -1
  92. package/dist/{test-XDB2DH3L.js → test-LIHGWHBA.js} +1 -1
  93. package/dist/{trace-2YDNAXMK.js → trace-DC3D7XPD.js} +2 -2
  94. package/package.json +1 -1
  95. /package/dist/{doctor-XEMLO6UA.js → doctor-SIWQGTAO.js} +0 -0
@@ -6332,6 +6332,24 @@ function isExternalScope(scope) {
6332
6332
  return !internalPatterns.some((p) => p.test(scope));
6333
6333
  }
6334
6334
  function evaluateGuard(event, world, options = {}) {
6335
+ const verdict = evaluateGuardCore(event, world, options);
6336
+ return options.mode === "observe" ? toShadowVerdict(verdict) : verdict;
6337
+ }
6338
+ function toShadowVerdict(verdict) {
6339
+ if (verdict.status === "ALLOW") return verdict;
6340
+ return {
6341
+ ...verdict,
6342
+ status: "ALLOW",
6343
+ shadowStatus: verdict.status,
6344
+ shadowReason: verdict.reason,
6345
+ // Preserve the original reason as shadowReason and wipe the
6346
+ // top-level reason so callers that display `reason` for BLOCK/PAUSE
6347
+ // don't accidentally surface an enforcement message.
6348
+ reason: void 0,
6349
+ warning: verdict.reason ? `Observe mode: would have ${verdict.status.toLowerCase()} \u2014 ${verdict.reason}` : `Observe mode: would have ${verdict.status.toLowerCase()}`
6350
+ };
6351
+ }
6352
+ function evaluateGuardCore(event, world, options = {}) {
6335
6353
  const startTime = performance.now();
6336
6354
  const level = options.level ?? "standard";
6337
6355
  const includeTrace = options.trace ?? false;
@@ -7647,10 +7665,104 @@ var init_guard = __esm({
7647
7665
  }
7648
7666
  });
7649
7667
 
7668
+ // src/cli/audit.ts
7669
+ var audit_exports = {};
7670
+ __export(audit_exports, {
7671
+ main: () => main12
7672
+ });
7673
+ function parseArgs12(argv) {
7674
+ let worldPath = "";
7675
+ let trace = false;
7676
+ let level;
7677
+ let multi = false;
7678
+ let crossingsOnly = false;
7679
+ for (let i = 0; i < argv.length; i++) {
7680
+ const a = argv[i];
7681
+ if (a === "--world") worldPath = argv[++i] ?? "";
7682
+ else if (a === "--trace") trace = true;
7683
+ else if (a === "--level") {
7684
+ const v = argv[++i];
7685
+ if (v === "basic" || v === "standard" || v === "strict") level = v;
7686
+ } else if (a === "--multi") multi = true;
7687
+ else if (a === "--crossings-only") crossingsOnly = true;
7688
+ }
7689
+ return { worldPath, trace, level, multi, crossingsOnly };
7690
+ }
7691
+ function usage() {
7692
+ process.stderr.write(
7693
+ "Usage: neuroverse audit --world <path> [--trace] [--level basic|standard|strict] [--multi] [--crossings-only]\n\nReads GuardEvent JSON from stdin. With --multi, reads a JSON array.\nEvaluates in observe mode \u2014 no enforcement. Verdicts carry\nshadowStatus/shadowReason for any event that would have crossed.\n"
7694
+ );
7695
+ }
7696
+ async function main12(argv = process.argv.slice(2)) {
7697
+ const args = parseArgs12(argv);
7698
+ if (!args.worldPath) {
7699
+ usage();
7700
+ process.exit(1);
7701
+ }
7702
+ let world;
7703
+ try {
7704
+ const resolved = resolveWorldPath(args.worldPath);
7705
+ if (!resolved) {
7706
+ process.stderr.write(`Failed to resolve world path: ${args.worldPath}
7707
+ `);
7708
+ process.exit(1);
7709
+ }
7710
+ world = await loadWorld(resolved);
7711
+ } catch (err) {
7712
+ process.stderr.write(`Failed to load world: ${err instanceof Error ? err.message : err}
7713
+ `);
7714
+ process.exit(1);
7715
+ }
7716
+ let raw = "";
7717
+ try {
7718
+ raw = await readStdin();
7719
+ } catch (err) {
7720
+ process.stderr.write(`Failed to read stdin: ${err instanceof Error ? err.message : err}
7721
+ `);
7722
+ process.exit(1);
7723
+ }
7724
+ if (!raw.trim()) {
7725
+ process.stderr.write("No input on stdin. Pipe a GuardEvent or a JSON array with --multi.\n");
7726
+ process.exit(1);
7727
+ }
7728
+ let parsed;
7729
+ try {
7730
+ parsed = JSON.parse(raw);
7731
+ } catch (err) {
7732
+ process.stderr.write(`Invalid JSON on stdin: ${err instanceof Error ? err.message : err}
7733
+ `);
7734
+ process.exit(1);
7735
+ }
7736
+ const options = { trace: args.trace, level: args.level, mode: "observe" };
7737
+ if (args.multi) {
7738
+ if (!Array.isArray(parsed)) {
7739
+ process.stderr.write("--multi expects a JSON array on stdin.\n");
7740
+ process.exit(1);
7741
+ }
7742
+ const verdicts = parsed.map(
7743
+ (e) => evaluateGuard(e, world, options)
7744
+ );
7745
+ const out = args.crossingsOnly ? verdicts.filter((v) => v.shadowStatus && v.shadowStatus !== "ALLOW") : verdicts;
7746
+ process.stdout.write(JSON.stringify(out, null, 2) + "\n");
7747
+ return;
7748
+ }
7749
+ const verdict = evaluateGuard(parsed, world, options);
7750
+ process.stdout.write(JSON.stringify(verdict, null, 2) + "\n");
7751
+ }
7752
+ var init_audit = __esm({
7753
+ "src/cli/audit.ts"() {
7754
+ "use strict";
7755
+ init_guard_engine();
7756
+ init_world_loader();
7757
+ init_world_resolver();
7758
+ init_cli_utils();
7759
+ }
7760
+ });
7761
+
7650
7762
  // src/cli/test.ts
7651
7763
  var test_exports = {};
7652
7764
  __export(test_exports, {
7653
- main: () => main12
7765
+ main: () => main13
7654
7766
  });
7655
7767
  function generateFuzzEvent() {
7656
7768
  const verb = FUZZ_VERBS[Math.floor(Math.random() * FUZZ_VERBS.length)];
@@ -7668,7 +7780,7 @@ function generateFuzzEvent() {
7668
7780
  }
7669
7781
  };
7670
7782
  }
7671
- function parseArgs12(argv) {
7783
+ function parseArgs13(argv) {
7672
7784
  let worldPath;
7673
7785
  let fuzz = false;
7674
7786
  let count = 20;
@@ -7684,8 +7796,8 @@ function parseArgs12(argv) {
7684
7796
  }
7685
7797
  return { worldPath, fuzz, count, json, level };
7686
7798
  }
7687
- async function main12(argv) {
7688
- const args = parseArgs12(argv);
7799
+ async function main13(argv) {
7800
+ const args = parseArgs13(argv);
7689
7801
  if (!args.worldPath) {
7690
7802
  process.stderr.write("Usage: neuroverse test --world <dir> [--fuzz] [--count N] [--json]\n");
7691
7803
  process.exit(1);
@@ -7868,9 +7980,9 @@ var init_test = __esm({
7868
7980
  // src/cli/redteam.ts
7869
7981
  var redteam_exports = {};
7870
7982
  __export(redteam_exports, {
7871
- main: () => main13
7983
+ main: () => main14
7872
7984
  });
7873
- function parseArgs13(argv) {
7985
+ function parseArgs14(argv) {
7874
7986
  let worldPath;
7875
7987
  let level = "standard";
7876
7988
  let json = false;
@@ -7882,8 +7994,8 @@ function parseArgs13(argv) {
7882
7994
  }
7883
7995
  return { worldPath, level, json };
7884
7996
  }
7885
- async function main13(argv) {
7886
- const args = parseArgs13(argv);
7997
+ async function main14(argv) {
7998
+ const args = parseArgs14(argv);
7887
7999
  if (!args.worldPath) {
7888
8000
  process.stderr.write("Usage: neuroverse redteam --world <dir> [--level basic|standard|strict] [--json]\n");
7889
8001
  process.exit(1);
@@ -8585,9 +8697,9 @@ var init_behavioral_engine = __esm({
8585
8697
  // src/cli/demo.ts
8586
8698
  var demo_exports = {};
8587
8699
  __export(demo_exports, {
8588
- main: () => main14
8700
+ main: () => main15
8589
8701
  });
8590
- async function main14(args) {
8702
+ async function main15(args) {
8591
8703
  let port = 3456;
8592
8704
  let worldName;
8593
8705
  let noBrowser = false;
@@ -11425,9 +11537,9 @@ var init_ = __esm({
11425
11537
  // src/cli/doctor.ts
11426
11538
  var doctor_exports = {};
11427
11539
  __export(doctor_exports, {
11428
- main: () => main15
11540
+ main: () => main16
11429
11541
  });
11430
- async function main15(argv) {
11542
+ async function main16(argv) {
11431
11543
  const json = argv.includes("--json");
11432
11544
  let worldPath;
11433
11545
  for (let i = 0; i < argv.length; i++) {
@@ -11589,7 +11701,7 @@ var init_doctor = __esm({
11589
11701
  // src/cli/playground.ts
11590
11702
  var playground_exports = {};
11591
11703
  __export(playground_exports, {
11592
- main: () => main16
11704
+ main: () => main17
11593
11705
  });
11594
11706
  function buildPlaygroundHtml(world, healthSummary) {
11595
11707
  const worldName = world.world.name;
@@ -12015,7 +12127,7 @@ function esc(s) {
12015
12127
  function esc(s) {
12016
12128
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
12017
12129
  }
12018
- function parseArgs14(argv) {
12130
+ function parseArgs15(argv) {
12019
12131
  let worldPath;
12020
12132
  let port = 4242;
12021
12133
  for (let i = 0; i < argv.length; i++) {
@@ -12025,8 +12137,8 @@ function parseArgs14(argv) {
12025
12137
  }
12026
12138
  return { worldPath, port };
12027
12139
  }
12028
- async function main16(argv) {
12029
- const args = parseArgs14(argv);
12140
+ async function main17(argv) {
12141
+ const args = parseArgs15(argv);
12030
12142
  let world;
12031
12143
  if (args.worldPath) {
12032
12144
  try {
@@ -12317,7 +12429,7 @@ var init_plan_contract = __esm({
12317
12429
  // src/cli/plan.ts
12318
12430
  var plan_exports = {};
12319
12431
  __export(plan_exports, {
12320
- main: () => main17
12432
+ main: () => main18
12321
12433
  });
12322
12434
  function parseArg(args, flag) {
12323
12435
  const idx = args.indexOf(flag);
@@ -12607,7 +12719,7 @@ async function deriveCommand(args) {
12607
12719
  process.stdout.write(` Invariants: ${plan.constraints.length} (one per constraint)
12608
12720
  `);
12609
12721
  }
12610
- async function main17(args) {
12722
+ async function main18(args) {
12611
12723
  const subcommand = args[0];
12612
12724
  const subArgs = args.slice(1);
12613
12725
  switch (subcommand) {
@@ -13502,7 +13614,7 @@ var init_session = __esm({
13502
13614
  // src/cli/run.ts
13503
13615
  var run_exports = {};
13504
13616
  __export(run_exports, {
13505
- main: () => main18
13617
+ main: () => main19
13506
13618
  });
13507
13619
  function parseArg2(args, flag) {
13508
13620
  const idx = args.indexOf(flag);
@@ -13527,7 +13639,7 @@ function autoDetectPlan() {
13527
13639
  function loadPlan(path) {
13528
13640
  return JSON.parse((0, import_fs5.readFileSync)(path, "utf-8"));
13529
13641
  }
13530
- async function main18(args) {
13642
+ async function main19(args) {
13531
13643
  if (hasFlag(args, "--help") || hasFlag(args, "-h")) {
13532
13644
  process.stdout.write(RUN_USAGE + "\n");
13533
13645
  process.exit(0);
@@ -14280,9 +14392,9 @@ Progress: ${progress.completed}/${progress.total} (${progress.percentage}%)`;
14280
14392
  // src/cli/world.ts
14281
14393
  var world_exports = {};
14282
14394
  __export(world_exports, {
14283
- main: () => main19
14395
+ main: () => main20
14284
14396
  });
14285
- function parseArgs15(argv) {
14397
+ function parseArgs16(argv) {
14286
14398
  const subcommand = argv[0];
14287
14399
  const paths = [];
14288
14400
  const flags = {};
@@ -14560,8 +14672,8 @@ function worldCurrent(json) {
14560
14672
  process.stdout.write(`Source: ${info2.source}
14561
14673
  `);
14562
14674
  }
14563
- async function main19(argv = process.argv.slice(2)) {
14564
- const { subcommand, paths, flags } = parseArgs15(argv);
14675
+ async function main20(argv = process.argv.slice(2)) {
14676
+ const { subcommand, paths, flags } = parseArgs16(argv);
14565
14677
  if (flags.help || !subcommand) {
14566
14678
  process.stdout.write(USAGE + "\n");
14567
14679
  process.exit(0);
@@ -14652,9 +14764,9 @@ Options:
14652
14764
  // src/cli/trace.ts
14653
14765
  var trace_exports = {};
14654
14766
  __export(trace_exports, {
14655
- main: () => main20
14767
+ main: () => main21
14656
14768
  });
14657
- function parseArgs16(argv) {
14769
+ function parseArgs17(argv) {
14658
14770
  const args = {};
14659
14771
  for (let i = 0; i < argv.length; i++) {
14660
14772
  const arg = argv[i];
@@ -14738,8 +14850,8 @@ function formatSummary(events) {
14738
14850
  }
14739
14851
  return lines.join("\n");
14740
14852
  }
14741
- async function main20(argv = process.argv.slice(2)) {
14742
- const args = parseArgs16(argv);
14853
+ async function main21(argv = process.argv.slice(2)) {
14854
+ const args = parseArgs17(argv);
14743
14855
  if (args.help) {
14744
14856
  process.stdout.write(USAGE2 + "\n");
14745
14857
  process.exit(0);
@@ -15058,9 +15170,9 @@ var init_impact_report = __esm({
15058
15170
  // src/cli/impact.ts
15059
15171
  var impact_exports = {};
15060
15172
  __export(impact_exports, {
15061
- main: () => main21
15173
+ main: () => main22
15062
15174
  });
15063
- function parseArgs17(argv) {
15175
+ function parseArgs18(argv) {
15064
15176
  const args = {};
15065
15177
  for (let i = 0; i < argv.length; i++) {
15066
15178
  const arg = argv[i];
@@ -15070,8 +15182,8 @@ function parseArgs17(argv) {
15070
15182
  }
15071
15183
  return args;
15072
15184
  }
15073
- async function main21(argv = process.argv.slice(2)) {
15074
- const args = parseArgs17(argv);
15185
+ async function main22(argv = process.argv.slice(2)) {
15186
+ const args = parseArgs18(argv);
15075
15187
  if (args.help) {
15076
15188
  process.stdout.write(USAGE3 + "\n");
15077
15189
  process.exit(0);
@@ -15116,9 +15228,9 @@ repeat violations, and actor behavior patterns.
15116
15228
  // src/cli/behavioral.ts
15117
15229
  var behavioral_exports = {};
15118
15230
  __export(behavioral_exports, {
15119
- main: () => main22
15231
+ main: () => main23
15120
15232
  });
15121
- function parseArgs18(argv) {
15233
+ function parseArgs19(argv) {
15122
15234
  const args = {};
15123
15235
  for (let i = 0; i < argv.length; i++) {
15124
15236
  const arg = argv[i];
@@ -15128,8 +15240,8 @@ function parseArgs18(argv) {
15128
15240
  }
15129
15241
  return args;
15130
15242
  }
15131
- async function main22(argv = process.argv.slice(2)) {
15132
- const args = parseArgs18(argv);
15243
+ async function main23(argv = process.argv.slice(2)) {
15244
+ const args = parseArgs19(argv);
15133
15245
  if (args.help) {
15134
15246
  process.stdout.write(USAGE4 + "\n");
15135
15247
  process.exit(0);
@@ -15232,9 +15344,9 @@ and generates a human-readable narrative.
15232
15344
  // src/cli/derive.ts
15233
15345
  var derive_exports = {};
15234
15346
  __export(derive_exports, {
15235
- main: () => main23
15347
+ main: () => main24
15236
15348
  });
15237
- function parseArgs19(argv) {
15349
+ function parseArgs20(argv) {
15238
15350
  let inputPath = "";
15239
15351
  let outputPath = "./derived.nv-world.md";
15240
15352
  let validate = true;
@@ -15268,9 +15380,9 @@ function parseArgs19(argv) {
15268
15380
  if (!inputPath) throw new DeriveInputError("--input <path> is required");
15269
15381
  return { inputPath, outputPath, validate, dryRun, bootstrapDir, provider, model, endpoint };
15270
15382
  }
15271
- async function main23(argv = process.argv.slice(2)) {
15383
+ async function main24(argv = process.argv.slice(2)) {
15272
15384
  try {
15273
- const args = parseArgs19(argv);
15385
+ const args = parseArgs20(argv);
15274
15386
  const { result, exitCode, dryRunOutput } = await deriveWorld({
15275
15387
  inputPath: args.inputPath,
15276
15388
  outputPath: args.outputPath,
@@ -15380,9 +15492,9 @@ var init_derive = __esm({
15380
15492
  // src/cli/decision-flow.ts
15381
15493
  var decision_flow_exports = {};
15382
15494
  __export(decision_flow_exports, {
15383
- main: () => main24
15495
+ main: () => main25
15384
15496
  });
15385
- async function main24(args) {
15497
+ async function main25(args) {
15386
15498
  let logPath = ".neuroverse/audit.ndjson";
15387
15499
  let jsonOutput = false;
15388
15500
  for (let i = 0; i < args.length; i++) {
@@ -15439,7 +15551,7 @@ var init_decision_flow = __esm({
15439
15551
  // src/cli/equity-penalties.ts
15440
15552
  var equity_penalties_exports = {};
15441
15553
  __export(equity_penalties_exports, {
15442
- main: () => main25
15554
+ main: () => main26
15443
15555
  });
15444
15556
  function generateActionsForRound(agents, round2) {
15445
15557
  const actions = [];
@@ -15496,7 +15608,7 @@ function generateActionsForRound(agents, round2) {
15496
15608
  }
15497
15609
  return actions;
15498
15610
  }
15499
- async function main25(args) {
15611
+ async function main26(args) {
15500
15612
  let worldPath = "";
15501
15613
  let agentCount = 8;
15502
15614
  let rounds = 5;
@@ -15675,9 +15787,9 @@ var init_equity_penalties = __esm({
15675
15787
  // src/cli/keygen.ts
15676
15788
  var keygen_exports = {};
15677
15789
  __export(keygen_exports, {
15678
- main: () => main26
15790
+ main: () => main27
15679
15791
  });
15680
- function parseArgs20(argv) {
15792
+ function parseArgs21(argv) {
15681
15793
  let output = (0, import_path8.join)((0, import_os2.homedir)(), ".neuroverse", "keys");
15682
15794
  let name = "neuroverse";
15683
15795
  let force = false;
@@ -15696,8 +15808,8 @@ function parseArgs20(argv) {
15696
15808
  }
15697
15809
  return { output, name, force, help };
15698
15810
  }
15699
- async function main26(argv = process.argv.slice(2)) {
15700
- const args = parseArgs20(argv);
15811
+ async function main27(argv = process.argv.slice(2)) {
15812
+ const args = parseArgs21(argv);
15701
15813
  if (args.help) {
15702
15814
  process.stdout.write(USAGE5 + "\n");
15703
15815
  return;
@@ -15760,9 +15872,9 @@ var sign_exports = {};
15760
15872
  __export(sign_exports, {
15761
15873
  buildManifest: () => buildManifest,
15762
15874
  canonicalManifest: () => canonicalManifest,
15763
- main: () => main27
15875
+ main: () => main28
15764
15876
  });
15765
- function parseArgs21(argv) {
15877
+ function parseArgs22(argv) {
15766
15878
  let worldPath = "";
15767
15879
  let keyPath = (0, import_path9.join)((0, import_os3.homedir)(), ".neuroverse", "keys", "neuroverse.key");
15768
15880
  let help = false;
@@ -15806,8 +15918,8 @@ function canonicalManifest(files) {
15806
15918
  const sorted = Object.keys(files).sort();
15807
15919
  return sorted.map((k) => `${k}:${files[k]}`).join("\n");
15808
15920
  }
15809
- async function main27(argv = process.argv.slice(2)) {
15810
- const args = parseArgs21(argv);
15921
+ async function main28(argv = process.argv.slice(2)) {
15922
+ const args = parseArgs22(argv);
15811
15923
  if (args.help) {
15812
15924
  process.stdout.write(USAGE6 + "\n");
15813
15925
  return;
@@ -15872,9 +15984,9 @@ Examples:
15872
15984
  // src/cli/verify.ts
15873
15985
  var verify_exports = {};
15874
15986
  __export(verify_exports, {
15875
- main: () => main28
15987
+ main: () => main29
15876
15988
  });
15877
- function parseArgs22(argv) {
15989
+ function parseArgs23(argv) {
15878
15990
  let worldPath = "";
15879
15991
  let keyPath = (0, import_path10.join)((0, import_os4.homedir)(), ".neuroverse", "keys", "neuroverse.pub");
15880
15992
  let json = false;
@@ -15893,8 +16005,8 @@ function parseArgs22(argv) {
15893
16005
  }
15894
16006
  return { worldPath, keyPath, json, help };
15895
16007
  }
15896
- async function main28(argv = process.argv.slice(2)) {
15897
- const args = parseArgs22(argv);
16008
+ async function main29(argv = process.argv.slice(2)) {
16009
+ const args = parseArgs23(argv);
15898
16010
  if (args.help) {
15899
16011
  process.stdout.write(USAGE7 + "\n");
15900
16012
  return;
@@ -16027,7 +16139,7 @@ Examples:
16027
16139
  var migrate_exports = {};
16028
16140
  __export(migrate_exports, {
16029
16141
  LATEST_VERSION: () => LATEST_VERSION,
16030
- main: () => main29
16142
+ main: () => main30
16031
16143
  });
16032
16144
  function detectVersion(worldPath) {
16033
16145
  const metaPath = (0, import_path11.join)(worldPath, "metadata.json");
@@ -16060,7 +16172,7 @@ function findMigrationPath(from, to) {
16060
16172
  }
16061
16173
  return path;
16062
16174
  }
16063
- function parseArgs23(argv) {
16175
+ function parseArgs24(argv) {
16064
16176
  let worldPath = "";
16065
16177
  let dryRun = false;
16066
16178
  let backup = false;
@@ -16085,8 +16197,8 @@ function parseArgs23(argv) {
16085
16197
  }
16086
16198
  return { worldPath, dryRun, backup, target, json, help };
16087
16199
  }
16088
- async function main29(argv = process.argv.slice(2)) {
16089
- const args = parseArgs23(argv);
16200
+ async function main30(argv = process.argv.slice(2)) {
16201
+ const args = parseArgs24(argv);
16090
16202
  if (args.help) {
16091
16203
  process.stdout.write(USAGE8 + "\n");
16092
16204
  return;
@@ -16253,9 +16365,9 @@ Examples:
16253
16365
  // src/cli/configure-ai.ts
16254
16366
  var configure_ai_exports = {};
16255
16367
  __export(configure_ai_exports, {
16256
- main: () => main30
16368
+ main: () => main31
16257
16369
  });
16258
- function parseArgs24(argv) {
16370
+ function parseArgs25(argv) {
16259
16371
  let provider;
16260
16372
  let model;
16261
16373
  let apiKey;
@@ -16280,9 +16392,9 @@ function parseArgs24(argv) {
16280
16392
  }
16281
16393
  return { provider, model, apiKey, endpoint, show, test };
16282
16394
  }
16283
- async function main30(argv = process.argv.slice(2)) {
16395
+ async function main31(argv = process.argv.slice(2)) {
16284
16396
  try {
16285
- const args = parseArgs24(argv);
16397
+ const args = parseArgs25(argv);
16286
16398
  if (args.show) {
16287
16399
  const config2 = await loadConfig();
16288
16400
  if (!config2) {
@@ -16483,7 +16595,7 @@ var init_prompt_utils = __esm({
16483
16595
  // src/cli/configure-world.ts
16484
16596
  var configure_world_exports = {};
16485
16597
  __export(configure_world_exports, {
16486
- main: () => main31
16598
+ main: () => main32
16487
16599
  });
16488
16600
  function metricToStateVariable(metric) {
16489
16601
  const id = metric.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_|_$/g, "");
@@ -16927,7 +17039,7 @@ async function writeWorld(outputDir, world) {
16927
17039
  }
16928
17040
  return files;
16929
17041
  }
16930
- function parseArgs25(argv) {
17042
+ function parseArgs26(argv) {
16931
17043
  let outputDir = "./world/";
16932
17044
  for (let i = 0; i < argv.length; i++) {
16933
17045
  const arg = argv[i];
@@ -16937,9 +17049,9 @@ function parseArgs25(argv) {
16937
17049
  }
16938
17050
  return { outputDir };
16939
17051
  }
16940
- async function main31(argv = process.argv.slice(2)) {
17052
+ async function main32(argv = process.argv.slice(2)) {
16941
17053
  try {
16942
- const args = parseArgs25(argv);
17054
+ const args = parseArgs26(argv);
16943
17055
  const context = await phaseContext();
16944
17056
  const guardState = await phaseGuard(context.domain);
16945
17057
  const systemState = await phaseSystem(context.domain);
@@ -17840,7 +17952,7 @@ var init_lens = __esm({
17840
17952
  // src/cli/lens.ts
17841
17953
  var lens_exports = {};
17842
17954
  __export(lens_exports, {
17843
- main: () => main32
17955
+ main: () => main33
17844
17956
  });
17845
17957
  async function cmdList(argv) {
17846
17958
  let worldPath = "";
@@ -18173,7 +18285,7 @@ async function cmdAdd(argv) {
18173
18285
 
18174
18286
  `);
18175
18287
  }
18176
- async function main32(argv = process.argv.slice(2)) {
18288
+ async function main33(argv = process.argv.slice(2)) {
18177
18289
  const subcommand = argv[0];
18178
18290
  const subArgs = argv.slice(1);
18179
18291
  try {
@@ -19341,9 +19453,9 @@ var init_worldmodel_create = __esm({
19341
19453
  // src/cli/worldmodel.ts
19342
19454
  var worldmodel_exports = {};
19343
19455
  __export(worldmodel_exports, {
19344
- main: () => main33
19456
+ main: () => main34
19345
19457
  });
19346
- function parseArgs26(argv) {
19458
+ function parseArgs27(argv) {
19347
19459
  const args = {
19348
19460
  inputPath: "",
19349
19461
  output: "",
@@ -19396,7 +19508,7 @@ async function loadAndParse(inputPath) {
19396
19508
  return { model: result.model, issues: result.issues };
19397
19509
  }
19398
19510
  async function cmdInit(argv) {
19399
- const args = parseArgs26(argv);
19511
+ const args = parseArgs27(argv);
19400
19512
  if (args.help) {
19401
19513
  process.stdout.write(
19402
19514
  'neuroverse worldmodel init \u2014 Create a new behavioral model\n\nWith ANTHROPIC_API_KEY set:\n Interactive \u2014 answers questions, AI structures your worldmodel.\n Your natural process: talk \u2192 structure \u2192 refine.\n\nWithout ANTHROPIC_API_KEY:\n Template \u2014 generates a scaffold you fill in manually.\n\nOptions:\n --name <name> Model name (default: "My Behavioral Model")\n --output <path> Output path (default: ./model.worldmodel.md)\n --template Force template mode even with API key set\n'
@@ -19718,7 +19830,7 @@ Examples:
19718
19830
  `;
19719
19831
  }
19720
19832
  async function cmdValidate(argv) {
19721
- const args = parseArgs26(argv);
19833
+ const args = parseArgs27(argv);
19722
19834
  if (args.help || !args.inputPath) {
19723
19835
  process.stdout.write(
19724
19836
  "neuroverse worldmodel validate <source.worldmodel.md> [--json]\n"
@@ -19775,7 +19887,7 @@ async function cmdValidate(argv) {
19775
19887
  process.exit(errors.length > 0 ? 1 : 0);
19776
19888
  }
19777
19889
  async function cmdExplain(argv) {
19778
- const args = parseArgs26(argv);
19890
+ const args = parseArgs27(argv);
19779
19891
  if (args.help || !args.inputPath) {
19780
19892
  process.stdout.write(
19781
19893
  "neuroverse worldmodel explain <source.worldmodel.md> [--json]\n"
@@ -19941,7 +20053,7 @@ function buildExplainData(model) {
19941
20053
  };
19942
20054
  }
19943
20055
  async function cmdBuild(argv) {
19944
- const args = parseArgs26(argv);
20056
+ const args = parseArgs27(argv);
19945
20057
  if (args.help || !args.inputPath) {
19946
20058
  process.stdout.write(
19947
20059
  "neuroverse worldmodel build <source.worldmodel.md> [--output <dir>] [--json]\n"
@@ -20038,7 +20150,7 @@ async function cmdBuild(argv) {
20038
20150
  }
20039
20151
  }
20040
20152
  async function cmdEmitWorld(argv) {
20041
- const args = parseArgs26(argv);
20153
+ const args = parseArgs27(argv);
20042
20154
  if (args.help || !args.inputPath) {
20043
20155
  process.stdout.write("neuroverse worldmodel emit-world <source.worldmodel.md>\n");
20044
20156
  return;
@@ -20056,7 +20168,7 @@ async function cmdEmitWorld(argv) {
20056
20168
  }
20057
20169
  }
20058
20170
  async function cmdEmitSignals(argv) {
20059
- const args = parseArgs26(argv);
20171
+ const args = parseArgs27(argv);
20060
20172
  if (args.help || !args.inputPath) {
20061
20173
  process.stdout.write(
20062
20174
  "neuroverse worldmodel emit-signals <source.worldmodel.md> [--json]\n"
@@ -20068,7 +20180,7 @@ async function cmdEmitSignals(argv) {
20068
20180
  process.stdout.write(JSON.stringify(schema, null, 2) + "\n");
20069
20181
  }
20070
20182
  async function cmdEmitLenses(argv) {
20071
- const args = parseArgs26(argv);
20183
+ const args = parseArgs27(argv);
20072
20184
  if (args.help || !args.inputPath) {
20073
20185
  process.stdout.write(
20074
20186
  "neuroverse worldmodel emit-lenses <source.worldmodel.md> [--json]\n"
@@ -20080,7 +20192,7 @@ async function cmdEmitLenses(argv) {
20080
20192
  process.stdout.write(JSON.stringify(lenses, null, 2) + "\n");
20081
20193
  }
20082
20194
  async function cmdEmitContexts(argv) {
20083
- const args = parseArgs26(argv);
20195
+ const args = parseArgs27(argv);
20084
20196
  if (args.help || !args.inputPath) {
20085
20197
  process.stdout.write(
20086
20198
  "neuroverse worldmodel emit-contexts <source.worldmodel.md> [--json]\n"
@@ -20092,7 +20204,7 @@ async function cmdEmitContexts(argv) {
20092
20204
  process.stdout.write(JSON.stringify(contexts, null, 2) + "\n");
20093
20205
  }
20094
20206
  async function cmdEmitOverlaps(argv) {
20095
- const args = parseArgs26(argv);
20207
+ const args = parseArgs27(argv);
20096
20208
  if (args.help || !args.inputPath) {
20097
20209
  process.stdout.write(
20098
20210
  "neuroverse worldmodel emit-overlaps <source.worldmodel.md> [--json]\n"
@@ -20103,7 +20215,7 @@ async function cmdEmitOverlaps(argv) {
20103
20215
  const overlaps = emitOverlapMap(model);
20104
20216
  process.stdout.write(JSON.stringify(overlaps, null, 2) + "\n");
20105
20217
  }
20106
- async function main33(argv = process.argv.slice(2)) {
20218
+ async function main34(argv = process.argv.slice(2)) {
20107
20219
  const subcommand = argv[0] ?? "";
20108
20220
  const subArgs = argv.slice(1);
20109
20221
  switch (subcommand) {
@@ -22741,6 +22853,7 @@ async function auditGovernance(events, worldPath) {
22741
22853
  return emptyAudit(events.length, "Could not load compiled worldmodel for governance audit.");
22742
22854
  }
22743
22855
  const verdicts = [];
22856
+ const crossings = [];
22744
22857
  for (const ce of events) {
22745
22858
  const intent = ce.event.content?.slice(0, 500) || ce.event.kind || "activity";
22746
22859
  const scope = ce.event.metadata?.scope || void 0;
@@ -22751,16 +22864,32 @@ async function auditGovernance(events, worldPath) {
22751
22864
  scope,
22752
22865
  actionCategory: mapKindToCategory(ce.event.kind)
22753
22866
  },
22754
- world
22867
+ world,
22868
+ { mode: "observe" }
22755
22869
  );
22870
+ const shadow = result.shadowStatus ?? "ALLOW";
22756
22871
  verdicts.push({
22757
22872
  eventId: ce.event.id,
22758
22873
  domain: ce.domain,
22759
- status: result.status,
22760
- reason: result.reason,
22874
+ status: shadow,
22875
+ reason: result.shadowReason,
22761
22876
  ruleId: result.ruleId,
22762
22877
  warning: result.warning
22763
22878
  });
22879
+ if (shadow !== "ALLOW") {
22880
+ crossings.push({
22881
+ eventId: ce.event.id,
22882
+ timestamp: ce.event.timestamp,
22883
+ kind: ce.event.kind,
22884
+ actorId: ce.event.actor.id,
22885
+ shadowStatus: shadow,
22886
+ shadowReason: result.shadowReason,
22887
+ ruleId: result.ruleId,
22888
+ excerpt: intent.length > 280 ? intent.slice(0, 279) + "\u2026" : intent,
22889
+ wouldHaveBlocked: true,
22890
+ verdict: result
22891
+ });
22892
+ }
22764
22893
  } catch {
22765
22894
  verdicts.push({
22766
22895
  eventId: ce.event.id,
@@ -22779,6 +22908,7 @@ async function auditGovernance(events, worldPath) {
22779
22908
  human,
22780
22909
  cyber,
22781
22910
  joint,
22911
+ crossings,
22782
22912
  summary: summary2
22783
22913
  };
22784
22914
  }
@@ -22834,6 +22964,7 @@ function emptyAudit(total, reason) {
22834
22964
  human: { allow: 0, modify: 0, block: 0, details: [] },
22835
22965
  cyber: { allow: 0, modify: 0, block: 0, details: [] },
22836
22966
  joint: { allow: 0, modify: 0, block: 0, details: [] },
22967
+ crossings: [],
22837
22968
  summary: reason
22838
22969
  };
22839
22970
  }
@@ -23858,7 +23989,8 @@ Compare stated intent against actual GitHub activity. Gaps = drift.`;
23858
23989
  scores,
23859
23990
  eventCount: events.length,
23860
23991
  activeAdapters,
23861
- worldStack
23992
+ worldStack,
23993
+ governance
23862
23994
  };
23863
23995
  }
23864
23996
  function filterEventsByUser(events, username) {
@@ -24250,10 +24382,10 @@ var init_server = __esm({
24250
24382
  var radiant_exports = {};
24251
24383
  __export(radiant_exports, {
24252
24384
  checkScopeConsent: () => checkScopeConsent,
24253
- main: () => main34,
24254
- parseArgs: () => parseArgs27
24385
+ main: () => main35,
24386
+ parseArgs: () => parseArgs28
24255
24387
  });
24256
- function parseArgs27(argv) {
24388
+ function parseArgs28(argv) {
24257
24389
  const result = {
24258
24390
  subcommand: void 0,
24259
24391
  lens: void 0,
@@ -24737,8 +24869,8 @@ ${DIM3}Files are yours. Edit freely.${RESET3}
24737
24869
  `
24738
24870
  );
24739
24871
  }
24740
- async function main34(argv) {
24741
- const args = parseArgs27(argv);
24872
+ async function main35(argv) {
24873
+ const args = parseArgs28(argv);
24742
24874
  if (args.help || !args.subcommand) {
24743
24875
  process.stdout.write(USAGE10 + "\n");
24744
24876
  return;
@@ -25065,7 +25197,7 @@ Governance:
25065
25197
  neuroverse mcp --world ./world/ --plan plan.json
25066
25198
  neuroverse test --world ./world/ --fuzz --count 50
25067
25199
  `.trim();
25068
- async function main35() {
25200
+ async function main36() {
25069
25201
  const args = process.argv.slice(2);
25070
25202
  const command = args[0];
25071
25203
  const subArgs = args.slice(1);
@@ -25116,6 +25248,10 @@ async function main35() {
25116
25248
  const { main: guardMain } = await Promise.resolve().then(() => (init_guard(), guard_exports));
25117
25249
  return guardMain(subArgs);
25118
25250
  }
25251
+ case "audit": {
25252
+ const { main: auditMain } = await Promise.resolve().then(() => (init_audit(), audit_exports));
25253
+ return auditMain(subArgs);
25254
+ }
25119
25255
  case "test": {
25120
25256
  const { main: testMain } = await Promise.resolve().then(() => (init_test(), test_exports));
25121
25257
  return testMain(subArgs);
@@ -25235,7 +25371,7 @@ async function main35() {
25235
25371
  }
25236
25372
  }
25237
25373
  }
25238
- main35().catch((e) => {
25374
+ main36().catch((e) => {
25239
25375
  process.stderr.write(`Fatal: ${e}
25240
25376
  `);
25241
25377
  process.exit(3);