@neuroverseos/governance 0.4.3 → 0.5.1

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 (68) hide show
  1. package/README.md +189 -0
  2. package/dist/adapters/autoresearch.js +2 -2
  3. package/dist/adapters/deep-agents.js +2 -2
  4. package/dist/adapters/express.js +2 -2
  5. package/dist/adapters/github.js +2 -2
  6. package/dist/adapters/index.js +23 -21
  7. package/dist/adapters/langchain.js +2 -2
  8. package/dist/adapters/mentraos.js +8 -6
  9. package/dist/adapters/openai.js +2 -2
  10. package/dist/adapters/openclaw.js +2 -2
  11. package/dist/{add-XSANI3FK.js → add-JP7TC2K3.js} +1 -1
  12. package/dist/admin/index.cjs +2214 -0
  13. package/dist/admin/index.d.cts +362 -0
  14. package/dist/admin/index.d.ts +362 -0
  15. package/dist/admin/index.js +703 -0
  16. package/dist/{build-EGBGZFIJ.js → build-THUEYMVT.js} +5 -5
  17. package/dist/{chunk-YJ34R5NB.js → chunk-5RAQ5DZW.js} +3 -3
  18. package/dist/{chunk-RDA7ISWC.js → chunk-6UPEUMJ2.js} +3 -3
  19. package/dist/chunk-7UU7V3AD.js +447 -0
  20. package/dist/{chunk-ZEIT2QLM.js → chunk-EK77AJAH.js} +22 -4
  21. package/dist/{chunk-3S5AD4AB.js → chunk-FGOSKQDE.js} +3 -3
  22. package/dist/{chunk-GTPV2XGO.js → chunk-GJ6LM4JZ.js} +1 -441
  23. package/dist/chunk-H3REGQRI.js +107 -0
  24. package/dist/{chunk-J2IZBHXJ.js → chunk-LAKUB76X.js} +3 -3
  25. package/dist/{chunk-FVOGUCB6.js → chunk-R23T5SZG.js} +3 -3
  26. package/dist/{chunk-A7SHG75T.js → chunk-RF2L5SYG.js} +3 -3
  27. package/dist/{chunk-QMVQ6KPL.js → chunk-TL4DLMMW.js} +3 -3
  28. package/dist/{chunk-AV7XJJWK.js → chunk-TZBERHFM.js} +3 -3
  29. package/dist/{chunk-3AYKQHYI.js → chunk-UZBW44KD.js} +3 -3
  30. package/dist/{chunk-FS2UUJJO.js → chunk-XPMZB46F.js} +3 -3
  31. package/dist/cli/neuroverse.cjs +962 -284
  32. package/dist/cli/neuroverse.js +46 -22
  33. package/dist/cli/plan.js +1 -1
  34. package/dist/cli/run.cjs +242 -139
  35. package/dist/cli/run.js +23 -3
  36. package/dist/{demo-6OQYWRR6.js → demo-N5K4VXJW.js} +3 -3
  37. package/dist/{derive-7Y7YWVLU.js → derive-5LOMN7GO.js} +4 -4
  38. package/dist/{equity-penalties-NVBAB5WL.js → equity-penalties-PYCJ3Q4U.js} +6 -6
  39. package/dist/{explain-HDFN4ION.js → explain-42TVC3QD.js} +1 -1
  40. package/dist/{guard-6KSCWT2W.js → guard-TPYDFG6V.js} +16 -4
  41. package/dist/{improve-2PWGGO5B.js → improve-HLZGJ54Z.js} +3 -3
  42. package/dist/index.cjs +19 -1
  43. package/dist/index.d.cts +2 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.js +27 -27
  46. package/dist/keygen-BSZH3NM2.js +77 -0
  47. package/dist/{lens-MHMUDCMQ.js → lens-NFGZHD76.js} +1 -1
  48. package/dist/{mcp-server-TNIWZ7B5.js → mcp-server-5XXNG6VC.js} +2 -2
  49. package/dist/migrate-NH5PVMX4.js +221 -0
  50. package/dist/{playground-3FLDGBET.js → playground-2EU5CFIH.js} +4 -4
  51. package/dist/{redteam-HV6LMKEH.js → redteam-VK6OVHAE.js} +3 -3
  52. package/dist/{session-XZP2754M.js → session-NGA4DUPL.js} +2 -2
  53. package/dist/sign-RRELHKWM.js +11 -0
  54. package/dist/{simulate-VT437EEL.js → simulate-4YNOBMES.js} +1 -1
  55. package/dist/{test-4WTX6RKQ.js → test-HDBPMQTG.js} +3 -3
  56. package/dist/{validate-M52DX22Y.js → validate-6MFQZ2EG.js} +1 -1
  57. package/dist/verify-6AVTWX75.js +151 -0
  58. package/dist/{world-O4HTQPDP.js → world-H5WVURKU.js} +1 -1
  59. package/dist/{world-loader-YTYFOP7D.js → world-loader-J47PCPDZ.js} +1 -1
  60. package/package.json +22 -10
  61. package/dist/{behavioral-SLW7ALEK.js → behavioral-SPWPGYXL.js} +3 -3
  62. package/dist/{bootstrap-2OW5ZLBL.js → bootstrap-IP5QMC3Q.js} +3 -3
  63. package/dist/{chunk-I4RTIMLX.js → chunk-EQUAWNXW.js} +0 -0
  64. package/dist/{chunk-DA5MHFRR.js → chunk-NTHXZAW4.js} +3 -3
  65. package/dist/{chunk-FHXXD2TI.js → chunk-QZ666FCV.js} +6 -6
  66. package/dist/{configure-ai-LL3VAPQW.js → configure-ai-5MP5DWTT.js} +3 -3
  67. package/dist/{decision-flow-3K4D72G4.js → decision-flow-IJPNMVQK.js} +3 -3
  68. /package/dist/{doctor-EC5OYTI3.js → doctor-Q5APJOTS.js} +0 -0
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  validateWorld
3
3
  } from "./chunk-7P3S7MAY.js";
