@mcp-consultant-tools/powerplatform 32.0.0 → 33.0.0

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 (110) hide show
  1. package/build/cli/commands/metadata-commands.js +2 -2
  2. package/build/cli/commands/metadata-commands.js.map +1 -1
  3. package/build/cli.js +0 -0
  4. package/build/http-server.js +0 -0
  5. package/build/index.js +0 -0
  6. package/package.json +3 -3
  7. package/build/PowerPlatformService.d.ts +0 -201
  8. package/build/PowerPlatformService.js +0 -305
  9. package/build/PowerPlatformService.js.map +0 -1
  10. package/build/auth/index.d.ts +0 -64
  11. package/build/auth/index.d.ts.map +0 -1
  12. package/build/auth/index.js +0 -39
  13. package/build/auth/index.js.map +0 -1
  14. package/build/auth/interactive-auth.d.ts +0 -60
  15. package/build/auth/interactive-auth.d.ts.map +0 -1
  16. package/build/auth/interactive-auth.js +0 -429
  17. package/build/auth/interactive-auth.js.map +0 -1
  18. package/build/auth/service-principal-auth.d.ts +0 -26
  19. package/build/auth/service-principal-auth.d.ts.map +0 -1
  20. package/build/auth/service-principal-auth.js +0 -60
  21. package/build/auth/service-principal-auth.js.map +0 -1
  22. package/build/auth/token-cache.d.ts +0 -40
  23. package/build/auth/token-cache.d.ts.map +0 -1
  24. package/build/auth/token-cache.js +0 -108
  25. package/build/auth/token-cache.js.map +0 -1
  26. package/build/cli/commands/app-commands.d.ts +0 -7
  27. package/build/cli/commands/field-security-commands.d.ts +0 -8
  28. package/build/cli/commands/flow-commands.d.ts +0 -7
  29. package/build/cli/commands/form-commands.d.ts +0 -7
  30. package/build/cli/commands/index.d.ts +0 -16
  31. package/build/cli/commands/index.js +0 -33
  32. package/build/cli/commands/index.js.map +0 -1
  33. package/build/cli/commands/integration-commands.d.ts +0 -7
  34. package/build/cli/commands/metadata-commands.d.ts +0 -7
  35. package/build/cli/commands/plugin-commands.d.ts +0 -7
  36. package/build/cli/commands/security-commands.d.ts +0 -7
  37. package/build/cli/commands/solution-commands.d.ts +0 -7
  38. package/build/cli/output.d.ts +0 -11
  39. package/build/cli.d.ts +0 -9
  40. package/build/context-factory.d.ts +0 -11
  41. package/build/context-factory.js +0 -39
  42. package/build/context-factory.js.map +0 -1
  43. package/build/http-server.d.ts +0 -3
  44. package/build/index.d.ts +0 -18
  45. package/build/prompts/analysis-prompts.d.ts +0 -3
  46. package/build/prompts/analysis-prompts.js +0 -286
  47. package/build/prompts/analysis-prompts.js.map +0 -1
  48. package/build/prompts/entity-prompts.d.ts +0 -3
  49. package/build/prompts/entity-prompts.js +0 -304
  50. package/build/prompts/entity-prompts.js.map +0 -1
  51. package/build/prompts/index.d.ts +0 -8
  52. package/build/prompts/index.js +0 -11
  53. package/build/prompts/index.js.map +0 -1
  54. package/build/services/index.d.ts +0 -5
  55. package/build/services/index.js +0 -5
  56. package/build/services/index.js.map +0 -1
  57. package/build/tool-examples.d.ts +0 -48
  58. package/build/tools/app-tools.d.ts +0 -3
  59. package/build/tools/app-tools.js +0 -127
  60. package/build/tools/app-tools.js.map +0 -1
  61. package/build/tools/field-security-tools.d.ts +0 -3
  62. package/build/tools/field-security-tools.js +0 -84
  63. package/build/tools/field-security-tools.js.map +0 -1
  64. package/build/tools/flow-tools.d.ts +0 -3
  65. package/build/tools/flow-tools.js +0 -374
  66. package/build/tools/flow-tools.js.map +0 -1
  67. package/build/tools/form-view-tools.d.ts +0 -3
  68. package/build/tools/form-view-tools.js +0 -162
  69. package/build/tools/form-view-tools.js.map +0 -1
  70. package/build/tools/index.d.ts +0 -14
  71. package/build/tools/index.js +0 -31
  72. package/build/tools/index.js.map +0 -1
  73. package/build/tools/integration-tools.d.ts +0 -3
  74. package/build/tools/integration-tools.js +0 -325
  75. package/build/tools/integration-tools.js.map +0 -1
  76. package/build/tools/metadata-tools.d.ts +0 -3
  77. package/build/tools/metadata-tools.js +0 -166
  78. package/build/tools/metadata-tools.js.map +0 -1
  79. package/build/tools/plugin-tools.d.ts +0 -3
  80. package/build/tools/plugin-tools.js +0 -138
  81. package/build/tools/plugin-tools.js.map +0 -1
  82. package/build/tools/security-tools.d.ts +0 -3
  83. package/build/tools/security-tools.js +0 -188
  84. package/build/tools/security-tools.js.map +0 -1
  85. package/build/tools/solution-tools.d.ts +0 -3
  86. package/build/tools/solution-tools.js +0 -318
  87. package/build/tools/solution-tools.js.map +0 -1
  88. package/build/types.d.ts +0 -9
  89. package/build/types.js +0 -2
  90. package/build/types.js.map +0 -1
  91. package/build/utils/best-practices-formatters.d.ts +0 -26
  92. package/build/utils/best-practices-formatters.d.ts.map +0 -1
  93. package/build/utils/best-practices-formatters.js +0 -238
  94. package/build/utils/best-practices-formatters.js.map +0 -1
  95. package/build/utils/bestPractices.d.ts +0 -152
  96. package/build/utils/bestPractices.d.ts.map +0 -1
  97. package/build/utils/bestPractices.js +0 -338
  98. package/build/utils/bestPractices.js.map +0 -1
  99. package/build/utils/iconManager.d.ts +0 -84
  100. package/build/utils/iconManager.d.ts.map +0 -1
  101. package/build/utils/iconManager.js +0 -342
  102. package/build/utils/iconManager.js.map +0 -1
  103. package/build/utils/prompt-templates.d.ts +0 -9
  104. package/build/utils/prompt-templates.d.ts.map +0 -1
  105. package/build/utils/prompt-templates.js +0 -31
  106. package/build/utils/prompt-templates.js.map +0 -1
  107. package/build/utils/rate-limiter.d.ts +0 -108
  108. package/build/utils/rate-limiter.d.ts.map +0 -1
  109. package/build/utils/rate-limiter.js +0 -241
  110. package/build/utils/rate-limiter.js.map +0 -1
