@connorbritain/mssql-mcp-core 0.1.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/audit/AuditLogger.d.ts +37 -0
- package/dist/audit/AuditLogger.d.ts.map +1 -0
- package/dist/audit/AuditLogger.js +145 -0
- package/dist/audit/AuditLogger.js.map +1 -0
- package/dist/config/EnvironmentManager.d.ts +75 -0
- package/dist/config/EnvironmentManager.d.ts.map +1 -0
- package/dist/config/EnvironmentManager.js +305 -0
- package/dist/config/EnvironmentManager.js.map +1 -0
- package/dist/config/ScriptManager.d.ts +69 -0
- package/dist/config/ScriptManager.d.ts.map +1 -0
- package/dist/config/ScriptManager.js +166 -0
- package/dist/config/ScriptManager.js.map +1 -0
- package/dist/config/SecretResolver.d.ts +66 -0
- package/dist/config/SecretResolver.d.ts.map +1 -0
- package/dist/config/SecretResolver.js +230 -0
- package/dist/config/SecretResolver.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/routing/IntentRouter.d.ts +17 -0
- package/dist/routing/IntentRouter.d.ts.map +1 -0
- package/dist/routing/IntentRouter.js +243 -0
- package/dist/routing/IntentRouter.js.map +1 -0
- package/dist/server/createMcpServer.d.ts +7 -0
- package/dist/server/createMcpServer.d.ts.map +1 -0
- package/dist/server/createMcpServer.js +100 -0
- package/dist/server/createMcpServer.js.map +1 -0
- package/dist/server/toolsets.d.ts +42 -0
- package/dist/server/toolsets.d.ts.map +1 -0
- package/dist/server/toolsets.js +303 -0
- package/dist/server/toolsets.js.map +1 -0
- package/dist/server/wrapToolRun.d.ts +13 -0
- package/dist/server/wrapToolRun.d.ts.map +1 -0
- package/dist/server/wrapToolRun.js +102 -0
- package/dist/server/wrapToolRun.js.map +1 -0
- package/dist/shims.d.ts +2 -0
- package/dist/shims.d.ts.map +1 -0
- package/dist/shims.js +15 -0
- package/dist/shims.js.map +1 -0
- package/dist/tools/CreateIndexTool.d.ts +24 -0
- package/dist/tools/CreateIndexTool.d.ts.map +1 -0
- package/dist/tools/CreateIndexTool.js +64 -0
- package/dist/tools/CreateIndexTool.js.map +1 -0
- package/dist/tools/CreateTableTool.d.ts +12 -0
- package/dist/tools/CreateTableTool.d.ts.map +1 -0
- package/dist/tools/CreateTableTool.js +49 -0
- package/dist/tools/CreateTableTool.js.map +1 -0
- package/dist/tools/DeleteDataTool.d.ts +56 -0
- package/dist/tools/DeleteDataTool.d.ts.map +1 -0
- package/dist/tools/DeleteDataTool.js +103 -0
- package/dist/tools/DeleteDataTool.js.map +1 -0
- package/dist/tools/DescribeTableTool.d.ts +32 -0
- package/dist/tools/DescribeTableTool.d.ts.map +1 -0
- package/dist/tools/DescribeTableTool.js +116 -0
- package/dist/tools/DescribeTableTool.js.map +1 -0
- package/dist/tools/DropTableTool.d.ts +12 -0
- package/dist/tools/DropTableTool.d.ts.map +1 -0
- package/dist/tools/DropTableTool.js +37 -0
- package/dist/tools/DropTableTool.js.map +1 -0
- package/dist/tools/ExplainQueryTool.d.ts +24 -0
- package/dist/tools/ExplainQueryTool.d.ts.map +1 -0
- package/dist/tools/ExplainQueryTool.js +98 -0
- package/dist/tools/ExplainQueryTool.js.map +1 -0
- package/dist/tools/InsertDataTool.d.ts +17 -0
- package/dist/tools/InsertDataTool.d.ts.map +1 -0
- package/dist/tools/InsertDataTool.js +102 -0
- package/dist/tools/InsertDataTool.js.map +1 -0
- package/dist/tools/InspectDependenciesTool.d.ts +46 -0
- package/dist/tools/InspectDependenciesTool.d.ts.map +1 -0
- package/dist/tools/InspectDependenciesTool.js +215 -0
- package/dist/tools/InspectDependenciesTool.js.map +1 -0
- package/dist/tools/ListDatabasesTool.d.ts +27 -0
- package/dist/tools/ListDatabasesTool.d.ts.map +1 -0
- package/dist/tools/ListDatabasesTool.js +107 -0
- package/dist/tools/ListDatabasesTool.js.map +1 -0
- package/dist/tools/ListEnvironmentsTool.d.ts +49 -0
- package/dist/tools/ListEnvironmentsTool.d.ts.map +1 -0
- package/dist/tools/ListEnvironmentsTool.js +73 -0
- package/dist/tools/ListEnvironmentsTool.js.map +1 -0
- package/dist/tools/ListScriptsTool.d.ts +41 -0
- package/dist/tools/ListScriptsTool.d.ts.map +1 -0
- package/dist/tools/ListScriptsTool.js +86 -0
- package/dist/tools/ListScriptsTool.js.map +1 -0
- package/dist/tools/ListTableTool.d.ts +24 -0
- package/dist/tools/ListTableTool.d.ts.map +1 -0
- package/dist/tools/ListTableTool.js +85 -0
- package/dist/tools/ListTableTool.js.map +1 -0
- package/dist/tools/ProfileTableTool.d.ts +78 -0
- package/dist/tools/ProfileTableTool.d.ts.map +1 -0
- package/dist/tools/ProfileTableTool.js +373 -0
- package/dist/tools/ProfileTableTool.js.map +1 -0
- package/dist/tools/ReadDataTool.d.ts +61 -0
- package/dist/tools/ReadDataTool.d.ts.map +1 -0
- package/dist/tools/ReadDataTool.js +299 -0
- package/dist/tools/ReadDataTool.js.map +1 -0
- package/dist/tools/RelationshipInspectorTool.d.ts +46 -0
- package/dist/tools/RelationshipInspectorTool.d.ts.map +1 -0
- package/dist/tools/RelationshipInspectorTool.js +156 -0
- package/dist/tools/RelationshipInspectorTool.js.map +1 -0
- package/dist/tools/RunScriptTool.d.ts +214 -0
- package/dist/tools/RunScriptTool.d.ts.map +1 -0
- package/dist/tools/RunScriptTool.js +186 -0
- package/dist/tools/RunScriptTool.js.map +1 -0
- package/dist/tools/SearchSchemaTool.d.ts +88 -0
- package/dist/tools/SearchSchemaTool.d.ts.map +1 -0
- package/dist/tools/SearchSchemaTool.js +237 -0
- package/dist/tools/SearchSchemaTool.js.map +1 -0
- package/dist/tools/TestConnectionTool.d.ts +38 -0
- package/dist/tools/TestConnectionTool.d.ts.map +1 -0
- package/dist/tools/TestConnectionTool.js +156 -0
- package/dist/tools/TestConnectionTool.js.map +1 -0
- package/dist/tools/UpdateDataTool.d.ts +61 -0
- package/dist/tools/UpdateDataTool.d.ts.map +1 -0
- package/dist/tools/UpdateDataTool.js +117 -0
- package/dist/tools/UpdateDataTool.js.map +1 -0
- package/dist/tools/ValidateEnvironmentConfigTool.d.ts +51 -0
- package/dist/tools/ValidateEnvironmentConfigTool.d.ts.map +1 -0
- package/dist/tools/ValidateEnvironmentConfigTool.js +320 -0
- package/dist/tools/ValidateEnvironmentConfigTool.js.map +1 -0
- package/dist/tools/index.d.ts +21 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +22 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +60 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptManager.d.ts","sourceRoot":"","sources":["../../src/config/ScriptManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,MAAM,CAAkB;gBAEpB,WAAW,CAAC,EAAE,MAAM;IAUhC;;OAEG;IACH,OAAO,CAAC,WAAW;IA2CnB;;OAEG;IACH,WAAW,IAAI,YAAY,EAAE;IAK7B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAKjD;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IA2BvG;;;OAGG;IACH,iBAAiB,CACf,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAClC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA4CpC;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,YAAY,IAAI,OAAO;CAGxB;AAKD,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa,CAKpE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAE5D"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
export class ScriptManager {
|
|
4
|
+
constructor(scriptsPath) {
|
|
5
|
+
this.scripts = new Map();
|
|
6
|
+
this.loaded = false;
|
|
7
|
+
if (scriptsPath) {
|
|
8
|
+
this.scriptsPath = path.resolve(scriptsPath);
|
|
9
|
+
}
|
|
10
|
+
else if (process.env.SCRIPTS_PATH) {
|
|
11
|
+
this.scriptsPath = path.resolve(process.env.SCRIPTS_PATH);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this.scriptsPath = null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Load scripts from the configured path
|
|
19
|
+
*/
|
|
20
|
+
loadScripts() {
|
|
21
|
+
if (this.loaded)
|
|
22
|
+
return;
|
|
23
|
+
this.loaded = true;
|
|
24
|
+
if (!this.scriptsPath) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!fs.existsSync(this.scriptsPath)) {
|
|
28
|
+
console.warn(`Scripts path not found: ${this.scriptsPath}`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const manifestPath = path.join(this.scriptsPath, "scripts.json");
|
|
32
|
+
if (!fs.existsSync(manifestPath)) {
|
|
33
|
+
console.warn(`Scripts manifest not found: ${manifestPath}`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const manifestContent = fs.readFileSync(manifestPath, "utf-8");
|
|
38
|
+
const manifest = JSON.parse(manifestContent);
|
|
39
|
+
for (const script of manifest.scripts) {
|
|
40
|
+
const sqlPath = path.join(this.scriptsPath, script.file);
|
|
41
|
+
if (!fs.existsSync(sqlPath)) {
|
|
42
|
+
console.warn(`Script file not found: ${sqlPath}`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const sql = fs.readFileSync(sqlPath, "utf-8");
|
|
46
|
+
this.scripts.set(script.name, {
|
|
47
|
+
...script,
|
|
48
|
+
sql,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
console.log(`Loaded ${this.scripts.size} named script(s) from ${this.scriptsPath}`);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error(`Failed to load scripts manifest: ${error}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all available scripts
|
|
59
|
+
*/
|
|
60
|
+
listScripts() {
|
|
61
|
+
this.loadScripts();
|
|
62
|
+
return Array.from(this.scripts.values());
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get a specific script by name
|
|
66
|
+
*/
|
|
67
|
+
getScript(name) {
|
|
68
|
+
this.loadScripts();
|
|
69
|
+
return this.scripts.get(name);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if a script can run in a given environment
|
|
73
|
+
*/
|
|
74
|
+
canRunInEnvironment(scriptName, environmentName) {
|
|
75
|
+
const script = this.getScript(scriptName);
|
|
76
|
+
if (!script) {
|
|
77
|
+
return { allowed: false, reason: `Script '${scriptName}' not found` };
|
|
78
|
+
}
|
|
79
|
+
// Check denied environments first
|
|
80
|
+
if (script.deniedEnvironments && script.deniedEnvironments.includes(environmentName)) {
|
|
81
|
+
return {
|
|
82
|
+
allowed: false,
|
|
83
|
+
reason: `Script '${scriptName}' is not allowed in environment '${environmentName}'`
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// Check allowed environments if specified
|
|
87
|
+
if (script.allowedEnvironments && script.allowedEnvironments.length > 0) {
|
|
88
|
+
if (!script.allowedEnvironments.includes(environmentName)) {
|
|
89
|
+
return {
|
|
90
|
+
allowed: false,
|
|
91
|
+
reason: `Script '${scriptName}' can only run in: ${script.allowedEnvironments.join(", ")}`
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return { allowed: true };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolve script parameters into the SQL template
|
|
99
|
+
* Parameters in SQL use @paramName syntax
|
|
100
|
+
*/
|
|
101
|
+
resolveParameters(script, providedParams) {
|
|
102
|
+
const errors = [];
|
|
103
|
+
let sql = script.sql;
|
|
104
|
+
// Build final parameter values with defaults
|
|
105
|
+
const resolvedParams = {};
|
|
106
|
+
for (const param of script.parameters || []) {
|
|
107
|
+
if (providedParams[param.name] !== undefined) {
|
|
108
|
+
resolvedParams[param.name] = providedParams[param.name];
|
|
109
|
+
}
|
|
110
|
+
else if (param.default !== undefined) {
|
|
111
|
+
resolvedParams[param.name] = param.default;
|
|
112
|
+
}
|
|
113
|
+
else if (param.required) {
|
|
114
|
+
errors.push(`Required parameter '${param.name}' not provided`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (errors.length > 0) {
|
|
118
|
+
return { sql, errors };
|
|
119
|
+
}
|
|
120
|
+
// Replace @paramName with actual values
|
|
121
|
+
// Note: This is for preview purposes. Actual execution should use parameterized queries.
|
|
122
|
+
for (const [name, value] of Object.entries(resolvedParams)) {
|
|
123
|
+
const placeholder = new RegExp(`@${name}\\b`, "g");
|
|
124
|
+
let replacement;
|
|
125
|
+
if (typeof value === "string") {
|
|
126
|
+
// Escape single quotes for SQL
|
|
127
|
+
replacement = `'${value.replace(/'/g, "''")}'`;
|
|
128
|
+
}
|
|
129
|
+
else if (typeof value === "boolean") {
|
|
130
|
+
replacement = value ? "1" : "0";
|
|
131
|
+
}
|
|
132
|
+
else if (value === null) {
|
|
133
|
+
replacement = "NULL";
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
replacement = String(value);
|
|
137
|
+
}
|
|
138
|
+
sql = sql.replace(placeholder, replacement);
|
|
139
|
+
}
|
|
140
|
+
return { sql, errors: [] };
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get the scripts path (for display/debugging)
|
|
144
|
+
*/
|
|
145
|
+
getScriptsPath() {
|
|
146
|
+
return this.scriptsPath;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check if scripts are configured
|
|
150
|
+
*/
|
|
151
|
+
isConfigured() {
|
|
152
|
+
return this.scriptsPath !== null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Singleton instance
|
|
156
|
+
let scriptManagerInstance = null;
|
|
157
|
+
export function getScriptManager(scriptsPath) {
|
|
158
|
+
if (!scriptManagerInstance) {
|
|
159
|
+
scriptManagerInstance = new ScriptManager(scriptsPath);
|
|
160
|
+
}
|
|
161
|
+
return scriptManagerInstance;
|
|
162
|
+
}
|
|
163
|
+
export function initScriptManager(scriptsPath) {
|
|
164
|
+
scriptManagerInstance = new ScriptManager(scriptsPath);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=ScriptManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptManager.js","sourceRoot":"","sources":["../../src/config/ScriptManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface SecretProvider {
|
|
2
|
+
type: string;
|
|
3
|
+
resolve(name: string): string | undefined;
|
|
4
|
+
}
|
|
5
|
+
export interface SecretProviderConfig {
|
|
6
|
+
type: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
directory?: string;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}
|
|
11
|
+
export interface SecretsConfig {
|
|
12
|
+
providers: SecretProviderConfig[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolves ${secret:NAME} placeholders by querying an ordered list of providers.
|
|
16
|
+
* First provider to return a value wins.
|
|
17
|
+
*/
|
|
18
|
+
export declare class SecretResolver {
|
|
19
|
+
private readonly providers;
|
|
20
|
+
constructor(providers: SecretProvider[]);
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a single secret by name, trying each provider in order.
|
|
23
|
+
*/
|
|
24
|
+
resolve(name: string): string | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Replace all ${secret:NAME} placeholders in a string.
|
|
27
|
+
*/
|
|
28
|
+
resolveString(value: string | undefined): string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Recursively resolve secret placeholders in all string values of an object.
|
|
31
|
+
*/
|
|
32
|
+
resolveObject<T extends Record<string, any>>(config: T): T;
|
|
33
|
+
/**
|
|
34
|
+
* Extract all ${secret:NAME} references from a string.
|
|
35
|
+
*/
|
|
36
|
+
static extractSecretNames(value: string): string[];
|
|
37
|
+
/**
|
|
38
|
+
* Check which secret names are resolvable and which are not.
|
|
39
|
+
*/
|
|
40
|
+
checkResolvability(names: string[]): {
|
|
41
|
+
resolved: string[];
|
|
42
|
+
unresolved: string[];
|
|
43
|
+
};
|
|
44
|
+
get providerCount(): number;
|
|
45
|
+
get providerTypes(): string[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a SecretResolver from configuration.
|
|
49
|
+
* Defaults to [{ type: "env" }] if no config provided.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createSecretResolver(config?: SecretsConfig): SecretResolver;
|
|
52
|
+
/**
|
|
53
|
+
* Check if a dotenv provider config points to a readable file.
|
|
54
|
+
*/
|
|
55
|
+
export declare function validateDotenvPath(filePath: string): {
|
|
56
|
+
valid: boolean;
|
|
57
|
+
error?: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Check if a file provider config points to a readable directory.
|
|
61
|
+
*/
|
|
62
|
+
export declare function validateFileDirectory(directory: string): {
|
|
63
|
+
valid: boolean;
|
|
64
|
+
error?: string;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=SecretResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretResolver.d.ts","sourceRoot":"","sources":["../../src/config/SecretResolver.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AA4FD;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;gBAEjC,SAAS,EAAE,cAAc,EAAE;IAIvC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQzC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAc5D;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IAY1D;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAUlD;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAajF,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;CACF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAqC3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAOvF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAW3F"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
/**
|
|
4
|
+
* Resolves secrets from environment variables.
|
|
5
|
+
*/
|
|
6
|
+
class EnvProvider {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.type = "env";
|
|
9
|
+
}
|
|
10
|
+
resolve(name) {
|
|
11
|
+
return process.env[name];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolves secrets from a .env file at an explicit absolute path.
|
|
16
|
+
* Parses key=value lines, caches in memory.
|
|
17
|
+
*/
|
|
18
|
+
class DotenvProvider {
|
|
19
|
+
constructor(filePath) {
|
|
20
|
+
this.type = "dotenv";
|
|
21
|
+
this.cache = new Map();
|
|
22
|
+
this.loadFile(filePath);
|
|
23
|
+
}
|
|
24
|
+
loadFile(filePath) {
|
|
25
|
+
try {
|
|
26
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
27
|
+
for (const line of content.split(/\r?\n/)) {
|
|
28
|
+
const trimmed = line.trim();
|
|
29
|
+
// Skip empty lines and comments
|
|
30
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
31
|
+
continue;
|
|
32
|
+
const eqIndex = trimmed.indexOf("=");
|
|
33
|
+
if (eqIndex === -1)
|
|
34
|
+
continue;
|
|
35
|
+
const key = trimmed.substring(0, eqIndex).trim();
|
|
36
|
+
let value = trimmed.substring(eqIndex + 1).trim();
|
|
37
|
+
// Strip surrounding quotes (single or double)
|
|
38
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
39
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
40
|
+
value = value.slice(1, -1);
|
|
41
|
+
}
|
|
42
|
+
if (key) {
|
|
43
|
+
this.cache.set(key, value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
console.log(`Loaded ${this.cache.size} secret(s) from dotenv file: ${filePath}`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.warn(`Failed to read dotenv file at ${filePath}: ${error}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
resolve(name) {
|
|
53
|
+
return this.cache.get(name);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolves secrets by reading individual files from a directory.
|
|
58
|
+
* Looks for a file named `NAME` inside the configured directory.
|
|
59
|
+
*/
|
|
60
|
+
class FileProvider {
|
|
61
|
+
constructor(directory) {
|
|
62
|
+
this.type = "file";
|
|
63
|
+
this.directory = directory;
|
|
64
|
+
}
|
|
65
|
+
resolve(name) {
|
|
66
|
+
// Prevent path traversal
|
|
67
|
+
const safeName = path.basename(name);
|
|
68
|
+
if (safeName !== name) {
|
|
69
|
+
console.warn(`Secret name '${name}' contains path separators — rejected for safety`);
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const filePath = path.join(this.directory, safeName);
|
|
73
|
+
try {
|
|
74
|
+
return fs.readFileSync(filePath, "utf-8").trim();
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Resolves ${secret:NAME} placeholders by querying an ordered list of providers.
|
|
83
|
+
* First provider to return a value wins.
|
|
84
|
+
*/
|
|
85
|
+
export class SecretResolver {
|
|
86
|
+
constructor(providers) {
|
|
87
|
+
this.providers = providers;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Resolve a single secret by name, trying each provider in order.
|
|
91
|
+
*/
|
|
92
|
+
resolve(name) {
|
|
93
|
+
for (const provider of this.providers) {
|
|
94
|
+
const value = provider.resolve(name);
|
|
95
|
+
if (value !== undefined)
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Replace all ${secret:NAME} placeholders in a string.
|
|
102
|
+
*/
|
|
103
|
+
resolveString(value) {
|
|
104
|
+
if (!value)
|
|
105
|
+
return value;
|
|
106
|
+
const secretPattern = /\$\{secret:([^}]+)\}/g;
|
|
107
|
+
return value.replace(secretPattern, (match, secretName) => {
|
|
108
|
+
const resolved = this.resolve(secretName);
|
|
109
|
+
if (resolved === undefined) {
|
|
110
|
+
console.warn(`Secret '${secretName}' not found in any configured provider`);
|
|
111
|
+
return match;
|
|
112
|
+
}
|
|
113
|
+
return resolved;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Recursively resolve secret placeholders in all string values of an object.
|
|
118
|
+
*/
|
|
119
|
+
resolveObject(config) {
|
|
120
|
+
const resolved = { ...config };
|
|
121
|
+
for (const [key, value] of Object.entries(resolved)) {
|
|
122
|
+
if (typeof value === "string") {
|
|
123
|
+
resolved[key] = this.resolveString(value);
|
|
124
|
+
}
|
|
125
|
+
else if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
126
|
+
resolved[key] = this.resolveObject(value);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return resolved;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Extract all ${secret:NAME} references from a string.
|
|
133
|
+
*/
|
|
134
|
+
static extractSecretNames(value) {
|
|
135
|
+
const names = [];
|
|
136
|
+
const pattern = /\$\{secret:([^}]+)\}/g;
|
|
137
|
+
let match;
|
|
138
|
+
while ((match = pattern.exec(value)) !== null) {
|
|
139
|
+
names.push(match[1]);
|
|
140
|
+
}
|
|
141
|
+
return names;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check which secret names are resolvable and which are not.
|
|
145
|
+
*/
|
|
146
|
+
checkResolvability(names) {
|
|
147
|
+
const resolved = [];
|
|
148
|
+
const unresolved = [];
|
|
149
|
+
for (const name of names) {
|
|
150
|
+
if (this.resolve(name) !== undefined) {
|
|
151
|
+
resolved.push(name);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
unresolved.push(name);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return { resolved, unresolved };
|
|
158
|
+
}
|
|
159
|
+
get providerCount() {
|
|
160
|
+
return this.providers.length;
|
|
161
|
+
}
|
|
162
|
+
get providerTypes() {
|
|
163
|
+
return this.providers.map((p) => p.type);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Create a SecretResolver from configuration.
|
|
168
|
+
* Defaults to [{ type: "env" }] if no config provided.
|
|
169
|
+
*/
|
|
170
|
+
export function createSecretResolver(config) {
|
|
171
|
+
const providerConfigs = config?.providers ?? [{ type: "env" }];
|
|
172
|
+
const providers = [];
|
|
173
|
+
for (const pc of providerConfigs) {
|
|
174
|
+
switch (pc.type) {
|
|
175
|
+
case "env":
|
|
176
|
+
providers.push(new EnvProvider());
|
|
177
|
+
break;
|
|
178
|
+
case "dotenv":
|
|
179
|
+
if (!pc.path) {
|
|
180
|
+
console.warn("Dotenv provider requires a 'path' — skipping");
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
providers.push(new DotenvProvider(pc.path));
|
|
184
|
+
break;
|
|
185
|
+
case "file":
|
|
186
|
+
if (!pc.directory) {
|
|
187
|
+
console.warn("File provider requires a 'directory' — skipping");
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
providers.push(new FileProvider(pc.directory));
|
|
191
|
+
break;
|
|
192
|
+
default:
|
|
193
|
+
console.warn(`Unknown secret provider type '${pc.type}' — skipping`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// If no providers were successfully created, fall back to env
|
|
197
|
+
if (providers.length === 0) {
|
|
198
|
+
providers.push(new EnvProvider());
|
|
199
|
+
}
|
|
200
|
+
return new SecretResolver(providers);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if a dotenv provider config points to a readable file.
|
|
204
|
+
*/
|
|
205
|
+
export function validateDotenvPath(filePath) {
|
|
206
|
+
try {
|
|
207
|
+
fs.accessSync(filePath, fs.constants.R_OK);
|
|
208
|
+
return { valid: true };
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return { valid: false, error: `Dotenv file not readable: ${filePath}` };
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Check if a file provider config points to a readable directory.
|
|
216
|
+
*/
|
|
217
|
+
export function validateFileDirectory(directory) {
|
|
218
|
+
try {
|
|
219
|
+
const stat = fs.statSync(directory);
|
|
220
|
+
if (!stat.isDirectory()) {
|
|
221
|
+
return { valid: false, error: `Not a directory: ${directory}` };
|
|
222
|
+
}
|
|
223
|
+
fs.accessSync(directory, fs.constants.R_OK);
|
|
224
|
+
return { valid: true };
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return { valid: false, error: `Directory not accessible: ${directory}` };
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=SecretResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretResolver.js","sourceRoot":"","sources":["../../src/config/SecretResolver.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { startMcpServer } from "./server/createMcpServer.js";
|
|
2
|
+
export type { TierLevel, McpServerConfig, IntentCategory, RunnableTool, ToolRoutingConfig, IntentRouterOptions, RoutingCandidate, RouteParams, RouteResult, WrapToolRunOptions, } from "./types.js";
|
|
3
|
+
export { EnvironmentManager, getEnvironmentManager, } from "./config/EnvironmentManager.js";
|
|
4
|
+
export type { EnvironmentConfig, EnvironmentsConfig, AccessLevel, AuditLevel as ConfigAuditLevel, TierLevel as ConfigTierLevel, } from "./config/EnvironmentManager.js";
|
|
5
|
+
export { SecretResolver, createSecretResolver, validateDotenvPath, validateFileDirectory, } from "./config/SecretResolver.js";
|
|
6
|
+
export type { SecretsConfig, SecretProviderConfig } from "./config/SecretResolver.js";
|
|
7
|
+
export { AuditLogger, auditLogger } from "./audit/AuditLogger.js";
|
|
8
|
+
export type { AuditLogEntry, AuditLevel } from "./audit/AuditLogger.js";
|
|
9
|
+
export { IntentRouter } from "./routing/IntentRouter.js";
|
|
10
|
+
export { wrapToolRun } from "./server/wrapToolRun.js";
|
|
11
|
+
export { createAllToolInstances, getReaderTools, getWriterTools, getAdminTools, buildToolRegistry, READER_MUTATING_TOOLS, WRITER_MUTATING_TOOLS, ADMIN_MUTATING_TOOLS, READER_APPROVAL_EXEMPT, WRITER_APPROVAL_EXEMPT, ADMIN_APPROVAL_EXEMPT, } from "./server/toolsets.js";
|
|
12
|
+
export { initShims } from "./shims.js";
|
|
13
|
+
export { CreateIndexTool, CreateTableTool, DeleteDataTool, DescribeTableTool, DropTableTool, ExplainQueryTool, InsertDataTool, InspectDependenciesTool, ListDatabasesTool, ListEnvironmentsTool, ListScriptsTool, ListTableTool, ProfileTableTool, ReadDataTool, RelationshipInspectorTool, RunScriptTool, SearchSchemaTool, TestConnectionTool, UpdateDataTool, ValidateEnvironmentConfigTool, } from "./tools/index.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,YAAY,EACV,SAAS,EACT,eAAe,EACf,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,UAAU,IAAI,gBAAgB,EAC9B,SAAS,IAAI,eAAe,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGtF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGxE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// ─── Main entry point ───────────────────────────────────────────────────────
|
|
2
|
+
export { startMcpServer } from "./server/createMcpServer.js";
|
|
3
|
+
// ─── Config ─────────────────────────────────────────────────────────────────
|
|
4
|
+
export { EnvironmentManager, getEnvironmentManager, } from "./config/EnvironmentManager.js";
|
|
5
|
+
export { SecretResolver, createSecretResolver, validateDotenvPath, validateFileDirectory, } from "./config/SecretResolver.js";
|
|
6
|
+
// ─── Audit ──────────────────────────────────────────────────────────────────
|
|
7
|
+
export { AuditLogger, auditLogger } from "./audit/AuditLogger.js";
|
|
8
|
+
// ─── Routing ────────────────────────────────────────────────────────────────
|
|
9
|
+
export { IntentRouter } from "./routing/IntentRouter.js";
|
|
10
|
+
// ─── Server harness ─────────────────────────────────────────────────────────
|
|
11
|
+
export { wrapToolRun } from "./server/wrapToolRun.js";
|
|
12
|
+
export { createAllToolInstances, getReaderTools, getWriterTools, getAdminTools, buildToolRegistry, READER_MUTATING_TOOLS, WRITER_MUTATING_TOOLS, ADMIN_MUTATING_TOOLS, READER_APPROVAL_EXEMPT, WRITER_APPROVAL_EXEMPT, ADMIN_APPROVAL_EXEMPT, } from "./server/toolsets.js";
|
|
13
|
+
// ─── Shims ──────────────────────────────────────────────────────────────────
|
|
14
|
+
export { initShims } from "./shims.js";
|
|
15
|
+
// ─── Tools ──────────────────────────────────────────────────────────────────
|
|
16
|
+
export { CreateIndexTool, CreateTableTool, DeleteDataTool, DescribeTableTool, DropTableTool, ExplainQueryTool, InsertDataTool, InspectDependenciesTool, ListDatabasesTool, ListEnvironmentsTool, ListScriptsTool, ListTableTool, ProfileTableTool, ReadDataTool, RelationshipInspectorTool, RunScriptTool, SearchSchemaTool, TestConnectionTool, UpdateDataTool, ValidateEnvironmentConfigTool, } from "./tools/index.js";
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAgB7D,+EAA+E;AAC/E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AAQxC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AAGpC,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGlE,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,+EAA+E;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,+EAA+E;AAC/E,OAAO,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IntentRouterOptions, RouteParams, RouteResult } from "../types.js";
|
|
2
|
+
export declare class IntentRouter {
|
|
3
|
+
private readonly tools;
|
|
4
|
+
private readonly allowMutations;
|
|
5
|
+
private readonly requireConfirmationForMutations;
|
|
6
|
+
constructor(options: IntentRouterOptions);
|
|
7
|
+
route(params: RouteParams): Promise<RouteResult>;
|
|
8
|
+
private inferEnvironment;
|
|
9
|
+
private normalizeArguments;
|
|
10
|
+
private isToolEligible;
|
|
11
|
+
private inferIntent;
|
|
12
|
+
private extractSqlSnippet;
|
|
13
|
+
private scoreTool;
|
|
14
|
+
private hasArgument;
|
|
15
|
+
private getMissingArguments;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=IntentRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntentRouter.d.ts","sourceRoot":"","sources":["../../src/routing/IntentRouter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,mBAAmB,EAGnB,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAU;gBAE9C,OAAO,EAAE,mBAAmB;IAMlC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAwFtD,OAAO,CAAC,gBAAgB;IAuCxB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,WAAW;IAqDnB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,SAAS;IA8CjB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,mBAAmB;CAM5B"}
|