4
- import {
5
- evaluateGuard
6
- } from "./chunk-ZAF6JH23.js";
7
4
  import {
8
5
  DEFAULT_BUNDLED_WORLD,
9
6
  loadBundledWorld,
10
7
  loadWorld
11
- } from "./chunk-I4RTIMLX.js";
8
+ } from "./chunk-EQUAWNXW.js";
9
+ import {
10
+ evaluateGuard
11
+ } from "./chunk-ZAF6JH23.js";
12
12
  import "./chunk-QLPTHTVB.js";
13
13
  import "./chunk-QWGCMQQD.js";
14
14
 
@@ -1,9 +1,9 @@
1
+ import {
2
+ loadWorld
3
+ } from "./chunk-EQUAWNXW.js";
1
4
  import {
2
5
  evaluateGuard
3
6
  } from "./chunk-ZAF6JH23.js";
4
- import {
5
- loadWorld
6
- } from "./chunk-I4RTIMLX.js";
7
7
  import "./chunk-QLPTHTVB.js";
8
8
  import "./chunk-QWGCMQQD.js";
9
9
 
@@ -2,10 +2,10 @@ import {
2
2
  SessionManager,
3
3
  runInteractiveMode,
4
4
  runPipeMode
5
- } from "./chunk-ZEIT2QLM.js";
5
+ } from "./chunk-EK77AJAH.js";
6
6
  import "./chunk-D2UCV5AK.js";
7
+ import "./chunk-EQUAWNXW.js";
7
8
  import "./chunk-ZAF6JH23.js";
8
- import "./chunk-I4RTIMLX.js";
9
9
  import "./chunk-QLPTHTVB.js";
10
10
  import "./chunk-QWGCMQQD.js";
11
11
  export {
@@ -0,0 +1,11 @@
1
+ import {
2
+ buildManifest,
3
+ canonicalManifest,
4
+ main
5
+ } from "./chunk-H3REGQRI.js";
6
+ import "./chunk-QWGCMQQD.js";
7
+ export {
8
+ buildManifest,
9
+ canonicalManifest,
10
+ main
11
+ };
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-CYDMUJVZ.js";
9
9
  import {
10
10
  loadWorld
11
- } from "./chunk-I4RTIMLX.js";
11
+ } from "./chunk-EQUAWNXW.js";
12
12
  import "./chunk-QWGCMQQD.js";
