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,78 +0,0 @@
1
- /**
2
- * Wraps a structured output into the MCP tool result format.
3
- * Every tool handler should use this for consistent, LLM-friendly responses.
4
- */
5
- export function formatToolOutput(output) {
6
- return {
7
- content: [
8
- {
9
- type: "text",
10
- text: JSON.stringify(output, null, 2),
11
- },
12
- ],
13
- };
14
- }
15
- /**
16
- * Convenience: wrap raw data with a summary line and optional suggestions.
17
- */
18
- export function formatData(summary, data, suggestions, warnings) {
19
- return formatToolOutput({ summary, data, suggestions, warnings });
20
- }
21
- /**
22
- * Format a count-based result (list of items).
23
- */
24
- export function formatList(label, items, suggestions) {
25
- return formatToolOutput({
26
- summary: `${items.length} ${label} found.`,
27
- data: items,
28
- suggestions,
29
- });
30
- }
31
- /**
32
- * Returns a structured "cannot proceed — environment prerequisite missing"
33
- * response. The tool should RETURN this instead of throwing so that the
34
- * agent receives a parseable JSON payload it can relay to the user.
35
- */
36
- export function formatPrerequisiteError(prerequisite) {
37
- return formatToolOutput({
38
- summary: `Blocked: ${prerequisite.cannotProceedBecause}`,
39
- data: null,
40
- prerequisite,
41
- });
42
- }
43
- // ── Formatted Value Annotation Merge ─────────────────────────────────────────
44
- const FORMATTED_VALUE_SUFFIX = "@OData.Community.Display.V1.FormattedValue";
45
- /**
46
- * Merges OData formatted-value annotations into each record.
47
- * Transforms `{ statuscode: 1, "statuscode@OData.Community.Display.V1.FormattedValue": "Active" }`
48
- * into `{ statuscode: { value: 1, label: "Active" } }`.
49
- */
50
- export function mergeFormattedValues(records) {
51
- return records.map((record) => {
52
- if (typeof record !== "object" || record === null)
53
- return record;
54
- const r = record;
55
- const annotMap = {};
56
- for (const key of Object.keys(r)) {
57
- if (key.endsWith(FORMATTED_VALUE_SUFFIX)) {
58
- const baseKey = key.slice(0, -FORMATTED_VALUE_SUFFIX.length);
59
- annotMap[baseKey] = r[key];
60
- }
61
- }
62
- if (Object.keys(annotMap).length === 0)
63
- return record;
64
- const merged = {};
65
- for (const key of Object.keys(r)) {
66
- if (key.endsWith(FORMATTED_VALUE_SUFFIX))
67
- continue;
68
- if (Object.prototype.hasOwnProperty.call(annotMap, key)) {
69
- merged[key] = { value: r[key], label: annotMap[key] };
70
- }
71
- else {
72
- merged[key] = r[key];
73
- }
74
- }
75
- return merged;
76
- });
77
- }
78
- //# sourceMappingURL=output.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output.utils.js","sourceRoot":"","sources":["../../src/tools/output.utils.ts"],"names":[],"mappings":"AA+CA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,IAAa,EACb,WAAsB,EACtB,QAAmB;IAEnB,OAAO,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,KAAgB,EAChB,WAAsB;IAEtB,OAAO,gBAAgB,CAAC;QACtB,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,SAAS;QAC1C,IAAI,EAAE,KAAK;QACX,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,YAAqC;IAErC,OAAO,gBAAgB,CAAC;QACtB,OAAO,EAAE,YAAY,YAAY,CAAC,oBAAoB,EAAE;QACxD,IAAI,EAAE,IAAI;QACV,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,MAAM,sBAAsB,GAAG,4CAA4C,CAAC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAI,OAAY;IAClD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACjE,MAAM,CAAC,GAAG,MAAiC,CAAC;QAC5C,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAC7D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACtD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBAAE,SAAS;YACnD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,MAAW,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,15 +0,0 @@
1
- import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
- /**
3
- * Optional progress reporter for long-running tool operations.
4
- * When a server instance and progress token are available, sends
5
- * MCP progress notifications. Otherwise, silently no-ops.
6
- */
7
- export declare class ProgressReporter {
8
- private server;
9
- private token;
10
- constructor(server?: Server, token?: string | number);
11
- report(progress: number, total: number): Promise<void>;
12
- }
13
- /** Singleton no-op reporter for when progress is not available */
14
- export declare const NO_PROGRESS: ProgressReporter;
15
- //# sourceMappingURL=progress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/tools/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAyB;gBAE1B,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAK9C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAW7D;AAED,kEAAkE;AAClE,eAAO,MAAM,WAAW,kBAAyB,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Optional progress reporter for long-running tool operations.
3
- * When a server instance and progress token are available, sends
4
- * MCP progress notifications. Otherwise, silently no-ops.
5
- */
6
- export class ProgressReporter {
7
- server;
8
- token;
9
- constructor(server, token) {
10
- this.server = server ?? null;
11
- this.token = token ?? null;
12
- }
13
- async report(progress, total) {
14
- if (!this.server || this.token == null)
15
- return;
16
- try {
17
- await this.server.notification({
18
- method: "notifications/progress",
19
- params: { progressToken: this.token, progress, total },
20
- });
21
- }
22
- catch {
23
- // Swallow — progress is best-effort
24
- }
25
- }
26
- }
27
- /** Singleton no-op reporter for when progress is not available */
28
- export const NO_PROGRESS = new ProgressReporter();
29
- //# sourceMappingURL=progress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/tools/progress.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAgB;IACtB,KAAK,CAAyB;IAEtC,YAAY,MAAe,EAAE,KAAuB;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,KAAa;QAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC7B,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;aACvD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;CACF;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
@@ -1,36 +0,0 @@
1
- import type { DataverseAdvancedClient } from "../dataverse/dataverse-client-advanced.js";
2
- export declare const qualityTools: {
3
- name: string;
4
- description: string;
5
- inputSchema: {
6
- type: "object";
7
- properties: {
8
- entityLogicalName: {
9
- type: string;
10
- description: string;
11
- };
12
- record: {
13
- type: string;
14
- description: string;
15
- };
16
- top: {
17
- type: string;
18
- description: string;
19
- };
20
- };
21
- required: string[];
22
- };
23
- annotations: {
24
- readOnlyHint: boolean;
25
- destructiveHint: boolean;
26
- idempotentHint: boolean;
27
- openWorldHint: boolean;
28
- };
29
- }[];
30
- export declare function handleQualityTool(name: string, args: unknown, client: DataverseAdvancedClient): Promise<{
31
- content: Array<{
32
- type: "text";
33
- text: string;
34
- }>;
35
- }>;
36
- //# sourceMappingURL=quality.tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality.tools.d.ts","sourceRoot":"","sources":["../../src/tools/quality.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAGzF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BxB,CAAC;AAWF,wBAAsB,iBAAiB,CACrC,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,CA6E7D"}
@@ -1,97 +0,0 @@
1
- import { z } from "zod";
2
- import { formatData } from "./output.utils.js";
3
- export const qualityTools = [
4
- {
5
- name: "dataverse_detect_duplicates",
6
- description: "Checks for potential duplicate records before creating. Uses Dataverse built-in duplicate detection rules. Pass the prospective record fields to check against existing records. WHEN TO USE: Before creating a new record to check if a duplicate already exists. BEST PRACTICES: Duplicate detection rules must be configured in Dataverse admin; pass key identifying fields only. WORKFLOW: create_record.",
7
- inputSchema: {
8
- type: "object",
9
- properties: {
10
- entityLogicalName: {
11
- type: "string",
12
- description: 'Table to check, e.g., "account"',
13
- },
14
- record: {
15
- type: "object",
16
- description: "The prospective record fields to check for duplicates",
17
- },
18
- top: {
19
- type: "number",
20
- description: "Maximum number of duplicates to return (default 5, max 20)",
21
- },
22
- },
23
- required: ["entityLogicalName", "record"],
24
- },
25
- annotations: {
26
- readOnlyHint: true,
27
- destructiveHint: false,
28
- idempotentHint: true,
29
- openWorldHint: true,
30
- },
31
- },
32
- ];
33
- const DetectDuplicatesInput = z.object({
34
- entityLogicalName: z
35
- .string()
36
- .min(1)
37
- .regex(/^[a-z_][a-z0-9_]*$/i, "Must be a valid Dataverse logical name"),
38
- record: z.record(z.string(), z.unknown()),
39
- top: z.number().int().positive().max(20).optional().default(5),
40
- });
41
- export async function handleQualityTool(name, args, client) {
42
- switch (name) {
43
- case "dataverse_detect_duplicates": {
44
- const params = DetectDuplicatesInput.parse(args);
45
- function xmlEsc(v) {
46
- return String(v)
47
- .replace(/&/g, "&amp;")
48
- .replace(/</g, "&lt;")
49
- .replace(/>/g, "&gt;")
50
- .replace(/"/g, "&quot;")
51
- .replace(/'/g, "&apos;");
52
- }
53
- const conditions = Object.entries(params.record)
54
- .filter(([, v]) => v !== null && v !== undefined)
55
- .map(([key, value]) => `<condition attribute="${xmlEsc(key)}" operator="eq" value="${xmlEsc(String(value))}" />`)
56
- .join("\n ");
57
- if (!conditions) {
58
- return formatData("No fields provided for duplicate detection", { hasDuplicates: false, duplicateCount: 0, duplicates: [] }, ["Provide at least one field value to check for duplicates"]);
59
- }
60
- const entitySetName = params.entityLogicalName + "s";
61
- const fetchXml = `<fetch top="${params.top}" distinct="true">
62
- <entity name="${xmlEsc(params.entityLogicalName)}">
63
- <all-attributes />
64
- <filter type="or">
65
- ${conditions}
66
- </filter>
67
- </entity>
68
- </fetch>`;
69
- const rawResult = await client.executeFetchXml(entitySetName, fetchXml);
70
- const duplicates = (Array.isArray(rawResult)
71
- ? rawResult
72
- : Array.isArray(rawResult?.value)
73
- ? rawResult.value
74
- : []);
75
- const cleaned = duplicates.map((d) => {
76
- const clean = {};
77
- for (const [key, val] of Object.entries(d)) {
78
- if (!key.startsWith("@"))
79
- clean[key] = val;
80
- }
81
- return clean;
82
- });
83
- return formatData(`Duplicate detection: ${cleaned.length > 0 ? `${cleaned.length} potential duplicate(s) found` : "no duplicates found"}`, {
84
- hasDuplicates: cleaned.length > 0,
85
- duplicateCount: cleaned.length,
86
- duplicates: cleaned,
87
- note: "Field exact-match candidates (OR across provided fields). Dataverse duplicate detection rules are not applied via REST API.",
88
- }, [
89
- "Review candidate records before creating",
90
- "For rule-based duplicate detection, configure rules in Dataverse admin",
91
- ]);
92
- }
93
- default:
94
- throw new Error(`Unknown quality tool: ${name}`);
95
- }
96
- }
97
- //# sourceMappingURL=quality.tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality.tools.js","sourceRoot":"","sources":["../../src/tools/quality.tools.ts"],"names":[],"mappings":"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"}
@@ -1,151 +0,0 @@
1
- import type { DataverseAdvancedClient } from "../dataverse/dataverse-client-advanced.js";
2
- import type { ProgressReporter } from "./progress.js";
3
- export declare const queryTools: ({
4
- name: string;
5
- description: string;
6
- inputSchema: {
7
- type: "object";
8
- properties: {
9
- entitySetName: {
10
- type: string;
11
- description: string;
12
- };
13
- select: {
14
- type: string;
15
- items: {
16
- type: string;
17
- };
18
- description: string;
19
- };
20
- filter: {
21
- type: string;
22
- description: string;
23
- };
24
- orderby: {
25
- type: string;
26
- description: string;
27
- };
28
- top: {
29
- type: string;
30
- description: string;
31
- };
32
- expand: {
33
- type: string;
34
- description: string;
35
- };
36
- count: {
37
- type: string;
38
- description: string;
39
- };
40
- apply: {
41
- type: string;
42
- description: string;
43
- };
44
- formattedValues: {
45
- type: string;
46
- description: string;
47
- };
48
- fetchXml?: never;
49
- maxTotal?: never;
50
- };
51
- required: string[];
52
- };
53
- annotations: {
54
- readOnlyHint: boolean;
55
- destructiveHint: boolean;
56
- idempotentHint: boolean;
57
- openWorldHint: boolean;
58
- };
59
- } | {
60
- name: string;
61
- description: string;
62
- inputSchema: {
63
- type: "object";
64
- properties: {
65
- entitySetName: {
66
- type: string;
67
- description: string;
68
- };
69
- fetchXml: {
70
- type: string;
71
- description: string;
72
- };
73
- formattedValues: {
74
- type: string;
75
- description: string;
76
- };
77
- select?: never;
78
- filter?: never;
79
- orderby?: never;
80
- top?: never;
81
- expand?: never;
82
- count?: never;
83
- apply?: never;
84
- maxTotal?: never;
85
- };
86
- required: string[];
87
- };
88
- annotations: {
89
- readOnlyHint: boolean;
90
- destructiveHint: boolean;
91
- idempotentHint: boolean;
92
- openWorldHint: boolean;
93
- };
94
- } | {
95
- name: string;
96
- description: string;
97
- inputSchema: {
98
- type: "object";
99
- properties: {
100
- entitySetName: {
101
- type: string;
102
- description: string;
103
- };
104
- select: {
105
- type: string;
106
- items: {
107
- type: string;
108
- };
109
- description?: never;
110
- };
111
- filter: {
112
- type: string;
113
- description?: never;
114
- };
115
- orderby: {
116
- type: string;
117
- description?: never;
118
- };
119
- expand: {
120
- type: string;
121
- description?: never;
122
- };
123
- maxTotal: {
124
- type: string;
125
- description: string;
126
- };
127
- formattedValues: {
128
- type: string;
129
- description: string;
130
- };
131
- top?: never;
132
- count?: never;
133
- apply?: never;
134
- fetchXml?: never;
135
- };
136
- required: string[];
137
- };
138
- annotations: {
139
- readOnlyHint: boolean;
140
- destructiveHint: boolean;
141
- idempotentHint: boolean;
142
- openWorldHint: boolean;
143
- };
144
- })[];
145
- export declare function handleQueryTool(name: string, args: unknown, client: DataverseAdvancedClient, progress?: ProgressReporter): Promise<{
146
- content: Array<{
147
- type: "text";
148
- text: string;
149
- }>;
150
- }>;
151
- //# sourceMappingURL=query.tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.tools.d.ts","sourceRoot":"","sources":["../../src/tools/query.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAyBtD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6HtB,CAAC;AAmCF,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA8I7D"}