mcp-dataverse 0.3.7 → 0.3.9

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 (208) hide show
  1. package/CAPABILITIES.md +1039 -1039
  2. package/LICENSE +21 -21
  3. package/README.md +114 -113
  4. package/dist/auth-provider.factory-MSMLSOX3.js +1 -0
  5. package/dist/chunk-24RDOMG4.js +29 -0
  6. package/dist/chunk-OXKMMPM3.js +37 -0
  7. package/dist/chunk-PAX4NW5B.js +1 -0
  8. package/dist/chunk-SUDI4JM6.js +3 -0
  9. package/dist/config.loader-VTIKUDN7.js +1 -0
  10. package/dist/dataverse-client-advanced-T5ZJMRLK.js +1 -0
  11. package/dist/doctor.js +2 -102
  12. package/dist/http-server.js +3 -61
  13. package/dist/install.js +8 -233
  14. package/dist/server.js +43 -202
  15. package/dist/setup-auth.js +18 -41
  16. package/package.json +95 -94
  17. package/server.json +51 -50
  18. package/dist/auth/auth-provider.factory.d.ts +0 -4
  19. package/dist/auth/auth-provider.factory.d.ts.map +0 -1
  20. package/dist/auth/auth-provider.factory.js +0 -5
  21. package/dist/auth/auth-provider.factory.js.map +0 -1
  22. package/dist/auth/auth-provider.interface.d.ts +0 -21
  23. package/dist/auth/auth-provider.interface.d.ts.map +0 -1
  24. package/dist/auth/auth-provider.interface.js +0 -2
  25. package/dist/auth/auth-provider.interface.js.map +0 -1
  26. package/dist/auth/device-code-auth-provider.d.ts +0 -18
  27. package/dist/auth/device-code-auth-provider.d.ts.map +0 -1
  28. package/dist/auth/device-code-auth-provider.js +0 -167
  29. package/dist/auth/device-code-auth-provider.js.map +0 -1
  30. package/dist/config/config.loader.d.ts +0 -3
  31. package/dist/config/config.loader.d.ts.map +0 -1
  32. package/dist/config/config.loader.js +0 -39
  33. package/dist/config/config.loader.js.map +0 -1
  34. package/dist/config/config.schema.d.ts +0 -16
  35. package/dist/config/config.schema.d.ts.map +0 -1
  36. package/dist/config/config.schema.js +0 -20
  37. package/dist/config/config.schema.js.map +0 -1
  38. package/dist/dataverse/dataverse-client-advanced.d.ts +0 -53
  39. package/dist/dataverse/dataverse-client-advanced.d.ts.map +0 -1
  40. package/dist/dataverse/dataverse-client-advanced.js +0 -199
  41. package/dist/dataverse/dataverse-client-advanced.js.map +0 -1
  42. package/dist/dataverse/dataverse-client.actions.d.ts +0 -11
  43. package/dist/dataverse/dataverse-client.actions.d.ts.map +0 -1
  44. package/dist/dataverse/dataverse-client.actions.js +0 -25
  45. package/dist/dataverse/dataverse-client.actions.js.map +0 -1
  46. package/dist/dataverse/dataverse-client.batch.d.ts +0 -10
  47. package/dist/dataverse/dataverse-client.batch.d.ts.map +0 -1
  48. package/dist/dataverse/dataverse-client.batch.js +0 -74
  49. package/dist/dataverse/dataverse-client.batch.js.map +0 -1
  50. package/dist/dataverse/dataverse-client.d.ts +0 -46
  51. package/dist/dataverse/dataverse-client.d.ts.map +0 -1
  52. package/dist/dataverse/dataverse-client.js +0 -275
  53. package/dist/dataverse/dataverse-client.js.map +0 -1
  54. package/dist/dataverse/dataverse-client.metadata.d.ts +0 -41
  55. package/dist/dataverse/dataverse-client.metadata.d.ts.map +0 -1
  56. package/dist/dataverse/dataverse-client.metadata.js +0 -124
  57. package/dist/dataverse/dataverse-client.metadata.js.map +0 -1
  58. package/dist/dataverse/dataverse-client.utils.d.ts +0 -14
  59. package/dist/dataverse/dataverse-client.utils.d.ts.map +0 -1
  60. package/dist/dataverse/dataverse-client.utils.js +0 -65
  61. package/dist/dataverse/dataverse-client.utils.js.map +0 -1
  62. package/dist/dataverse/http-client.d.ts +0 -38
  63. package/dist/dataverse/http-client.d.ts.map +0 -1
  64. package/dist/dataverse/http-client.js +0 -111
  65. package/dist/dataverse/http-client.js.map +0 -1
  66. package/dist/dataverse/types.d.ts +0 -68
  67. package/dist/dataverse/types.d.ts.map +0 -1
  68. package/dist/dataverse/types.js +0 -2
  69. package/dist/dataverse/types.js.map +0 -1
  70. package/dist/doctor.d.ts +0 -7
  71. package/dist/doctor.d.ts.map +0 -1
  72. package/dist/doctor.js.map +0 -1
  73. package/dist/http-server.d.ts +0 -3
  74. package/dist/http-server.d.ts.map +0 -1
  75. package/dist/http-server.js.map +0 -1
  76. package/dist/install.d.ts +0 -3
  77. package/dist/install.d.ts.map +0 -1
  78. package/dist/install.js.map +0 -1
  79. package/dist/resources/resource-provider.d.ts +0 -11
  80. package/dist/resources/resource-provider.d.ts.map +0 -1
  81. package/dist/resources/resource-provider.js +0 -79
  82. package/dist/resources/resource-provider.js.map +0 -1
  83. package/dist/server.d.ts +0 -3
  84. package/dist/server.d.ts.map +0 -1
  85. package/dist/server.js.map +0 -1
  86. package/dist/setup-auth.d.ts +0 -3
  87. package/dist/setup-auth.d.ts.map +0 -1
  88. package/dist/setup-auth.js.map +0 -1
  89. package/dist/tools/actions.tools.d.ts +0 -206
  90. package/dist/tools/actions.tools.d.ts.map +0 -1
  91. package/dist/tools/actions.tools.js +0 -256
  92. package/dist/tools/actions.tools.js.map +0 -1
  93. package/dist/tools/annotations.tools.d.ts +0 -94
  94. package/dist/tools/annotations.tools.d.ts.map +0 -1
  95. package/dist/tools/annotations.tools.js +0 -225
  96. package/dist/tools/annotations.tools.js.map +0 -1
  97. package/dist/tools/audit.tools.d.ts +0 -51
  98. package/dist/tools/audit.tools.d.ts.map +0 -1
  99. package/dist/tools/audit.tools.js +0 -170
  100. package/dist/tools/audit.tools.js.map +0 -1
  101. package/dist/tools/auth.tools.d.ts +0 -23
  102. package/dist/tools/auth.tools.d.ts.map +0 -1
  103. package/dist/tools/auth.tools.js +0 -36
  104. package/dist/tools/auth.tools.js.map +0 -1
  105. package/dist/tools/batch.tools.d.ts +0 -52
  106. package/dist/tools/batch.tools.d.ts.map +0 -1
  107. package/dist/tools/batch.tools.js +0 -89
  108. package/dist/tools/batch.tools.js.map +0 -1
  109. package/dist/tools/crud.tools.d.ts +0 -260
  110. package/dist/tools/crud.tools.d.ts.map +0 -1
  111. package/dist/tools/crud.tools.js +0 -290
  112. package/dist/tools/crud.tools.js.map +0 -1
  113. package/dist/tools/customization.tools.d.ts +0 -127
  114. package/dist/tools/customization.tools.d.ts.map +0 -1
  115. package/dist/tools/customization.tools.js +0 -285
  116. package/dist/tools/customization.tools.js.map +0 -1
  117. package/dist/tools/environment.tools.d.ts +0 -106
  118. package/dist/tools/environment.tools.d.ts.map +0 -1
  119. package/dist/tools/environment.tools.js +0 -274
  120. package/dist/tools/environment.tools.js.map +0 -1
  121. package/dist/tools/file.tools.d.ts +0 -73
  122. package/dist/tools/file.tools.d.ts.map +0 -1
  123. package/dist/tools/file.tools.js +0 -160
  124. package/dist/tools/file.tools.js.map +0 -1
  125. package/dist/tools/guardrails.d.ts +0 -22
  126. package/dist/tools/guardrails.d.ts.map +0 -1
  127. package/dist/tools/guardrails.js +0 -56
  128. package/dist/tools/guardrails.js.map +0 -1
  129. package/dist/tools/impersonate.tools.d.ts +0 -44
  130. package/dist/tools/impersonate.tools.d.ts.map +0 -1
  131. package/dist/tools/impersonate.tools.js +0 -87
  132. package/dist/tools/impersonate.tools.js.map +0 -1
  133. package/dist/tools/metadata.tools.d.ts +0 -279
  134. package/dist/tools/metadata.tools.d.ts.map +0 -1
  135. package/dist/tools/metadata.tools.js +0 -400
  136. package/dist/tools/metadata.tools.js.map +0 -1
  137. package/dist/tools/org.tools.d.ts +0 -32
  138. package/dist/tools/org.tools.d.ts.map +0 -1
  139. package/dist/tools/org.tools.js +0 -65
  140. package/dist/tools/org.tools.js.map +0 -1
  141. package/dist/tools/output.utils.d.ts +0 -63
  142. package/dist/tools/output.utils.d.ts.map +0 -1
  143. package/dist/tools/output.utils.js +0 -78
  144. package/dist/tools/output.utils.js.map +0 -1
  145. package/dist/tools/progress.d.ts +0 -15
  146. package/dist/tools/progress.d.ts.map +0 -1
  147. package/dist/tools/progress.js +0 -29
  148. package/dist/tools/progress.js.map +0 -1
  149. package/dist/tools/quality.tools.d.ts +0 -36
  150. package/dist/tools/quality.tools.d.ts.map +0 -1
  151. package/dist/tools/quality.tools.js +0 -97
  152. package/dist/tools/quality.tools.js.map +0 -1
  153. package/dist/tools/query.tools.d.ts +0 -151
  154. package/dist/tools/query.tools.d.ts.map +0 -1
  155. package/dist/tools/query.tools.js +0 -293
  156. package/dist/tools/query.tools.js.map +0 -1
  157. package/dist/tools/relations.tools.d.ts +0 -77
  158. package/dist/tools/relations.tools.d.ts.map +0 -1
  159. package/dist/tools/relations.tools.js +0 -96
  160. package/dist/tools/relations.tools.js.map +0 -1
  161. package/dist/tools/router.tools.d.ts +0 -5
  162. package/dist/tools/router.tools.d.ts.map +0 -1
  163. package/dist/tools/router.tools.js +0 -247
  164. package/dist/tools/router.tools.js.map +0 -1
  165. package/dist/tools/search.tools.d.ts +0 -74
  166. package/dist/tools/search.tools.d.ts.map +0 -1
  167. package/dist/tools/search.tools.js +0 -142
  168. package/dist/tools/search.tools.js.map +0 -1
  169. package/dist/tools/solution.tools.d.ts +0 -113
  170. package/dist/tools/solution.tools.d.ts.map +0 -1
  171. package/dist/tools/solution.tools.js +0 -176
  172. package/dist/tools/solution.tools.js.map +0 -1
  173. package/dist/tools/teams.tools.d.ts +0 -65
  174. package/dist/tools/teams.tools.d.ts.map +0 -1
  175. package/dist/tools/teams.tools.js +0 -127
  176. package/dist/tools/teams.tools.js.map +0 -1
  177. package/dist/tools/tool-registry.d.ts +0 -35
  178. package/dist/tools/tool-registry.d.ts.map +0 -1
  179. package/dist/tools/tool-registry.js +0 -31
  180. package/dist/tools/tool-registry.js.map +0 -1
  181. package/dist/tools/trace.tools.d.ts +0 -75
  182. package/dist/tools/trace.tools.d.ts.map +0 -1
  183. package/dist/tools/trace.tools.js +0 -233
  184. package/dist/tools/trace.tools.js.map +0 -1
  185. package/dist/tools/tracking.tools.d.ts +0 -41
  186. package/dist/tools/tracking.tools.d.ts.map +0 -1
  187. package/dist/tools/tracking.tools.js +0 -76
  188. package/dist/tools/tracking.tools.js.map +0 -1
  189. package/dist/tools/users.tools.d.ts +0 -141
  190. package/dist/tools/users.tools.d.ts.map +0 -1
  191. package/dist/tools/users.tools.js +0 -321
  192. package/dist/tools/users.tools.js.map +0 -1
  193. package/dist/tools/validation.utils.d.ts +0 -6
  194. package/dist/tools/validation.utils.d.ts.map +0 -1
  195. package/dist/tools/validation.utils.js +0 -14
  196. package/dist/tools/validation.utils.js.map +0 -1
  197. package/dist/tools/views.tools.d.ts +0 -36
  198. package/dist/tools/views.tools.d.ts.map +0 -1
  199. package/dist/tools/views.tools.js +0 -92
  200. package/dist/tools/views.tools.js.map +0 -1
  201. package/dist/tools/workflow.tools.d.ts +0 -111
  202. package/dist/tools/workflow.tools.d.ts.map +0 -1
  203. package/dist/tools/workflow.tools.js +0 -449
  204. package/dist/tools/workflow.tools.js.map +0 -1
  205. package/dist/transport.d.ts +0 -6
  206. package/dist/transport.d.ts.map +0 -1
  207. package/dist/transport.js +0 -21
  208. package/dist/transport.js.map +0 -1