13
13
 
14
14
  // src/cli/simulate.ts
@@ -1,9 +1,9 @@
1
+ import {
2
+ loadWorld
3
+ } from "./chunk-EQUAWNXW.js";
1
4
  import {
2
5
  evaluateGuard
3
6
  } from "./chunk-ZAF6JH23.js";
4
- import {
5
- loadWorld
6
- } from "./chunk-I4RTIMLX.js";
7
7
  import "./chunk-QLPTHTVB.js";
8
8
  import "./chunk-QWGCMQQD.js";
9
9
 
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-7P3S7MAY.js";
7
7
  import {
8
8
  loadWorld
9
- } from "./chunk-I4RTIMLX.js";
9
+ } from "./chunk-EQUAWNXW.js";
10
10
  import "./chunk-QWGCMQQD.js";
11
11
 
12
12
  // src/cli/validate.ts
@@ -0,0 +1,151 @@
1
+ import {
2
+ buildManifest,
3
+ canonicalManifest
4
+ } from "./chunk-H3REGQRI.js";
5
+ import "./chunk-QWGCMQQD.js";
6
+
7
+ // src/cli/verify.ts
8
+ import { createHash, verify } from "crypto";
9
+ import { readFileSync, existsSync } from "fs";
10
+ import { join } from "path";
11
+ import { homedir } from "os";
12
+ var USAGE = `
13
+ neuroverse verify \u2014 Verify a signed world artifact
14
+
15
+ Usage:
16
+ neuroverse verify --world <dir> [--key <path>]
17
+
18
+ Options:
19
+ --world <dir> World directory to verify (required)
20
+ --key <path> Public key path (default: ~/.neuroverse/keys/neuroverse.pub)
21
+ --json Output result as JSON
22
+
23
+ Exit codes:
24
+ 0 Valid \u2014 world matches signature
25
+ 1 Invalid \u2014 signature mismatch, tampered files, or missing signature
26
+
27
+ Examples:
28
+ neuroverse verify --world ./world/
29
+ neuroverse verify --world ./world/ --key ./keys/production.pub
30
+ `.trim();
31
+ function parseArgs(argv) {
32
+ let worldPath = "";
33
+ let keyPath = join(homedir(), ".neuroverse", "keys", "neuroverse.pub");
34
+ let json = false;
35
+ let help = false;
36
+ for (let i = 0; i < argv.length; i++) {
37
+ const arg = argv[i];
38
+ if (arg === "--world" && argv[i + 1]) {
39
+ worldPath = argv[++i];
40
+ } else if (arg === "--key" && argv[i + 1]) {
41
+ keyPath = argv[++i];
42
+ } else if (arg === "--json") {
43
+ json = true;
44
+ } else if (arg === "--help" || arg === "-h") {
45
+ help = true;
46
+ }
47
+ }
48
+ return { worldPath, keyPath, json, help };
49
+ }
50
+ async function main(argv = process.argv.slice(2)) {
51
+ const args = parseArgs(argv);
52
+ if (args.help) {
53
+ process.stdout.write(USAGE + "\n");
54
+ return;
55
+ }
56
+ if (!args.worldPath) {
57
+ process.stderr.write("Error: --world <dir> is required.\n");
58
+ process.exit(1);
59
+ }
60
+ const result = {
61
+ valid: false,
62
+ worldPath: args.worldPath,
63
+ fileCount: 0,
64
+ errors: []
65
+ };
66
+ const sigPath = join(args.worldPath, ".nv-signature.json");
67
+ if (!existsSync(sigPath)) {
68
+ result.errors.push("No .nv-signature.json found \u2014 world is unsigned.");
69
+ outputResult(result, args.json);
70
+ process.exit(1);
71
+ }
72
+ let artifact;
73
+ try {
74
+ artifact = JSON.parse(readFileSync(sigPath, "utf-8"));
75
+ } catch {
76
+ result.errors.push("Cannot parse .nv-signature.json \u2014 file is corrupt.");
77
+ outputResult(result, args.json);
78
+ process.exit(1);
79
+ return;
80
+ }
81
+ result.signedAt = artifact.signedAt;
82
+ result.fileCount = Object.keys(artifact.files).length;
83
+ let publicKey;
84
+ try {
85
+ publicKey = readFileSync(args.keyPath, "utf-8");
86
+ } catch {
87
+ result.errors.push(`Cannot read public key at ${args.keyPath}`);
88
+ outputResult(result, args.json);
89
+ process.exit(1);
90
+ return;
91
+ }
92
+ const currentFiles = buildManifest(args.worldPath);
93
+ for (const file of Object.keys(currentFiles)) {
94
+ if (!(file in artifact.files)) {
95
+ result.errors.push(`Added: ${file} (not in signature)`);
96
+ }
97
+ }
98
+ for (const [file, hash] of Object.entries(artifact.files)) {
99
+ if (!(file in currentFiles)) {
100
+ result.errors.push(`Missing: ${file} (was in signature)`);
101
+ } else if (currentFiles[file] !== hash) {
102
+ result.errors.push(`Changed: ${file} (hash mismatch)`);
103
+ }
104
+ }
105
+ if (result.errors.length > 0) {
106
+ outputResult(result, args.json);
107
+ process.exit(1);
108
+ return;
109
+ }
110
+ const canonical = canonicalManifest(artifact.files);
111
+ const manifestHash = createHash("sha256").update(canonical).digest("hex");
112
+ if (manifestHash !== artifact.manifestHash) {
113
+ result.errors.push("Manifest hash mismatch \u2014 signature metadata is corrupt.");
114
+ outputResult(result, args.json);
115
+ process.exit(1);
116
+ return;
117
+ }
118
+ const isValid = verify(null, Buffer.from(manifestHash), publicKey, Buffer.from(artifact.signature, "base64"));
119
+ if (!isValid) {
120
+ result.errors.push("Signature verification failed \u2014 wrong key or tampered manifest.");
121
+ outputResult(result, args.json);
122
+ process.exit(1);
123
+ return;
124
+ }
125
+ result.valid = true;
126
+ outputResult(result, args.json);
127
+ }
128
+ function outputResult(result, json) {
129
+ if (json) {
130
+ process.stdout.write(JSON.stringify(result, null, 2) + "\n");
131
+ return;
132
+ }
133
+ if (result.valid) {
134
+ process.stdout.write(`VALID \u2014 ${result.fileCount} files verified
135
+ `);
136
+ process.stdout.write(` Signed at: ${result.signedAt}
137
+ `);
138
+ process.stdout.write(` World: ${result.worldPath}
139
+ `);
140
+ } else {
141
+ process.stdout.write(`INVALID \u2014 signature verification failed
142
+ `);
143
+ for (const error of result.errors) {
144
+ process.stdout.write(` ${error}
145
+ `);
146
+ }
147
+ }
148
+ }
149
+ export {
150
+ main
151
+ };
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-AKW5YVCE.js";
11
11
  import {
12
12
  loadWorld
13
- } from "./chunk-I4RTIMLX.js";
13
+ } from "./chunk-EQUAWNXW.js";
14
14
  import "./chunk-QWGCMQQD.js";