@@ -1,286 +0,0 @@
1
- /**
2
- * Analysis Prompts - 6 prompts for reports and analysis
3
- */
4
- import { z } from 'zod';
5
- import { formatBestPracticesReport } from '@mcp-consultant-tools/powerplatform-core';
6
- function makePromptResult(text) {
7
- return {
8
- messages: [
9
- {
10
- role: "assistant",
11
- content: { type: "text", text },
12
- },
13
- ],
14
- };
15
- }
16
- function makePromptError(message) {
17
- return makePromptResult(`Error: ${message}`);
18
- }
19
- export function registerAnalysisPrompts(server, ctx) {
20
- server.prompt("flows-report", "Generate a comprehensive report of all Power Automate flows in the environment", {
21
- activeOnly: z.string().optional().describe("Set to 'true' to only include activated flows (default: false)"),
22
- }, async (args) => {
23
- try {
24
- const service = ctx.pp;
25
- const result = await service.getFlows({
26
- activeOnly: args.activeOnly === 'true',
27
- maxRecords: 100,
28
- excludeCustomerInsights: false,
29
- excludeSystem: false,
30
- excludeCopilotSales: false,
31
- });
32
- let report = `# Power Automate Flows Report\n\n`;
33
- report += `**Total Flows**: ${result.totalCount}\n\n`;
34
- if (result.flows.length === 0) {
35
- report += `No flows found in this environment.\n`;
36
- }
37
- else {
38
- const activeFlows = result.flows.filter((f) => f.state === 'Activated');
39
- const draftFlows = result.flows.filter((f) => f.state === 'Draft');
40
- const suspendedFlows = result.flows.filter((f) => f.state === 'Suspended');
41
- if (activeFlows.length > 0) {
42
- report += `## Active Flows (${activeFlows.length})\n\n`;
43
- activeFlows.forEach((flow) => {
44
- report += `### ${flow.name}\n`;
45
- report += `- **ID**: ${flow.workflowid}\n`;
46
- report += `- **Description**: ${flow.description || 'No description'}\n`;
47
- report += `- **Primary Entity**: ${flow.primaryEntity || 'None'}\n`;
48
- report += `- **Owner**: ${flow.owner}\n`;
49
- report += `- **Modified**: ${flow.modifiedOn} by ${flow.modifiedBy}\n`;
50
- report += `- **Managed**: ${flow.isManaged ? 'Yes' : 'No'}\n\n`;
51
- });
52
- }
53
- if (draftFlows.length > 0) {
54
- report += `## Draft Flows (${draftFlows.length})\n\n`;
55
- draftFlows.forEach((flow) => {
56
- report += `- **${flow.name}** (${flow.workflowid})\n`;
57
- report += ` - Owner: ${flow.owner}, Modified: ${flow.modifiedOn}\n`;
58
- });
59
- report += `\n`;
60
- }
61
- if (suspendedFlows.length > 0) {
62
- report += `## Suspended Flows (${suspendedFlows.length})\n\n`;
63
- suspendedFlows.forEach((flow) => {
64
- report += `- **${flow.name}** (${flow.workflowid})\n`;
65
- report += ` - Owner: ${flow.owner}, Modified: ${flow.modifiedOn}\n`;
66
- });
67
- report += `\n`;
68
- }
69
- }
70
- return makePromptResult(report);
71
- }
72
- catch (error) {
73
- console.error(`Error generating flows report:`, error);
74
- return makePromptError(error.message);
75
- }
76
- });
77
- server.prompt("workflows-report", "Generate a comprehensive report of all classic Dynamics workflows in the environment", {
78
- activeOnly: z.string().optional().describe("Set to 'true' to only include activated workflows (default: false)"),
79
- }, async (args) => {
80
- try {
81
- const service = ctx.pp;
82
- const result = await service.getWorkflows(args.activeOnly === 'true', 100);
83
- let report = `# Classic Dynamics Workflows Report\n\n`;
84
- report += `**Total Workflows**: ${result.totalCount}\n\n`;
85
- if (result.workflows.length === 0) {
86
- report += `No classic workflows found in this environment.\n`;
87
- }
88
- else {
89
- const activeWorkflows = result.workflows.filter((w) => w.state === 'Activated');
90
- const draftWorkflows = result.workflows.filter((w) => w.state === 'Draft');
91
- const suspendedWorkflows = result.workflows.filter((w) => w.state === 'Suspended');
92
- if (activeWorkflows.length > 0) {
93
- report += `## Active Workflows (${activeWorkflows.length})\n\n`;
94
- activeWorkflows.forEach((workflow) => {
95
- report += `### ${workflow.name}\n`;
96
- report += `- **ID**: ${workflow.workflowid}\n`;
97
- report += `- **Description**: ${workflow.description || 'No description'}\n`;
98
- report += `- **Primary Entity**: ${workflow.primaryEntity || 'None'}\n`;
99
- report += `- **Mode**: ${workflow.mode}\n`;
100
- report += `- **Triggers**:\n`;
101
- if (workflow.triggerOnCreate)
102
- report += ` - Create\n`;
103
- if (workflow.triggerOnDelete)
104
- report += ` - Delete\n`;
105
- if (workflow.isOnDemand)
106
- report += ` - On Demand\n`;
107
- report += `- **Owner**: ${workflow.owner}\n`;
108
- report += `- **Modified**: ${workflow.modifiedOn} by ${workflow.modifiedBy}\n`;
109
- report += `- **Managed**: ${workflow.isManaged ? 'Yes' : 'No'}\n\n`;
110
- });
111
- }
112
- if (draftWorkflows.length > 0) {
113
- report += `## Draft Workflows (${draftWorkflows.length})\n\n`;
114
- draftWorkflows.forEach((workflow) => {
115
- report += `- **${workflow.name}** (${workflow.workflowid})\n`;
116
- report += ` - Entity: ${workflow.primaryEntity}, Owner: ${workflow.owner}\n`;
117
- });
118
- report += `\n`;
119
- }
120
- if (suspendedWorkflows.length > 0) {
121
- report += `## Suspended Workflows (${suspendedWorkflows.length})\n\n`;
122
- suspendedWorkflows.forEach((workflow) => {
123
- report += `- **${workflow.name}** (${workflow.workflowid})\n`;
124
- report += ` - Entity: ${workflow.primaryEntity}, Owner: ${workflow.owner}\n`;
125
- });
126
- report += `\n`;
127
- }
128
- }
129
- return makePromptResult(report);
130
- }
131
- catch (error) {
132
- console.error(`Error generating workflows report:`, error);
133
- return makePromptError(error.message);
134
- }
135
- });
136
- server.prompt("business-rules-report", "Generate a comprehensive report of all business rules in the environment (read-only for troubleshooting)", {
137
- activeOnly: z.string().optional().describe("Set to 'true' to only include activated business rules (default: false)"),
138
- }, async (args) => {
139
- try {
140
- const service = ctx.pp;
141
- const result = await service.getBusinessRules(args.activeOnly === 'true', 100);
142
- let report = `# Business Rules Report\n\n`;
143
- report += `**Total Business Rules**: ${result.totalCount}\n\n`;
144
- if (result.businessRules.length === 0) {
145
- report += `No business rules found in this environment.\n`;
146
- }
147
- else {
148
- const activeRules = result.businessRules.filter((r) => r.state === 'Activated');
149
- const draftRules = result.businessRules.filter((r) => r.state === 'Draft');
150
- const suspendedRules = result.businessRules.filter((r) => r.state === 'Suspended');
151
- if (activeRules.length > 0) {
152
- report += `## Active Business Rules (${activeRules.length})\n\n`;
153
- activeRules.forEach((rule) => {
154
- report += `### ${rule.name}\n`;
155
- report += `- **ID**: ${rule.workflowid}\n`;
156
- report += `- **Description**: ${rule.description || 'No description'}\n`;
157
- report += `- **Primary Entity**: ${rule.primaryEntity || 'None'}\n`;
158
- report += `- **Owner**: ${rule.owner}\n`;
159
- report += `- **Modified**: ${rule.modifiedOn} by ${rule.modifiedBy}\n`;
160
- report += `- **Managed**: ${rule.isManaged ? 'Yes' : 'No'}\n\n`;
161
- });
162
- }
163
- if (draftRules.length > 0) {
164
- report += `## Draft Business Rules (${draftRules.length})\n\n`;
165
- draftRules.forEach((rule) => {
166
- report += `- **${rule.name}** (${rule.workflowid})\n`;
167
- report += ` - Entity: ${rule.primaryEntity}, Owner: ${rule.owner}\n`;
168
- });
169
- report += `\n`;
170
- }
171
- if (suspendedRules.length > 0) {
172
- report += `## Suspended Business Rules (${suspendedRules.length})\n\n`;
173
- suspendedRules.forEach((rule) => {
174
- report += `- **${rule.name}** (${rule.workflowid})\n`;
175
- report += ` - Entity: ${rule.primaryEntity}, Owner: ${rule.owner}\n`;
176
- });
177
- report += `\n`;
178
- }
179
- }
180
- report += `\n---\n\n`;
181
- report += `*Note: Business rules are read-only in this MCP server. Use the PowerPlatform UI to create or modify business rules.*\n`;
182
- return makePromptResult(report);
183
- }
184
- catch (error) {
185
- console.error(`Error generating business rules report:`, error);
186
- return makePromptError(error.message);
187
- }
188
- });
189
- server.prompt("app-overview", "Generate a comprehensive overview report for a model-driven app including components and configuration", {
190
- appId: z.string().describe("The GUID of the app (appmoduleid)"),
191
- }, async (args) => {
192
- try {
193
- const service = ctx.pp;
194
- const app = await service.getApp(args.appId);
195
- const components = await service.getAppComponents(args.appId);
196
- const sitemap = await service.getAppSitemap(args.appId);
197
- let report = `# Model-Driven App Overview: ${app.name}\n\n`;
198
- report += `## Basic Information\n`;
199
- report += `- **App ID**: ${app.appmoduleid}\n`;
200
- report += `- **Unique Name**: ${app.uniquename}\n`;
201
- report += `- **Description**: ${app.description || 'No description'}\n`;
202
- report += `- **State**: ${app.state}\n`;
203
- report += `- **Navigation Type**: ${app.navigationtype}\n`;
204
- report += `- **Featured**: ${app.isfeatured ? 'Yes' : 'No'}\n`;
205
- report += `- **Default App**: ${app.isdefault ? 'Yes' : 'No'}\n`;
206
- report += `- **Published On**: ${app.publishedon || 'Not published'}\n`;
207
- report += `- **Created**: ${app.createdon} by ${app.createdBy || 'Unknown'}\n`;
208
- report += `- **Modified**: ${app.modifiedon} by ${app.modifiedBy || 'Unknown'}\n\n`;
209
- if (app.publisher) {
210
- report += `## Publisher\n`;
211
- report += `- **Name**: ${app.publisher.friendlyname}\n`;
212
- report += `- **Unique Name**: ${app.publisher.uniquename}\n`;
213
- report += `- **Prefix**: ${app.publisher.customizationprefix}\n\n`;
214
- }
215
- report += `## Components Summary\n`;
216
- report += `**Total Components**: ${components.totalCount}\n\n`;
217
- if (components.totalCount > 0) {
218
- Object.keys(components.groupedByType).forEach((typeName) => {
219
- const typeComponents = components.groupedByType[typeName];
220
- report += `- **${typeName}**: ${typeComponents.length}\n`;
221
- });
222
- report += `\n`;
223
- report += `## Detailed Components\n\n`;
224
- Object.keys(components.groupedByType).forEach((typeName) => {
225
- const typeComponents = components.groupedByType[typeName];
226
- report += `### ${typeName} (${typeComponents.length})\n`;
227
- typeComponents.forEach((comp, idx) => {
228
- report += `${idx + 1}. ID: ${comp.objectid}\n`;
229
- });
230
- report += `\n`;
231
- });
232
- }
233
- if (sitemap.hasSitemap) {
234
- report += `## Navigation (Sitemap)\n`;
235
- report += `- **Sitemap Name**: ${sitemap.sitemapname}\n`;
236
- report += `- **App Aware**: ${sitemap.isappaware ? 'Yes' : 'No'}\n`;
237
- report += `- **Collapsible Groups**: ${sitemap.enablecollapsiblegroups ? 'Yes' : 'No'}\n`;
238
- report += `- **Show Home**: ${sitemap.showhome ? 'Yes' : 'No'}\n`;
239
- report += `- **Show Pinned**: ${sitemap.showpinned ? 'Yes' : 'No'}\n`;
240
- report += `- **Show Recents**: ${sitemap.showrecents ? 'Yes' : 'No'}\n`;
241
- report += `- **Managed**: ${sitemap.ismanaged ? 'Yes' : 'No'}\n\n`;
242
- }
243
- else {
244
- report += `## Navigation (Sitemap)\n`;
245
- report += `⚠ No sitemap configured for this app\n\n`;
246
- }
247
- report += `## Available Actions\n`;
248
- report += `- Add entities: Use \`add-entities-to-app\` tool\n`;
249
- report += `- Validate app: Use \`validate-app\` tool\n`;
250
- report += `- Publish app: Use \`publish-app\` tool\n`;
251
- report += `- View sitemap XML: Use \`get-app-sitemap\` tool\n\n`;
252
- report += `---\n\n`;
253
- report += `*Generated by MCP Consultant Tools*\n`;
254
- return makePromptResult(report);
255
- }
256
- catch (error) {
257
- console.error(`Error generating app overview:`, error);
258
- return makePromptError(error.message);
259
- }
260
- });
261
- server.prompt("dataverse-best-practices-report", "Generate formatted markdown report from Dataverse best practice validation results. Groups violations by severity, provides actionable recommendations, and highlights compliant entities.", {
262
- validationResult: z.string().describe("JSON result from validate-dataverse tool")
263
- }, async (args) => {
264
- try {
265
- const result = JSON.parse(args.validationResult);
266
- const report = formatBestPracticesReport(result);
267
- return makePromptResult(report);
268
- }
269
- catch (error) {
270
- console.error("Error generating best practices report:", error);
271
- return makePromptError(`${error.message}\n\nPlease ensure the validationResult is valid JSON from the validate-dataverse tool.`);
272
- }
273
- });
274
- server.prompt("integration-audit-report", "Generate a comprehensive integration audit report with drill-down capability", {}, async () => {
275
- try {
276
- const service = ctx.pp;
277
- const result = await service.generateIntegrationAuditReport(50);
278
- return makePromptResult(result.markdownReport);
279
- }
280
- catch (error) {
281
- console.error("Error generating integration audit report:", error);
282
- return makePromptError(error.message);
283
- }
284
- });
285
- }
286
- //# sourceMappingURL=analysis-prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analysis-prompts.js","sourceRoot":"","sources":["../../src/prompts/analysis-prompts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ServiceContext } from '../types.js';
2
- export declare function registerEntityPrompts(server: any, ctx: ServiceContext): void;
3
- //# sourceMappingURL=entity-prompts.d.ts.map
@@ -1,304 +0,0 @@
1
- /**
2
- * Entity Prompts - 6 prompts for entity analysis and plugin reports
3
- */
4
- import { z } from 'zod';
5
- import { ENTITY_OVERVIEW, ATTRIBUTE_DETAILS, QUERY_TEMPLATE, RELATIONSHIP_MAP, } from '@mcp-consultant-tools/powerplatform-core';
6
- function makePromptResult(text) {
7
- return {
8
- messages: [
9
- {
10
- role: "assistant",
11
- content: { type: "text", text },
12
- },
13
- ],
14
- };
15
- }
16
- function makePromptError(message) {
17
- return makePromptResult(`Error: ${message}`);
18
- }
19
- export function registerEntityPrompts(server, ctx) {
20
- server.prompt("entity-overview", "Get an overview of a Power Platform entity", {
21
- entityName: z.string().describe("The logical name of the entity")
22
- }, async (args) => {
23
- try {
24
- const service = ctx.pp;
25
- const entityName = args.entityName;
26
- const [rawMetadata, attributes] = await Promise.all([
27
- service.getEntityMetadata(entityName),
28
- service.getEntityAttributes(entityName)
29
- ]);
30
- const metadata = rawMetadata;
31
- const entityDetails = `- Display Name: ${metadata.DisplayName?.UserLocalizedLabel?.Label || entityName}\n` +
32
- `- Schema Name: ${metadata.SchemaName}\n` +
33
- `- Description: ${metadata.Description?.UserLocalizedLabel?.Label || 'No description'}\n` +
34
- `- Primary Key: ${metadata.PrimaryIdAttribute}\n` +
35
- `- Primary Name: ${metadata.PrimaryNameAttribute}`;
36
- const keyAttributes = attributes.value
37
- .map((attr) => {
38
- const attrType = attr["@odata.type"] || attr.odata?.type || "Unknown type";
39
- return `- ${attr.LogicalName}: ${attrType}`;
40
- })
41
- .join('\n');
42
- const relationships = await service.getEntityRelationships(entityName);
43
- const oneToManyCount = relationships.oneToMany.value.length;
44
- const manyToManyCount = relationships.manyToMany.value.length;
45
- const relationshipsSummary = `- One-to-Many Relationships: ${oneToManyCount}\n` +
46
- `- Many-to-Many Relationships: ${manyToManyCount}`;
47
- let promptContent = ENTITY_OVERVIEW(entityName);
48
- promptContent = promptContent
49
- .replace('{{entity_details}}', entityDetails)
50
- .replace('{{key_attributes}}', keyAttributes)
51
- .replace('{{relationships}}', relationshipsSummary);
52
- return makePromptResult(promptContent);
53
- }
54
- catch (error) {
55
- console.error(`Error handling entity-overview prompt:`, error);
56
- return makePromptError(error.message);
57
- }
58
- });
59
- server.prompt("attribute-details", "Get detailed information about a specific entity attribute/field", {
60
- entityName: z.string().describe("The logical name of the entity"),
61
- attributeName: z.string().describe("The logical name of the attribute"),
62
- }, async (args) => {
63
- try {
64
- const service = ctx.pp;
65
- const { entityName, attributeName } = args;
66
- const attribute = await service.getEntityAttribute(entityName, attributeName);
67
- const attrDetails = `- Display Name: ${attribute.DisplayName?.UserLocalizedLabel?.Label || attributeName}\n` +
68
- `- Description: ${attribute.Description?.UserLocalizedLabel?.Label || 'No description'}\n` +
69
- `- Type: ${attribute.AttributeType}\n` +
70
- `- Format: ${attribute.Format || 'N/A'}\n` +
71
- `- Is Required: ${attribute.RequiredLevel?.Value || 'No'}\n` +
72
- `- Is Searchable: ${attribute.IsValidForAdvancedFind || false}`;
73
- let promptContent = ATTRIBUTE_DETAILS(entityName, attributeName);
74
- promptContent = promptContent
75
- .replace('{{attribute_details}}', attrDetails)
76
- .replace('{{data_type}}', attribute.AttributeType)
77
- .replace('{{required}}', attribute.RequiredLevel?.Value || 'No')
78
- .replace('{{max_length}}', attribute.MaxLength || 'N/A');
79
- return makePromptResult(promptContent);
80
- }
81
- catch (error) {
82
- console.error(`Error handling attribute-details prompt:`, error);
83
- return makePromptError(error.message);
84
- }
85
- });
86
- server.prompt("query-template", "Get a template for querying a Power Platform entity", {
87
- entityName: z.string().describe("The logical name of the entity"),
88
- }, async (args) => {
89
- try {
90
- const service = ctx.pp;
91
- const entityName = args.entityName;
92
- const metadata = await service.getEntityMetadata(entityName);
93
- const entityNamePlural = metadata.EntitySetName;
94
- const attributes = await service.getEntityAttributes(entityName);
95
- const selectFields = attributes.value
96
- .filter((attr) => attr.IsValidForRead === true && !attr.AttributeOf)
97
- .slice(0, 5)
98
- .map((attr) => attr.LogicalName)
99
- .join(',');
100
- let promptContent = QUERY_TEMPLATE(entityNamePlural);
101
- promptContent = promptContent
102
- .replace('{{selected_fields}}', selectFields)
103
- .replace('{{filter_conditions}}', `${metadata.PrimaryNameAttribute} eq 'Example'`)
104
- .replace('{{order_by}}', `${metadata.PrimaryNameAttribute} asc`)
105
- .replace('{{max_records}}', '50');
106
- return makePromptResult(promptContent);
107
- }
108
- catch (error) {
109
- console.error(`Error handling query-template prompt:`, error);
110
- return makePromptError(error.message);
111
- }
112
- });
113
- server.prompt("relationship-map", "Get a list of relationships for a Power Platform entity", {
114
- entityName: z.string().describe("The logical name of the entity"),
115
- }, async (args) => {
116
- try {
117
- const service = ctx.pp;
118
- const entityName = args.entityName;
119
- const relationships = await service.getEntityRelationships(entityName);
120
- const oneToManyPrimary = relationships.oneToMany.value
121
- .filter((rel) => rel.ReferencingEntity !== entityName)
122
- .map((rel) => `- ${rel.SchemaName}: ${entityName} (1) → ${rel.ReferencingEntity} (N)`)
123
- .join('\n');
124
- const oneToManyRelated = relationships.oneToMany.value
125
- .filter((rel) => rel.ReferencingEntity === entityName)
126
- .map((rel) => `- ${rel.SchemaName}: ${rel.ReferencedEntity} (1) → ${entityName} (N)`)
127
- .join('\n');
128
- const manyToMany = relationships.manyToMany.value
129
- .map((rel) => {
130
- const otherEntity = rel.Entity1LogicalName === entityName ? rel.Entity2LogicalName : rel.Entity1LogicalName;
131
- return `- ${rel.SchemaName}: ${entityName} (N) ↔ ${otherEntity} (N)`;
132
- })
133
- .join('\n');
134
- let promptContent = RELATIONSHIP_MAP(entityName);
135
- promptContent = promptContent
136
- .replace('{{one_to_many_primary}}', oneToManyPrimary || 'None found')
137
- .replace('{{one_to_many_related}}', oneToManyRelated || 'None found')
138
- .replace('{{many_to_many}}', manyToMany || 'None found');
139
- return makePromptResult(promptContent);
140
- }
141
- catch (error) {
142
- console.error(`Error handling relationship-map prompt:`, error);
143
- return makePromptError(error.message);
144
- }
145
- });
146
- server.prompt("plugin-deployment-report", "Generate a comprehensive deployment report for a plugin assembly", {
147
- assemblyName: z.string().describe("The name of the plugin assembly"),
148
- }, async (args) => {
149
- try {
150
- const service = ctx.pp;
151
- const result = await service.getPluginAssemblyComplete(args.assemblyName, false);
152
- const assembly = result.assembly;
153
- let report = `# Plugin Deployment Report: ${assembly.name}\n\n`;
154
- report += `## Assembly Information\n`;
155
- report += `- **Version**: ${assembly.version}\n`;
156
- report += `- **Isolation Mode**: ${assembly.isolationmode === 2 ? 'Sandbox' : 'None'}\n`;
157
- report += `- **Source**: ${assembly.sourcetype === 0 ? 'Database' : assembly.sourcetype === 1 ? 'Disk' : 'GAC'}\n`;
158
- report += `- **Last Modified**: ${assembly.modifiedon} by ${assembly.modifiedby?.fullname || 'Unknown'}\n`;
159
- report += `- **Managed**: ${assembly.ismanaged ? 'Yes' : 'No'}\n\n`;
160
- report += `## Plugin Types (${result.pluginTypes.length} total)\n`;
161
- result.pluginTypes.forEach((type, idx) => {
162
- report += `${idx + 1}. ${type.typename}\n`;
163
- });
164
- report += `\n`;
165
- report += `## Registered Steps (${result.steps.length} total)\n\n`;
166
- result.steps.forEach((step) => {
167
- const stageName = step.stage === 10 ? 'PreValidation' : step.stage === 20 ? 'PreOperation' : 'PostOperation';
168
- const modeName = step.mode === 0 ? 'Sync' : 'Async';
169
- const status = step.statuscode === 1 ? '✓ Enabled' : '✗ Disabled';
170
- report += `### ${step.sdkmessageid?.name || 'Unknown'} - ${step.sdkmessagefilterid?.primaryobjecttypecode || 'None'} (${stageName}, ${modeName}, Rank ${step.rank})\n`;
171
- report += `- **Plugin**: ${step.plugintypeid?.typename || 'Unknown'}\n`;
172
- report += `- **Status**: ${status}\n`;
173
- report += `- **Filtering Attributes**: ${step.filteringattributes || '(none - runs on all changes)'}\n`;
174
- report += `- **Deployment**: ${step.supporteddeployment === 0 ? 'Server Only' : step.supporteddeployment === 1 ? 'Offline Only' : 'Both'}\n`;
175
- if (step.images.length > 0) {
176
- report += `- **Images**:\n`;
177
- step.images.forEach((img) => {
178
- const imageType = img.imagetype === 0 ? 'PreImage' : img.imagetype === 1 ? 'PostImage' : 'Both';
179
- report += ` - ${img.name} (${imageType}) → Attributes: ${img.attributes || '(all)'}\n`;
180
- });
181
- }
182
- else {
183
- report += `- **Images**: None\n`;
184
- }
185
- report += `\n`;
186
- });
187
- report += `## Validation Results\n\n`;
188
- if (result.validation.hasDisabledSteps) {
189
- report += `⚠ Some steps are disabled\n`;
190
- }
191
- else {
192
- report += `✓ All steps are enabled\n`;
193
- }
194
- if (result.validation.stepsWithoutFilteringAttributes.length > 0) {
195
- report += `⚠ Warning: ${result.validation.stepsWithoutFilteringAttributes.length} Update/Delete steps without filtering attributes:\n`;
196
- result.validation.stepsWithoutFilteringAttributes.forEach((name) => {
197
- report += ` - ${name}\n`;
198
- });
199
- }
200
- else {
201
- report += `✓ All Update/Delete steps have filtering attributes\n`;
202
- }
203
- if (result.validation.stepsWithoutImages.length > 0) {
204
- report += `⚠ Warning: ${result.validation.stepsWithoutImages.length} Update/Delete steps without images:\n`;
205
- result.validation.stepsWithoutImages.forEach((name) => {
206
- report += ` - ${name}\n`;
207
- });
208
- }
209
- if (result.validation.potentialIssues.length > 0) {
210
- report += `\n### Potential Issues\n`;
211
- result.validation.potentialIssues.forEach((issue) => {
212
- report += `- ${issue}\n`;
213
- });
214
- }
215
- return makePromptResult(report);
216
- }
217
- catch (error) {
218
- console.error(`Error generating plugin deployment report:`, error);
219
- return makePromptError(error.message);
220
- }
221
- });
222
- server.prompt("entity-plugin-pipeline-report", "Generate a visual execution pipeline showing all plugins for an entity", {
223
- entityName: z.string().describe("The logical name of the entity"),
224
- messageFilter: z.string().optional().describe("Optional filter by message name"),
225
- }, async (args) => {
226
- try {
227
- const service = ctx.pp;
228
- const result = await service.getEntityPluginPipeline(args.entityName, args.messageFilter, false);
229
- let report = `# Plugin Pipeline: ${result.entity} Entity\n\n`;
230
- if (result.steps.length === 0) {
231
- report += `No plugins registered for this entity.\n`;
232
- }
233
- else {
234
- result.messages.forEach((msg) => {
235
- report += `## ${msg.messageName} Message\n\n`;
236
- if (msg.stages.preValidation.length > 0) {
237
- report += `### Stage 1: PreValidation (Synchronous)\n`;
238
- msg.stages.preValidation.forEach((step, idx) => {
239
- report += `${idx + 1}. **[Rank ${step.rank}]** ${step.pluginType}\n`;
240
- report += ` - Assembly: ${step.assemblyName} v${step.assemblyVersion}\n`;
241
- report += ` - Filtering: ${step.filteringAttributes.join(', ') || '(all columns)'}\n`;
242
- if (step.hasPreImage || step.hasPostImage) {
243
- const images = [];
244
- if (step.hasPreImage)
245
- images.push('PreImage');
246
- if (step.hasPostImage)
247
- images.push('PostImage');
248
- report += ` - Images: ${images.join(', ')}\n`;
249
- }
250
- report += `\n`;
251
- });
252
- }
253
- if (msg.stages.preOperation.length > 0) {
254
- report += `### Stage 2: PreOperation (Synchronous)\n`;
255
- msg.stages.preOperation.forEach((step, idx) => {
256
- report += `${idx + 1}. **[Rank ${step.rank}]** ${step.pluginType}\n`;
257
- report += ` - Assembly: ${step.assemblyName} v${step.assemblyVersion}\n`;
258
- report += ` - Filtering: ${step.filteringAttributes.join(', ') || '(all columns)'}\n`;
259
- if (step.hasPreImage || step.hasPostImage) {
260
- const images = [];
261
- if (step.hasPreImage)
262
- images.push('PreImage');
263
- if (step.hasPostImage)
264
- images.push('PostImage');
265
- report += ` - Images: ${images.join(', ')}\n`;
266
- }
267
- report += `\n`;
268
- });
269
- }
270
- if (msg.stages.postOperation.length > 0) {
271
- report += `### Stage 3: PostOperation\n`;
272
- msg.stages.postOperation.forEach((step, idx) => {
273
- const mode = step.modeName === 'Asynchronous' ? ' (Async)' : ' (Sync)';
274
- report += `${idx + 1}. **[Rank ${step.rank}]** ${step.pluginType}${mode}\n`;
275
- report += ` - Assembly: ${step.assemblyName} v${step.assemblyVersion}\n`;
276
- report += ` - Filtering: ${step.filteringAttributes.join(', ') || '(all columns)'}\n`;
277
- if (step.hasPreImage || step.hasPostImage) {
278
- const images = [];
279
- if (step.hasPreImage)
280
- images.push('PreImage');
281
- if (step.hasPostImage)
282
- images.push('PostImage');
283
- report += ` - Images: ${images.join(', ')}\n`;
284
- }
285
- report += `\n`;
286
- });
287
- }
288
- report += `---\n\n`;
289
- });
290
- report += `## Execution Order\n\n`;
291
- report += `Plugins execute in this order:\n`;
292
- result.executionOrder.forEach((name, idx) => {
293
- report += `${idx + 1}. ${name}\n`;
294
- });
295
- }
296
- return makePromptResult(report);
297
- }
298
- catch (error) {
299
- console.error(`Error generating entity plugin pipeline report:`, error);
300
- return makePromptError(error.message);
301
- }
302
- });
303
- }
304
- //# sourceMappingURL=entity-prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-prompts.js","sourceRoot":"","sources":["../../src/prompts/entity-prompts.ts"],"names":[],"mappings":"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"}