@@ -1,274 +0,0 @@
1
- import { z } from "zod";
2
- import { esc } from "../dataverse/dataverse-client.utils.js";
3
- import { formatData } from "./output.utils.js";
4
- import { checkWriteGuardrails } from "./guardrails.js";
5
- const ENV_VAR_TYPE_NAMES = {
6
- 100000000: "String",
7
- 100000001: "Number",
8
- 100000002: "Boolean",
9
- 100000003: "JSON",
10
- 100000004: "DataSource",
11
- };
12
- const ENV_VAR_TYPE_CODES = {
13
- String: 100000000,
14
- Integer: 100000001,
15
- Boolean: 100000002,
16
- JSON: 100000003,
17
- };
18
- export const environmentTools = [
19
- {
20
- name: "dataverse_get_environment_variable",
21
- description: "Retrieves an environment variable's definition and current value from Dataverse. Returns the schema name, display name, type, default value, and the current override value (if set). Useful for reading feature flags, configuration values, and integration settings stored in Dataverse environment variables. WHEN TO USE: Reading configuration values, feature flags, or integration settings stored as environment variables. BEST PRACTICES: Check both defaultValue and currentValue; the effective value is currentValue ?? defaultValue. WORKFLOW: manage_solution.",
22
- inputSchema: {
23
- type: "object",
24
- properties: {
25
- schemaName: {
26
- type: "string",
27
- description: "The schema name of the environment variable (e.g. 'new_MyConfig')",
28
- },
29
- },
30
- required: ["schemaName"],
31
- },
32
- annotations: {
33
- readOnlyHint: true,
34
- destructiveHint: false,
35
- idempotentHint: true,
36
- openWorldHint: true,
37
- },
38
- },
39
- {
40
- name: "dataverse_set_environment_variable",
41
- description: "Sets or updates an environment variable value in Dataverse. If a value record already exists for the variable, it is updated; otherwise a new value record is created. The schemaName must match an existing environment variable definition. WHEN TO USE: Updating configuration values or feature flags stored in Dataverse environment variables. BEST PRACTICES: Verify the variable exists first with dataverse_get_environment_variable; schemaName must match exactly. WORKFLOW: manage_solution.",
42
- inputSchema: {
43
- type: "object",
44
- properties: {
45
- schemaName: {
46
- type: "string",
47
- description: "The schema name of the environment variable",
48
- },
49
- value: {
50
- type: "string",
51
- description: "The new value to set",
52
- },
53
- },
54
- required: ["schemaName", "value"],
55
- },
56
- annotations: {
57
- readOnlyHint: false,
58
- destructiveHint: false,
59
- idempotentHint: true,
60
- openWorldHint: true,
61
- },
62
- },
63
- {
64
- name: "dataverse_create_environment_variable",
65
- description: "Creates a new Dataverse environment variable definition and sets its initial value. " +
66
- "Use this when the variable does not yet exist — use dataverse_set_environment_variable to update an existing one. " +
67
- "WHEN TO USE: Initial setup of configuration flags, feature toggles, or integration settings. " +
68
- "BEST PRACTICES: Use a solution-prefixed schemaName (e.g. 'myprefix_MyConfig'); provide solutionUniqueName to register in a solution. WORKFLOW: manage_solution.",
69
- inputSchema: {
70
- type: "object",
71
- properties: {
72
- schemaName: {
73
- type: "string",
74
- description: "Schema name of the new variable (e.g. 'new_MyConfig'). Case-sensitive.",
75
- },
76
- displayName: {
77
- type: "string",
78
- description: "Human-readable display name",
79
- },
80
- type: {
81
- type: "string",
82
- enum: ["String", "Integer", "Boolean", "JSON"],
83
- description: "Variable type",
84
- },
85
- value: { type: "string", description: "Initial value to set" },
86
- description: { type: "string", description: "Optional description" },
87
- defaultValue: {
88
- type: "string",
89
- description: "Optional default value (fallback when no override value is set)",
90
- },
91
- confirm: {
92
- type: "boolean",
93
- description: "Must be true — confirms intentional creation of a new environment variable definition",
94
- },
95
- },
96
- required: ["schemaName", "displayName", "type", "value", "confirm"],
97
- },
98
- annotations: {
99
- readOnlyHint: false,
100
- destructiveHint: false,
101
- idempotentHint: false,
102
- openWorldHint: true,
103
- },
104
- },
105
- ];
106
- const GetEnvVarInput = z.object({ schemaName: z.string().min(1) });
107
- const SetEnvVarInput = z.object({
108
- schemaName: z.string().min(1),
109
- value: z.string(),
110
- });
111
- const CreateEnvVarInput = z.object({
112
- schemaName: z.string().min(1),
113
- displayName: z.string().min(1),
114
- type: z.enum(["String", "Integer", "Boolean", "JSON"]),
115
- value: z.string(),
116
- description: z.string().optional(),
117
- defaultValue: z.string().optional(),
118
- confirm: z.literal(true, {
119
- errorMap: () => ({
120
- message: "Set confirm: true to create a new environment variable definition",
121
- }),
122
- }),
123
- });
124
- async function handleGetEnvironmentVariable(args, client) {
125
- const { schemaName } = GetEnvVarInput.parse(args);
126
- const defResult = await client.query("environmentvariabledefinitions", {
127
- filter: `schemaname eq '${esc(schemaName)}'`,
128
- select: [
129
- "environmentvariabledefinitionid",
130
- "schemaname",
131
- "displayname",
132
- "description",
133
- "type",
134
- "defaultvalue",
135
- "isrequired",
136
- ],
137
- top: 1,
138
- });
139
- const defRecords = defResult.value;
140
- if (defRecords.length === 0) {
141
- throw new Error(`Environment variable '${schemaName}' not found. ` +
142
- `Check the schema name (it is case-sensitive, e.g. 'new_MyConfig'). ` +
143
- `To browse existing variables: Power Apps maker portal → Solutions → your solution → Environment Variables. ` +
144
- `To create a new one: open a solution → New → More → Environment Variable.`);
145
- }
146
- const def = defRecords[0];
147
- const defId = def["environmentvariabledefinitionid"];
148
- const valResult = await client.query("environmentvariablevalues", {
149
- filter: `_environmentvariabledefinitionid_value eq ${defId}`,
150
- select: ["environmentvariablevalueid", "value"],
151
- top: 1,
152
- });
153
- const valRecords = valResult.value;
154
- const valRecord = valRecords.length > 0 ? valRecords[0] : null;
155
- const typeNum = def["type"];
156
- const currentValue = valRecord
157
- ? (valRecord["value"] ?? null)
158
- : null;
159
- const defaultValue = def["defaultvalue"] ?? null;
160
- const response = {
161
- schemaName: def["schemaname"],
162
- displayName: def["displayname"] ?? "",
163
- description: def["description"] ?? "",
164
- type: typeNum,
165
- typeName: ENV_VAR_TYPE_NAMES[typeNum] ?? "Unknown",
166
- defaultValue,
167
- currentValue,
168
- valueId: valRecord
169
- ? valRecord["environmentvariablevalueid"]
170
- : null,
171
- isRequired: def["isrequired"] ?? false,
172
- effectiveValue: currentValue ?? defaultValue,
173
- };
174
- return formatData(`Environment variable '${response.schemaName}': ${response.typeName} = ${response.effectiveValue ?? "(not set)"}`, response, ["Use dataverse_set_environment_variable to update the value"]);
175
- }
176
- async function handleSetEnvironmentVariable(args, client) {
177
- const { schemaName, value } = SetEnvVarInput.parse(args);
178
- const defResult = await client.query("environmentvariabledefinitions", {
179
- filter: `schemaname eq '${esc(schemaName)}'`,
180
- select: ["environmentvariabledefinitionid", "schemaname"],
181
- top: 1,
182
- });
183
- const defRecords = defResult.value;
184
- if (defRecords.length === 0) {
185
- throw new Error(`Environment variable definition '${schemaName}' not found. ` +
186
- `This tool can only update the value of an existing variable. ` +
187
- `To create a new environment variable: Power Apps maker portal → Solutions → your solution → New → More → Environment variable. ` +
188
- `Then call this tool to set its value.`);
189
- }
190
- const defId = defRecords[0]["environmentvariabledefinitionid"];
191
- const valResult = await client.query("environmentvariablevalues", {
192
- filter: `_environmentvariabledefinitionid_value eq ${defId}`,
193
- select: ["environmentvariablevalueid", "value"],
194
- top: 1,
195
- });
196
- const valRecords = valResult.value;
197
- let operation;
198
- let valueId;
199
- if (valRecords.length > 0) {
200
- valueId = valRecords[0]["environmentvariablevalueid"];
201
- await client.updateRecord("environmentvariablevalues", valueId, { value });
202
- operation = "updated";
203
- }
204
- else {
205
- valueId = await client.createRecord("environmentvariablevalues", {
206
- value,
207
- "EnvironmentVariableDefinitionId@odata.bind": `/environmentvariabledefinitions(${defId})`,
208
- });
209
- operation = "created";
210
- }
211
- const response = {
212
- schemaName,
213
- operation,
214
- valueId,
215
- value,
216
- };
217
- return formatData(`Environment variable '${schemaName}' set to new value`, response, ["Use dataverse_get_environment_variable to verify the update"]);
218
- }
219
- async function handleCreateEnvironmentVariable(args, client) {
220
- const { schemaName, displayName, type, value, description, defaultValue } = CreateEnvVarInput.parse(args);
221
- const writeWarnings = checkWriteGuardrails({
222
- toolName: "dataverse_create_environment_variable",
223
- }).map((w) => `[${w.severity.toUpperCase()}] ${w.code}: ${w.message}`);
224
- const existing = await client.query("environmentvariabledefinitions", {
225
- filter: `schemaname eq '${esc(schemaName)}'`,
226
- select: ["environmentvariabledefinitionid"],
227
- top: 1,
228
- });
229
- if (existing.value.length > 0) {
230
- throw new Error(`Environment variable '${schemaName}' already exists. ` +
231
- `Use dataverse_set_environment_variable to update its value.`);
232
- }
233
- const typeCode = ENV_VAR_TYPE_CODES[type] ?? 100000000;
234
- const defBody = {
235
- schemaname: schemaName,
236
- displayname: displayName,
237
- type: typeCode,
238
- };
239
- if (description)
240
- defBody["description"] = description;
241
- if (defaultValue !== undefined)
242
- defBody["defaultvalue"] = defaultValue;
243
- const defId = await client.createRecord("environmentvariabledefinitions", defBody);
244
- const valId = await client.createRecord("environmentvariablevalues", {
245
- value,
246
- "EnvironmentVariableDefinitionId@odata.bind": `/environmentvariabledefinitions(${defId})`,
247
- });
248
- return formatData(`Environment variable '${schemaName}' created (type: ${type}, value: '${value}').`, {
249
- schemaName,
250
- displayName,
251
- type,
252
- typeCode,
253
- definitionId: defId,
254
- valueId: valId,
255
- value,
256
- ...(writeWarnings.length > 0 && { warnings: writeWarnings }),
257
- }, [
258
- "Use dataverse_get_environment_variable to verify",
259
- "Use dataverse_set_environment_variable to update the value later",
260
- ]);
261
- }
262
- export async function handleEnvironmentTool(name, args, client) {
263
- switch (name) {
264
- case "dataverse_get_environment_variable":
265
- return handleGetEnvironmentVariable(args, client);
266
- case "dataverse_set_environment_variable":
267
- return handleSetEnvironmentVariable(args, client);
268
- case "dataverse_create_environment_variable":
269
- return handleCreateEnvironmentVariable(args, client);
270
- default:
271
- throw new Error(`Unknown environment tool: ${name}`);
272
- }
273
- }
274
- //# sourceMappingURL=environment.tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.tools.js","sourceRoot":"","sources":["../../src/tools/environment.tools.ts"],"names":[],"mappings":"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"}
@@ -1,73 +0,0 @@
1
- import type { DataverseAdvancedClient } from "../dataverse/dataverse-client-advanced.js";
2
- export declare const fileTools: ({
3
- name: string;
4
- description: string;
5
- inputSchema: {
6
- type: "object";
7
- properties: {
8
- entitySetName: {
9
- type: string;
10
- description: string;
11
- };
12
- recordId: {
13
- type: string;
14
- description: string;
15
- };
16
- columnName: {
17
- type: string;
18
- description: string;
19
- };
20
- fileContent: {
21
- type: string;
22
- description: string;
23
- };
24
- fileName: {
25
- type: string;
26
- description: string;
27
- };
28
- };
29
- required: string[];
30
- };
31
- annotations: {
32
- readOnlyHint: boolean;
33
- destructiveHint: boolean;
34
- idempotentHint: boolean;
35
- openWorldHint: boolean;
36
- };
37
- } | {
38
- name: string;
39
- description: string;
40
- inputSchema: {
41
- type: "object";
42
- properties: {
43
- entitySetName: {
44
- type: string;
45
- description: string;
46
- };
47
- recordId: {
48
- type: string;
49
- description: string;
50
- };
51
- columnName: {
52
- type: string;
53
- description: string;
54
- };
55
- fileContent?: never;
56
- fileName?: never;
57
- };
58
- required: string[];
59
- };
60
- annotations: {
61
- readOnlyHint: boolean;
62
- destructiveHint: boolean;
63
- idempotentHint: boolean;
64
- openWorldHint: boolean;
65
- };
66
- })[];
67
- export declare function handleFileTool(name: string, args: unknown, client: DataverseAdvancedClient): Promise<{
68
- content: Array<{
69
- type: "text";
70
- text: string;
71
- }>;
72
- }>;
73
- //# sourceMappingURL=file.tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file.tools.d.ts","sourceRoot":"","sources":["../../src/tools/file.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAwCzF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyErB,CAAC;AAEF,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2E7D"}
@@ -1,160 +0,0 @@
1
- import { z } from "zod";
2
- import { formatData } from "./output.utils.js";
3
- const SAFE_NAME_REGEX = /^[a-zA-Z0-9_]+$/;
4
- const PATH_TRAVERSAL_REGEX = /\.\.|[/\\]/;
5
- const UploadFileColumnInput = z.object({
6
- entitySetName: z
7
- .string()
8
- .min(1)
9
- .refine((v) => !PATH_TRAVERSAL_REGEX.test(v), {
10
- message: "entitySetName must not contain path traversal characters",
11
- }),
12
- recordId: z.string().uuid(),
13
- columnName: z
14
- .string()
15
- .min(1)
16
- .refine((v) => SAFE_NAME_REGEX.test(v), {
17
- message: "columnName must be alphanumeric/underscore only",
18
- }),
19
- fileContent: z.string().min(1).describe("Base64-encoded file content"),
20
- fileName: z.string().min(1),
21
- });
22
- const DownloadFileColumnInput = z.object({
23
- entitySetName: z
24
- .string()
25
- .min(1)
26
- .refine((v) => !PATH_TRAVERSAL_REGEX.test(v), {
27
- message: "entitySetName must not contain path traversal characters",
28
- }),
29
- recordId: z.string().uuid(),
30
- columnName: z
31
- .string()
32
- .min(1)
33
- .refine((v) => SAFE_NAME_REGEX.test(v), {
34
- message: "columnName must be alphanumeric/underscore only",
35
- }),
36
- });
37
- export const fileTools = [
38
- {
39
- name: "dataverse_upload_file_column",
40
- description: "Uploads a file to a Dataverse file column. Provide the entity set name, record GUID, column name, base64-encoded file content, and file name. The file is stored in the specified file-type column on the record. WHEN TO USE: Uploading a file to a file-type column on a Dataverse record. BEST PRACTICES: Base64-encode the file content; verify the column is a file-type column via dataverse_get_table_metadata. WORKFLOW: file_operations.",
41
- inputSchema: {
42
- type: "object",
43
- properties: {
44
- entitySetName: {
45
- type: "string",
46
- description: 'OData entity set name (e.g., "accounts")',
47
- },
48
- recordId: {
49
- type: "string",
50
- description: "Record GUID",
51
- },
52
- columnName: {
53
- type: "string",
54
- description: "File column logical name",
55
- },
56
- fileContent: {
57
- type: "string",
58
- description: "Base64-encoded file content",
59
- },
60
- fileName: {
61
- type: "string",
62
- description: 'File name including extension (e.g., "report.pdf")',
63
- },
64
- },
65
- required: [
66
- "entitySetName",
67
- "recordId",
68
- "columnName",
69
- "fileContent",
70
- "fileName",
71
- ],
72
- },
73
- annotations: {
74
- readOnlyHint: false,
75
- destructiveHint: false,
76
- idempotentHint: true,
77
- openWorldHint: true,
78
- },
79
- },
80
- {
81
- name: "dataverse_download_file_column",
82
- description: "Downloads a file from a Dataverse file column. Returns the file content as a base64-encoded string along with the file name and size. WHEN TO USE: Downloading a file stored in a file-type column on a Dataverse record. BEST PRACTICES: The response is base64-encoded; decode before saving or processing. WORKFLOW: file_operations.",
83
- inputSchema: {
84
- type: "object",
85
- properties: {
86
- entitySetName: {
87
- type: "string",
88
- description: 'OData entity set name (e.g., "accounts")',
89
- },
90
- recordId: {
91
- type: "string",
92
- description: "Record GUID",
93
- },
94
- columnName: {
95
- type: "string",
96
- description: "File column logical name",
97
- },
98
- },
99
- required: ["entitySetName", "recordId", "columnName"],
100
- },
101
- annotations: {
102
- readOnlyHint: true,
103
- destructiveHint: false,
104
- idempotentHint: true,
105
- openWorldHint: true,
106
- },
107
- },
108
- ];
109
- export async function handleFileTool(name, args, client) {
110
- // Access the protected HttpClient for raw binary requests (file column API).
111
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
- const http = client.http;
113
- switch (name) {
114
- case "dataverse_upload_file_column": {
115
- const { entitySetName, recordId, columnName, fileContent, fileName } = UploadFileColumnInput.parse(args);
116
- const buffer = Buffer.from(fileContent, "base64");
117
- const url = `${entitySetName}(${recordId})/${columnName}`;
118
- await http.patch(url, buffer, {
119
- headers: {
120
- "Content-Type": "application/octet-stream",
121
- "x-ms-file-name": fileName,
122
- },
123
- });
124
- return formatData(`Uploaded file to ${columnName} on ${entitySetName}(${recordId})`, {
125
- success: true,
126
- entitySetName,
127
- recordId,
128
- columnName,
129
- fileName,
130
- sizeBytes: buffer.length,
131
- }, ["Use dataverse_download_file_column to retrieve the file"]);
132
- }
133
- case "dataverse_download_file_column": {
134
- const { entitySetName, recordId, columnName } = DownloadFileColumnInput.parse(args);
135
- const url = `${entitySetName}(${recordId})/${columnName}/$value`;
136
- const response = await http.get(url, {
137
- responseType: "text",
138
- });
139
- const data = response.data;
140
- // The response may be binary data returned as a string; encode to base64
141
- const base64 = Buffer.from(data, "binary").toString("base64");
142
- const fileName = response.headers["x-ms-file-name"] ??
143
- response.headers["content-disposition"]?.match(/filename="?([^";\n]+)"?/)?.[1] ??
144
- "download";
145
- const fileSize = parseInt(response.headers["content-length"] ?? "0", 10) ||
146
- base64.length;
147
- return formatData(`Downloaded file from ${columnName} on ${entitySetName}(${recordId})`, {
148
- entitySetName,
149
- recordId,
150
- columnName,
151
- fileName,
152
- sizeBytes: fileSize,
153
- contentBase64: base64,
154
- });
155
- }
156
- default:
157
- throw new Error(`Unknown file tool: ${name}`);
158
- }
159
- }
160
- //# sourceMappingURL=file.tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file.tools.js","sourceRoot":"","sources":["../../src/tools/file.tools.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- export interface GuardrailWarning {
2
- code: string;
3
- message: string;
4
- severity: "info" | "warning" | "error";
5
- }
6
- /**
7
- * Check query parameters and return warnings about potential issues.
8
- */
9
- export declare function checkQueryGuardrails(params: {
10
- top?: number;
11
- select?: string[];
12
- filter?: string;
13
- entitySetName?: string;
14
- }): GuardrailWarning[];
15
- /**
16
- * Check write operation parameters and return warnings.
17
- */
18
- export declare function checkWriteGuardrails(params: {
19
- toolName: string;
20
- entitySetName?: string;
21
- }): GuardrailWarning[];
22
- //# sourceMappingURL=guardrails.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../../src/tools/guardrails.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;CACxC;AAQD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,gBAAgB,EAAE,CA8BrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,gBAAgB,EAAE,CAsBrB"}
@@ -1,56 +0,0 @@
1
- // ── Guardrails — pre-flight checks for tool calls ──────────────────────────────
2
- const DESTRUCTIVE_TOOLS = new Set([
3
- "dataverse_delete",
4
- "dataverse_delete_file",
5
- "dataverse_update_entity",
6
- ]);
7
- /**
8
- * Check query parameters and return warnings about potential issues.
9
- */
10
- export function checkQueryGuardrails(params) {
11
- const warnings = [];
12
- if (params.top !== undefined && params.top > 5000) {
13
- warnings.push({
14
- code: "LARGE_RESULT_SET",
15
- message: `Large result set requested (top=${params.top}). Consider reducing $top or using paging.`,
16
- severity: "warning",
17
- });
18
- }
19
- if (!params.select || params.select.length === 0) {
20
- warnings.push({
21
- code: "NO_SELECT",
22
- message: "No $select specified — all columns will be returned. Specify columns to reduce payload size.",
23
- severity: "warning",
24
- });
25
- }
26
- if (!params.filter) {
27
- warnings.push({
28
- code: "NO_FILTER",
29
- message: "No filter — consider adding one to reduce results and improve performance.",
30
- severity: "info",
31
- });
32
- }
33
- return warnings;
34
- }
35
- /**
36
- * Check write operation parameters and return warnings.
37
- */
38
- export function checkWriteGuardrails(params) {
39
- const warnings = [];
40
- if (DESTRUCTIVE_TOOLS.has(params.toolName)) {
41
- warnings.push({
42
- code: "DESTRUCTIVE_OP",
43
- message: "Destructive operation — confirm with user before proceeding. This action cannot be undone.",
44
- severity: "warning",
45
- });
46
- }
47
- if (params.toolName === "dataverse_batch_execute") {
48
- warnings.push({
49
- code: "BATCH_OP",
50
- message: "Batch operations may modify multiple records in a single transaction.",
51
- severity: "info",
52
- });
53
- }
54
- return warnings;
55
- }
56
- //# sourceMappingURL=guardrails.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/tools/guardrails.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAQlF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,kBAAkB;IAClB,uBAAuB;IACvB,yBAAyB;CAC1B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAKpC;IACC,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,mCAAmC,MAAM,CAAC,GAAG,4CAA4C;YAClG,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EACL,8FAA8F;YAChG,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EACL,4EAA4E;YAC9E,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAGpC;IACC,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,gBAAgB;YACtB,OAAO,EACL,4FAA4F;YAC9F,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,yBAAyB,EAAE,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,UAAU;YAChB,OAAO,EACL,uEAAuE;YACzE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,44 +0,0 @@
1
- import type { DataverseAdvancedClient } from "../dataverse/dataverse-client-advanced.js";
2
- import type { ProgressReporter } from "./progress.js";
3
- type DispatchFn = (toolName: string, args: unknown, client: DataverseAdvancedClient, progress?: ProgressReporter) => Promise<{
4
- content: Array<{
5
- type: "text";
6
- text: string;
7
- }>;
8
- }>;
9
- export declare const impersonateTools: {
10
- name: string;
11
- description: string;
12
- inputSchema: {
13
- type: "object";
14
- properties: {
15
- callerId: {
16
- type: string;
17
- description: string;
18
- };
19
- toolName: {
20
- type: string;
21
- description: string;
22
- };
23
- toolArgs: {
24
- type: string;
25
- description: string;
26
- };
27
- };
28
- required: string[];
29
- };
30
- annotations: {
31
- readOnlyHint: boolean;
32
- destructiveHint: boolean;
33
- idempotentHint: boolean;
34
- openWorldHint: boolean;
35
- };
36
- }[];
37
- export declare function handleImpersonateTool(name: string, args: unknown, client: DataverseAdvancedClient, dispatch: DispatchFn): Promise<{
38
- content: Array<{
39
- type: "text";
40
- text: string;
41
- }>;
42
- }>;
43
- export {};
44
- //# sourceMappingURL=impersonate.tools.d.ts.map