@putervision/agent-reasoning-mcp 0.1.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.
package/dist/cli.js ADDED
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ BeliefEngine,
4
+ GoalEngine,
5
+ IntentionEngine,
6
+ getVersion
7
+ } from "./chunk-SOCPGFU4.js";
8
+ import {
9
+ runInit
10
+ } from "./chunk-2UKYRERH.js";
11
+ import {
12
+ verifyEventChain
13
+ } from "./chunk-6CYLIFQX.js";
14
+ import {
15
+ getDb,
16
+ getProjectSlug,
17
+ resolveProjectRoot
18
+ } from "./chunk-F4TEZ2TS.js";
19
+
20
+ // src/cli.ts
21
+ import fs from "fs";
22
+ import path from "path";
23
+ function showHelp() {
24
+ console.log(`
25
+ agent-reasoning-mcp CLI Tool v${getVersion()}
26
+
27
+ Usage:
28
+ agent-reasoning-mcp <command> [options]
29
+
30
+ Commands:
31
+ run Start the MCP server on stdio transport (Default)
32
+ init Scaffold the workspace, database, and IDE agent rules
33
+ init-global Re-initialize across all projects registered in ~/.agent-reasoning-mcp/projects.json
34
+ doctor Run environment and database health checks
35
+ inspect Display tables of goals, beliefs, intentions, and traces
36
+ audit Audit cryptographic SHA-256 event ledger hash chain
37
+ view Open interactive reasoning visualizer (viewer.html)
38
+ update Check npm registry for package updates
39
+
40
+ Options:
41
+ -p, --project Target specific project slug
42
+ -v, --version Show version number
43
+ -h, --help Show this help menu
44
+ `);
45
+ }
46
+ async function main() {
47
+ const rawArgs = process.argv.slice(2);
48
+ if (rawArgs.includes("--help") || rawArgs.includes("-h")) {
49
+ showHelp();
50
+ process.exit(0);
51
+ }
52
+ if (rawArgs.includes("--version") || rawArgs.includes("-v")) {
53
+ console.log(getVersion());
54
+ process.exit(0);
55
+ }
56
+ let project;
57
+ const pIndex = rawArgs.findIndex((a) => a === "-p" || a === "--project");
58
+ if (pIndex !== -1 && rawArgs[pIndex + 1]) {
59
+ project = rawArgs[pIndex + 1];
60
+ }
61
+ const positional = rawArgs.filter((a, idx) => {
62
+ if (a.startsWith("-")) return false;
63
+ if (idx > 0 && (rawArgs[idx - 1] === "-p" || rawArgs[idx - 1] === "--project" || rawArgs[idx - 1] === "-o" || rawArgs[idx - 1] === "--out")) {
64
+ return false;
65
+ }
66
+ return true;
67
+ });
68
+ const command = positional[0] || "run";
69
+ switch (command) {
70
+ case "run": {
71
+ await import("./index.js");
72
+ break;
73
+ }
74
+ case "init": {
75
+ runInit({ project });
76
+ break;
77
+ }
78
+ case "init-global": {
79
+ const { runInitGlobal } = await import("./init-JCBP646U.js");
80
+ await runInitGlobal();
81
+ break;
82
+ }
83
+ case "doctor": {
84
+ const root = resolveProjectRoot(project);
85
+ const slug = getProjectSlug(project);
86
+ console.log(`Running diagnostic doctor for "${slug}" in ${root}...`);
87
+ try {
88
+ const db = getDb(slug);
89
+ const integrity = db.pragma("integrity_check");
90
+ const journal = db.pragma("journal_mode");
91
+ const eventAudit = verifyEventChain(db, slug);
92
+ console.log(`\u2714 SQLite database accessibility: OK`);
93
+ console.log(`\u2714 Journal mode: ${JSON.stringify(journal)}`);
94
+ console.log(`\u2714 Database integrity: ${JSON.stringify(integrity)}`);
95
+ console.log(`\u2714 Event chain verification: ${eventAudit.valid ? "VALID (unbroken)" : "FAILED"}`);
96
+ console.log("\nDoctor diagnostic check PASSED.");
97
+ } catch (err) {
98
+ console.error(`\u2716 Doctor check failed: ${err.message}`);
99
+ process.exit(1);
100
+ }
101
+ break;
102
+ }
103
+ case "doctor-global": {
104
+ const { getRegistry } = await import("./db-EL7JURVI.js");
105
+ const registry = getRegistry();
106
+ const entries = Object.entries(registry);
107
+ console.log(`Running global diagnostic doctor across ${entries.length} registered project(s)...`);
108
+ let allPassed = true;
109
+ for (const [slug, projectRoot] of entries) {
110
+ if (!fs.existsSync(projectRoot)) {
111
+ console.log(`\u26A0\uFE0F ${slug}: Missing project root directory (${projectRoot})`);
112
+ continue;
113
+ }
114
+ try {
115
+ const db = getDb(slug, projectRoot);
116
+ const integrity = db.pragma("integrity_check");
117
+ const eventAudit = verifyEventChain(db, slug);
118
+ const ok = integrity && eventAudit.valid;
119
+ console.log(` ${ok ? "\u2714" : "\u2716"} ${slug}: ${ok ? "HEALTHY" : "ANOMALY DETECTED"}`);
120
+ if (!ok) allPassed = false;
121
+ } catch (err) {
122
+ console.log(` \u2716 ${slug}: ${err.message}`);
123
+ allPassed = false;
124
+ }
125
+ }
126
+ console.log(`
127
+ Global doctor check ${allPassed ? "PASSED" : "COMPLETED WITH WARNINGS"}.`);
128
+ break;
129
+ }
130
+ case "inspect": {
131
+ const slug = getProjectSlug(project);
132
+ const db = getDb(slug);
133
+ console.log(`
134
+ === Active Goals for ${slug} ===`);
135
+ console.table(GoalEngine.listGoals(db, { project: slug, limit: 20 }), ["id", "title", "status", "priority", "progress"]);
136
+ console.log(`
137
+ === Active Beliefs for ${slug} ===`);
138
+ console.table(BeliefEngine.queryBeliefs(db, { project: slug, limit: 20 }), ["id", "category", "subject", "predicate", "confidence"]);
139
+ console.log(`
140
+ === Dispatched Intentions for ${slug} ===`);
141
+ console.table(IntentionEngine.listIntentions(db, { project: slug, limit: 20 }), ["id", "behavior_name", "status", "priority"]);
142
+ break;
143
+ }
144
+ case "audit": {
145
+ const slug = getProjectSlug(project);
146
+ const db = getDb(slug);
147
+ const audit = verifyEventChain(db, slug);
148
+ console.log(`Audit result for "${slug}":`, audit);
149
+ break;
150
+ }
151
+ case "view": {
152
+ console.log(`Interactive visualizer available at: ${path.resolve(process.cwd(), "viewer.html")}`);
153
+ break;
154
+ }
155
+ case "update": {
156
+ console.log(`@putervision/agent-reasoning-mcp is up to date (v${getVersion()}).`);
157
+ break;
158
+ }
159
+ default:
160
+ console.error(`Unknown command: ${command}`);
161
+ showHelp();
162
+ process.exit(1);
163
+ }
164
+ }
165
+ main().catch((err) => {
166
+ console.error("Fatal CLI error:", err);
167
+ process.exit(1);
168
+ });
169
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport fs from 'fs';\nimport path from 'path';\nimport { runInit } from './cli/init.js';\nimport { getDb, resolveProjectRoot, getProjectSlug } from './engine/db.js';\nimport { GoalEngine } from './engine/goals.js';\nimport { BeliefEngine } from './engine/beliefs.js';\nimport { IntentionEngine } from './engine/intentions.js';\nimport { DecisionTraceEngine } from './engine/traces.js';\nimport { verifyEventChain } from './engine/events.js';\nimport { getVersion } from './utils/version.js';\n\nfunction showHelp() {\n console.log(`\nagent-reasoning-mcp CLI Tool v${getVersion()}\n\nUsage:\n agent-reasoning-mcp <command> [options]\n\nCommands:\n run Start the MCP server on stdio transport (Default)\n init Scaffold the workspace, database, and IDE agent rules\n init-global Re-initialize across all projects registered in ~/.agent-reasoning-mcp/projects.json\n doctor Run environment and database health checks\n inspect Display tables of goals, beliefs, intentions, and traces\n audit Audit cryptographic SHA-256 event ledger hash chain\n view Open interactive reasoning visualizer (viewer.html)\n update Check npm registry for package updates\n\nOptions:\n -p, --project Target specific project slug\n -v, --version Show version number\n -h, --help Show this help menu\n`);\n}\n\nasync function main() {\n const rawArgs = process.argv.slice(2);\n\n if (rawArgs.includes('--help') || rawArgs.includes('-h')) {\n showHelp();\n process.exit(0);\n }\n\n if (rawArgs.includes('--version') || rawArgs.includes('-v')) {\n console.log(getVersion());\n process.exit(0);\n }\n\n let project: string | undefined;\n const pIndex = rawArgs.findIndex((a) => a === '-p' || a === '--project');\n if (pIndex !== -1 && rawArgs[pIndex + 1]) {\n project = rawArgs[pIndex + 1];\n }\n\n // Filter out options and their paired values for command determination\n const positional = rawArgs.filter((a, idx) => {\n if (a.startsWith('-')) return false;\n if (idx > 0 && (rawArgs[idx - 1] === '-p' || rawArgs[idx - 1] === '--project' || rawArgs[idx - 1] === '-o' || rawArgs[idx - 1] === '--out')) {\n return false;\n }\n return true;\n });\n\n const command = positional[0] || 'run';\n\n switch (command) {\n case 'run': {\n await import('./index.js');\n break;\n }\n\n case 'init': {\n runInit({ project });\n break;\n }\n\n case 'init-global': {\n const { runInitGlobal } = await import('./cli/init.js');\n await runInitGlobal();\n break;\n }\n\n case 'doctor': {\n const root = resolveProjectRoot(project);\n const slug = getProjectSlug(project);\n console.log(`Running diagnostic doctor for \"${slug}\" in ${root}...`);\n try {\n const db = getDb(slug);\n const integrity = db.pragma('integrity_check');\n const journal = db.pragma('journal_mode');\n const eventAudit = verifyEventChain(db, slug);\n console.log(`✔ SQLite database accessibility: OK`);\n console.log(`✔ Journal mode: ${JSON.stringify(journal)}`);\n console.log(`✔ Database integrity: ${JSON.stringify(integrity)}`);\n console.log(`✔ Event chain verification: ${eventAudit.valid ? 'VALID (unbroken)' : 'FAILED'}`);\n console.log('\\nDoctor diagnostic check PASSED.');\n } catch (err: any) {\n console.error(`✖ Doctor check failed: ${err.message}`);\n process.exit(1);\n }\n break;\n }\n\n case 'doctor-global': {\n const { getRegistry } = await import('./engine/db.js');\n const registry = getRegistry();\n const entries = Object.entries(registry);\n console.log(`Running global diagnostic doctor across ${entries.length} registered project(s)...`);\n let allPassed = true;\n\n for (const [slug, projectRoot] of entries) {\n if (!fs.existsSync(projectRoot)) {\n console.log(`⚠️ ${slug}: Missing project root directory (${projectRoot})`);\n continue;\n }\n try {\n const db = getDb(slug, projectRoot);\n const integrity = db.pragma('integrity_check');\n const eventAudit = verifyEventChain(db, slug);\n const ok = integrity && eventAudit.valid;\n console.log(` ${ok ? '✔' : '✖'} ${slug}: ${ok ? 'HEALTHY' : 'ANOMALY DETECTED'}`);\n if (!ok) allPassed = false;\n } catch (err: any) {\n console.log(` ✖ ${slug}: ${err.message}`);\n allPassed = false;\n }\n }\n console.log(`\\nGlobal doctor check ${allPassed ? 'PASSED' : 'COMPLETED WITH WARNINGS'}.`);\n break;\n }\n\n case 'inspect': {\n const slug = getProjectSlug(project);\n const db = getDb(slug);\n console.log(`\\n=== Active Goals for ${slug} ===`);\n console.table(GoalEngine.listGoals(db, { project: slug, limit: 20 }), ['id', 'title', 'status', 'priority', 'progress']);\n\n console.log(`\\n=== Active Beliefs for ${slug} ===`);\n console.table(BeliefEngine.queryBeliefs(db, { project: slug, limit: 20 }), ['id', 'category', 'subject', 'predicate', 'confidence']);\n\n console.log(`\\n=== Dispatched Intentions for ${slug} ===`);\n console.table(IntentionEngine.listIntentions(db, { project: slug, limit: 20 }), ['id', 'behavior_name', 'status', 'priority']);\n break;\n }\n\n case 'audit': {\n const slug = getProjectSlug(project);\n const db = getDb(slug);\n const audit = verifyEventChain(db, slug);\n console.log(`Audit result for \"${slug}\":`, audit);\n break;\n }\n\n case 'view': {\n console.log(`Interactive visualizer available at: ${path.resolve(process.cwd(), 'viewer.html')}`);\n break;\n }\n\n case 'update': {\n console.log(`@putervision/agent-reasoning-mcp is up to date (v${getVersion()}).`);\n break;\n }\n\n default:\n console.error(`Unknown command: ${command}`);\n showHelp();\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error('Fatal CLI error:', err);\n process.exit(1);\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,35 @@
1
+ import {
2
+ closeAllDbs,
3
+ closeDb,
4
+ getBaseDir,
5
+ getDb,
6
+ getDbPath,
7
+ getProjectDbDir,
8
+ getProjectSlug,
9
+ getReadOnlyDb,
10
+ getRegistry,
11
+ getRegistryPath,
12
+ registerProject,
13
+ resolveProjectRoot,
14
+ sanitizeSlug,
15
+ unregisterProject,
16
+ validatePath
17
+ } from "./chunk-F4TEZ2TS.js";
18
+ export {
19
+ closeAllDbs,
20
+ closeDb,
21
+ getBaseDir,
22
+ getDb,
23
+ getDbPath,
24
+ getProjectDbDir,
25
+ getProjectSlug,
26
+ getReadOnlyDb,
27
+ getRegistry,
28
+ getRegistryPath,
29
+ registerProject,
30
+ resolveProjectRoot,
31
+ sanitizeSlug,
32
+ unregisterProject,
33
+ validatePath
34
+ };
35
+ //# sourceMappingURL=db-EL7JURVI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
package/dist/index.js ADDED
@@ -0,0 +1,100 @@
1
+ import {
2
+ server
3
+ } from "./chunk-6EWSPFTX.js";
4
+ import {
5
+ getVersion
6
+ } from "./chunk-SOCPGFU4.js";
7
+ import {
8
+ runAutoInit
9
+ } from "./chunk-2UKYRERH.js";
10
+ import "./chunk-6CYLIFQX.js";
11
+ import {
12
+ closeAllDbs,
13
+ getProjectSlug,
14
+ logger,
15
+ resolveProjectRoot
16
+ } from "./chunk-F4TEZ2TS.js";
17
+
18
+ // src/index.ts
19
+ import * as path from "path";
20
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
21
+ var isShuttingDown = false;
22
+ async function shutdown(signal) {
23
+ if (isShuttingDown) return;
24
+ isShuttingDown = true;
25
+ logger.info(`Received ${signal}. Shutting down agent-reasoning-mcp...`);
26
+ const forceTimer = setTimeout(() => {
27
+ logger.warn("Shutdown timed out. Forcing exit.");
28
+ process.exit(signal === "uncaughtException" || signal === "unhandledRejection" ? 1 : 0);
29
+ }, 1e3);
30
+ forceTimer.unref();
31
+ try {
32
+ await server.close();
33
+ logger.info("MCP server connection closed.");
34
+ } catch (err) {
35
+ logger.error("Error closing MCP server:", err.message);
36
+ }
37
+ try {
38
+ closeAllDbs();
39
+ logger.info("Database connections closed.");
40
+ } catch (err) {
41
+ logger.error("Error closing databases:", err.message);
42
+ }
43
+ if (signal === "uncaughtException" || signal === "unhandledRejection") {
44
+ process.exit(1);
45
+ } else {
46
+ process.exit(0);
47
+ }
48
+ }
49
+ async function main() {
50
+ const version = getVersion();
51
+ logger.info(`Starting agent-reasoning-mcp server v${version}...`);
52
+ try {
53
+ const root = resolveProjectRoot();
54
+ const projectName = path.basename(root);
55
+ const projectSlug = getProjectSlug(projectName);
56
+ await runAutoInit(root, projectSlug);
57
+ } catch (err) {
58
+ logger.warn(`Auto-initialization skipped: ${err.message}`);
59
+ }
60
+ const transport = new StdioServerTransport();
61
+ await server.connect(transport);
62
+ logger.info("agent-reasoning-mcp server connected over stdio.");
63
+ }
64
+ process.stdin.on("close", () => {
65
+ shutdown("stdin close").catch((err) => {
66
+ logger.error("Error during stdin close shutdown:", err);
67
+ process.exit(0);
68
+ });
69
+ });
70
+ process.on("SIGINT", () => {
71
+ shutdown("SIGINT").catch((err) => {
72
+ logger.error("Error during SIGINT shutdown:", err);
73
+ process.exit(1);
74
+ });
75
+ });
76
+ process.on("SIGTERM", () => {
77
+ shutdown("SIGTERM").catch((err) => {
78
+ logger.error("Error during SIGTERM shutdown:", err);
79
+ process.exit(1);
80
+ });
81
+ });
82
+ process.on("uncaughtException", (error) => {
83
+ logger.error("Uncaught Exception:", error);
84
+ shutdown("uncaughtException").catch((err) => {
85
+ logger.error("Error during shutdown:", err);
86
+ process.exit(1);
87
+ });
88
+ });
89
+ process.on("unhandledRejection", (reason, promise) => {
90
+ logger.error("Unhandled Rejection at:", promise, "reason:", reason);
91
+ shutdown("unhandledRejection").catch((err) => {
92
+ logger.error("Error during shutdown:", err);
93
+ process.exit(1);
94
+ });
95
+ });
96
+ main().catch((error) => {
97
+ logger.error("Fatal error starting server:", error);
98
+ process.exit(1);
99
+ });
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as path from 'path';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { server } from './server.js';\nimport { logger } from './utils/logger.js';\nimport { closeAllDbs, resolveProjectRoot, getProjectSlug } from './engine/db.js';\nimport { runAutoInit } from './cli/init.js';\nimport { getVersion } from './utils/version.js';\n\nlet isShuttingDown = false;\n\nasync function shutdown(signal: string) {\n if (isShuttingDown) return;\n isShuttingDown = true;\n logger.info(`Received ${signal}. Shutting down agent-reasoning-mcp...`);\n\n const forceTimer = setTimeout(() => {\n logger.warn('Shutdown timed out. Forcing exit.');\n process.exit(signal === 'uncaughtException' || signal === 'unhandledRejection' ? 1 : 0);\n }, 1000);\n forceTimer.unref();\n\n try {\n await server.close();\n logger.info('MCP server connection closed.');\n } catch (err: any) {\n logger.error('Error closing MCP server:', err.message);\n }\n\n try {\n closeAllDbs();\n logger.info('Database connections closed.');\n } catch (err: any) {\n logger.error('Error closing databases:', err.message);\n }\n\n if (signal === 'uncaughtException' || signal === 'unhandledRejection') {\n process.exit(1);\n } else {\n process.exit(0);\n }\n}\n\nasync function main() {\n const version = getVersion();\n logger.info(`Starting agent-reasoning-mcp server v${version}...`);\n\n // Run fast non-destructive auto-initialization\n try {\n const root = resolveProjectRoot();\n const projectName = path.basename(root);\n const projectSlug = getProjectSlug(projectName);\n await runAutoInit(root, projectSlug);\n } catch (err: any) {\n logger.warn(`Auto-initialization skipped: ${err.message}`);\n }\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n logger.info('agent-reasoning-mcp server connected over stdio.');\n}\n\nprocess.stdin.on('close', () => {\n shutdown('stdin close').catch((err) => {\n logger.error('Error during stdin close shutdown:', err);\n process.exit(0);\n });\n});\n\nprocess.on('SIGINT', () => {\n shutdown('SIGINT').catch((err) => {\n logger.error('Error during SIGINT shutdown:', err);\n process.exit(1);\n });\n});\n\nprocess.on('SIGTERM', () => {\n shutdown('SIGTERM').catch((err) => {\n logger.error('Error during SIGTERM shutdown:', err);\n process.exit(1);\n });\n});\n\nprocess.on('uncaughtException', (error) => {\n logger.error('Uncaught Exception:', error);\n shutdown('uncaughtException').catch((err) => {\n logger.error('Error during shutdown:', err);\n process.exit(1);\n });\n});\n\nprocess.on('unhandledRejection', (reason, promise) => {\n logger.error('Unhandled Rejection at:', promise, 'reason:', reason);\n shutdown('unhandledRejection').catch((err) => {\n logger.error('Error during shutdown:', err);\n process.exit(1);\n });\n});\n\nmain().catch((error) => {\n logger.error('Fatal error starting server:', error);\n process.exit(1);\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,YAAY,UAAU;AACtB,SAAS,4BAA4B;AAOrC,IAAI,iBAAiB;AAErB,eAAe,SAAS,QAAgB;AACtC,MAAI,eAAgB;AACpB,mBAAiB;AACjB,SAAO,KAAK,YAAY,MAAM,wCAAwC;AAEtE,QAAM,aAAa,WAAW,MAAM;AAClC,WAAO,KAAK,mCAAmC;AAC/C,YAAQ,KAAK,WAAW,uBAAuB,WAAW,uBAAuB,IAAI,CAAC;AAAA,EACxF,GAAG,GAAI;AACP,aAAW,MAAM;AAEjB,MAAI;AACF,UAAM,OAAO,MAAM;AACnB,WAAO,KAAK,+BAA+B;AAAA,EAC7C,SAAS,KAAU;AACjB,WAAO,MAAM,6BAA6B,IAAI,OAAO;AAAA,EACvD;AAEA,MAAI;AACF,gBAAY;AACZ,WAAO,KAAK,8BAA8B;AAAA,EAC5C,SAAS,KAAU;AACjB,WAAO,MAAM,4BAA4B,IAAI,OAAO;AAAA,EACtD;AAEA,MAAI,WAAW,uBAAuB,WAAW,sBAAsB;AACrE,YAAQ,KAAK,CAAC;AAAA,EAChB,OAAO;AACL,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,eAAe,OAAO;AACpB,QAAM,UAAU,WAAW;AAC3B,SAAO,KAAK,wCAAwC,OAAO,KAAK;AAGhE,MAAI;AACF,UAAM,OAAO,mBAAmB;AAChC,UAAM,cAAmB,cAAS,IAAI;AACtC,UAAM,cAAc,eAAe,WAAW;AAC9C,UAAM,YAAY,MAAM,WAAW;AAAA,EACrC,SAAS,KAAU;AACjB,WAAO,KAAK,gCAAgC,IAAI,OAAO,EAAE;AAAA,EAC3D;AAEA,QAAM,YAAY,IAAI,qBAAqB;AAC3C,QAAM,OAAO,QAAQ,SAAS;AAC9B,SAAO,KAAK,kDAAkD;AAChE;AAEA,QAAQ,MAAM,GAAG,SAAS,MAAM;AAC9B,WAAS,aAAa,EAAE,MAAM,CAAC,QAAQ;AACrC,WAAO,MAAM,sCAAsC,GAAG;AACtD,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH,CAAC;AAED,QAAQ,GAAG,UAAU,MAAM;AACzB,WAAS,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAChC,WAAO,MAAM,iCAAiC,GAAG;AACjD,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH,CAAC;AAED,QAAQ,GAAG,WAAW,MAAM;AAC1B,WAAS,SAAS,EAAE,MAAM,CAAC,QAAQ;AACjC,WAAO,MAAM,kCAAkC,GAAG;AAClD,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH,CAAC;AAED,QAAQ,GAAG,qBAAqB,CAAC,UAAU;AACzC,SAAO,MAAM,uBAAuB,KAAK;AACzC,WAAS,mBAAmB,EAAE,MAAM,CAAC,QAAQ;AAC3C,WAAO,MAAM,0BAA0B,GAAG;AAC1C,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH,CAAC;AAED,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,YAAY;AACpD,SAAO,MAAM,2BAA2B,SAAS,WAAW,MAAM;AAClE,WAAS,oBAAoB,EAAE,MAAM,CAAC,QAAQ;AAC5C,WAAO,MAAM,0BAA0B,GAAG;AAC1C,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH,CAAC;AAED,KAAK,EAAE,MAAM,CAAC,UAAU;AACtB,SAAO,MAAM,gCAAgC,KAAK;AAClD,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ runAutoInit,
3
+ runInit,
4
+ runInitGlobal,
5
+ upsertInstructionBlock
6
+ } from "./chunk-2UKYRERH.js";
7
+ import "./chunk-6CYLIFQX.js";
8
+ import "./chunk-F4TEZ2TS.js";
9
+ export {
10
+ runAutoInit,
11
+ runInit,
12
+ runInitGlobal,
13
+ upsertInstructionBlock
14
+ };
15
+ //# sourceMappingURL=init-JCBP646U.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}