15
15
 
16
16
  // src/cli/world.ts
@@ -3,7 +3,7 @@ import {
3
3
  loadBundledWorld,
4
4
  loadWorld,
5
5
  loadWorldFromDirectory
6
- } from "./chunk-I4RTIMLX.js";
6
+ } from "./chunk-EQUAWNXW.js";
7
7
  import "./chunk-QWGCMQQD.js";
8
8
  export {
9
9
  DEFAULT_BUNDLED_WORLD,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuroverseos/governance",
3
- "version": "0.4.3",
3
+ "version": "0.5.1",
4
4
  "description": "Deterministic governance engine for AI agents — enforce worlds (permanent rules) and plans (mission constraints) with full audit trace",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -60,31 +60,43 @@
60
60
  },
61
61
  "./adapters/mentraos": {
62
62
  "types": "./dist/adapters/mentraos.d.ts",
63
- "import": "./dist/adapters/mentraos.js"
63
+ "import": "./dist/adapters/mentraos.js",
64
+ "require": "./dist/adapters/mentraos.cjs"
64
65
  },
65
66
  "./adapters/github": {
66
67
  "types": "./dist/adapters/github.d.ts",
67
- "import": "./dist/adapters/github.js"
68
+ "import": "./dist/adapters/github.js",
69
+ "require": "./dist/adapters/github.cjs"
68
70
  },
