@mcp-consultant-tools/azure-sql 28.0.0-beta.13 → 28.0.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/build/cli/commands/crud-commands.d.ts +7 -0
  2. package/build/cli/commands/crud-commands.d.ts.map +1 -0
  3. package/build/cli/commands/crud-commands.js +63 -0
  4. package/build/cli/commands/crud-commands.js.map +1 -0
  5. package/build/cli/commands/index.d.ts +3 -0
  6. package/build/cli/commands/index.d.ts.map +1 -1
  7. package/build/cli/commands/index.js +9 -0
  8. package/build/cli/commands/index.js.map +1 -1
  9. package/build/cli/commands/sproc-commands.d.ts +7 -0
  10. package/build/cli/commands/sproc-commands.d.ts.map +1 -0
  11. package/build/cli/commands/sproc-commands.js +87 -0
  12. package/build/cli/commands/sproc-commands.js.map +1 -0
  13. package/build/cli/commands/view-commands.d.ts +7 -0
  14. package/build/cli/commands/view-commands.d.ts.map +1 -0
  15. package/build/cli/commands/view-commands.js +66 -0
  16. package/build/cli/commands/view-commands.js.map +1 -0
  17. package/build/context-factory.d.ts.map +1 -1
  18. package/build/context-factory.js +43 -0
  19. package/build/context-factory.js.map +1 -1
  20. package/build/index.d.ts +1 -0
  21. package/build/index.d.ts.map +1 -1
  22. package/build/index.js +44 -0
  23. package/build/index.js.map +1 -1
  24. package/build/services/index.d.ts +2 -0
  25. package/build/services/index.d.ts.map +1 -1
  26. package/build/services/index.js +1 -0
  27. package/build/services/index.js.map +1 -1
  28. package/build/services/write-service.d.ts +81 -0
  29. package/build/services/write-service.d.ts.map +1 -0
  30. package/build/services/write-service.js +633 -0
  31. package/build/services/write-service.js.map +1 -0
  32. package/build/tool-examples.d.ts +32 -0
  33. package/build/tool-examples.d.ts.map +1 -1
  34. package/build/tool-examples.js +33 -0
  35. package/build/tool-examples.js.map +1 -1
  36. package/build/tools/crud-tools.d.ts +3 -0
  37. package/build/tools/crud-tools.d.ts.map +1 -0
  38. package/build/tools/crud-tools.js +115 -0
  39. package/build/tools/crud-tools.js.map +1 -0
  40. package/build/tools/index.d.ts +3 -0
  41. package/build/tools/index.d.ts.map +1 -1
  42. package/build/tools/index.js +9 -0
  43. package/build/tools/index.js.map +1 -1
  44. package/build/tools/sproc-tools.d.ts +3 -0
  45. package/build/tools/sproc-tools.d.ts.map +1 -0
  46. package/build/tools/sproc-tools.js +172 -0
  47. package/build/tools/sproc-tools.js.map +1 -0
  48. package/build/tools/view-tools.d.ts +3 -0
  49. package/build/tools/view-tools.d.ts.map +1 -0
  50. package/build/tools/view-tools.js +121 -0
  51. package/build/tools/view-tools.js.map +1 -0
  52. package/build/types.d.ts +10 -0
  53. package/build/types.d.ts.map +1 -1
  54. package/package.json +2 -2
@@ -19,4 +19,36 @@ export declare const OBJECT_TYPE_EXAMPLES: {
19
19
  label: string;
20
20
  value: string;
21
21
  }[];
22
+ export declare const VIEW_BODY_EXAMPLES: {
23
+ label: string;
24
+ value: string;
25
+ }[];
26
+ export declare const SPROC_DEFINITION_EXAMPLES: {
27
+ label: string;
28
+ value: string;
29
+ }[];
30
+ export declare const SPROC_PARAMS_EXAMPLES: {
31
+ label: string;
32
+ value: string;
33
+ }[];
34
+ export declare const VIEW_FILE_PATH_EXAMPLES: {
35
+ label: string;
36
+ value: string;
37
+ }[];
38
+ export declare const SPROC_FILE_PATH_EXAMPLES: {
39
+ label: string;
40
+ value: string;
41
+ }[];
42
+ export declare const INSERT_QUERY_EXAMPLES: {
43
+ label: string;
44
+ value: string;
45
+ }[];
46
+ export declare const UPDATE_QUERY_EXAMPLES: {
47
+ label: string;
48
+ value: string;
49
+ }[];
50
+ export declare const DELETE_QUERY_EXAMPLES: {
51
+ label: string;
52
+ value: string;
53
+ }[];
22
54
  //# sourceMappingURL=tool-examples.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-examples.d.ts","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;;GAI9B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;GAI/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;GAI9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;GAGhC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;GAKhC,CAAC"}
