@mcp-consultant-tools/azure-sql 28.0.0-beta.7 → 29.0.0-beta.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/build/cli/commands/connection-commands.d.ts +7 -0
- package/build/cli/commands/connection-commands.d.ts.map +1 -0
- package/build/cli/commands/connection-commands.js +64 -0
- package/build/cli/commands/connection-commands.js.map +1 -0
- package/build/cli/commands/crud-commands.d.ts +7 -0
- package/build/cli/commands/crud-commands.d.ts.map +1 -0
- package/build/cli/commands/crud-commands.js +63 -0
- package/build/cli/commands/crud-commands.js.map +1 -0
- package/build/cli/commands/index.d.ts +13 -0
- package/build/cli/commands/index.d.ts.map +1 -0
- package/build/cli/commands/index.js +24 -0
- package/build/cli/commands/index.js.map +1 -0
- package/build/cli/commands/query-commands.d.ts +7 -0
- package/build/cli/commands/query-commands.d.ts.map +1 -0
- package/build/cli/commands/query-commands.js +149 -0
- package/build/cli/commands/query-commands.js.map +1 -0
- package/build/cli/commands/sproc-commands.d.ts +7 -0
- package/build/cli/commands/sproc-commands.d.ts.map +1 -0
- package/build/cli/commands/sproc-commands.js +87 -0
- package/build/cli/commands/sproc-commands.js.map +1 -0
- package/build/cli/commands/unrestricted-commands.d.ts +7 -0
- package/build/cli/commands/unrestricted-commands.d.ts.map +1 -0
- package/build/cli/commands/unrestricted-commands.js +31 -0
- package/build/cli/commands/unrestricted-commands.js.map +1 -0
- package/build/cli/commands/view-commands.d.ts +7 -0
- package/build/cli/commands/view-commands.d.ts.map +1 -0
- package/build/cli/commands/view-commands.js +66 -0
- package/build/cli/commands/view-commands.js.map +1 -0
- package/build/cli/output.d.ts +11 -0
- package/build/cli/output.d.ts.map +1 -0
- package/build/cli/output.js +10 -0
- package/build/cli/output.js.map +1 -0
- package/build/cli.d.ts +9 -0
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +27 -0
- package/build/cli.js.map +1 -0
- package/build/context-factory.d.ts +10 -0
- package/build/context-factory.d.ts.map +1 -0
- package/build/context-factory.js +105 -0
- package/build/context-factory.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +45 -0
- package/build/index.js.map +1 -1
- package/build/services/connection-service.d.ts +1 -2
- package/build/services/connection-service.d.ts.map +1 -1
- package/build/services/connection-service.js +1 -3
- package/build/services/connection-service.js.map +1 -1
- package/build/services/index.d.ts +2 -0
- package/build/services/index.d.ts.map +1 -1
- package/build/services/index.js +1 -0
- package/build/services/index.js.map +1 -1
- package/build/services/query-service.d.ts.map +1 -1
- package/build/services/query-service.js +7 -7
- package/build/services/query-service.js.map +1 -1
- package/build/services/write-service.d.ts +109 -0
- package/build/services/write-service.d.ts.map +1 -0
- package/build/services/write-service.js +735 -0
- package/build/services/write-service.js.map +1 -0
- package/build/tool-examples.d.ts +32 -0
- package/build/tool-examples.d.ts.map +1 -1
- package/build/tool-examples.js +33 -0
- package/build/tool-examples.js.map +1 -1
- package/build/tools/crud-tools.d.ts +3 -0
- package/build/tools/crud-tools.d.ts.map +1 -0
- package/build/tools/crud-tools.js +115 -0
- package/build/tools/crud-tools.js.map +1 -0
- package/build/tools/index.d.ts +4 -0
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +12 -0
- package/build/tools/index.js.map +1 -1
- package/build/tools/sproc-tools.d.ts +3 -0
- package/build/tools/sproc-tools.d.ts.map +1 -0
- package/build/tools/sproc-tools.js +172 -0
- package/build/tools/sproc-tools.js.map +1 -0
- package/build/tools/unrestricted-tools.d.ts +7 -0
- package/build/tools/unrestricted-tools.d.ts.map +1 -0
- package/build/tools/unrestricted-tools.js +63 -0
- package/build/tools/unrestricted-tools.js.map +1 -0
- package/build/tools/view-tools.d.ts +3 -0
- package/build/tools/view-tools.d.ts.map +1 -0
- package/build/tools/view-tools.js +121 -0
- package/build/tools/view-tools.js.map +1 -0
- package/build/types.d.ts +10 -0
- package/build/types.d.ts.map +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection CLI Commands - 4 commands mapping to connection MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerConnectionCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=connection-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/connection-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA6DtF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection CLI Commands - 4 commands mapping to connection MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerConnectionCommands(program, ctx) {
|
|
7
|
+
const conn = program.command('connection').description('Connection and server operations');
|
|
8
|
+
conn
|
|
9
|
+
.command('list-servers')
|
|
10
|
+
.description('List all configured SQL servers')
|
|
11
|
+
.action(async () => {
|
|
12
|
+
try {
|
|
13
|
+
const servers = await ctx.connection.listServers();
|
|
14
|
+
outputResult({ fileName: 'sql-servers', data: servers, summary: `Found ${servers.length} configured SQL server(s)` }, getGlobalFlags(program));
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
handleCliError(error, 'list servers');
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
conn
|
|
21
|
+
.command('list-databases')
|
|
22
|
+
.description('List databases on a SQL server')
|
|
23
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
24
|
+
.action(async (opts) => {
|
|
25
|
+
try {
|
|
26
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
27
|
+
const databases = await ctx.connection.listDatabases(resolvedServerId);
|
|
28
|
+
outputResult({ fileName: `sql-databases-${resolvedServerId}`, data: databases, summary: `Found ${databases.length} database(s) on server '${resolvedServerId}'` }, getGlobalFlags(program));
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
handleCliError(error, 'list databases');
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
conn
|
|
35
|
+
.command('get-defaults')
|
|
36
|
+
.description('Get the default server and database configuration')
|
|
37
|
+
.action(async () => {
|
|
38
|
+
try {
|
|
39
|
+
const defaults = ctx.connection.getDefaultConfiguration();
|
|
40
|
+
outputResult({ fileName: 'sql-defaults', data: defaults, summary: `Default: server='${defaults.defaultServerId}', database='${defaults.defaultDatabase}'` }, getGlobalFlags(program));
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
handleCliError(error, 'get defaults');
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
conn
|
|
47
|
+
.command('test')
|
|
48
|
+
.description('Test SQL Server connectivity and return connection information')
|
|
49
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
50
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
51
|
+
.action(async (opts) => {
|
|
52
|
+
try {
|
|
53
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
54
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
55
|
+
const result = await ctx.connection.testConnection(resolvedServerId, resolvedDatabase);
|
|
56
|
+
const status = result.connected ? 'Connected' : 'Failed';
|
|
57
|
+
outputResult({ fileName: `sql-test-${resolvedServerId}`, data: result, summary: `Connection test: ${status} to ${result.server}/${result.database}` }, getGlobalFlags(program));
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
handleCliError(error, 'test connection');
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=connection-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/connection-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CRUD CLI Commands - 3 commands mapping to INSERT/UPDATE/DELETE MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerCrudCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=crud-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/crud-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA2DhF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CRUD CLI Commands - 3 commands mapping to INSERT/UPDATE/DELETE MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerCrudCommands(program, ctx) {
|
|
7
|
+
const crud = program.command('crud').description('Data modification operations (INSERT, UPDATE, DELETE)');
|
|
8
|
+
crud
|
|
9
|
+
.command('insert')
|
|
10
|
+
.description('Execute an INSERT query')
|
|
11
|
+
.argument('<query>', 'INSERT query to execute (e.g., "INSERT INTO Users (Name, Email) VALUES (\'John\', \'john@example.com\')")')
|
|
12
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
13
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
14
|
+
.action(async (query, opts) => {
|
|
15
|
+
try {
|
|
16
|
+
ctx.checkInsertEnabled();
|
|
17
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
18
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
19
|
+
const result = await ctx.write.executeInsert(resolvedServerId, resolvedDatabase, query);
|
|
20
|
+
outputResult({ fileName: 'sql-crud-insert', data: result, summary: result.message }, getGlobalFlags(program));
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
handleCliError(error, 'insert');
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
crud
|
|
27
|
+
.command('update')
|
|
28
|
+
.description('Execute an UPDATE query')
|
|
29
|
+
.argument('<query>', 'UPDATE query to execute (e.g., "UPDATE Users SET Status = 1 WHERE Email = \'john@example.com\'")')
|
|
30
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
31
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
32
|
+
.action(async (query, opts) => {
|
|
33
|
+
try {
|
|
34
|
+
ctx.checkUpdateEnabled();
|
|
35
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
36
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
37
|
+
const result = await ctx.write.executeUpdate(resolvedServerId, resolvedDatabase, query);
|
|
38
|
+
outputResult({ fileName: 'sql-crud-update', data: result, summary: result.message }, getGlobalFlags(program));
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
handleCliError(error, 'update');
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
crud
|
|
45
|
+
.command('delete')
|
|
46
|
+
.description('Execute a DELETE query (requires WHERE clause)')
|
|
47
|
+
.argument('<query>', 'DELETE query to execute (e.g., "DELETE FROM Users WHERE Status = 0")')
|
|
48
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
49
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
50
|
+
.action(async (query, opts) => {
|
|
51
|
+
try {
|
|
52
|
+
ctx.checkDeleteEnabled();
|
|
53
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
54
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
55
|
+
const result = await ctx.write.executeDelete(resolvedServerId, resolvedDatabase, query);
|
|
56
|
+
outputResult({ fileName: 'sql-crud-delete', data: result, summary: result.message }, getGlobalFlags(program));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
handleCliError(error, 'delete');
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=crud-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/crud-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands barrel export + combined registration
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerAllCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
export { registerQueryCommands } from './query-commands.js';
|
|
8
|
+
export { registerConnectionCommands } from './connection-commands.js';
|
|
9
|
+
export { registerViewCommands } from './view-commands.js';
|
|
10
|
+
export { registerSprocCommands } from './sproc-commands.js';
|
|
11
|
+
export { registerCrudCommands } from './crud-commands.js';
|
|
12
|
+
export { registerUnrestrictedCommands } from './unrestricted-commands.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQrD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAO/E;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands barrel export + combined registration
|
|
3
|
+
*/
|
|
4
|
+
import { registerQueryCommands } from './query-commands.js';
|
|
5
|
+
import { registerConnectionCommands } from './connection-commands.js';
|
|
6
|
+
import { registerViewCommands } from './view-commands.js';
|
|
7
|
+
import { registerSprocCommands } from './sproc-commands.js';
|
|
8
|
+
import { registerCrudCommands } from './crud-commands.js';
|
|
9
|
+
import { registerUnrestrictedCommands } from './unrestricted-commands.js';
|
|
10
|
+
export function registerAllCommands(program, ctx) {
|
|
11
|
+
registerQueryCommands(program, ctx);
|
|
12
|
+
registerConnectionCommands(program, ctx);
|
|
13
|
+
registerViewCommands(program, ctx);
|
|
14
|
+
registerSprocCommands(program, ctx);
|
|
15
|
+
registerCrudCommands(program, ctx);
|
|
16
|
+
registerUnrestrictedCommands(program, ctx);
|
|
17
|
+
}
|
|
18
|
+
export { registerQueryCommands } from './query-commands.js';
|
|
19
|
+
export { registerConnectionCommands } from './connection-commands.js';
|
|
20
|
+
export { registerViewCommands } from './view-commands.js';
|
|
21
|
+
export { registerSprocCommands } from './sproc-commands.js';
|
|
22
|
+
export { registerCrudCommands } from './crud-commands.js';
|
|
23
|
+
export { registerUnrestrictedCommands } from './unrestricted-commands.js';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,GAAmB;IACvE,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACzC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,4BAA4B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query CLI Commands - 8 commands mapping to query MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerQueryCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=query-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/query-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAsJjF"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query CLI Commands - 8 commands mapping to query MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerQueryCommands(program, ctx) {
|
|
7
|
+
const query = program.command('query').description('Query and schema operations');
|
|
8
|
+
query
|
|
9
|
+
.command('list-tables')
|
|
10
|
+
.description('List all user tables in the database with row counts and sizes')
|
|
11
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
12
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
13
|
+
.action(async (opts) => {
|
|
14
|
+
try {
|
|
15
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
16
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
17
|
+
const tables = await ctx.query.listTables(resolvedServerId, resolvedDatabase);
|
|
18
|
+
outputResult({ fileName: `sql-tables-${resolvedServerId}-${resolvedDatabase}`, data: tables, summary: `Found ${tables.length} table(s) in ${resolvedServerId}/${resolvedDatabase}` }, getGlobalFlags(program));
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
handleCliError(error, 'list tables');
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
query
|
|
25
|
+
.command('list-views')
|
|
26
|
+
.description('List all views in the database')
|
|
27
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
28
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
29
|
+
.action(async (opts) => {
|
|
30
|
+
try {
|
|
31
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
32
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
33
|
+
const views = await ctx.query.listViews(resolvedServerId, resolvedDatabase);
|
|
34
|
+
outputResult({ fileName: `sql-views-${resolvedServerId}-${resolvedDatabase}`, data: views, summary: `Found ${views.length} view(s) in ${resolvedServerId}/${resolvedDatabase}` }, getGlobalFlags(program));
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
handleCliError(error, 'list views');
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
query
|
|
41
|
+
.command('list-sprocs')
|
|
42
|
+
.description('List all stored procedures in the database')
|
|
43
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
44
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
45
|
+
.action(async (opts) => {
|
|
46
|
+
try {
|
|
47
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
48
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
49
|
+
const procedures = await ctx.query.listStoredProcedures(resolvedServerId, resolvedDatabase);
|
|
50
|
+
outputResult({ fileName: `sql-sprocs-${resolvedServerId}-${resolvedDatabase}`, data: procedures, summary: `Found ${procedures.length} stored procedure(s) in ${resolvedServerId}/${resolvedDatabase}` }, getGlobalFlags(program));
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
handleCliError(error, 'list stored procedures');
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
query
|
|
57
|
+
.command('list-triggers')
|
|
58
|
+
.description('List all database triggers in the database')
|
|
59
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
60
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
61
|
+
.action(async (opts) => {
|
|
62
|
+
try {
|
|
63
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
64
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
65
|
+
const triggers = await ctx.query.listTriggers(resolvedServerId, resolvedDatabase);
|
|
66
|
+
outputResult({ fileName: `sql-triggers-${resolvedServerId}-${resolvedDatabase}`, data: triggers, summary: `Found ${triggers.length} trigger(s) in ${resolvedServerId}/${resolvedDatabase}` }, getGlobalFlags(program));
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
handleCliError(error, 'list triggers');
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
query
|
|
73
|
+
.command('list-functions')
|
|
74
|
+
.description('List all user-defined functions in the database')
|
|
75
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
76
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
77
|
+
.action(async (opts) => {
|
|
78
|
+
try {
|
|
79
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
80
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
81
|
+
const functions = await ctx.query.listFunctions(resolvedServerId, resolvedDatabase);
|
|
82
|
+
outputResult({ fileName: `sql-functions-${resolvedServerId}-${resolvedDatabase}`, data: functions, summary: `Found ${functions.length} function(s) in ${resolvedServerId}/${resolvedDatabase}` }, getGlobalFlags(program));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
handleCliError(error, 'list functions');
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
query
|
|
89
|
+
.command('table-schema')
|
|
90
|
+
.description('Get detailed schema information for a table including columns, indexes, and foreign keys')
|
|
91
|
+
.argument('<schemaName>', "Schema name (e.g., 'dbo')")
|
|
92
|
+
.argument('<tableName>', "Table name (e.g., 'Users')")
|
|
93
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
94
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
95
|
+
.action(async (schemaName, tableName, opts) => {
|
|
96
|
+
try {
|
|
97
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
98
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
99
|
+
const schema = await ctx.query.getTableSchema(resolvedServerId, resolvedDatabase, schemaName, tableName);
|
|
100
|
+
outputResult({ fileName: `sql-schema-${schemaName}-${tableName}`, data: schema, summary: `Schema for ${schemaName}.${tableName}: ${schema.columns?.length ?? 0} column(s), ${schema.indexes?.length ?? 0} index(es), ${schema.foreignKeys?.length ?? 0} FK(s)` }, getGlobalFlags(program));
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
handleCliError(error, 'get table schema');
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
query
|
|
107
|
+
.command('obj-def')
|
|
108
|
+
.description('Get the SQL definition for a view, stored procedure, function, or trigger')
|
|
109
|
+
.argument('<schemaName>', "Schema name (e.g., 'dbo')")
|
|
110
|
+
.argument('<objectName>', 'Object name')
|
|
111
|
+
.argument('<objectType>', 'Object type: VIEW, PROCEDURE, FUNCTION, or TRIGGER')
|
|
112
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
113
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
114
|
+
.action(async (schemaName, objectName, objectType, opts) => {
|
|
115
|
+
try {
|
|
116
|
+
const validTypes = ['VIEW', 'PROCEDURE', 'FUNCTION', 'TRIGGER'];
|
|
117
|
+
const upperType = objectType.toUpperCase();
|
|
118
|
+
if (!validTypes.includes(upperType)) {
|
|
119
|
+
throw new Error(`Invalid object type '${objectType}'. Must be one of: ${validTypes.join(', ')}`);
|
|
120
|
+
}
|
|
121
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
122
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
123
|
+
const definition = await ctx.query.getObjectDefinition(resolvedServerId, resolvedDatabase, schemaName, objectName, upperType);
|
|
124
|
+
outputResult({ fileName: `sql-def-${schemaName}-${objectName}`, data: definition, summary: `${upperType} definition for ${schemaName}.${objectName}` }, getGlobalFlags(program));
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
handleCliError(error, 'get object definition');
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
query
|
|
131
|
+
.command('execute')
|
|
132
|
+
.description('Execute a SELECT query against Azure SQL Database')
|
|
133
|
+
.argument('<query>', 'SELECT query to execute')
|
|
134
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
135
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
136
|
+
.action(async (queryStr, opts) => {
|
|
137
|
+
try {
|
|
138
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
139
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
140
|
+
const result = await ctx.query.executeSelectQuery(resolvedServerId, resolvedDatabase, queryStr);
|
|
141
|
+
const truncatedMsg = result.truncated ? ' (truncated)' : '';
|
|
142
|
+
outputResult({ fileName: 'sql-query-result', data: result, summary: `Query returned ${result.rowCount} row(s)${truncatedMsg}` }, getGlobalFlags(program));
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
handleCliError(error, 'execute query');
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=query-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/query-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sproc CLI Commands - 3 commands mapping to stored procedure MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerSprocCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=sproc-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sproc-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sproc-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAoFjF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sproc CLI Commands - 3 commands mapping to stored procedure MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerSprocCommands(program, ctx) {
|
|
7
|
+
const sproc = program.command('sproc').description('Stored procedure management and execution');
|
|
8
|
+
sproc
|
|
9
|
+
.command('manage')
|
|
10
|
+
.description('Create or alter a stored procedure')
|
|
11
|
+
.argument('<schemaName>', "Schema name (e.g., 'dbo')")
|
|
12
|
+
.argument('<sprocName>', "Procedure name (e.g., 'usp_GetActiveUsers')")
|
|
13
|
+
.argument('<definition>', 'Procedure definition (parameters + body, e.g., "@Status INT AS SELECT * FROM Users WHERE Status = @Status")')
|
|
14
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
15
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
16
|
+
.action(async (schemaName, sprocName, definition, opts) => {
|
|
17
|
+
try {
|
|
18
|
+
ctx.checkSprocManageEnabled();
|
|
19
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
20
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
21
|
+
const result = await ctx.write.manageSproc(resolvedServerId, resolvedDatabase, schemaName, sprocName, definition);
|
|
22
|
+
outputResult({ fileName: `sql-sproc-manage-${schemaName}-${sprocName}`, data: result, summary: result.message }, getGlobalFlags(program));
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
handleCliError(error, 'manage sproc');
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
sproc
|
|
29
|
+
.command('deploy')
|
|
30
|
+
.description('Deploy a stored procedure from a local .sql file')
|
|
31
|
+
.argument('<filePath>', 'Path to a .sql file containing a CREATE OR ALTER PROCEDURE statement')
|
|
32
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
33
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
34
|
+
.action(async (filePath, opts) => {
|
|
35
|
+
try {
|
|
36
|
+
ctx.checkSprocManageEnabled();
|
|
37
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
38
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
39
|
+
const result = await ctx.write.deploySprocFromFile(resolvedServerId, resolvedDatabase, filePath);
|
|
40
|
+
outputResult({ fileName: `sql-sproc-deploy-${filePath.replace(/[^a-zA-Z0-9]/g, '_')}`, data: result, summary: result.message }, getGlobalFlags(program));
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
handleCliError(error, 'deploy sproc from file');
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
sproc
|
|
47
|
+
.command('drop')
|
|
48
|
+
.description('Drop a stored procedure if it exists')
|
|
49
|
+
.argument('<schemaName>', "Schema name (e.g., 'dbo')")
|
|
50
|
+
.argument('<sprocName>', "Procedure name (e.g., 'usp_GetActiveUsers')")
|
|
51
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
52
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
53
|
+
.action(async (schemaName, sprocName, opts) => {
|
|
54
|
+
try {
|
|
55
|
+
ctx.checkSprocDropEnabled();
|
|
56
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
57
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
58
|
+
const result = await ctx.write.dropSproc(resolvedServerId, resolvedDatabase, schemaName, sprocName);
|
|
59
|
+
outputResult({ fileName: `sql-sproc-drop-${schemaName}-${sprocName}`, data: result, summary: result.message }, getGlobalFlags(program));
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
handleCliError(error, 'drop sproc');
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
sproc
|
|
66
|
+
.command('execute')
|
|
67
|
+
.description('Execute a stored procedure with optional parameters')
|
|
68
|
+
.argument('<schemaName>', "Schema name (e.g., 'dbo')")
|
|
69
|
+
.argument('<sprocName>', "Procedure name (e.g., 'usp_GetActiveUsers')")
|
|
70
|
+
.option('-p, --parameters <json>', 'Parameters as JSON object (e.g., \'{"Status": 1, "Name": "John"}\')')
|
|
71
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
72
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
73
|
+
.action(async (schemaName, sprocName, opts) => {
|
|
74
|
+
try {
|
|
75
|
+
ctx.checkSprocExecuteEnabled();
|
|
76
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
77
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
78
|
+
const parameters = opts.parameters ? JSON.parse(opts.parameters) : undefined;
|
|
79
|
+
const result = await ctx.write.executeSproc(resolvedServerId, resolvedDatabase, schemaName, sprocName, parameters);
|
|
80
|
+
outputResult({ fileName: `sql-sproc-exec-${schemaName}-${sprocName}`, data: result, summary: `Procedure ${schemaName}.${sprocName} returned ${result.rowCount} row(s), return value: ${result.returnValue}` }, getGlobalFlags(program));
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
handleCliError(error, 'execute sproc');
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=sproc-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sproc-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/sproc-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,GAAmB;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC;IAEhG,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC;SACjD,QAAQ,CAAC,cAAc,EAAE,2BAA2B,CAAC;SACrD,QAAQ,CAAC,aAAa,EAAE,6CAA6C,CAAC;SACtE,QAAQ,CAAC,cAAc,EAAE,6GAA6G,CAAC;SACvI,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;SAC9D,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,SAAiB,EAAE,UAAkB,EAAE,IAAS,EAAE,EAAE;QACrF,IAAI,CAAC;YACH,GAAG,CAAC,uBAAuB,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAClH,YAAY,CACV,EAAE,QAAQ,EAAE,oBAAoB,UAAU,IAAI,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAClG,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,QAAQ,CAAC,YAAY,EAAE,sEAAsE,CAAC;SAC9F,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;SAC9D,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,IAAS,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,GAAG,CAAC,uBAAuB,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACjG,YAAY,CACV,EAAE,QAAQ,EAAE,oBAAoB,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EACjH,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sCAAsC,CAAC;SACnD,QAAQ,CAAC,cAAc,EAAE,2BAA2B,CAAC;SACrD,QAAQ,CAAC,aAAa,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;SAC9D,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,SAAiB,EAAE,IAAS,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,GAAG,CAAC,qBAAqB,EAAE,CAAC;YAC5B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACpG,YAAY,CACV,EAAE,QAAQ,EAAE,kBAAkB,UAAU,IAAI,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAChG,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qDAAqD,CAAC;SAClE,QAAQ,CAAC,cAAc,EAAE,2BAA2B,CAAC;SACrD,QAAQ,CAAC,aAAa,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,yBAAyB,EAAE,qEAAqE,CAAC;SACxG,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;SAC9D,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,SAAiB,EAAE,IAAS,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,GAAG,CAAC,wBAAwB,EAAE,CAAC;YAC/B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACnH,YAAY,CACV,EAAE,QAAQ,EAAE,kBAAkB,UAAU,IAAI,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,UAAU,IAAI,SAAS,aAAa,MAAM,CAAC,QAAQ,0BAA0B,MAAM,CAAC,WAAW,EAAE,EAAE,EAChM,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unrestricted SQL CLI Command - maps to sql-execute-unrestricted MCP tool
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerUnrestrictedCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=unrestricted-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unrestricted-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/unrestricted-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA2BxF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unrestricted SQL CLI Command - maps to sql-execute-unrestricted MCP tool
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerUnrestrictedCommands(program, ctx) {
|
|
7
|
+
if (process.env.SQL_ENABLE_UNRESTRICTED !== 'true')
|
|
8
|
+
return;
|
|
9
|
+
const unrestricted = program.command('unrestricted').description('Execute any T-SQL without restrictions (requires SQL_ENABLE_UNRESTRICTED=true)');
|
|
10
|
+
unrestricted
|
|
11
|
+
.command('execute')
|
|
12
|
+
.description('Execute any T-SQL (DDL, DML, EXEC, multi-batch with GO)')
|
|
13
|
+
.argument('<sql>', 'T-SQL to execute (use GO on its own line to separate batches)')
|
|
14
|
+
.option('-s, --server-id <id>', 'Server ID (omit for default)')
|
|
15
|
+
.option('-d, --database <name>', 'Database name (omit for default)')
|
|
16
|
+
.action(async (sql, opts) => {
|
|
17
|
+
try {
|
|
18
|
+
const resolvedServerId = ctx.connection.resolveServerId(opts.serverId);
|
|
19
|
+
const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, opts.database);
|
|
20
|
+
const result = await ctx.write.executeUnrestricted(resolvedServerId, resolvedDatabase, sql);
|
|
21
|
+
const summary = result.completedBatches === result.totalBatches
|
|
22
|
+
? `All ${result.totalBatches} batch(es) executed successfully.`
|
|
23
|
+
: `${result.completedBatches}/${result.totalBatches} batch(es) completed. Batch ${result.completedBatches} failed.`;
|
|
24
|
+
outputResult({ fileName: 'sql-unrestricted', data: result, summary }, getGlobalFlags(program));
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
handleCliError(error, 'unrestricted execute');
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=unrestricted-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unrestricted-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/unrestricted-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,4BAA4B,CAAC,OAAgB,EAAE,GAAmB;IAChF,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM;QAAE,OAAO;IAE3D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,gFAAgF,CAAC,CAAC;IAEnJ,YAAY;SACT,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yDAAyD,CAAC;SACtE,QAAQ,CAAC,OAAO,EAAE,+DAA+D,CAAC;SAClF,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,CAAC;SAC9D,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,IAAS,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAChD,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,CACxC,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,KAAK,MAAM,CAAC,YAAY;gBAC7D,CAAC,CAAC,OAAO,MAAM,CAAC,YAAY,mCAAmC;gBAC/D,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,YAAY,+BAA+B,MAAM,CAAC,gBAAgB,UAAU,CAAC;YACtH,YAAY,CACV,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EACvD,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View CLI Commands - 2 commands mapping to view management MCP tools
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerViewCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=view-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/view-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA8DhF"}
|