69
71
  "./engine/guard-engine": {
70
72
  "types": "./dist/engine/guard-engine.d.ts",
71
- "import": "./dist/engine/guard-engine.js"
73
+ "import": "./dist/engine/guard-engine.js",
74
+ "require": "./dist/engine/guard-engine.cjs"
72
75
  },
73
76
  "./engine/simulate-engine": {
74
77
  "types": "./dist/engine/simulate-engine.d.ts",
75
- "import": "./dist/engine/simulate-engine.js"
78
+ "import": "./dist/engine/simulate-engine.js",
79
+ "require": "./dist/engine/simulate-engine.cjs"
76
80
  },
77
81
  "./engine/bootstrap-parser": {
78
82
  "types": "./dist/engine/bootstrap-parser.d.ts",
79
- "import": "./dist/engine/bootstrap-parser.js"
83
+ "import": "./dist/engine/bootstrap-parser.js",
84
+ "require": "./dist/engine/bootstrap-parser.cjs"
80
85
  },
81
86
  "./engine/bootstrap-emitter": {
82
87
  "types": "./dist/engine/bootstrap-emitter.d.ts",
83
- "import": "./dist/engine/bootstrap-emitter.js"
88
+ "import": "./dist/engine/bootstrap-emitter.js",
89
+ "require": "./dist/engine/bootstrap-emitter.cjs"
84
90
  },
85
91
  "./types": {
86
92
  "types": "./dist/types.d.ts",
87
- "import": "./dist/types.js"
93
+ "import": "./dist/types.js",
94
+ "require": "./dist/types.cjs"
95
+ },
96
+ "./admin": {
97
+ "types": "./dist/admin/index.d.ts",
98
+ "import": "./dist/admin/index.js",
99
+ "require": "./dist/admin/index.cjs"
88
100
  }
89
101
  },
90
102
  "bin": {
@@ -107,14 +119,14 @@
107
119
  ],
108
120
  "scripts": {
109
121
  "prepare": "npm run build",
110
- "build": "tsup src/index.ts src/types.ts src/cli/neuroverse.ts src/cli/plan.ts src/cli/run.ts src/adapters/index.ts src/adapters/langchain.ts src/adapters/openai.ts src/adapters/openclaw.ts src/adapters/express.ts src/adapters/autoresearch.ts src/adapters/deep-agents.ts src/adapters/mentraos.ts src/adapters/github.ts src/engine/guard-engine.ts src/engine/simulate-engine.ts src/engine/bootstrap-parser.ts src/engine/bootstrap-emitter.ts src/spatial/index.ts --format esm,cjs --dts --clean && npm run build:browser && cp src/worlds/*.nv-world.md dist/worlds/ && cp src/spatial/zones/*.nv-world.md dist/worlds/ && npm run build:viz",
122
+ "build": "tsup src/index.ts src/types.ts src/cli/neuroverse.ts src/cli/plan.ts src/cli/run.ts src/adapters/index.ts src/adapters/langchain.ts src/adapters/openai.ts src/adapters/openclaw.ts src/adapters/express.ts src/adapters/autoresearch.ts src/adapters/deep-agents.ts src/adapters/mentraos.ts src/adapters/github.ts src/engine/guard-engine.ts src/engine/simulate-engine.ts src/engine/bootstrap-parser.ts src/engine/bootstrap-emitter.ts src/spatial/index.ts src/admin/index.ts --format esm,cjs --dts --clean && npm run build:browser && cp src/worlds/*.nv-world.md dist/worlds/ && cp src/spatial/zones/*.nv-world.md dist/worlds/ && npm run build:viz",
111
123
  "build:browser": "tsup src/browser.ts --format iife --global-name NeuroVerse --outDir dist --no-dts",
112
124
  "build:viz": "vite build",
113
125
  "dev:viz": "vite dev",
114
126
  "prebuild": "mkdir -p dist/worlds",
115
127
  "dev": "tsup src/index.ts src/cli/neuroverse.ts --format esm,cjs --dts --watch",
116
128
  "prepublishOnly": "npm run build",
117
- "test": "vitest run",
129
+ "test": "node scripts-vitest-runner.mjs",
118
130
  "test:watch": "vitest"
119
131
  },