1
+ {"version":3,"file":"tool-examples.d.ts","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;;GAI9B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;GAI/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;GAI9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;GAGhC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;GAKhC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;GAG9B,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;GAGrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;GAGjC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;GAGnC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;GAIpC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;GAGjC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;GAGjC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;GAGjC,CAAC"}
@@ -24,4 +24,37 @@ export const OBJECT_TYPE_EXAMPLES = [
24
24
  { label: 'User function', value: 'FUNCTION' },
25
25
  { label: 'Table trigger', value: 'TRIGGER' },
26
26
  ];
27
+ export const VIEW_BODY_EXAMPLES = [
28
+ { label: 'Simple view', value: 'SELECT Id, Name, Email FROM dbo.Users WHERE IsActive = 1' },
29
+ { label: 'Join view', value: 'SELECT o.Id, o.OrderDate, c.Name AS CustomerName FROM dbo.Orders o JOIN dbo.Customers c ON o.CustomerId = c.Id' },
30
+ ];
31
+ export const SPROC_DEFINITION_EXAMPLES = [
32
+ { label: 'Simple query proc', value: '@Status INT\nAS\nBEGIN\n SELECT * FROM dbo.Orders WHERE StatusId = @Status;\nEND' },
33
+ { label: 'Insert proc', value: '@Name NVARCHAR(100), @Email NVARCHAR(200)\nAS\nBEGIN\n INSERT INTO dbo.Users (Name, Email) VALUES (@Name, @Email);\nEND' },
34
+ ];
35
+ export const SPROC_PARAMS_EXAMPLES = [
36
+ { label: 'Single parameter', value: '{"Status": 1}' },
37
+ { label: 'Multiple parameters', value: '{"Name": "John Doe", "Email": "john@example.com"}' },
38
+ ];
39
+ export const VIEW_FILE_PATH_EXAMPLES = [
40
+ { label: 'Relative path', value: './sql/views/vw_ActiveUsers.sql' },
41
+ { label: 'Absolute path', value: '/Users/dev/project/db/views/vw_OrderSummary.sql' },
42
+ ];
43
+ export const SPROC_FILE_PATH_EXAMPLES = [
44
+ { label: 'Relative path', value: './sql/stored-procedures/usp_GetActiveUsers.sql' },
45
+ { label: 'Absolute path', value: '/Users/dev/project/db/sprocs/usp_ProcessOrders.sql' },
46
+ { label: 'Windows path', value: 'C:\\Dev\\MyProject\\sql\\usp_UpdateInventory.sql' },
47
+ ];
48
+ export const INSERT_QUERY_EXAMPLES = [
49
+ { label: 'Single row insert', value: "INSERT INTO dbo.Users (Name, Email) VALUES ('Jane Doe', 'jane@example.com')" },
50
+ { label: 'Multi-row insert', value: "INSERT INTO dbo.AuditLog (Action, Timestamp) VALUES ('Login', GETDATE()), ('Logout', GETDATE())" },
51
+ ];
52
+ export const UPDATE_QUERY_EXAMPLES = [
53
+ { label: 'Update by ID', value: "UPDATE dbo.Users SET Email = 'new@example.com' WHERE Id = 42" },
54
+ { label: 'Update with condition', value: "UPDATE dbo.Orders SET Status = 'Shipped' WHERE OrderDate < '2025-01-01' AND Status = 'Pending'" },
55
+ ];
56
+ export const DELETE_QUERY_EXAMPLES = [
57
+ { label: 'Delete by ID', value: "DELETE FROM dbo.AuditLog WHERE Id = 123" },
58
+ { label: 'Delete by condition', value: "DELETE FROM dbo.Sessions WHERE ExpiresAt < GETDATE()" },
59
+ ];
27
60
  //# sourceMappingURL=tool-examples.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-examples.js","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,gDAAgD,EAAE;IAClF,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,6GAA6G,EAAE;IACxJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,kFAAkF,EAAE;CACxH,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;IAC5C,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE;CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,SAAS,EAAE;IACtD,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE;IACtC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE;IACzC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE;IAC3C,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE;IACjD,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE;IAC7C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE;CAC7C,CAAC"}
