mcp-dataverse 0.3.8 → 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.
- package/CAPABILITIES.md +1039 -1039
- package/LICENSE +21 -21
- package/README.md +114 -105
- package/dist/auth-provider.factory-MSMLSOX3.js +1 -0
- package/dist/chunk-24RDOMG4.js +29 -0
- package/dist/chunk-OXKMMPM3.js +37 -0
- package/dist/chunk-PAX4NW5B.js +1 -0
- package/dist/chunk-SUDI4JM6.js +3 -0
- package/dist/config.loader-VTIKUDN7.js +1 -0
- package/dist/dataverse-client-advanced-T5ZJMRLK.js +1 -0
- package/dist/doctor.js +2 -102
- package/dist/http-server.js +3 -61
- package/dist/install.js +8 -233
- package/dist/server.js +43 -202
- package/dist/setup-auth.js +18 -41
- package/package.json +95 -94
- package/server.json +51 -50
- package/dist/auth/auth-provider.factory.d.ts +0 -4
- package/dist/auth/auth-provider.factory.d.ts.map +0 -1
- package/dist/auth/auth-provider.factory.js +0 -5
- package/dist/auth/auth-provider.factory.js.map +0 -1
- package/dist/auth/auth-provider.interface.d.ts +0 -21
- package/dist/auth/auth-provider.interface.d.ts.map +0 -1
- package/dist/auth/auth-provider.interface.js +0 -2
- package/dist/auth/auth-provider.interface.js.map +0 -1
- package/dist/auth/device-code-auth-provider.d.ts +0 -18
- package/dist/auth/device-code-auth-provider.d.ts.map +0 -1
- package/dist/auth/device-code-auth-provider.js +0 -167
- package/dist/auth/device-code-auth-provider.js.map +0 -1
- package/dist/config/config.loader.d.ts +0 -3
- package/dist/config/config.loader.d.ts.map +0 -1
- package/dist/config/config.loader.js +0 -39
- package/dist/config/config.loader.js.map +0 -1
- package/dist/config/config.schema.d.ts +0 -16
- package/dist/config/config.schema.d.ts.map +0 -1
- package/dist/config/config.schema.js +0 -20
- package/dist/config/config.schema.js.map +0 -1
- package/dist/dataverse/dataverse-client-advanced.d.ts +0 -53
- package/dist/dataverse/dataverse-client-advanced.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client-advanced.js +0 -199
- package/dist/dataverse/dataverse-client-advanced.js.map +0 -1
- package/dist/dataverse/dataverse-client.actions.d.ts +0 -11
- package/dist/dataverse/dataverse-client.actions.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.actions.js +0 -25
- package/dist/dataverse/dataverse-client.actions.js.map +0 -1
- package/dist/dataverse/dataverse-client.batch.d.ts +0 -10
- package/dist/dataverse/dataverse-client.batch.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.batch.js +0 -74
- package/dist/dataverse/dataverse-client.batch.js.map +0 -1
- package/dist/dataverse/dataverse-client.d.ts +0 -46
- package/dist/dataverse/dataverse-client.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.js +0 -275
- package/dist/dataverse/dataverse-client.js.map +0 -1
- package/dist/dataverse/dataverse-client.metadata.d.ts +0 -41
- package/dist/dataverse/dataverse-client.metadata.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.metadata.js +0 -124
- package/dist/dataverse/dataverse-client.metadata.js.map +0 -1
- package/dist/dataverse/dataverse-client.utils.d.ts +0 -14
- package/dist/dataverse/dataverse-client.utils.d.ts.map +0 -1
- package/dist/dataverse/dataverse-client.utils.js +0 -65
- package/dist/dataverse/dataverse-client.utils.js.map +0 -1
- package/dist/dataverse/http-client.d.ts +0 -38
- package/dist/dataverse/http-client.d.ts.map +0 -1
- package/dist/dataverse/http-client.js +0 -111
- package/dist/dataverse/http-client.js.map +0 -1
- package/dist/dataverse/types.d.ts +0 -68
- package/dist/dataverse/types.d.ts.map +0 -1
- package/dist/dataverse/types.js +0 -2
- package/dist/dataverse/types.js.map +0 -1
- package/dist/doctor.d.ts +0 -7
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js.map +0 -1
- package/dist/http-server.d.ts +0 -3
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js.map +0 -1
- package/dist/install.d.ts +0 -3
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/resources/resource-provider.d.ts +0 -11
- package/dist/resources/resource-provider.d.ts.map +0 -1
- package/dist/resources/resource-provider.js +0 -79
- package/dist/resources/resource-provider.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/setup-auth.d.ts +0 -3
- package/dist/setup-auth.d.ts.map +0 -1
- package/dist/setup-auth.js.map +0 -1
- package/dist/tools/actions.tools.d.ts +0 -206
- package/dist/tools/actions.tools.d.ts.map +0 -1
- package/dist/tools/actions.tools.js +0 -256
- package/dist/tools/actions.tools.js.map +0 -1
- package/dist/tools/annotations.tools.d.ts +0 -94
- package/dist/tools/annotations.tools.d.ts.map +0 -1
- package/dist/tools/annotations.tools.js +0 -225
- package/dist/tools/annotations.tools.js.map +0 -1
- package/dist/tools/audit.tools.d.ts +0 -51
- package/dist/tools/audit.tools.d.ts.map +0 -1
- package/dist/tools/audit.tools.js +0 -170
- package/dist/tools/audit.tools.js.map +0 -1
- package/dist/tools/auth.tools.d.ts +0 -23
- package/dist/tools/auth.tools.d.ts.map +0 -1
- package/dist/tools/auth.tools.js +0 -36
- package/dist/tools/auth.tools.js.map +0 -1
- package/dist/tools/batch.tools.d.ts +0 -52
- package/dist/tools/batch.tools.d.ts.map +0 -1
- package/dist/tools/batch.tools.js +0 -89
- package/dist/tools/batch.tools.js.map +0 -1
- package/dist/tools/crud.tools.d.ts +0 -260
- package/dist/tools/crud.tools.d.ts.map +0 -1
- package/dist/tools/crud.tools.js +0 -290
- package/dist/tools/crud.tools.js.map +0 -1
- package/dist/tools/customization.tools.d.ts +0 -127
- package/dist/tools/customization.tools.d.ts.map +0 -1
- package/dist/tools/customization.tools.js +0 -285
- package/dist/tools/customization.tools.js.map +0 -1
- package/dist/tools/environment.tools.d.ts +0 -106
- package/dist/tools/environment.tools.d.ts.map +0 -1
- package/dist/tools/environment.tools.js +0 -274
- package/dist/tools/environment.tools.js.map +0 -1
- package/dist/tools/file.tools.d.ts +0 -73
- package/dist/tools/file.tools.d.ts.map +0 -1
- package/dist/tools/file.tools.js +0 -160
- package/dist/tools/file.tools.js.map +0 -1
- package/dist/tools/guardrails.d.ts +0 -22
- package/dist/tools/guardrails.d.ts.map +0 -1
- package/dist/tools/guardrails.js +0 -56
- package/dist/tools/guardrails.js.map +0 -1
- package/dist/tools/impersonate.tools.d.ts +0 -44
- package/dist/tools/impersonate.tools.d.ts.map +0 -1
- package/dist/tools/impersonate.tools.js +0 -87
- package/dist/tools/impersonate.tools.js.map +0 -1
- package/dist/tools/metadata.tools.d.ts +0 -279
- package/dist/tools/metadata.tools.d.ts.map +0 -1
- package/dist/tools/metadata.tools.js +0 -400
- package/dist/tools/metadata.tools.js.map +0 -1
- package/dist/tools/org.tools.d.ts +0 -32
- package/dist/tools/org.tools.d.ts.map +0 -1
- package/dist/tools/org.tools.js +0 -65
- package/dist/tools/org.tools.js.map +0 -1
- package/dist/tools/output.utils.d.ts +0 -63
- package/dist/tools/output.utils.d.ts.map +0 -1
- package/dist/tools/output.utils.js +0 -78
- package/dist/tools/output.utils.js.map +0 -1
- package/dist/tools/progress.d.ts +0 -15
- package/dist/tools/progress.d.ts.map +0 -1
- package/dist/tools/progress.js +0 -29
- package/dist/tools/progress.js.map +0 -1
- package/dist/tools/quality.tools.d.ts +0 -36
- package/dist/tools/quality.tools.d.ts.map +0 -1
- package/dist/tools/quality.tools.js +0 -97
- package/dist/tools/quality.tools.js.map +0 -1
- package/dist/tools/query.tools.d.ts +0 -151
- package/dist/tools/query.tools.d.ts.map +0 -1
- package/dist/tools/query.tools.js +0 -293
- package/dist/tools/query.tools.js.map +0 -1
- package/dist/tools/relations.tools.d.ts +0 -77
- package/dist/tools/relations.tools.d.ts.map +0 -1
- package/dist/tools/relations.tools.js +0 -96
- package/dist/tools/relations.tools.js.map +0 -1
- package/dist/tools/router.tools.d.ts +0 -5
- package/dist/tools/router.tools.d.ts.map +0 -1
- package/dist/tools/router.tools.js +0 -247
- package/dist/tools/router.tools.js.map +0 -1
- package/dist/tools/search.tools.d.ts +0 -74
- package/dist/tools/search.tools.d.ts.map +0 -1
- package/dist/tools/search.tools.js +0 -142
- package/dist/tools/search.tools.js.map +0 -1
- package/dist/tools/solution.tools.d.ts +0 -113
- package/dist/tools/solution.tools.d.ts.map +0 -1
- package/dist/tools/solution.tools.js +0 -176
- package/dist/tools/solution.tools.js.map +0 -1
- package/dist/tools/teams.tools.d.ts +0 -65
- package/dist/tools/teams.tools.d.ts.map +0 -1
- package/dist/tools/teams.tools.js +0 -127
- package/dist/tools/teams.tools.js.map +0 -1
- package/dist/tools/tool-registry.d.ts +0 -35
- package/dist/tools/tool-registry.d.ts.map +0 -1
- package/dist/tools/tool-registry.js +0 -31
- package/dist/tools/tool-registry.js.map +0 -1
- package/dist/tools/trace.tools.d.ts +0 -75
- package/dist/tools/trace.tools.d.ts.map +0 -1
- package/dist/tools/trace.tools.js +0 -233
- package/dist/tools/trace.tools.js.map +0 -1
- package/dist/tools/tracking.tools.d.ts +0 -41
- package/dist/tools/tracking.tools.d.ts.map +0 -1
- package/dist/tools/tracking.tools.js +0 -76
- package/dist/tools/tracking.tools.js.map +0 -1
- package/dist/tools/users.tools.d.ts +0 -141
- package/dist/tools/users.tools.d.ts.map +0 -1
- package/dist/tools/users.tools.js +0 -321
- package/dist/tools/users.tools.js.map +0 -1
- package/dist/tools/validation.utils.d.ts +0 -6
- package/dist/tools/validation.utils.d.ts.map +0 -1
- package/dist/tools/validation.utils.js +0 -14
- package/dist/tools/validation.utils.js.map +0 -1
- package/dist/tools/views.tools.d.ts +0 -36
- package/dist/tools/views.tools.d.ts.map +0 -1
- package/dist/tools/views.tools.js +0 -92
- package/dist/tools/views.tools.js.map +0 -1
- package/dist/tools/workflow.tools.d.ts +0 -111
- package/dist/tools/workflow.tools.d.ts.map +0 -1
- package/dist/tools/workflow.tools.js +0 -449
- package/dist/tools/workflow.tools.js.map +0 -1
- package/dist/transport.d.ts +0 -6
- package/dist/transport.d.ts.map +0 -1
- package/dist/transport.js +0 -21
- package/dist/transport.js.map +0 -1
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { formatData, formatList } from "./output.utils.js";
|
|
3
|
-
import { checkWriteGuardrails } from "./guardrails.js";
|
|
4
|
-
export const metadataTools = [
|
|
5
|
-
{
|
|
6
|
-
name: "dataverse_list_tables",
|
|
7
|
-
description: "Lists all Dataverse tables. By default returns ONLY custom (non-system) tables. Set includeSystemTables=true to include all ~1700+ system tables. WHEN TO USE: Discovering which tables exist in the environment. BEST PRACTICES: Start without includeSystemTables to focus on custom tables; use dataverse_get_table_metadata for column details. WORKFLOW: explore_schema.",
|
|
8
|
-
inputSchema: {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
includeSystemTables: {
|
|
12
|
-
type: "boolean",
|
|
13
|
-
description: "Include system tables. Default false = custom tables only.",
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
required: [],
|
|
17
|
-
},
|
|
18
|
-
annotations: {
|
|
19
|
-
readOnlyHint: true,
|
|
20
|
-
destructiveHint: false,
|
|
21
|
-
idempotentHint: true,
|
|
22
|
-
openWorldHint: true,
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
name: "dataverse_get_table_metadata",
|
|
27
|
-
description: "Returns full schema metadata for a Dataverse table: all attribute (column) logical names, display names, data types, required levels, and lookup target entities. Use this before writing queries or creating/updating records to confirm correct field names and types. Set includeAttributes=false if you only need table-level metadata without column details. WHEN TO USE: Before building queries or creating/updating records to validate field names, types, and required levels. BEST PRACTICES: Set includeAttributes=false for table-level info only; call once and reuse results. WORKFLOW: explore_schema.",
|
|
28
|
-
inputSchema: {
|
|
29
|
-
type: "object",
|
|
30
|
-
properties: {
|
|
31
|
-
logicalName: {
|
|
32
|
-
type: "string",
|
|
33
|
-
description: 'The logical name of the table (e.g., "account", "contact", "new_mytable")',
|
|
34
|
-
},
|
|
35
|
-
includeAttributes: {
|
|
36
|
-
type: "boolean",
|
|
37
|
-
description: "Include attribute (column) definitions. Default: true",
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
required: ["logicalName"],
|
|
41
|
-
},
|
|
42
|
-
annotations: {
|
|
43
|
-
readOnlyHint: true,
|
|
44
|
-
destructiveHint: false,
|
|
45
|
-
idempotentHint: true,
|
|
46
|
-
openWorldHint: true,
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: "dataverse_get_relationships",
|
|
51
|
-
description: "Returns all relationship definitions (1:N, N:1, N:N) for a Dataverse table, including relationship schema names, referenced/referencing entity names, and lookup attribute names. Use to determine the correct relationshipName for dataverse_associate/dataverse_disassociate, or to map lookup fields before building FetchXML joins. Use relationshipType to filter results. WHEN TO USE: Finding relationship schema names for associate/disassociate, or mapping lookups for FetchXML joins. BEST PRACTICES: Filter by relationshipType to reduce output size. WORKFLOW: explore_schema.",
|
|
52
|
-
inputSchema: {
|
|
53
|
-
type: "object",
|
|
54
|
-
properties: {
|
|
55
|
-
logicalName: {
|
|
56
|
-
type: "string",
|
|
57
|
-
description: "The logical name of the table",
|
|
58
|
-
},
|
|
59
|
-
relationshipType: {
|
|
60
|
-
type: "string",
|
|
61
|
-
enum: ["OneToMany", "ManyToOne", "ManyToMany", "All"],
|
|
62
|
-
description: "Filter by relationship type. Default: All",
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
required: ["logicalName"],
|
|
66
|
-
},
|
|
67
|
-
annotations: {
|
|
68
|
-
readOnlyHint: true,
|
|
69
|
-
destructiveHint: false,
|
|
70
|
-
idempotentHint: true,
|
|
71
|
-
openWorldHint: true,
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
name: "dataverse_list_global_option_sets",
|
|
76
|
-
description: "Lists all global (shared) option sets defined in the Dataverse environment, returning their names and metadata IDs. Use this to discover available option sets before calling dataverse_get_option_set to retrieve their values. Prefer this over dataverse_get_table_metadata when you need to find option sets that are reused across multiple tables. WHEN TO USE: Discovering shared option sets reused across multiple tables. BEST PRACTICES: Follow up with dataverse_get_option_set to retrieve individual option values. WORKFLOW: explore_schema.",
|
|
77
|
-
inputSchema: {
|
|
78
|
-
type: "object",
|
|
79
|
-
properties: {},
|
|
80
|
-
required: [],
|
|
81
|
-
},
|
|
82
|
-
annotations: {
|
|
83
|
-
readOnlyHint: true,
|
|
84
|
-
destructiveHint: false,
|
|
85
|
-
idempotentHint: true,
|
|
86
|
-
openWorldHint: true,
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: "dataverse_get_option_set",
|
|
91
|
-
description: "Returns all option labels and their integer values for a named global option set. Use this to look up the numeric code for a picklist value before filtering records (e.g., statecode or statuscode equivalents), or to populate dropdowns with correct option values. WHEN TO USE: Looking up numeric codes for picklist filtering or record creation. BEST PRACTICES: Use the integer values in $filter expressions, not the label text. WORKFLOW: explore_schema.",
|
|
92
|
-
inputSchema: {
|
|
93
|
-
type: "object",
|
|
94
|
-
properties: {
|
|
95
|
-
name: {
|
|
96
|
-
type: "string",
|
|
97
|
-
description: "The name of the global option set",
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
required: ["name"],
|
|
101
|
-
},
|
|
102
|
-
annotations: {
|
|
103
|
-
readOnlyHint: true,
|
|
104
|
-
destructiveHint: false,
|
|
105
|
-
idempotentHint: true,
|
|
106
|
-
openWorldHint: true,
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
name: "dataverse_get_entity_key",
|
|
111
|
-
description: "Returns all alternate key definitions for a Dataverse table. Useful before using dataverse_upsert to know which fields serve as alternate keys, their index status (Active/InProgress/Failed), and whether they are customizable. WHEN TO USE: Before using dataverse_upsert to verify which fields serve as alternate keys. BEST PRACTICES: Check that key index status is Active before relying on a key. WORKFLOW: explore_schema.",
|
|
112
|
-
inputSchema: {
|
|
113
|
-
type: "object",
|
|
114
|
-
properties: {
|
|
115
|
-
tableName: {
|
|
116
|
-
type: "string",
|
|
117
|
-
description: 'Logical name of the table (e.g., "account", "contact")',
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
required: ["tableName"],
|
|
121
|
-
},
|
|
122
|
-
annotations: {
|
|
123
|
-
readOnlyHint: true,
|
|
124
|
-
destructiveHint: false,
|
|
125
|
-
idempotentHint: true,
|
|
126
|
-
openWorldHint: true,
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
name: "dataverse_get_attribute_option_set",
|
|
131
|
-
description: "Returns all option labels and integer values for a table-specific attribute (Picklist, Status, or State field). Use to look up the numeric codes for a column's choices before filtering or updating records. WHEN TO USE: Looking up option values for a specific table's picklist, status, or state column. BEST PRACTICES: Use the integer values in $filter and when setting fields in create/update. WORKFLOW: explore_schema.",
|
|
132
|
-
inputSchema: {
|
|
133
|
-
type: "object",
|
|
134
|
-
properties: {
|
|
135
|
-
entityLogicalName: {
|
|
136
|
-
type: "string",
|
|
137
|
-
description: 'Logical name of the table (e.g., "account", "contact")',
|
|
138
|
-
},
|
|
139
|
-
attributeLogicalName: {
|
|
140
|
-
type: "string",
|
|
141
|
-
description: 'Logical name of the attribute (e.g., "statuscode", "industrycode")',
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
required: ["entityLogicalName", "attributeLogicalName"],
|
|
145
|
-
},
|
|
146
|
-
annotations: {
|
|
147
|
-
readOnlyHint: true,
|
|
148
|
-
destructiveHint: false,
|
|
149
|
-
idempotentHint: true,
|
|
150
|
-
openWorldHint: true,
|
|
151
|
-
},
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
name: "dataverse_update_entity",
|
|
155
|
-
description: "Updates configuration flags on an existing Dataverse entity definition — enables or disables Notes (HasNotes), Change Tracking, and Audit. " +
|
|
156
|
-
"Requires System Customizer or System Administrator privileges. WHEN TO USE: Enabling notes/attachments support, change tracking, or audit on a table. " +
|
|
157
|
-
"BEST PRACTICES: Set autoPublish=true (default) to make changes visible immediately. WORKFLOW: manage_solution.",
|
|
158
|
-
inputSchema: {
|
|
159
|
-
type: "object",
|
|
160
|
-
properties: {
|
|
161
|
-
entityLogicalName: {
|
|
162
|
-
type: "string",
|
|
163
|
-
description: "Logical name of the entity to update (e.g. 'account', 'new_mytable')",
|
|
164
|
-
},
|
|
165
|
-
hasNotes: {
|
|
166
|
-
type: "boolean",
|
|
167
|
-
description: "Enable or disable the Notes/Attachments feature for this entity",
|
|
168
|
-
},
|
|
169
|
-
changeTrackingEnabled: {
|
|
170
|
-
type: "boolean",
|
|
171
|
-
description: "Enable or disable change tracking (required for delta sync)",
|
|
172
|
-
},
|
|
173
|
-
isAuditEnabled: {
|
|
174
|
-
type: "boolean",
|
|
175
|
-
description: "Enable or disable auditing on this entity",
|
|
176
|
-
},
|
|
177
|
-
autoPublish: {
|
|
178
|
-
type: "boolean",
|
|
179
|
-
description: "Publish the customization after update (default: true). Set false to defer publishing.",
|
|
180
|
-
},
|
|
181
|
-
confirm: {
|
|
182
|
-
type: "boolean",
|
|
183
|
-
description: "Must be true — confirms intentional schema modification to Dataverse entity metadata",
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
required: ["entityLogicalName", "confirm"],
|
|
187
|
-
},
|
|
188
|
-
annotations: {
|
|
189
|
-
readOnlyHint: false,
|
|
190
|
-
destructiveHint: false,
|
|
191
|
-
idempotentHint: true,
|
|
192
|
-
openWorldHint: true,
|
|
193
|
-
},
|
|
194
|
-
},
|
|
195
|
-
];
|
|
196
|
-
const GetTableMetadataInput = z.object({
|
|
197
|
-
logicalName: z.string().min(1),
|
|
198
|
-
includeAttributes: z.boolean().optional().default(true),
|
|
199
|
-
});
|
|
200
|
-
const GetRelationshipsInput = z.object({
|
|
201
|
-
logicalName: z.string().min(1),
|
|
202
|
-
relationshipType: z
|
|
203
|
-
.enum(["OneToMany", "ManyToOne", "ManyToMany", "All"])
|
|
204
|
-
.optional(),
|
|
205
|
-
});
|
|
206
|
-
const ListTablesInput = z.object({
|
|
207
|
-
includeSystemTables: z
|
|
208
|
-
.boolean()
|
|
209
|
-
.default(false)
|
|
210
|
-
.optional()
|
|
211
|
-
.describe("Include system tables. Default false = custom tables only."),
|
|
212
|
-
});
|
|
213
|
-
const GetOptionSetInput = z.object({
|
|
214
|
-
name: z.string().min(1),
|
|
215
|
-
});
|
|
216
|
-
const GetEntityKeyInput = z.object({
|
|
217
|
-
tableName: z
|
|
218
|
-
.string()
|
|
219
|
-
.min(1)
|
|
220
|
-
.describe('Logical name of the table (e.g., "account", "contact")'),
|
|
221
|
-
});
|
|
222
|
-
const DV_NAME_RE = /^[a-z_][a-z0-9_]*$/;
|
|
223
|
-
const GetAttributeOptionSetInput = z.object({
|
|
224
|
-
entityLogicalName: z
|
|
225
|
-
.string()
|
|
226
|
-
.min(1)
|
|
227
|
-
.regex(DV_NAME_RE, "Invalid Dataverse logical name"),
|
|
228
|
-
attributeLogicalName: z
|
|
229
|
-
.string()
|
|
230
|
-
.min(1)
|
|
231
|
-
.regex(DV_NAME_RE, "Invalid Dataverse logical name"),
|
|
232
|
-
});
|
|
233
|
-
const UpdateEntityInput = z
|
|
234
|
-
.object({
|
|
235
|
-
entityLogicalName: z
|
|
236
|
-
.string()
|
|
237
|
-
.min(1)
|
|
238
|
-
.regex(/^[a-z_][a-z0-9_]*$/, "Invalid logical name"),
|
|
239
|
-
confirm: z.literal(true, {
|
|
240
|
-
errorMap: () => ({
|
|
241
|
-
message: "Set confirm: true to modify entity metadata",
|
|
242
|
-
}),
|
|
243
|
-
}),
|
|
244
|
-
hasNotes: z.boolean().optional(),
|
|
245
|
-
changeTrackingEnabled: z.boolean().optional(),
|
|
246
|
-
isAuditEnabled: z.boolean().optional(),
|
|
247
|
-
autoPublish: z.boolean().optional().default(true),
|
|
248
|
-
})
|
|
249
|
-
.refine((d) => d.hasNotes !== undefined ||
|
|
250
|
-
d.changeTrackingEnabled !== undefined ||
|
|
251
|
-
d.isAuditEnabled !== undefined, {
|
|
252
|
-
message: "At least one of hasNotes, changeTrackingEnabled, or isAuditEnabled must be provided",
|
|
253
|
-
});
|
|
254
|
-
export async function handleMetadataTool(name, args, client) {
|
|
255
|
-
switch (name) {
|
|
256
|
-
case "dataverse_list_tables": {
|
|
257
|
-
const { includeSystemTables = false } = ListTablesInput.parse(args ?? {});
|
|
258
|
-
const customOnly = !includeSystemTables;
|
|
259
|
-
const result = await client.listTables(customOnly);
|
|
260
|
-
const tables = Array.isArray(result) ? result : [];
|
|
261
|
-
return formatList(`tables (${customOnly ? "custom only" : "including system"})`, tables, [
|
|
262
|
-
"Use dataverse_get_table_metadata to inspect a specific table's columns and types",
|
|
263
|
-
]);
|
|
264
|
-
}
|
|
265
|
-
case "dataverse_get_table_metadata": {
|
|
266
|
-
const { logicalName, includeAttributes } = GetTableMetadataInput.parse(args);
|
|
267
|
-
const result = await client.getTableMetadata(logicalName, includeAttributes);
|
|
268
|
-
const attributeCount = Array.isArray(result?.Attributes)
|
|
269
|
-
? result.Attributes.length
|
|
270
|
-
: 0;
|
|
271
|
-
return formatData(`Metadata for ${logicalName}: ${attributeCount} attributes`, result, [
|
|
272
|
-
"Use dataverse_query to read records from this table",
|
|
273
|
-
"Use dataverse_get_relationships to see related tables",
|
|
274
|
-
]);
|
|
275
|
-
}
|
|
276
|
-
case "dataverse_get_relationships": {
|
|
277
|
-
const { logicalName, relationshipType } = GetRelationshipsInput.parse(args);
|
|
278
|
-
const rawRelationships = await client.getRelationships(logicalName);
|
|
279
|
-
const lname = logicalName.toLowerCase();
|
|
280
|
-
const oneToMany = rawRelationships.filter((r) => r.RelationshipType === "OneToManyRelationship" &&
|
|
281
|
-
r.ReferencedEntity?.toLowerCase() === lname);
|
|
282
|
-
const manyToOne = rawRelationships.filter((r) => r.RelationshipType === "OneToManyRelationship" &&
|
|
283
|
-
r.ReferencingEntity?.toLowerCase() === lname);
|
|
284
|
-
const manyToMany = rawRelationships.filter((r) => r.RelationshipType === "ManyToManyRelationship");
|
|
285
|
-
const includeAll = !relationshipType || relationshipType === "All";
|
|
286
|
-
const allRels = [
|
|
287
|
-
...(includeAll || relationshipType === "OneToMany" ? oneToMany : []),
|
|
288
|
-
...(includeAll || relationshipType === "ManyToOne" ? manyToOne : []),
|
|
289
|
-
...(includeAll || relationshipType === "ManyToMany" ? manyToMany : []),
|
|
290
|
-
];
|
|
291
|
-
return formatData(`${allRels.length} relationships found for ${logicalName}`, {
|
|
292
|
-
tableName: logicalName,
|
|
293
|
-
oneToMany: includeAll || relationshipType === "OneToMany"
|
|
294
|
-
? oneToMany
|
|
295
|
-
: undefined,
|
|
296
|
-
manyToOne: includeAll || relationshipType === "ManyToOne"
|
|
297
|
-
? manyToOne
|
|
298
|
-
: undefined,
|
|
299
|
-
manyToMany: includeAll || relationshipType === "ManyToMany"
|
|
300
|
-
? manyToMany
|
|
301
|
-
: undefined,
|
|
302
|
-
}, [
|
|
303
|
-
"Use dataverse_associate or dataverse_disassociate to manage N:N relationships",
|
|
304
|
-
]);
|
|
305
|
-
}
|
|
306
|
-
case "dataverse_list_global_option_sets": {
|
|
307
|
-
const result = await client.listGlobalOptionSets();
|
|
308
|
-
const items = Array.isArray(result) ? result : [];
|
|
309
|
-
return formatList("global option sets", items, [
|
|
310
|
-
"Use dataverse_get_option_set with a name to see the values",
|
|
311
|
-
]);
|
|
312
|
-
}
|
|
313
|
-
case "dataverse_get_option_set": {
|
|
314
|
-
const { name: optionSetName } = GetOptionSetInput.parse(args);
|
|
315
|
-
const result = await client.getOptionSet(optionSetName);
|
|
316
|
-
const options = Array.isArray(result?.Options)
|
|
317
|
-
? result.Options
|
|
318
|
-
: [];
|
|
319
|
-
return formatData(`Option set '${optionSetName}': ${options.length} options`, result, [
|
|
320
|
-
"Use these values in $filter expressions or when creating/updating records",
|
|
321
|
-
]);
|
|
322
|
-
}
|
|
323
|
-
case "dataverse_get_entity_key": {
|
|
324
|
-
const { tableName } = GetEntityKeyInput.parse(args);
|
|
325
|
-
const keys = await client.getEntityKeys(tableName);
|
|
326
|
-
return formatData(`${keys.length} alternate keys for ${tableName}`, { tableName, keys, count: keys.length }, [
|
|
327
|
-
"Use dataverse_upsert with these keys for create-or-update operations",
|
|
328
|
-
]);
|
|
329
|
-
}
|
|
330
|
-
case "dataverse_get_attribute_option_set": {
|
|
331
|
-
const { entityLogicalName, attributeLogicalName } = GetAttributeOptionSetInput.parse(args);
|
|
332
|
-
const result = await client.getAttributeOptionSet(entityLogicalName, attributeLogicalName);
|
|
333
|
-
const options = Array.isArray(result?.options)
|
|
334
|
-
? result.options
|
|
335
|
-
: [];
|
|
336
|
-
return formatData(`Attribute '${attributeLogicalName}' on '${entityLogicalName}': ${options.length} options`, result, [
|
|
337
|
-
"Use these integer values in $filter or when creating/updating records",
|
|
338
|
-
]);
|
|
339
|
-
}
|
|
340
|
-
case "dataverse_update_entity": {
|
|
341
|
-
const { entityLogicalName, hasNotes, changeTrackingEnabled, isAuditEnabled, autoPublish, } = UpdateEntityInput.parse(args);
|
|
342
|
-
const writeWarnings = checkWriteGuardrails({
|
|
343
|
-
toolName: "dataverse_update_entity",
|
|
344
|
-
entitySetName: entityLogicalName,
|
|
345
|
-
}).map((w) => `[${w.severity.toUpperCase()}] ${w.code}: ${w.message}`);
|
|
346
|
-
const displayValues = {};
|
|
347
|
-
if (hasNotes !== undefined)
|
|
348
|
-
displayValues["HasNotes"] = hasNotes;
|
|
349
|
-
if (changeTrackingEnabled !== undefined)
|
|
350
|
-
displayValues["ChangeTrackingEnabled"] = changeTrackingEnabled;
|
|
351
|
-
if (isAuditEnabled !== undefined)
|
|
352
|
-
displayValues["IsAuditEnabled"] = isAuditEnabled;
|
|
353
|
-
const body = {
|
|
354
|
-
"@odata.type": "#Microsoft.Dynamics.CRM.EntityMetadata",
|
|
355
|
-
};
|
|
356
|
-
// HasNotes is Edm.Boolean (plain bool), NOT a BooleanManagedProperty
|
|
357
|
-
if (hasNotes !== undefined)
|
|
358
|
-
body["HasNotes"] = hasNotes;
|
|
359
|
-
if (changeTrackingEnabled !== undefined)
|
|
360
|
-
body["ChangeTrackingEnabled"] = changeTrackingEnabled;
|
|
361
|
-
// IsAuditEnabled is a BooleanManagedProperty — requires { Value: bool } wrapper
|
|
362
|
-
if (isAuditEnabled !== undefined)
|
|
363
|
-
body["IsAuditEnabled"] = { Value: isAuditEnabled };
|
|
364
|
-
try {
|
|
365
|
-
await client.updateEntityDefinition(entityLogicalName, body);
|
|
366
|
-
}
|
|
367
|
-
catch (err) {
|
|
368
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
369
|
-
if (msg.includes("0x80060888")) {
|
|
370
|
-
return formatData(`Cannot update entity '${entityLogicalName}': operation not supported by Dataverse.`, { error: "0x80060888", entityLogicalName, requestedChanges: displayValues }, [
|
|
371
|
-
"IsAuditEnabled requires organization-level auditing to be enabled first: Power Platform admin center > Settings > Audit and logs > Start Auditing",
|
|
372
|
-
"ChangeTrackingEnabled may be blocked if the entity is part of a managed solution",
|
|
373
|
-
"HasNotes=true/false should work for custom (unmanaged) entities",
|
|
374
|
-
]);
|
|
375
|
-
}
|
|
376
|
-
throw err;
|
|
377
|
-
}
|
|
378
|
-
const changes = Object.entries(displayValues)
|
|
379
|
-
.map(([k, v]) => `${k}=${String(v)}`)
|
|
380
|
-
.join(", ");
|
|
381
|
-
let publishStatus = "autoPublish=false (skipped)";
|
|
382
|
-
if (autoPublish) {
|
|
383
|
-
await client.publishCustomizations({ entities: [entityLogicalName] });
|
|
384
|
-
publishStatus = "published successfully";
|
|
385
|
-
}
|
|
386
|
-
return formatData(`Entity '${entityLogicalName}' updated: ${changes}. ${publishStatus}.`, {
|
|
387
|
-
entityLogicalName,
|
|
388
|
-
changes: displayValues,
|
|
389
|
-
published: autoPublish,
|
|
390
|
-
...(writeWarnings.length > 0 && { warnings: writeWarnings }),
|
|
391
|
-
}, [
|
|
392
|
-
"Use dataverse_get_table_metadata to verify the changes",
|
|
393
|
-
"Enable HasNotes=true before using dataverse_create_annotation",
|
|
394
|
-
]);
|
|
395
|
-
}
|
|
396
|
-
default:
|
|
397
|
-
throw new Error(`Unknown metadata tool: ${name}`);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
//# sourceMappingURL=metadata.tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.tools.js","sourceRoot":"","sources":["../../src/tools/metadata.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { DataverseAdvancedClient } from "../dataverse/dataverse-client-advanced.js";
|
|
2
|
-
export declare const orgTools: {
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
inputSchema: {
|
|
6
|
-
type: "object";
|
|
7
|
-
properties: {
|
|
8
|
-
top: {
|
|
9
|
-
type: string;
|
|
10
|
-
description: string;
|
|
11
|
-
};
|
|
12
|
-
includeDisabled: {
|
|
13
|
-
type: string;
|
|
14
|
-
description: string;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
required: never[];
|
|
18
|
-
};
|
|
19
|
-
annotations: {
|
|
20
|
-
readOnlyHint: boolean;
|
|
21
|
-
destructiveHint: boolean;
|
|
22
|
-
idempotentHint: boolean;
|
|
23
|
-
openWorldHint: boolean;
|
|
24
|
-
};
|
|
25
|
-
}[];
|
|
26
|
-
export declare function handleOrgTool(name: string, args: unknown, client: DataverseAdvancedClient): Promise<{
|
|
27
|
-
content: Array<{
|
|
28
|
-
type: "text";
|
|
29
|
-
text: string;
|
|
30
|
-
}>;
|
|
31
|
-
}>;
|
|
32
|
-
//# sourceMappingURL=org.tools.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"org.tools.d.ts","sourceRoot":"","sources":["../../src/tools/org.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAQzF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;GA0BpB,CAAC;AAUF,wBAAsB,aAAa,CACjC,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,CAwC7D"}
|
package/dist/tools/org.tools.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { formatData } from "./output.utils.js";
|
|
3
|
-
const ListBusinessUnitsInput = z.object({
|
|
4
|
-
top: z.number().int().positive().max(200).optional().default(50),
|
|
5
|
-
includeDisabled: z.boolean().optional().default(false),
|
|
6
|
-
});
|
|
7
|
-
export const orgTools = [
|
|
8
|
-
{
|
|
9
|
-
name: "dataverse_list_business_units",
|
|
10
|
-
description: "Lists business units in the Dataverse environment. Returns name, ID, parent business unit ID, disabled status, and creation date. By default only active business units are returned. WHEN TO USE: Finding business unit IDs for user management, team setup, or security role scope. BEST PRACTICES: The root business unit is the parent of all others; filter disabled units by default. WORKFLOW: explore_schema.",
|
|
11
|
-
inputSchema: {
|
|
12
|
-
type: "object",
|
|
13
|
-
properties: {
|
|
14
|
-
top: {
|
|
15
|
-
type: "number",
|
|
16
|
-
description: "Maximum number of results (default 50, max 200)",
|
|
17
|
-
},
|
|
18
|
-
includeDisabled: {
|
|
19
|
-
type: "boolean",
|
|
20
|
-
description: "Include disabled business units (default false)",
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
required: [],
|
|
24
|
-
},
|
|
25
|
-
annotations: {
|
|
26
|
-
readOnlyHint: true,
|
|
27
|
-
destructiveHint: false,
|
|
28
|
-
idempotentHint: true,
|
|
29
|
-
openWorldHint: true,
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
];
|
|
33
|
-
export async function handleOrgTool(name, args, client) {
|
|
34
|
-
switch (name) {
|
|
35
|
-
case "dataverse_list_business_units": {
|
|
36
|
-
const { top, includeDisabled } = ListBusinessUnitsInput.parse(args ?? {});
|
|
37
|
-
const filter = includeDisabled ? undefined : "isdisabled eq false";
|
|
38
|
-
const result = await client.query("businessunits", {
|
|
39
|
-
select: [
|
|
40
|
-
"businessunitid",
|
|
41
|
-
"name",
|
|
42
|
-
"parentbusinessunitid",
|
|
43
|
-
"isdisabled",
|
|
44
|
-
"createdon",
|
|
45
|
-
],
|
|
46
|
-
...(filter ? { filter } : {}),
|
|
47
|
-
orderby: "name asc",
|
|
48
|
-
top,
|
|
49
|
-
});
|
|
50
|
-
const units = result.value.map((bu) => ({
|
|
51
|
-
id: bu.businessunitid,
|
|
52
|
-
name: bu.name,
|
|
53
|
-
parentBusinessUnitId: bu.parentbusinessunitid ?? null,
|
|
54
|
-
isDisabled: bu.isdisabled,
|
|
55
|
-
createdOn: bu.createdon,
|
|
56
|
-
}));
|
|
57
|
-
return formatData(`${units.length} business units found`, { businessUnits: units, count: units.length }, [
|
|
58
|
-
"Use business unit IDs for user management or security role assignment",
|
|
59
|
-
]);
|
|
60
|
-
}
|
|
61
|
-
default:
|
|
62
|
-
throw new Error(`Unknown org tool: ${name}`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=org.tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"org.tools.js","sourceRoot":"","sources":["../../src/tools/org.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB;QACE,IAAI,EAAE,+BAA+B;QACrC,WAAW,EACT,uZAAuZ;QACzZ,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iDAAiD;iBAC/D;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,iDAAiD;iBAC/D;aACF;YACD,QAAQ,EAAE,EAAE;SACb;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF;CACF,CAAC;AAUF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,IAAa,EACb,MAA+B;IAE/B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,+BAA+B,CAAC,CAAC,CAAC;YACrC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAE1E,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAe,eAAe,EAAE;gBAC/D,MAAM,EAAE;oBACN,gBAAgB;oBAChB,MAAM;oBACN,sBAAsB;oBACtB,YAAY;oBACZ,WAAW;iBACZ;gBACD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,UAAU;gBACnB,GAAG;aACJ,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtC,EAAE,EAAE,EAAE,CAAC,cAAc;gBACrB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,IAAI,IAAI;gBACrD,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,SAAS,EAAE,EAAE,CAAC,SAAS;aACxB,CAAC,CAAC,CAAC;YAEJ,OAAO,UAAU,CACf,GAAG,KAAK,CAAC,MAAM,uBAAuB,EACtC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EAC7C;gBACE,uEAAuE;aACxE,CACF,CAAC;QACJ,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { ToolResult } from "./tool-registry.js";
|
|
2
|
-
/**
|
|
3
|
-
* Describes a missing environment-level prerequisite that prevents a tool from
|
|
4
|
-
* operating. Surface this to the agent so it can explain the required admin
|
|
5
|
-
* action to the user in a structured, parseable way.
|
|
6
|
-
*/
|
|
7
|
-
export interface EnvironmentPrerequisite {
|
|
8
|
-
/** Broad category of the limitation. */
|
|
9
|
-
type: "feature_disabled" | "permission_required" | "schema_missing";
|
|
10
|
-
/** Short display name of the missing feature/capability. */
|
|
11
|
-
feature: string;
|
|
12
|
-
/** One-sentence explanation of why the tool cannot proceed. */
|
|
13
|
-
cannotProceedBecause: string;
|
|
14
|
-
/** Primary portal where the fix must be applied. */
|
|
15
|
-
adminPortal: "Power Platform Admin Center" | "Power Apps Maker Portal" | "Azure AD" | "N/A";
|
|
16
|
-
/** Ordered navigation steps for the administrator. */
|
|
17
|
-
steps: string[];
|
|
18
|
-
/**
|
|
19
|
-
* Name of an MCP tool that can apply the fix programmatically,
|
|
20
|
-
* so the agent can offer to do it automatically instead of
|
|
21
|
-
* sending the user to the portal.
|
|
22
|
-
*/
|
|
23
|
-
fixableViaToolName?: string;
|
|
24
|
-
}
|
|
25
|
-
interface StructuredOutput {
|
|
26
|
-
summary: string;
|
|
27
|
-
data: unknown;
|
|
28
|
-
suggestions?: string[] | undefined;
|
|
29
|
-
warnings?: string[] | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* Present when the tool is blocked by a missing environment-level
|
|
32
|
-
* prerequisite. The agent should read this field and present the
|
|
33
|
-
* steps to the user rather than treating the response as a data result.
|
|
34
|
-
*/
|
|
35
|
-
prerequisite?: EnvironmentPrerequisite | undefined;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Wraps a structured output into the MCP tool result format.
|
|
39
|
-
* Every tool handler should use this for consistent, LLM-friendly responses.
|
|
40
|
-
*/
|
|
41
|
-
export declare function formatToolOutput(output: StructuredOutput): ToolResult;
|
|
42
|
-
/**
|
|
43
|
-
* Convenience: wrap raw data with a summary line and optional suggestions.
|
|
44
|
-
*/
|
|
45
|
-
export declare function formatData(summary: string, data: unknown, suggestions?: string[], warnings?: string[]): ToolResult;
|
|
46
|
-
/**
|
|
47
|
-
* Format a count-based result (list of items).
|
|
48
|
-
*/
|
|
49
|
-
export declare function formatList(label: string, items: unknown[], suggestions?: string[]): ToolResult;
|
|
50
|
-
/**
|
|
51
|
-
* Returns a structured "cannot proceed — environment prerequisite missing"
|
|
52
|
-
* response. The tool should RETURN this instead of throwing so that the
|
|
53
|
-
* agent receives a parseable JSON payload it can relay to the user.
|
|
54
|
-
*/
|
|
55
|
-
export declare function formatPrerequisiteError(prerequisite: EnvironmentPrerequisite): ToolResult;
|
|
56
|
-
/**
|
|
57
|
-
* Merges OData formatted-value annotations into each record.
|
|
58
|
-
* Transforms `{ statuscode: 1, "statuscode@OData.Community.Display.V1.FormattedValue": "Active" }`
|
|
59
|
-
* into `{ statuscode: { value: 1, label: "Active" } }`.
|
|
60
|
-
*/
|
|
61
|
-
export declare function mergeFormattedValues<T>(records: T[]): T[];
|
|
62
|
-
export {};
|
|
63
|
-
//# sourceMappingURL=output.utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"output.utils.d.ts","sourceRoot":"","sources":["../../src/tools/output.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;IACpE,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,WAAW,EACP,6BAA6B,GAC7B,yBAAyB,GACzB,UAAU,GACV,KAAK,CAAC;IACV,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;CACpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CASrE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,UAAU,CAEZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,EAAE,EAChB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,UAAU,CAMZ;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,uBAAuB,GACpC,UAAU,CAMZ;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAuBzD"}
|