120
132
  "devDependencies": {
@@ -1,11 +1,11 @@
1
- import {
2
- readAuditLog
3
- } from "./chunk-2VAWP6FI.js";
4
1
  import {
5
2
  adaptationFromVerdict,
6
3
  detectBehavioralPatterns,
7
4
  generateAdaptationNarrative
8
5
  } from "./chunk-CNSO6XW5.js";
6
+ import {
7
+ readAuditLog
8
+ } from "./chunk-2VAWP6FI.js";
9
9
  import "./chunk-ZAF6JH23.js";
10
10
  import "./chunk-QLPTHTVB.js";
11
11
  import "./chunk-QWGCMQQD.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  BOOTSTRAP_EXIT_CODES
3
3
  } from "./chunk-4NGDRRQH.js";
4
- import {
5
- emitWorldDefinition
6
- } from "./chunk-YPCVY4GS.js";
7
4
  import {
8
5
  parseWorldMarkdown
9
6
  } from "./chunk-3NZMMSOW.js";
7
+ import {
8
+ emitWorldDefinition
9
+ } from "./chunk-YPCVY4GS.js";
10
10
  import "./chunk-QWGCMQQD.js";
11
11
 
12
12
  // src/cli/bootstrap.ts
File without changes
@@ -1,9 +1,9 @@
1
- import {
2
- simulateWorld
3
- } from "./chunk-CYDMUJVZ.js";
4
1
  import {
5
2
  validateWorld
6
3
  } from "./chunk-7P3S7MAY.js";
4
+ import {
5
+ simulateWorld
6
+ } from "./chunk-CYDMUJVZ.js";
7
7
 
8
8
  // src/engine/improve-engine.ts
9
9
  function improveWorld(world) {
@@ -1,18 +1,18 @@
1
- import {
2
- createProvider
3
- } from "./chunk-INWQHLPS.js";
4
1
  import {
5
2
  loadConfig
6
3
  } from "./chunk-OT6PXH54.js";
4
+ import {
5
+ createProvider
6
+ } from "./chunk-INWQHLPS.js";
7
7
  import {
8
8
  validateWorld
9
9
  } from "./chunk-7P3S7MAY.js";
10
- import {
11
- emitWorldDefinition
12
- } from "./chunk-YPCVY4GS.js";
13
10
  import {
14
11
  parseWorldMarkdown
15
12
  } from "./chunk-3NZMMSOW.js";
13
+ import {
14
+ emitWorldDefinition
15
+ } from "./chunk-YPCVY4GS.js";
16
16
 
17
17
  // src/engine/derive-normalizer.ts
18
18
  function findSections(lines) {
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  CONFIGURE_AI_EXIT_CODES
3
3
  } from "./chunk-FMSTRBBS.js";
4
- import {
5
- createProvider
6
- } from "./chunk-INWQHLPS.js";
7
4
  import {
8
5
  getConfigPath,
9
6
  loadConfig,
10
7
  redactConfig,
11
8
  saveConfig
12
9
  } from "./chunk-OT6PXH54.js";
10
+ import {
11
+ createProvider
12
+ } from "./chunk-INWQHLPS.js";
13
13
  import "./chunk-QWGCMQQD.js";
14
14
 
15
15
  // src/cli/configure-ai.ts
@@ -1,10 +1,10 @@
1
- import {
2
- readAuditLog
3
- } from "./chunk-2VAWP6FI.js";
4
1
  import {
5
2
  generateDecisionFlow,
6
3
  renderDecisionFlow
7
4
  } from "./chunk-D2UCV5AK.js";
5
+ import {
6
+ readAuditLog
7
+ } from "./chunk-2VAWP6FI.js";
8
8
  import "./chunk-ZAF6JH23.js";
9
9
  import "./chunk-QLPTHTVB.js";
10
10
  import "./chunk-QWGCMQQD.js";
File without changes