@mcp-consultant-tools/powerplatform 27.0.0 → 28.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/PowerPlatformService.d.ts +23 -2
- package/build/PowerPlatformService.d.ts.map +1 -1
- package/build/PowerPlatformService.js +23 -1
- package/build/PowerPlatformService.js.map +1 -1
- package/build/cli/commands/app-commands.d.ts +7 -0
- package/build/cli/commands/app-commands.d.ts.map +1 -0
- package/build/cli/commands/app-commands.js +65 -0
- package/build/cli/commands/app-commands.js.map +1 -0
- package/build/cli/commands/flow-commands.d.ts +7 -0
- package/build/cli/commands/flow-commands.d.ts.map +1 -0
- package/build/cli/commands/flow-commands.js +170 -0
- package/build/cli/commands/flow-commands.js.map +1 -0
- package/build/cli/commands/form-commands.d.ts +7 -0
- package/build/cli/commands/form-commands.d.ts.map +1 -0
- package/build/cli/commands/form-commands.js +104 -0
- package/build/cli/commands/form-commands.js.map +1 -0
- package/build/cli/commands/index.d.ts +15 -0
- package/build/cli/commands/index.d.ts.map +1 -0
- package/build/cli/commands/index.js +30 -0
- package/build/cli/commands/index.js.map +1 -0
- package/build/cli/commands/integration-commands.d.ts +7 -0
- package/build/cli/commands/integration-commands.d.ts.map +1 -0
- package/build/cli/commands/integration-commands.js +97 -0
- package/build/cli/commands/integration-commands.js.map +1 -0
- package/build/cli/commands/metadata-commands.d.ts +7 -0
- package/build/cli/commands/metadata-commands.d.ts.map +1 -0
- package/build/cli/commands/metadata-commands.js +83 -0
- package/build/cli/commands/metadata-commands.js.map +1 -0
- package/build/cli/commands/plugin-commands.d.ts +7 -0
- package/build/cli/commands/plugin-commands.d.ts.map +1 -0
- package/build/cli/commands/plugin-commands.js +79 -0
- package/build/cli/commands/plugin-commands.js.map +1 -0
- package/build/cli/commands/security-commands.d.ts +7 -0
- package/build/cli/commands/security-commands.d.ts.map +1 -0
- package/build/cli/commands/security-commands.js +89 -0
- package/build/cli/commands/security-commands.js.map +1 -0
- package/build/cli/commands/solution-commands.d.ts +7 -0
- package/build/cli/commands/solution-commands.d.ts.map +1 -0
- package/build/cli/commands/solution-commands.js +146 -0
- package/build/cli/commands/solution-commands.js.map +1 -0
- package/build/cli/output.d.ts +11 -0
- package/build/cli/output.d.ts.map +1 -0
- package/build/cli/output.js +10 -0
- package/build/cli/output.js.map +1 -0
- package/build/cli.d.ts +9 -0
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +30 -0
- package/build/cli.js.map +1 -0
- package/build/context-factory.d.ts +11 -0
- package/build/context-factory.d.ts.map +1 -0
- package/build/context-factory.js +39 -0
- package/build/context-factory.js.map +1 -0
- package/build/index.d.ts +10 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +26 -2394
- package/build/index.js.map +1 -1
- package/build/prompts/analysis-prompts.d.ts +3 -0
- package/build/prompts/analysis-prompts.d.ts.map +1 -0
- package/build/prompts/analysis-prompts.js +286 -0
- package/build/prompts/analysis-prompts.js.map +1 -0
- package/build/prompts/entity-prompts.d.ts +3 -0
- package/build/prompts/entity-prompts.d.ts.map +1 -0
- package/build/prompts/entity-prompts.js +304 -0
- package/build/prompts/entity-prompts.js.map +1 -0
- package/build/prompts/index.d.ts +8 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +11 -0
- package/build/prompts/index.js.map +1 -0
- package/build/services/index.d.ts +5 -0
- package/build/services/index.d.ts.map +1 -0
- package/build/services/index.js +5 -0
- package/build/services/index.js.map +1 -0
- package/build/tool-examples.d.ts +48 -0
- package/build/tool-examples.d.ts.map +1 -0
- package/build/tool-examples.js +91 -0
- package/build/tool-examples.js.map +1 -0
- package/build/tools/app-tools.d.ts +3 -0
- package/build/tools/app-tools.d.ts.map +1 -0
- package/build/tools/app-tools.js +127 -0
- package/build/tools/app-tools.js.map +1 -0
- package/build/tools/flow-tools.d.ts +3 -0
- package/build/tools/flow-tools.d.ts.map +1 -0
- package/build/tools/flow-tools.js +374 -0
- package/build/tools/flow-tools.js.map +1 -0
- package/build/tools/form-view-tools.d.ts +3 -0
- package/build/tools/form-view-tools.d.ts.map +1 -0
- package/build/tools/form-view-tools.js +162 -0
- package/build/tools/form-view-tools.js.map +1 -0
- package/build/tools/index.d.ts +14 -0
- package/build/tools/index.d.ts.map +1 -0
- package/build/tools/index.js +29 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/integration-tools.d.ts +3 -0
- package/build/tools/integration-tools.d.ts.map +1 -0
- package/build/tools/integration-tools.js +325 -0
- package/build/tools/integration-tools.js.map +1 -0
- package/build/tools/metadata-tools.d.ts +3 -0
- package/build/tools/metadata-tools.d.ts.map +1 -0
- package/build/tools/metadata-tools.js +166 -0
- package/build/tools/metadata-tools.js.map +1 -0
- package/build/tools/plugin-tools.d.ts +3 -0
- package/build/tools/plugin-tools.d.ts.map +1 -0
- package/build/tools/plugin-tools.js +138 -0
- package/build/tools/plugin-tools.js.map +1 -0
- package/build/tools/security-tools.d.ts +3 -0
- package/build/tools/security-tools.d.ts.map +1 -0
- package/build/tools/security-tools.js +188 -0
- package/build/tools/security-tools.js.map +1 -0
- package/build/tools/solution-tools.d.ts +3 -0
- package/build/tools/solution-tools.d.ts.map +1 -0
- package/build/tools/solution-tools.js +284 -0
- package/build/tools/solution-tools.js.map +1 -0
- package/build/types.d.ts +9 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/types.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form/View Tools - 7 tools for forms, views, and web resources
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { descWithExamples, ENTITY_NAME_EXAMPLES } from '../tool-examples.js';
|
|
6
|
+
export function registerFormViewTools(server, ctx) {
|
|
7
|
+
server.tool("get-webres-deps", "Get all dependencies for a web resource", {
|
|
8
|
+
webResourceId: z.string().describe("Web resource ID (GUID)")
|
|
9
|
+
}, async ({ webResourceId }) => {
|
|
10
|
+
try {
|
|
11
|
+
const service = ctx.pp;
|
|
12
|
+
const dependencies = await service.getWebResourceDependencies(webResourceId);
|
|
13
|
+
return {
|
|
14
|
+
content: [{ type: "text", text: `Web Resource Dependencies:\n${JSON.stringify(dependencies, null, 2)}` }]
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error("Error getting web resource dependencies:", error);
|
|
19
|
+
return { content: [{ type: "text", text: `Failed to get web resource dependencies: ${error.message}` }], isError: true };
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
server.tool("preview-unpublished", "Preview all components with unpublished customizations", {}, async () => {
|
|
23
|
+
try {
|
|
24
|
+
const service = ctx.pp;
|
|
25
|
+
const unpublished = await service.previewUnpublishedChanges();
|
|
26
|
+
return {
|
|
27
|
+
content: [{ type: "text", text: `Unpublished Changes:\n${JSON.stringify(unpublished, null, 2)}` }]
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error("Error previewing unpublished changes:", error);
|
|
32
|
+
return { content: [{ type: "text", text: `Failed to preview unpublished changes: ${error.message}` }], isError: true };
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
server.tool("get-forms", "Get all forms (Main, QuickCreate, QuickView, Card) for a Dataverse entity.", {
|
|
36
|
+
entityLogicalName: z.string().describe(descWithExamples("Entity logical name", ENTITY_NAME_EXAMPLES))
|
|
37
|
+
}, async ({ entityLogicalName }) => {
|
|
38
|
+
try {
|
|
39
|
+
const service = ctx.pp;
|
|
40
|
+
const result = await service.getForms(entityLogicalName);
|
|
41
|
+
const forms = result.value || [];
|
|
42
|
+
const typeNames = { 2: "Main", 7: "QuickCreate", 8: "QuickView", 10: "Card" };
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: "text",
|
|
47
|
+
text: `Found ${forms.length} form(s) for entity '${entityLogicalName}':\n\n` +
|
|
48
|
+
forms.map((f) => `- ${f.name} (${typeNames[f.type] || f.type})\n ID: ${f.formid}`).join('\n')
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error("Error getting forms:", error);
|
|
55
|
+
return {
|
|
56
|
+
content: [{ type: "text", text: `Failed to get forms: ${error.message}` }],
|
|
57
|
+
isError: true
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
server.tool("get-views", "Get all saved views (system and personal) for a Dataverse entity, including default view indicator and query type.", {
|
|
62
|
+
entityLogicalName: z.string().describe(descWithExamples("Entity logical name", ENTITY_NAME_EXAMPLES))
|
|
63
|
+
}, async ({ entityLogicalName }) => {
|
|
64
|
+
try {
|
|
65
|
+
const service = ctx.pp;
|
|
66
|
+
const result = await service.getViews(entityLogicalName);
|
|
67
|
+
const views = result.value || [];
|
|
68
|
+
return {
|
|
69
|
+
content: [
|
|
70
|
+
{
|
|
71
|
+
type: "text",
|
|
72
|
+
text: `Found ${views.length} view(s) for entity '${entityLogicalName}':\n\n` +
|
|
73
|
+
views.map((v) => `- ${v.name}${v.isdefault ? ' [DEFAULT]' : ''}\n ID: ${v.savedqueryid}\n Query Type: ${v.querytype}`).join('\n')
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error("Error getting views:", error);
|
|
80
|
+
return {
|
|
81
|
+
content: [{ type: "text", text: `Failed to get views: ${error.message}` }],
|
|
82
|
+
isError: true
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
server.tool("get-view-fetchxml", "Get the FetchXML query from a view", {
|
|
87
|
+
viewId: z.string().describe("View ID (GUID)")
|
|
88
|
+
}, async ({ viewId }) => {
|
|
89
|
+
try {
|
|
90
|
+
const service = ctx.pp;
|
|
91
|
+
const view = await service.getViewFetchXml(viewId);
|
|
92
|
+
return {
|
|
93
|
+
content: [
|
|
94
|
+
{
|
|
95
|
+
type: "text",
|
|
96
|
+
text: `View: ${view.name}\nEntity: ${view.returnedtypecode}\nQuery Type: ${view.querytype}\n\nFetchXML:\n${view.fetchxml}`
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error("Error getting view FetchXML:", error);
|
|
103
|
+
return {
|
|
104
|
+
content: [{ type: "text", text: `Failed to get view FetchXML: ${error.message}` }],
|
|
105
|
+
isError: true
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
server.tool("get-web-resource", "Get a web resource by ID", {
|
|
110
|
+
webResourceId: z.string().describe("Web resource ID (GUID)")
|
|
111
|
+
}, async ({ webResourceId }) => {
|
|
112
|
+
try {
|
|
113
|
+
const service = ctx.pp;
|
|
114
|
+
const result = await service.getWebResource(webResourceId);
|
|
115
|
+
return {
|
|
116
|
+
content: [
|
|
117
|
+
{
|
|
118
|
+
type: "text",
|
|
119
|
+
text: `Web Resource: ${result.name}\n` +
|
|
120
|
+
`Display Name: ${result.displayname}\n` +
|
|
121
|
+
`Type: ${result.webresourcetype}\n` +
|
|
122
|
+
`Description: ${result.description || 'N/A'}\n` +
|
|
123
|
+
`Modified: ${result.modifiedon}`
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
console.error("Error getting web resource:", error);
|
|
130
|
+
return {
|
|
131
|
+
content: [{ type: "text", text: `Failed to get web resource: ${error.message}` }],
|
|
132
|
+
isError: true
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
server.tool("get-web-resources", "Get web resources by name pattern (optional)", {
|
|
137
|
+
nameFilter: z.string().optional().describe("Name filter (contains)")
|
|
138
|
+
}, async ({ nameFilter }) => {
|
|
139
|
+
try {
|
|
140
|
+
const service = ctx.pp;
|
|
141
|
+
const result = await service.getWebResources(nameFilter);
|
|
142
|
+
const webResources = result.value || [];
|
|
143
|
+
return {
|
|
144
|
+
content: [
|
|
145
|
+
{
|
|
146
|
+
type: "text",
|
|
147
|
+
text: `Found ${webResources.length} web resource(s):\n\n` +
|
|
148
|
+
webResources.map((wr) => `- ${wr.name}\n Type: ${wr.webresourcetype}\n ID: ${wr.webresourceid}`).join('\n')
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
console.error("Error getting web resources:", error);
|
|
155
|
+
return {
|
|
156
|
+
content: [{ type: "text", text: `Failed to get web resources: ${error.message}` }],
|
|
157
|
+
isError: true
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=form-view-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-view-tools.js","sourceRoot":"","sources":["../../src/tools/form-view-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools barrel export + combined registration
|
|
3
|
+
*/
|
|
4
|
+
import type { ServiceContext } from '../types.js';
|
|
5
|
+
export declare function registerAllTools(server: any, ctx: ServiceContext): void;
|
|
6
|
+
export { registerMetadataTools } from './metadata-tools.js';
|
|
7
|
+
export { registerPluginTools } from './plugin-tools.js';
|
|
8
|
+
export { registerFlowTools } from './flow-tools.js';
|
|
9
|
+
export { registerAppTools } from './app-tools.js';
|
|
10
|
+
export { registerFormViewTools } from './form-view-tools.js';
|
|
11
|
+
export { registerSolutionTools } from './solution-tools.js';
|
|
12
|
+
export { registerIntegrationTools } from './integration-tools.js';
|
|
13
|
+
export { registerSecurityTools } from './security-tools.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAUlD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAYvE;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { registerMetadataTools } from './metadata-tools.js';
|
|
2
|
+
import { registerPluginTools } from './plugin-tools.js';
|
|
3
|
+
import { registerFlowTools } from './flow-tools.js';
|
|
4
|
+
import { registerAppTools } from './app-tools.js';
|
|
5
|
+
import { registerFormViewTools } from './form-view-tools.js';
|
|
6
|
+
import { registerSolutionTools } from './solution-tools.js';
|
|
7
|
+
import { registerIntegrationTools } from './integration-tools.js';
|
|
8
|
+
import { registerSecurityTools } from './security-tools.js';
|
|
9
|
+
export function registerAllTools(server, ctx) {
|
|
10
|
+
registerMetadataTools(server, ctx);
|
|
11
|
+
registerPluginTools(server, ctx);
|
|
12
|
+
registerFlowTools(server, ctx);
|
|
13
|
+
registerAppTools(server, ctx);
|
|
14
|
+
registerFormViewTools(server, ctx);
|
|
15
|
+
registerSolutionTools(server, ctx);
|
|
16
|
+
registerIntegrationTools(server, ctx);
|
|
17
|
+
registerSecurityTools(server, ctx);
|
|
18
|
+
// 5 metadata + 4 plugin + 9 flow + 4 app + 7 form-view + 8 solution + 5 integration + 4 security = 46
|
|
19
|
+
console.error(`powerplatform tools registered: 46 tools`);
|
|
20
|
+
}
|
|
21
|
+
export { registerMetadataTools } from './metadata-tools.js';
|
|
22
|
+
export { registerPluginTools } from './plugin-tools.js';
|
|
23
|
+
export { registerFlowTools } from './flow-tools.js';
|
|
24
|
+
export { registerAppTools } from './app-tools.js';
|
|
25
|
+
export { registerFormViewTools } from './form-view-tools.js';
|
|
26
|
+
export { registerSolutionTools } from './solution-tools.js';
|
|
27
|
+
export { registerIntegrationTools } from './integration-tools.js';
|
|
28
|
+
export { registerSecurityTools } from './security-tools.js';
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,GAAmB;IAC/D,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEnC,sGAAsG;IACtG,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC5D,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-tools.d.ts","sourceRoot":"","sources":["../../src/tools/integration-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA2X/E"}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Tools - 5 tools for integration audit and environment variables
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { descWithExamples, OUTPUT_FORMAT_EXAMPLES } from '../tool-examples.js';
|
|
6
|
+
export function registerIntegrationTools(server, ctx) {
|
|
7
|
+
server.tool("get-service-endpoints", `Get all service endpoints (webhooks, Azure Service Bus, REST) configured in the environment.
|
|
8
|
+
|
|
9
|
+
Service endpoints are external URLs that Dataverse can call via SDK message processing steps.
|
|
10
|
+
Use this to discover outbound integration touchpoints.
|
|
11
|
+
|
|
12
|
+
Optionally validate endpoint URLs against required patterns (e.g. your organization's domains).
|
|
13
|
+
Flagged endpoints are those whose URLs do NOT match any of the provided patterns.
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
- Endpoint name, full URL, contract type (OneWay/TwoWay/Queue/Topic/REST/EventHub/Webhook/EventGrid)
|
|
17
|
+
- Authentication type (Anonymous/HttpHeader/WebKey/SASKey/etc.)
|
|
18
|
+
- Number of SDK message steps using each endpoint
|
|
19
|
+
- Summary statistics by type and auth method
|
|
20
|
+
- Flagged endpoints (when requiredUrlStrings provided)`, {
|
|
21
|
+
maxRecords: z.number().optional().describe("Maximum endpoints to return (default: 100)"),
|
|
22
|
+
requiredUrlStrings: z.array(z.string()).optional().describe("URL patterns to validate against. Endpoints not matching any pattern are flagged.\n\nExamples:\n - Validate production URLs: `[\"mycompany.com\"]`\n - Multiple environments: `[\"prod.mycompany.com\", \"staging.mycompany.com\"]`"),
|
|
23
|
+
outputFormat: z.enum(["summary", "full"]).optional().describe(descWithExamples("Output format", OUTPUT_FORMAT_EXAMPLES)),
|
|
24
|
+
excludeOotb: z.boolean().optional().describe("Exclude Microsoft out-of-the-box (OOTB) components from results (default: true). Set to false to include all items."),
|
|
25
|
+
}, async ({ maxRecords, requiredUrlStrings, outputFormat, excludeOotb }) => {
|
|
26
|
+
try {
|
|
27
|
+
const service = ctx.pp;
|
|
28
|
+
const ootb = excludeOotb ?? true;
|
|
29
|
+
if (requiredUrlStrings && requiredUrlStrings.length > 0) {
|
|
30
|
+
const result = await service.getServiceEndpointsValidated(maxRecords ?? 100, requiredUrlStrings, ootb);
|
|
31
|
+
const lines = [];
|
|
32
|
+
lines.push(`# Service Endpoints (${result.summary.total} found, ${result.summary.flagged} flagged)`);
|
|
33
|
+
lines.push('');
|
|
34
|
+
if (result.flaggedEndpoints.length > 0) {
|
|
35
|
+
lines.push('## Flagged Endpoints');
|
|
36
|
+
lines.push('');
|
|
37
|
+
lines.push('| Name | URL | Issue |');
|
|
38
|
+
lines.push('|------|-----|-------|');
|
|
39
|
+
for (const f of result.flaggedEndpoints) {
|
|
40
|
+
lines.push(`| ${f.endpoint.name} | ${f.endpoint.url} | ${f.urlIssue} |`);
|
|
41
|
+
}
|
|
42
|
+
lines.push('');
|
|
43
|
+
}
|
|
44
|
+
if (outputFormat !== 'summary') {
|
|
45
|
+
lines.push('## All Endpoints');
|
|
46
|
+
lines.push('');
|
|
47
|
+
lines.push('| Name | URL |');
|
|
48
|
+
lines.push('|------|-----|');
|
|
49
|
+
for (const ep of result.allEndpoints) {
|
|
50
|
+
lines.push(`| ${ep.name} | ${ep.url} |`);
|
|
51
|
+
}
|
|
52
|
+
lines.push('');
|
|
53
|
+
}
|
|
54
|
+
return { content: [{ type: "text", text: lines.join('\n') }] };
|
|
55
|
+
}
|
|
56
|
+
const result = await service.getServiceEndpoints(maxRecords ?? 100, ootb);
|
|
57
|
+
const ootbNote = result.summary.ootbExcluded ? `, ${result.summary.ootbExcluded} OOTB excluded` : '';
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: "text",
|
|
62
|
+
text: `Service Endpoints (${result.summary.total} found${ootbNote}):\n\n${JSON.stringify(result, null, 2)}`,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error("Error getting service endpoints:", error);
|
|
69
|
+
return {
|
|
70
|
+
content: [
|
|
71
|
+
{
|
|
72
|
+
type: "text",
|
|
73
|
+
text: `Failed to get service endpoints: ${error.message}`,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
server.tool("get-webhook-registrations", `Get all webhook-type SDK message processing steps in the environment.
|
|
80
|
+
|
|
81
|
+
Webhooks are registrations that call external service endpoints when Dataverse events occur.
|
|
82
|
+
This identifies inbound integration patterns where external systems receive notifications.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
- Webhook name and endpoint URL
|
|
86
|
+
- Trigger entity and message (Create/Update/Delete)
|
|
87
|
+
- Filtering attributes and execution stage
|
|
88
|
+
- Enabled/disabled status
|
|
89
|
+
- Summary by entity and message type`, {
|
|
90
|
+
maxRecords: z.number().optional().describe("Maximum webhooks to return (default: 100)"),
|
|
91
|
+
excludeOotb: z.boolean().optional().describe("Exclude Microsoft out-of-the-box (OOTB) components from results (default: true). Set to false to include all items."),
|
|
92
|
+
}, async ({ maxRecords, excludeOotb }) => {
|
|
93
|
+
try {
|
|
94
|
+
const service = ctx.pp;
|
|
95
|
+
const result = await service.getWebhookRegistrations(maxRecords ?? 100, excludeOotb ?? true);
|
|
96
|
+
const ootbNote = result.summary.ootbExcluded ? `, ${result.summary.ootbExcluded} OOTB excluded` : '';
|
|
97
|
+
return {
|
|
98
|
+
content: [
|
|
99
|
+
{
|
|
100
|
+
type: "text",
|
|
101
|
+
text: `Webhook Registrations (${result.summary.total} found, ${result.summary.enabledCount} enabled${ootbNote}):\n\n${JSON.stringify(result, null, 2)}`,
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error("Error getting webhook registrations:", error);
|
|
108
|
+
return {
|
|
109
|
+
content: [
|
|
110
|
+
{
|
|
111
|
+
type: "text",
|
|
112
|
+
text: `Failed to get webhook registrations: ${error.message}`,
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
server.tool("analyze-flow-complexity", `Analyze Power Automate flow complexity and calculate risk scores.
|
|
119
|
+
|
|
120
|
+
Now includes URL extraction and hardcoded secret detection per flow.
|
|
121
|
+
|
|
122
|
+
Complexity scoring factors:
|
|
123
|
+
- Action count (base complexity)
|
|
124
|
+
- Unique connectors (integration surface, +2 each)
|
|
125
|
+
- HTTP/REST connectors (external dependency, +5 each)
|
|
126
|
+
- Premium connectors (licensing concern, +3 each)
|
|
127
|
+
- Conditions/switches (+2 each)
|
|
128
|
+
- Loops (+3 each)
|
|
129
|
+
- Parallel branches (+3 each)
|
|
130
|
+
- Error handling scopes (+1 each)
|
|
131
|
+
|
|
132
|
+
Risk levels: Low (0-20), Medium (21-50), High (51-100), Critical (>100)
|
|
133
|
+
|
|
134
|
+
Use flowId to analyze a single flow, or omit to analyze all flows.`, {
|
|
135
|
+
flowId: z.string().optional().describe("Specific flow ID to analyze (omit for all flows)"),
|
|
136
|
+
maxFlows: z.number().optional().describe("Maximum flows to analyze when flowId not specified (default: 0 = unlimited)"),
|
|
137
|
+
outputFormat: z.enum(["summary", "full"]).optional().describe(descWithExamples("Output format", OUTPUT_FORMAT_EXAMPLES)),
|
|
138
|
+
excludeOotb: z.boolean().optional().describe("Exclude Microsoft out-of-the-box (OOTB/managed) flows from analysis (default: true). Set to false to include all flows."),
|
|
139
|
+
}, async ({ flowId, maxFlows, outputFormat, excludeOotb }) => {
|
|
140
|
+
try {
|
|
141
|
+
const service = ctx.pp;
|
|
142
|
+
const result = await service.analyzeFlowComplexity(flowId, maxFlows ?? 0, excludeOotb ?? true);
|
|
143
|
+
const lines = [];
|
|
144
|
+
const ootbNote = result.summary.ootbExcluded ? `, ${result.summary.ootbExcluded} OOTB excluded` : '';
|
|
145
|
+
lines.push(`# Flow Complexity Analysis (${result.summary.total} flows${ootbNote})`);
|
|
146
|
+
lines.push('');
|
|
147
|
+
lines.push(`- Average Score: ${result.summary.averageComplexity}`);
|
|
148
|
+
lines.push(`- By Risk: Low=${result.summary.byRiskLevel.Low}, Medium=${result.summary.byRiskLevel.Medium}, High=${result.summary.byRiskLevel.High}, Critical=${result.summary.byRiskLevel.Critical}`);
|
|
149
|
+
lines.push(`- URLs Found: ${result.summary.totalUrlsFound ?? 0}`);
|
|
150
|
+
lines.push(`- Secret Warnings: ${result.summary.totalSecretWarnings ?? 0} in ${result.summary.flowsWithSecretWarnings ?? 0} flows`);
|
|
151
|
+
if (result.summary.uniqueEnvironmentVariables && result.summary.uniqueEnvironmentVariables.length > 0) {
|
|
152
|
+
lines.push(`- Environment Variables Referenced: ${result.summary.uniqueEnvironmentVariables.join(', ')}`);
|
|
153
|
+
}
|
|
154
|
+
lines.push('');
|
|
155
|
+
if (result.summary.highRiskFlows.length > 0) {
|
|
156
|
+
lines.push('## High/Critical Risk Flows');
|
|
157
|
+
for (const name of result.summary.highRiskFlows) {
|
|
158
|
+
const flow = result.flows.find(f => f.name === name);
|
|
159
|
+
if (flow) {
|
|
160
|
+
lines.push(`- **${name}** - Score: ${flow.complexity.score} (${flow.complexity.riskLevel})`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
lines.push('');
|
|
164
|
+
}
|
|
165
|
+
const flowsWithSecrets = result.flows.filter(f => f.secretWarnings && f.secretWarnings.length > 0);
|
|
166
|
+
if (flowsWithSecrets.length > 0) {
|
|
167
|
+
lines.push('## Security Warnings');
|
|
168
|
+
lines.push('');
|
|
169
|
+
lines.push('| Flow | Action | Field | Warning |');
|
|
170
|
+
lines.push('|------|--------|-------|---------|');
|
|
171
|
+
for (const flow of flowsWithSecrets) {
|
|
172
|
+
for (const w of flow.secretWarnings) {
|
|
173
|
+
lines.push(`| ${flow.name} | ${w.actionName} | ${w.fieldPath} | ${w.message} |`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
lines.push('');
|
|
177
|
+
}
|
|
178
|
+
if (outputFormat !== 'summary') {
|
|
179
|
+
lines.push('## Full Details');
|
|
180
|
+
lines.push('');
|
|
181
|
+
lines.push('```json');
|
|
182
|
+
lines.push(JSON.stringify(result, null, 2));
|
|
183
|
+
lines.push('```');
|
|
184
|
+
}
|
|
185
|
+
return { content: [{ type: "text", text: lines.join('\n') }] };
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
console.error("Error analyzing flow complexity:", error);
|
|
189
|
+
return {
|
|
190
|
+
content: [
|
|
191
|
+
{
|
|
192
|
+
type: "text",
|
|
193
|
+
text: `Failed to analyze flow complexity: ${error.message}`,
|
|
194
|
+
},
|
|
195
|
+
],
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
server.tool("gen-integration-audit", `Generate a comprehensive integration audit report for the PowerPlatform environment.
|
|
200
|
+
|
|
201
|
+
This top-down report aggregates all integration touchpoints:
|
|
202
|
+
|
|
203
|
+
OUTBOUND: Service endpoints, flows with HTTP/external calls, plugins with external access
|
|
204
|
+
INBOUND: Webhook registrations, flows with external triggers
|
|
205
|
+
COMPLEXITY: Flow complexity scores, risk levels, URL extraction, secret detection
|
|
206
|
+
ENVIRONMENT: Environment variable inventory with URL validation
|
|
207
|
+
PLUGINS: Plugin assembly inventory
|
|
208
|
+
|
|
209
|
+
Includes URL validation (flag endpoints/variables not matching required patterns),
|
|
210
|
+
hardcoded secret detection in flows, and environment variable analysis.
|
|
211
|
+
|
|
212
|
+
Returns a pre-formatted Markdown report. Use outputFormat="summary" for a compact view.`, {
|
|
213
|
+
maxFlows: z.number().optional().describe("Maximum flows to analyze (default: 0 = unlimited)"),
|
|
214
|
+
maxRecords: z.number().optional().describe("Maximum records to return for service endpoints, webhooks, and plugin assemblies (default: 100). Increase to get all items in large environments."),
|
|
215
|
+
requiredUrlStrings: z.array(z.string()).optional().describe("URL patterns to validate against. Endpoints and env vars not matching are flagged.\n\nExamples:\n - `[\"mycompany.com\"]`\n - `[\"prod.api.com\", \"staging.api.com\"]`"),
|
|
216
|
+
outputFormat: z.enum(["summary", "full"]).optional().describe(descWithExamples("Output format", OUTPUT_FORMAT_EXAMPLES)),
|
|
217
|
+
excludeOotb: z.boolean().optional().describe("Exclude Microsoft out-of-the-box (OOTB) components from results (default: true). Set to false to include all items."),
|
|
218
|
+
}, async ({ maxFlows, maxRecords, requiredUrlStrings, outputFormat, excludeOotb }) => {
|
|
219
|
+
try {
|
|
220
|
+
const service = ctx.pp;
|
|
221
|
+
const result = await service.generateIntegrationAuditReport(maxFlows ?? 0, requiredUrlStrings, outputFormat, excludeOotb ?? true, maxRecords ?? 100);
|
|
222
|
+
return {
|
|
223
|
+
content: [
|
|
224
|
+
{
|
|
225
|
+
type: "text",
|
|
226
|
+
text: result.markdownReport,
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
type: "text",
|
|
230
|
+
text: `\n\n---\n\n**Full JSON Data:**\n\n${JSON.stringify({
|
|
231
|
+
summary: result.summary,
|
|
232
|
+
riskAssessment: result.riskAssessment,
|
|
233
|
+
outbound: {
|
|
234
|
+
serviceEndpointCount: result.outbound.serviceEndpoints.length,
|
|
235
|
+
httpFlowCount: result.outbound.httpFlows.length,
|
|
236
|
+
externalPluginCount: result.outbound.externalPlugins.length,
|
|
237
|
+
},
|
|
238
|
+
inbound: {
|
|
239
|
+
webhookCount: result.inbound.webhooks.length,
|
|
240
|
+
externalTriggerFlowCount: result.inbound.externalTriggerFlows.length,
|
|
241
|
+
},
|
|
242
|
+
complexity: result.complexity.summary,
|
|
243
|
+
}, null, 2)}`,
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
console.error("Error generating integration audit report:", error);
|
|
250
|
+
return {
|
|
251
|
+
content: [
|
|
252
|
+
{
|
|
253
|
+
type: "text",
|
|
254
|
+
text: `Failed to generate integration audit report: ${error.message}`,
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
server.tool("get-env-variables", `Get all environment variable definitions from the PowerPlatform environment.
|
|
261
|
+
|
|
262
|
+
Environment variables store configuration values (URLs, connection strings, feature flags)
|
|
263
|
+
that can be referenced by flows and other components. Sensitive variables are masked.
|
|
264
|
+
|
|
265
|
+
Optionally validate URL-type variables against required patterns to flag diverging values
|
|
266
|
+
(e.g. variables pointing to wrong environments).
|
|
267
|
+
|
|
268
|
+
Returns:
|
|
269
|
+
- Schema name, display name, type (String/Number/Boolean/JSON/Secret)
|
|
270
|
+
- Current value, default value, and effective value
|
|
271
|
+
- Managed status and sensitivity flag
|
|
272
|
+
- Diverging variables (when requiredUrlStrings provided)`, {
|
|
273
|
+
maxRecords: z.number().optional().describe("Maximum variables to return (default: 500)"),
|
|
274
|
+
requiredUrlStrings: z.array(z.string()).optional().describe("URL patterns to validate against. URL-type variables not matching any pattern are flagged.\n\nExamples:\n - `[\"mycompany.com\"]`\n - `[\"prod.api.com\", \"staging.api.com\"]`"),
|
|
275
|
+
outputFormat: z.enum(["summary", "full"]).optional().describe(descWithExamples("Output format", OUTPUT_FORMAT_EXAMPLES)),
|
|
276
|
+
excludeOotb: z.boolean().optional().describe("Exclude Microsoft out-of-the-box (OOTB) components from results (default: true). Set to false to include all items."),
|
|
277
|
+
}, async ({ maxRecords, requiredUrlStrings, outputFormat, excludeOotb }) => {
|
|
278
|
+
try {
|
|
279
|
+
const service = ctx.pp;
|
|
280
|
+
const result = await service.getEnvironmentVariables(maxRecords ?? 500, requiredUrlStrings, excludeOotb ?? true);
|
|
281
|
+
const ootbNote = result.summary.ootbExcluded ? `, ${result.summary.ootbExcluded} OOTB excluded` : '';
|
|
282
|
+
const lines = [];
|
|
283
|
+
lines.push(`# Environment Variables (${result.summary.total} found${ootbNote})`);
|
|
284
|
+
lines.push('');
|
|
285
|
+
lines.push(`Types: ${Object.entries(result.summary.byType).map(([k, v]) => `${k}=${v}`).join(', ')}`);
|
|
286
|
+
lines.push('');
|
|
287
|
+
if (result.divergingVariables.length > 0) {
|
|
288
|
+
lines.push('## Diverging Variables');
|
|
289
|
+
lines.push('');
|
|
290
|
+
lines.push('| Schema Name | Display Name | Value | Reason |');
|
|
291
|
+
lines.push('|-------------|-------------|-------|--------|');
|
|
292
|
+
for (const d of result.divergingVariables) {
|
|
293
|
+
const val = d.variable.isSensitive ? '***' : (d.variable.effectiveValue ?? '(none)');
|
|
294
|
+
lines.push(`| ${d.variable.schemaName} | ${d.variable.displayName} | ${val} | ${d.reason} |`);
|
|
295
|
+
}
|
|
296
|
+
lines.push('');
|
|
297
|
+
}
|
|
298
|
+
if (outputFormat !== 'summary') {
|
|
299
|
+
lines.push('## All Variables');
|
|
300
|
+
lines.push('');
|
|
301
|
+
lines.push('| Schema Name | Display Name | Type | Effective Value | Managed |');
|
|
302
|
+
lines.push('|-------------|-------------|------|-----------------|---------|');
|
|
303
|
+
for (const v of result.allVariables) {
|
|
304
|
+
const val = v.isSensitive ? (v.maskedValue ?? '***') : (v.effectiveValue ?? v.defaultValue ?? '(none)');
|
|
305
|
+
const managed = v.isManaged ? 'Yes' : 'No';
|
|
306
|
+
lines.push(`| ${v.schemaName} | ${v.displayName} | ${v.type} | ${val} | ${managed} |`);
|
|
307
|
+
}
|
|
308
|
+
lines.push('');
|
|
309
|
+
}
|
|
310
|
+
return { content: [{ type: "text", text: lines.join('\n') }] };
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
console.error("Error getting environment variables:", error);
|
|
314
|
+
return {
|
|
315
|
+
content: [
|
|
316
|
+
{
|
|
317
|
+
type: "text",
|
|
318
|
+
text: `Failed to get environment variables: ${error.message}`,
|
|
319
|
+
},
|
|
320
|
+
],
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=integration-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-tools.js","sourceRoot":"","sources":["../../src/tools/integration-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-tools.d.ts","sourceRoot":"","sources":["../../src/tools/metadata-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAwM5E"}
|