1
+ {"version":3,"file":"tool-examples.js","sourceRoot":"","sources":["../src/tool-examples.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerCrudTools(server: any, ctx: ServiceContext): void;
3
+ //# sourceMappingURL=crud-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-tools.d.ts","sourceRoot":"","sources":["../../src/tools/crud-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAsBlD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAqHxE"}
@@ -0,0 +1,115 @@
1
+ import { z } from 'zod';
2
+ import { descWithExamples, INSERT_QUERY_EXAMPLES, UPDATE_QUERY_EXAMPLES, DELETE_QUERY_EXAMPLES } from '../tool-examples.js';
3
+ /**
4
+ * Helper to build "defaults used" message for tool responses.
5
+ */
6
+ function buildDefaultsUsedMessage(providedServerId, resolvedServerId, providedDatabase, resolvedDatabase) {
7
+ const defaultsUsed = [];
8
+ if (!providedServerId)
9
+ defaultsUsed.push(`server='${resolvedServerId}'`);
10
+ if (resolvedDatabase !== undefined && !providedDatabase)
11
+ defaultsUsed.push(`database='${resolvedDatabase}'`);
12
+ if (defaultsUsed.length > 0) {
13
+ return `\n\n\u2139\uFE0F Used defaults: ${defaultsUsed.join(', ')}`;
14
+ }
15
+ return '';
16
+ }
17
+ export function registerCrudTools(server, ctx) {
18
+ server.tool("sql-insert-records", "Execute an INSERT statement against Azure SQL Database. Requires SQL_ENABLE_INSERT=true.", {
19
+ query: z.string().describe(descWithExamples("INSERT SQL statement to execute", INSERT_QUERY_EXAMPLES)),
20
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
21
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
22
+ }, async ({ query, serverId, database }) => {
23
+ try {
24
+ ctx.checkInsertEnabled();
25
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
26
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
27
+ const result = await ctx.write.executeInsert(resolvedServerId, resolvedDatabase, query);
28
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
29
+ return {
30
+ content: [
31
+ {
32
+ type: "text",
33
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
34
+ },
35
+ ],
36
+ };
37
+ }
38
+ catch (error) {
39
+ return {
40
+ content: [
41
+ {
42
+ type: "text",
43
+ text: `Error executing INSERT: ${error.message}`,
44
+ },
45
+ ],
46
+ isError: true,
47
+ };
48
+ }
49
+ });
50
+ server.tool("sql-update-records", "Execute an UPDATE statement against Azure SQL Database. Requires SQL_ENABLE_UPDATE=true.", {
51
+ query: z.string().describe(descWithExamples("UPDATE SQL statement to execute", UPDATE_QUERY_EXAMPLES)),
52
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
53
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
54
+ }, async ({ query, serverId, database }) => {
55
+ try {
56
+ ctx.checkUpdateEnabled();
57
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
58
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
59
+ const result = await ctx.write.executeUpdate(resolvedServerId, resolvedDatabase, query);
60
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
61
+ return {
62
+ content: [
63
+ {
64
+ type: "text",
65
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
66
+ },
67
+ ],
68
+ };
69
+ }
70
+ catch (error) {
71
+ return {
72
+ content: [
73
+ {
74
+ type: "text",
75
+ text: `Error executing UPDATE: ${error.message}`,
76
+ },
77
+ ],
78
+ isError: true,
79
+ };
80
+ }
81
+ });
82
+ server.tool("sql-delete-records", "Execute a DELETE statement against Azure SQL Database. WHERE clause is required for safety. Requires SQL_ENABLE_DELETE=true.", {
83
+ query: z.string().describe(descWithExamples("DELETE SQL statement to execute (must include WHERE clause)", DELETE_QUERY_EXAMPLES)),
84
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
85
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
86
+ }, async ({ query, serverId, database }) => {
87
+ try {
88
+ ctx.checkDeleteEnabled();
89
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
90
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
91
+ const result = await ctx.write.executeDelete(resolvedServerId, resolvedDatabase, query);
92
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
93
+ return {
94
+ content: [
95
+ {
96
+ type: "text",
97
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
98
+ },
99
+ ],
100
+ };
101
+ }
102
+ catch (error) {
103
+ return {
104
+ content: [
105
+ {
106
+ type: "text",
107
+ text: `Error executing DELETE: ${error.message}`,
108
+ },
109
+ ],
110
+ isError: true,
111
+ };
112
+ }
113
+ });
114
+ }
115
+ //# sourceMappingURL=crud-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-tools.js","sourceRoot":"","sources":["../../src/tools/crud-tools.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,7 @@ import type { ServiceContext } from '../types.js';
2
2
  export declare function registerAllTools(server: any, ctx: ServiceContext): void;
3
3
  export { registerConnectionTools } from './connection-tools.js';
4
4
  export { registerQueryTools } from './query-tools.js';
5
+ export { registerViewTools } from './view-tools.js';
6
+ export { registerSprocTools } from './sproc-tools.js';
7
+ export { registerCrudTools } from './crud-tools.js';
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAGvE;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAMvE;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,9 +1,18 @@
1
1
  import { registerConnectionTools } from './connection-tools.js';
2
2
  import { registerQueryTools } from './query-tools.js';
3
+ import { registerViewTools } from './view-tools.js';
4
+ import { registerSprocTools } from './sproc-tools.js';
5
+ import { registerCrudTools } from './crud-tools.js';
3
6
  export function registerAllTools(server, ctx) {
4
7
  registerConnectionTools(server, ctx);
5
8
  registerQueryTools(server, ctx);
9
+ registerViewTools(server, ctx);
10
+ registerSprocTools(server, ctx);
11
+ registerCrudTools(server, ctx);
6
12
  }
7
13
  export { registerConnectionTools } from './connection-tools.js';
8
14
  export { registerQueryTools } from './query-tools.js';
15
+ export { registerViewTools } from './view-tools.js';
16
+ export { registerSprocTools } from './sproc-tools.js';
17
+ export { registerCrudTools } from './crud-tools.js';
9
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,GAAmB;IAC/D,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,GAAmB;IAC/D,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerSprocTools(server: any, ctx: ServiceContext): void;
3
+ //# sourceMappingURL=sproc-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sproc-tools.d.ts","sourceRoot":"","sources":["../../src/tools/sproc-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAsBlD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA6LzE"}
@@ -0,0 +1,172 @@
1
+ import { z } from 'zod';
2
+ import { descWithExamples, SPROC_DEFINITION_EXAMPLES, SPROC_PARAMS_EXAMPLES, SCHEMA_NAME_EXAMPLES, SPROC_FILE_PATH_EXAMPLES } from '../tool-examples.js';
3
+ /**
4
+ * Helper to build "defaults used" message for tool responses.
5
+ */
6
+ function buildDefaultsUsedMessage(providedServerId, resolvedServerId, providedDatabase, resolvedDatabase) {
7
+ const defaultsUsed = [];
8
+ if (!providedServerId)
9
+ defaultsUsed.push(`server='${resolvedServerId}'`);
10
+ if (resolvedDatabase !== undefined && !providedDatabase)
11
+ defaultsUsed.push(`database='${resolvedDatabase}'`);
12
+ if (defaultsUsed.length > 0) {
13
+ return `\n\n\u2139\uFE0F Used defaults: ${defaultsUsed.join(', ')}`;
14
+ }
15
+ return '';
16
+ }
17
+ export function registerSprocTools(server, ctx) {
18
+ server.tool("sql-manage-sproc", "Create or update a stored procedure using CREATE OR ALTER PROCEDURE. Requires SQL_ENABLE_SPROC_MANAGE=true.", {
19
+ schemaName: z.string().describe(descWithExamples("Schema name for the stored procedure", SCHEMA_NAME_EXAMPLES)),
20
+ sprocName: z.string().describe("Name of the stored procedure to create or update"),
21
+ definition: z.string().describe(descWithExamples("The procedure definition (parameters + body, without CREATE PROCEDURE prefix)", SPROC_DEFINITION_EXAMPLES)),
22
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
23
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
24
+ }, async ({ schemaName, sprocName, definition, serverId, database }) => {
25
+ try {
26
+ ctx.checkSprocManageEnabled();
27
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
28
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
29
+ const result = await ctx.write.manageSproc(resolvedServerId, resolvedDatabase, schemaName, sprocName, definition);
30
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
31
+ return {
32
+ content: [
33
+ {
34
+ type: "text",
35
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
36
+ },
37
+ ],
38
+ };
39
+ }
40
+ catch (error) {
41
+ return {
42
+ content: [
43
+ {
44
+ type: "text",
45
+ text: `Error managing stored procedure: ${error.message}`,
46
+ },
47
+ ],
48
+ isError: true,
49
+ };
50
+ }
51
+ });
52
+ server.tool("sql-deploy-sproc-file", "Deploy a stored procedure from a local .sql file. Reads the file and executes its contents as-is. " +
53
+ "The file must contain a complete CREATE OR ALTER PROCEDURE statement. " +
54
+ "Use this instead of sql-manage-sproc when you have the procedure in a local file to preserve exact formatting, comments, and avoid rewriting. " +
55
+ "Requires SQL_ENABLE_SPROC_MANAGE=true.", {
56
+ filePath: z.string().describe(descWithExamples("Path to a local .sql file containing a CREATE OR ALTER PROCEDURE statement. Supports absolute and relative paths.", SPROC_FILE_PATH_EXAMPLES)),
57
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
58
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
59
+ }, async ({ filePath, serverId, database }) => {
60
+ try {
61
+ ctx.checkSprocManageEnabled();
62
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
63
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
64
+ const result = await ctx.write.deploySprocFromFile(resolvedServerId, resolvedDatabase, filePath);
65
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
66
+ return {
67
+ content: [
68
+ {
69
+ type: "text",
70
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ catch (error) {
76
+ return {
77
+ content: [
78
+ {
79
+ type: "text",
80
+ text: `Error deploying stored procedure from file: ${error.message}`,
81
+ },
82
+ ],
83
+ isError: true,
84
+ };
85
+ }
86
+ });
87
+ server.tool("sql-drop-sproc", "Drop a stored procedure using DROP PROCEDURE IF EXISTS. Requires SQL_ENABLE_SPROC_DROP=true.", {
88
+ schemaName: z.string().describe(descWithExamples("Schema name for the stored procedure", SCHEMA_NAME_EXAMPLES)),
89
+ sprocName: z.string().describe("Name of the stored procedure to drop"),
90
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
91
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
92
+ }, async ({ schemaName, sprocName, serverId, database }) => {
93
+ try {
94
+ ctx.checkSprocDropEnabled();
95
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
96
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
97
+ const result = await ctx.write.dropSproc(resolvedServerId, resolvedDatabase, schemaName, sprocName);
98
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
99
+ return {
100
+ content: [
101
+ {
102
+ type: "text",
103
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
104
+ },
105
+ ],
106
+ };
107
+ }
108
+ catch (error) {
109
+ return {
110
+ content: [
111
+ {
112
+ type: "text",
113
+ text: `Error dropping stored procedure: ${error.message}`,
114
+ },
115
+ ],
116
+ isError: true,
117
+ };
118
+ }
119
+ });
120
+ server.tool("sql-execute-sproc", "Execute a stored procedure with optional parameters. Returns result set(s). Requires SQL_ENABLE_SPROC_EXECUTE=true.", {
121
+ schemaName: z.string().describe(descWithExamples("Schema name for the stored procedure", SCHEMA_NAME_EXAMPLES)),
122
+ sprocName: z.string().describe("Name of the stored procedure to execute"),
123
+ parameters: z.string().optional().describe(descWithExamples("JSON string of parameter name-value pairs to pass to the stored procedure", SPROC_PARAMS_EXAMPLES)),
124
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
125
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
126
+ }, async ({ schemaName, sprocName, parameters, serverId, database }) => {
127
+ try {
128
+ ctx.checkSprocExecuteEnabled();
129
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
130
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
131
+ let parsedParams;
132
+ if (parameters) {
133
+ try {
134
+ parsedParams = JSON.parse(parameters);
135
+ }
136
+ catch {
137
+ return {
138
+ content: [
139
+ {
140
+ type: "text",
141
+ text: `Error: Invalid JSON in parameters. Expected a JSON object like {"key": "value"}.`,
142
+ },
143
+ ],
144
+ isError: true,
145
+ };
146
+ }
147
+ }
148
+ const result = await ctx.write.executeSproc(resolvedServerId, resolvedDatabase, schemaName, sprocName, parsedParams);
149
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
150
+ return {
151
+ content: [
152
+ {
153
+ type: "text",
154
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
155
+ },
156
+ ],
157
+ };
158
+ }
159
+ catch (error) {
160
+ return {
161
+ content: [
162
+ {
163
+ type: "text",
164
+ text: `Error executing stored procedure: ${error.message}`,
165
+ },
166
+ ],
167
+ isError: true,
168
+ };
169
+ }
170
+ });
171
+ }
172
+ //# sourceMappingURL=sproc-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sproc-tools.js","sourceRoot":"","sources":["../../src/tools/sproc-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEzJ;;GAEG;AACH,SAAS,wBAAwB,CAC/B,gBAAoC,EACpC,gBAAwB,EACxB,gBAAqC,EACrC,gBAAyB;IAEzB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,CAAC,gBAAgB;QAAE,YAAY,CAAC,IAAI,CAAC,WAAW,gBAAgB,GAAG,CAAC,CAAC;IACzE,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,gBAAgB;QAAE,YAAY,CAAC,IAAI,CAAC,aAAa,gBAAgB,GAAG,CAAC,CAAC;IAE7G,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,mCAAmC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAW,EAAE,GAAmB;IACjE,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,6GAA6G,EAC7G;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC7B,gBAAgB,CAAC,sCAAsC,EAAE,oBAAoB,CAAC,CAC/E;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAClF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC7B,gBAAgB,CAAC,+EAA+E,EAAE,yBAAyB,CAAC,CAC7H;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAuG,EAAE,EAAE;QACvK,IAAI,CAAC;YACH,GAAG,CAAC,uBAAuB,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAClH,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oCAAoC,KAAK,CAAC,OAAO,EAAE;qBAC1D;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,oGAAoG;QACpG,wEAAwE;QACxE,gJAAgJ;QAChJ,wCAAwC,EACxC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC3B,gBAAgB,CACd,mHAAmH,EACnH,wBAAwB,CACzB,CACF;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAA8D,EAAE,EAAE;QACrG,IAAI,CAAC;YACH,GAAG,CAAC,uBAAuB,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACjG,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,+CAA+C,KAAK,CAAC,OAAO,EAAE;qBACrE;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,8FAA8F,EAC9F;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC7B,gBAAgB,CAAC,sCAAsC,EAAE,oBAAoB,CAAC,CAC/E;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAmF,EAAE,EAAE;QACvI,IAAI,CAAC;YACH,GAAG,CAAC,qBAAqB,EAAE,CAAC;YAC5B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YACpG,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oCAAoC,KAAK,CAAC,OAAO,EAAE;qBAC1D;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,qHAAqH,EACrH;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC7B,gBAAgB,CAAC,sCAAsC,EAAE,oBAAoB,CAAC,CAC/E;QACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACzE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACxC,gBAAgB,CAAC,2EAA2E,EAAE,qBAAqB,CAAC,CACrH;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAwG,EAAE,EAAE;QACxK,IAAI,CAAC;YACH,GAAG,CAAC,wBAAwB,EAAE,CAAC;YAC/B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAEpF,IAAI,YAA6C,CAAC;YAClD,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,kFAAkF;6BACzF;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YACrH,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,qCAAqC,KAAK,CAAC,OAAO,EAAE;qBAC3D;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerViewTools(server: any, ctx: ServiceContext): void;
3
+ //# sourceMappingURL=view-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-tools.d.ts","sourceRoot":"","sources":["../../src/tools/view-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAsBlD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAgIxE"}
@@ -0,0 +1,121 @@
1
+ import { z } from 'zod';
2
+ import { descWithExamples, VIEW_BODY_EXAMPLES, SCHEMA_NAME_EXAMPLES, VIEW_FILE_PATH_EXAMPLES } from '../tool-examples.js';
3
+ /**
4
+ * Helper to build "defaults used" message for tool responses.
5
+ */
6
+ function buildDefaultsUsedMessage(providedServerId, resolvedServerId, providedDatabase, resolvedDatabase) {
7
+ const defaultsUsed = [];
8
+ if (!providedServerId)
9
+ defaultsUsed.push(`server='${resolvedServerId}'`);
10
+ if (resolvedDatabase !== undefined && !providedDatabase)
11
+ defaultsUsed.push(`database='${resolvedDatabase}'`);
12
+ if (defaultsUsed.length > 0) {
13
+ return `\n\n\u2139\uFE0F Used defaults: ${defaultsUsed.join(', ')}`;
14
+ }
15
+ return '';
16
+ }
17
+ export function registerViewTools(server, ctx) {
18
+ server.tool("sql-manage-view", "Create or update a SQL view using CREATE OR ALTER VIEW. Requires SQL_ENABLE_VIEW_MANAGE=true.", {
19
+ schemaName: z.string().describe(descWithExamples("Schema name for the view", SCHEMA_NAME_EXAMPLES)),
20
+ viewName: z.string().describe("Name of the view to create or update"),
21
+ selectBody: z.string().describe(descWithExamples("The SELECT statement that defines the view body", VIEW_BODY_EXAMPLES)),
22
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
23
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
24
+ }, async ({ schemaName, viewName, selectBody, serverId, database }) => {
25
+ try {
26
+ ctx.checkViewManageEnabled();
27
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
28
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
29
+ const result = await ctx.write.manageView(resolvedServerId, resolvedDatabase, schemaName, viewName, selectBody);
30
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
31
+ return {
32
+ content: [
33
+ {
34
+ type: "text",
35
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
36
+ },
37
+ ],
38
+ };
39
+ }
40
+ catch (error) {
41
+ return {
42
+ content: [
43
+ {
44
+ type: "text",
45
+ text: `Error managing view: ${error.message}`,
46
+ },
47
+ ],
48
+ isError: true,
49
+ };
50
+ }
51
+ });
52
+ server.tool("sql-deploy-view-file", "Deploy a SQL view from a local .sql file. Reads the file and executes its contents as-is. " +
53
+ "The file must contain a complete CREATE OR ALTER VIEW statement. " +
54
+ "Use this instead of sql-manage-view when you have the view in a local file to preserve exact formatting and comments. " +
55
+ "Requires SQL_ENABLE_VIEW_MANAGE=true.", {
56
+ filePath: z.string().describe(descWithExamples("Path to a local .sql file containing a CREATE OR ALTER VIEW statement. Supports absolute and relative paths.", VIEW_FILE_PATH_EXAMPLES)),
57
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
58
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
59
+ }, async ({ filePath, serverId, database }) => {
60
+ try {
61
+ ctx.checkViewManageEnabled();
62
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
63
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
64
+ const result = await ctx.write.deployViewFromFile(resolvedServerId, resolvedDatabase, filePath);
65
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
66
+ return {
67
+ content: [
68
+ {
69
+ type: "text",
70
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ catch (error) {
76
+ return {
77
+ content: [
78
+ {
79
+ type: "text",
80
+ text: `Error deploying view from file: ${error.message}`,
81
+ },
82
+ ],
83
+ isError: true,
84
+ };
85
+ }
86
+ });
87
+ server.tool("sql-drop-view", "Drop a SQL view using DROP VIEW IF EXISTS. Requires SQL_ENABLE_VIEW_DROP=true.", {
88
+ schemaName: z.string().describe(descWithExamples("Schema name for the view", SCHEMA_NAME_EXAMPLES)),
89
+ viewName: z.string().describe("Name of the view to drop"),
90
+ serverId: z.string().optional().describe("\u26A0\uFE0F OMIT to use default server. DO NOT GUESS."),
91
+ database: z.string().optional().describe("\u26A0\uFE0F OMIT to use default database. DO NOT GUESS."),
92
+ }, async ({ schemaName, viewName, serverId, database }) => {
93
+ try {
94
+ ctx.checkViewDropEnabled();
95
+ const resolvedServerId = ctx.connection.resolveServerId(serverId);
96
+ const resolvedDatabase = ctx.connection.resolveDatabase(resolvedServerId, database);
97
+ const result = await ctx.write.dropView(resolvedServerId, resolvedDatabase, schemaName, viewName);
98
+ const defaultsMsg = buildDefaultsUsedMessage(serverId, resolvedServerId, database, resolvedDatabase);
99
+ return {
100
+ content: [
101
+ {
102
+ type: "text",
103
+ text: JSON.stringify(result, null, 2) + defaultsMsg,
104
+ },
105
+ ],
106
+ };
107
+ }
108
+ catch (error) {
109
+ return {
110
+ content: [
111
+ {
112
+ type: "text",
113
+ text: `Error dropping view: ${error.message}`,
114
+ },
115
+ ],
116
+ isError: true,
117
+ };
118
+ }
119
+ });
120
+ }
121
+ //# sourceMappingURL=view-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-tools.js","sourceRoot":"","sources":["../../src/tools/view-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE1H;;GAEG;AACH,SAAS,wBAAwB,CAC/B,gBAAoC,EACpC,gBAAwB,EACxB,gBAAqC,EACrC,gBAAyB;IAEzB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,CAAC,gBAAgB;QAAE,YAAY,CAAC,IAAI,CAAC,WAAW,gBAAgB,GAAG,CAAC,CAAC;IACzE,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,gBAAgB;QAAE,YAAY,CAAC,IAAI,CAAC,aAAa,gBAAgB,GAAG,CAAC,CAAC;IAE7G,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,mCAAmC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAW,EAAE,GAAmB;IAChE,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,+FAA+F,EAC/F;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC7B,gBAAgB,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,CACnE;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC7B,gBAAgB,CAAC,iDAAiD,EAAE,kBAAkB,CAAC,CACxF;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAsG,EAAE,EAAE;QACrK,IAAI,CAAC;YACH,GAAG,CAAC,sBAAsB,EAAE,CAAC;YAC7B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAChH,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,KAAK,CAAC,OAAO,EAAE;qBAC9C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,4FAA4F;QAC5F,mEAAmE;QACnE,wHAAwH;QACxH,uCAAuC,EACvC;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC3B,gBAAgB,CACd,8GAA8G,EAC9G,uBAAuB,CACxB,CACF;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAA8D,EAAE,EAAE;QACrG,IAAI,CAAC;YACH,GAAG,CAAC,sBAAsB,EAAE,CAAC;YAC7B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAChG,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mCAAmC,KAAK,CAAC,OAAO,EAAE;qBACzD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,gFAAgF,EAChF;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC7B,gBAAgB,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,CACnE;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QACzD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QAClG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACrG,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAkF,EAAE,EAAE;QACrI,IAAI,CAAC;YACH,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC3B,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClG,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,WAAW;qBACpD;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,KAAK,CAAC,OAAO,EAAE;qBAC9C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
package/build/types.d.ts CHANGED
@@ -4,8 +4,18 @@
4
4
  */
5
5
  import type { ConnectionService } from './services/connection-service.js';
6
6
  import type { QueryService } from './services/query-service.js';
7
+ import type { WriteService } from './services/write-service.js';
7
8
  export interface ServiceContext {
8
9
  readonly connection: ConnectionService;
9
10
  readonly query: QueryService;
11
+ readonly write: WriteService;
12
+ checkViewManageEnabled(): void;
13
+ checkViewDropEnabled(): void;
14
+ checkSprocManageEnabled(): void;
15
+ checkSprocDropEnabled(): void;
16
+ checkSprocExecuteEnabled(): void;
17
+ checkInsertEnabled(): void;
18
+ checkUpdateEnabled(): void;
19
+ checkDeleteEnabled(): void;
10
20
  }
11
21
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,sBAAsB,IAAI,IAAI,CAAC;IAC/B,oBAAoB,IAAI,IAAI,CAAC;IAC7B,uBAAuB,IAAI,IAAI,CAAC;IAChC,qBAAqB,IAAI,IAAI,CAAC;IAC9B,wBAAwB,IAAI,IAAI,CAAC;IACjC,kBAAkB,IAAI,IAAI,CAAC;IAC3B,kBAAkB,IAAI,IAAI,CAAC;IAC3B,kBAAkB,IAAI,IAAI,CAAC;CAC5B"}