@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.
Files changed (117) hide show
  1. package/build/PowerPlatformService.d.ts +23 -2
  2. package/build/PowerPlatformService.d.ts.map +1 -1
  3. package/build/PowerPlatformService.js +23 -1
  4. package/build/PowerPlatformService.js.map +1 -1
  5. package/build/cli/commands/app-commands.d.ts +7 -0
  6. package/build/cli/commands/app-commands.d.ts.map +1 -0
  7. package/build/cli/commands/app-commands.js +65 -0
  8. package/build/cli/commands/app-commands.js.map +1 -0
  9. package/build/cli/commands/flow-commands.d.ts +7 -0
  10. package/build/cli/commands/flow-commands.d.ts.map +1 -0
  11. package/build/cli/commands/flow-commands.js +170 -0
  12. package/build/cli/commands/flow-commands.js.map +1 -0
  13. package/build/cli/commands/form-commands.d.ts +7 -0
  14. package/build/cli/commands/form-commands.d.ts.map +1 -0
  15. package/build/cli/commands/form-commands.js +104 -0
  16. package/build/cli/commands/form-commands.js.map +1 -0
  17. package/build/cli/commands/index.d.ts +15 -0
  18. package/build/cli/commands/index.d.ts.map +1 -0
  19. package/build/cli/commands/index.js +30 -0
  20. package/build/cli/commands/index.js.map +1 -0
  21. package/build/cli/commands/integration-commands.d.ts +7 -0
  22. package/build/cli/commands/integration-commands.d.ts.map +1 -0
  23. package/build/cli/commands/integration-commands.js +97 -0
  24. package/build/cli/commands/integration-commands.js.map +1 -0
  25. package/build/cli/commands/metadata-commands.d.ts +7 -0
  26. package/build/cli/commands/metadata-commands.d.ts.map +1 -0
  27. package/build/cli/commands/metadata-commands.js +83 -0
  28. package/build/cli/commands/metadata-commands.js.map +1 -0
  29. package/build/cli/commands/plugin-commands.d.ts +7 -0
  30. package/build/cli/commands/plugin-commands.d.ts.map +1 -0
  31. package/build/cli/commands/plugin-commands.js +79 -0
  32. package/build/cli/commands/plugin-commands.js.map +1 -0
  33. package/build/cli/commands/security-commands.d.ts +7 -0
  34. package/build/cli/commands/security-commands.d.ts.map +1 -0
  35. package/build/cli/commands/security-commands.js +89 -0
  36. package/build/cli/commands/security-commands.js.map +1 -0
  37. package/build/cli/commands/solution-commands.d.ts +7 -0
  38. package/build/cli/commands/solution-commands.d.ts.map +1 -0
  39. package/build/cli/commands/solution-commands.js +146 -0
  40. package/build/cli/commands/solution-commands.js.map +1 -0
  41. package/build/cli/output.d.ts +11 -0
  42. package/build/cli/output.d.ts.map +1 -0
  43. package/build/cli/output.js +10 -0
  44. package/build/cli/output.js.map +1 -0
  45. package/build/cli.d.ts +9 -0
  46. package/build/cli.d.ts.map +1 -0
  47. package/build/cli.js +30 -0
  48. package/build/cli.js.map +1 -0
  49. package/build/context-factory.d.ts +11 -0
  50. package/build/context-factory.d.ts.map +1 -0
  51. package/build/context-factory.js +39 -0
  52. package/build/context-factory.js.map +1 -0
  53. package/build/index.d.ts +10 -2
  54. package/build/index.d.ts.map +1 -1
  55. package/build/index.js +26 -2394
  56. package/build/index.js.map +1 -1
  57. package/build/prompts/analysis-prompts.d.ts +3 -0
  58. package/build/prompts/analysis-prompts.d.ts.map +1 -0
  59. package/build/prompts/analysis-prompts.js +286 -0
  60. package/build/prompts/analysis-prompts.js.map +1 -0
  61. package/build/prompts/entity-prompts.d.ts +3 -0
  62. package/build/prompts/entity-prompts.d.ts.map +1 -0
  63. package/build/prompts/entity-prompts.js +304 -0
  64. package/build/prompts/entity-prompts.js.map +1 -0
  65. package/build/prompts/index.d.ts +8 -0
  66. package/build/prompts/index.d.ts.map +1 -0
  67. package/build/prompts/index.js +11 -0
  68. package/build/prompts/index.js.map +1 -0
  69. package/build/services/index.d.ts +5 -0
  70. package/build/services/index.d.ts.map +1 -0
  71. package/build/services/index.js +5 -0
  72. package/build/services/index.js.map +1 -0
  73. package/build/tool-examples.d.ts +48 -0
  74. package/build/tool-examples.d.ts.map +1 -0
  75. package/build/tool-examples.js +91 -0
  76. package/build/tool-examples.js.map +1 -0
  77. package/build/tools/app-tools.d.ts +3 -0
  78. package/build/tools/app-tools.d.ts.map +1 -0
  79. package/build/tools/app-tools.js +127 -0
  80. package/build/tools/app-tools.js.map +1 -0
  81. package/build/tools/flow-tools.d.ts +3 -0
  82. package/build/tools/flow-tools.d.ts.map +1 -0
  83. package/build/tools/flow-tools.js +374 -0
  84. package/build/tools/flow-tools.js.map +1 -0
  85. package/build/tools/form-view-tools.d.ts +3 -0
  86. package/build/tools/form-view-tools.d.ts.map +1 -0
  87. package/build/tools/form-view-tools.js +162 -0
  88. package/build/tools/form-view-tools.js.map +1 -0
  89. package/build/tools/index.d.ts +14 -0
  90. package/build/tools/index.d.ts.map +1 -0
  91. package/build/tools/index.js +29 -0
  92. package/build/tools/index.js.map +1 -0
  93. package/build/tools/integration-tools.d.ts +3 -0
  94. package/build/tools/integration-tools.d.ts.map +1 -0
  95. package/build/tools/integration-tools.js +325 -0
  96. package/build/tools/integration-tools.js.map +1 -0
  97. package/build/tools/metadata-tools.d.ts +3 -0
  98. package/build/tools/metadata-tools.d.ts.map +1 -0
  99. package/build/tools/metadata-tools.js +166 -0
  100. package/build/tools/metadata-tools.js.map +1 -0
  101. package/build/tools/plugin-tools.d.ts +3 -0
  102. package/build/tools/plugin-tools.d.ts.map +1 -0
  103. package/build/tools/plugin-tools.js +138 -0
  104. package/build/tools/plugin-tools.js.map +1 -0
  105. package/build/tools/security-tools.d.ts +3 -0
  106. package/build/tools/security-tools.d.ts.map +1 -0
  107. package/build/tools/security-tools.js +188 -0
  108. package/build/tools/security-tools.js.map +1 -0
  109. package/build/tools/solution-tools.d.ts +3 -0
  110. package/build/tools/solution-tools.d.ts.map +1 -0
  111. package/build/tools/solution-tools.js +284 -0
  112. package/build/tools/solution-tools.js.map +1 -0
  113. package/build/types.d.ts +9 -0
  114. package/build/types.d.ts.map +1 -0
  115. package/build/types.js +2 -0
  116. package/build/types.js.map +1 -0
  117. package/package.json +6 -4
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Solution CLI Commands - 8 commands for solution management and validation
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerSolutionCommands(program, ctx) {
7
+ const solution = program.command('solution').description('Solution management and validation');
8
+ solution
9
+ .command('publishers')
10
+ .description('List all solution publishers')
11
+ .action(async () => {
12
+ try {
13
+ const result = await ctx.pp.getPublishers();
14
+ const publishers = result?.value || [];
15
+ outputResult({ fileName: 'publishers', data: result, summary: `Found ${publishers.length} publisher(s)` }, getGlobalFlags(program));
16
+ }
17
+ catch (error) {
18
+ handleCliError(error, 'list publishers');
19
+ }
20
+ });
21
+ solution
22
+ .command('list')
23
+ .description('List all visible solutions in the environment')
24
+ .action(async () => {
25
+ try {
26
+ const result = await ctx.pp.getSolutions();
27
+ const solutions = result?.value || [];
28
+ outputResult({ fileName: 'solutions', data: result, summary: `Found ${solutions.length} solution(s)` }, getGlobalFlags(program));
29
+ }
30
+ catch (error) {
31
+ handleCliError(error, 'list solutions');
32
+ }
33
+ });
34
+ solution
35
+ .command('components')
36
+ .description('List all components in a solution')
37
+ .argument('<solutionName>', 'Solution unique name')
38
+ .action(async (solutionName) => {
39
+ try {
40
+ const result = await ctx.pp.getSolutionComponents(solutionName);
41
+ const components = result?.value || [];
42
+ outputResult({ fileName: `solution-components-${solutionName}`, data: result, summary: `Found ${components.length} component(s) in solution '${solutionName}'` }, getGlobalFlags(program));
43
+ }
44
+ catch (error) {
45
+ handleCliError(error, 'list solution components');
46
+ }
47
+ });
48
+ solution
49
+ .command('check-deps')
50
+ .description('Check dependencies before deleting a component')
51
+ .argument('<componentId>', 'Component ID (GUID or MetadataId)')
52
+ .argument('<componentType>', 'Component type code (e.g., 1=Entity, 26=Role, 29=Workflow)')
53
+ .action(async (componentId, componentType) => {
54
+ try {
55
+ const result = await ctx.pp.checkDependencies(componentId, parseInt(componentType));
56
+ outputResult({ fileName: `deps-${componentId}`, data: result, summary: `Dependencies for component '${componentId}'` }, getGlobalFlags(program));
57
+ }
58
+ catch (error) {
59
+ handleCliError(error, 'check dependencies');
60
+ }
61
+ });
62
+ solution
63
+ .command('validate-name')
64
+ .description('Validate a schema name against PowerPlatform naming rules')
65
+ .argument('<schemaName>', 'Schema name to validate')
66
+ .argument('<prefix>', 'Required customization prefix')
67
+ .action(async (schemaName, prefix) => {
68
+ try {
69
+ const result = ctx.pp.validateSchemaName(schemaName, prefix);
70
+ outputResult({ fileName: `validate-${schemaName}`, data: result, summary: `Schema name '${schemaName}': ${result.valid ? 'VALID' : 'INVALID'}${result.errors.length > 0 ? ' - ' + result.errors.join(', ') : ''}` }, getGlobalFlags(program));
71
+ }
72
+ catch (error) {
73
+ handleCliError(error, 'validate schema name');
74
+ }
75
+ });
76
+ solution
77
+ .command('check-delete')
78
+ .description('Check if a component can be safely deleted')
79
+ .argument('<componentId>', 'Component ID (GUID or MetadataId)')
80
+ .argument('<componentType>', 'Component type code')
81
+ .action(async (componentId, componentType) => {
82
+ try {
83
+ const result = await ctx.pp.checkDeleteEligibility(componentId, parseInt(componentType));
84
+ outputResult({ fileName: `delete-check-${componentId}`, data: result, summary: `Delete eligibility for '${componentId}': ${result.canDelete ? 'CAN DELETE' : 'BLOCKED'} (${result.dependencies.length} dependencies)` }, getGlobalFlags(program));
85
+ }
86
+ catch (error) {
87
+ handleCliError(error, 'check delete eligibility');
88
+ }
89
+ });
90
+ solution
91
+ .command('validate')
92
+ .description('Validate Dataverse entities against best practices')
93
+ .option('-s, --solution <name>', 'Solution unique name to validate')
94
+ .option('-e, --entities <names...>', 'Explicit list of entity logical names')
95
+ .requiredOption('-p, --prefix <prefix>', 'Publisher prefix to validate against (e.g., sic_)')
96
+ .option('--recent-days <n>', 'Only validate columns created in last N days (0=all)', '30')
97
+ .option('--no-ref-data', 'Exclude RefData tables from validation')
98
+ .option('--rules <rules...>', 'Specific rules to validate (prefix, lowercase, lookup, optionset, required-column, entity-icon)')
99
+ .option('--max-entities <n>', 'Maximum entities to validate (0=unlimited)', '0')
100
+ .option('--required-columns <cols...>', 'Required column schema names to check')
101
+ .action(async (opts) => {
102
+ try {
103
+ if (!opts.solution && !opts.entities) {
104
+ console.error('Error: Either --solution or --entities must be provided');
105
+ process.exit(1);
106
+ }
107
+ if (opts.solution && opts.entities) {
108
+ console.error('Error: --solution and --entities are mutually exclusive');
109
+ process.exit(1);
110
+ }
111
+ const result = await ctx.pp.validateBestPractices(opts.solution, opts.entities, opts.prefix, parseInt(opts.recentDays), opts.refData !== false, opts.rules ?? ['prefix', 'lowercase', 'lookup', 'optionset', 'required-column', 'entity-icon'], parseInt(opts.maxEntities), opts.requiredColumns ?? ['{prefix}updatedbyprocess']);
112
+ outputResult({ fileName: 'validation-result', data: result, summary: `Validation complete for ${opts.solution || opts.entities?.join(', ')}` }, getGlobalFlags(program));
113
+ }
114
+ catch (error) {
115
+ handleCliError(error, 'validate best practices');
116
+ }
117
+ });
118
+ solution
119
+ .command('dbml')
120
+ .description('Generate DBML schema from Dataverse entities')
121
+ .option('-s, --solutions <names...>', 'Solution unique names to extract entities from')
122
+ .option('-e, --entities <names...>', 'Explicit list of entity logical names')
123
+ .option('--include-system-columns', 'Include system columns like createdon, modifiedon', false)
124
+ .option('--include-state-status', 'Include statecode/statuscode columns', false)
125
+ .option('-p, --prefix <prefix>', 'Only include columns matching this prefix')
126
+ .option('-d, --depth <n>', 'Relationship traversal depth', '0')
127
+ .option('--no-polymorphic', 'Exclude Customer/Owner/PartyList lookups')
128
+ .action(async (opts) => {
129
+ try {
130
+ const result = await ctx.pp.generateDbmlSchema({
131
+ solutions: opts.solutions,
132
+ entities: opts.entities,
133
+ includeSystemColumns: opts.includeSystemColumns,
134
+ includeStateStatus: opts.includeStateStatus,
135
+ prefix: opts.prefix,
136
+ depth: parseInt(opts.depth),
137
+ includePolymorphicLookups: opts.polymorphic !== false,
138
+ });
139
+ outputResult({ fileName: 'dbml-schema', data: result, summary: `DBML schema generated (${result.tableCount || 0} tables)` }, getGlobalFlags(program));
140
+ }
141
+ catch (error) {
142
+ handleCliError(error, 'generate DBML schema');
143
+ }
144
+ });
145
+ }
146
+ //# sourceMappingURL=solution-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solution-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/solution-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLI output helper for powerplatform package.
3
+ * Thin wrapper setting the package-specific cache directory.
4
+ */
5
+ import { type GlobalFlags } from '@mcp-consultant-tools/core';
6
+ export declare function outputResult(opts: {
7
+ fileName: string;
8
+ data: unknown;
9
+ summary: string;
10
+ }, flags: GlobalFlags): void;
11
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIhG,wBAAgB,YAAY,CAC1B,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC1D,KAAK,EAAE,WAAW,GACjB,IAAI,CAEN"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI output helper for powerplatform package.
3
+ * Thin wrapper setting the package-specific cache directory.
4
+ */
5
+ import { outputResult as coreOutputResult } from '@mcp-consultant-tools/core';
6
+ const CACHE_DIR = '.mcp-pp-cache';
7
+ export function outputResult(opts, flags) {
8
+ coreOutputResult({ ...opts, cacheDir: CACHE_DIR }, flags);
9
+ }
10
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAoB,MAAM,4BAA4B,CAAC;AAEhG,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC,MAAM,UAAU,YAAY,CAC1B,IAA0D,EAC1D,KAAkB;IAElB,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC"}
package/build/cli.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @mcp-consultant-tools/powerplatform CLI
4
+ *
5
+ * Command-line interface for PowerPlatform read-only operations.
6
+ * Reuses the same ServiceContext and services as the MCP server.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
package/build/cli.js ADDED
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @mcp-consultant-tools/powerplatform CLI
4
+ *
5
+ * Command-line interface for PowerPlatform read-only operations.
6
+ * Reuses the same ServiceContext and services as the MCP server.
7
+ */
8
+ import { createRequire } from 'node:module';
9
+ import { createCliProgram, loadEnvForCli } from '@mcp-consultant-tools/core';
10
+ import { createServiceContext } from './context-factory.js';
11
+ import { registerAllCommands } from './cli/commands/index.js';
12
+ const require = createRequire(import.meta.url);
13
+ const pkg = require('../package.json');
14
+ const program = createCliProgram({
15
+ name: 'mcp-pp-cli',
16
+ description: 'PowerPlatform CLI - metadata, plugins, flows, solutions, forms, integrations',
17
+ version: pkg.version,
18
+ });
19
+ // Load env before parsing (--env-file handled by commander hook)
20
+ program.hook('preAction', (thisCommand) => {
21
+ const opts = thisCommand.opts();
22
+ loadEnvForCli(opts.envFile);
23
+ });
24
+ const ctx = createServiceContext();
25
+ registerAllCommands(program, ctx);
26
+ program.parseAsync(process.argv).catch((error) => {
27
+ console.error('CLI error:', error.message);
28
+ process.exit(1);
29
+ });
30
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,MAAM,OAAO,GAAG,gBAAgB,CAAC;IAC/B,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,8EAA8E;IAC3F,OAAO,EAAE,GAAG,CAAC,OAAO;CACrB,CAAC,CAAC;AAEH,iEAAiE;AACjE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAgB,EAAE,EAAE;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;AACnC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;IACpD,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shared ServiceContext factory for PowerPlatform.
3
+ * Used by both MCP server (index.ts) and CLI (cli.ts).
4
+ */
5
+ import { PowerPlatformService } from './PowerPlatformService.js';
6
+ import type { ServiceContext } from './types.js';
7
+ /**
8
+ * Build a ServiceContext from environment variables (lazy client initialization).
9
+ */
10
+ export declare function createServiceContext(service?: PowerPlatformService): ServiceContext;
11
+ //# sourceMappingURL=context-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAA4B,MAAM,2BAA2B,CAAC;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAoCnF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared ServiceContext factory for PowerPlatform.
3
+ * Used by both MCP server (index.ts) and CLI (cli.ts).
4
+ */
5
+ import { PowerPlatformService } from './PowerPlatformService.js';
6
+ /**
7
+ * Build a ServiceContext from environment variables (lazy client initialization).
8
+ */
9
+ export function createServiceContext(service) {
10
+ let ppService = service || null;
11
+ function getPowerPlatformService() {
12
+ if (!ppService) {
13
+ const coreRequiredVars = [
14
+ 'POWERPLATFORM_URL',
15
+ 'POWERPLATFORM_CLIENT_ID',
16
+ 'POWERPLATFORM_TENANT_ID'
17
+ ];
18
+ const missing = coreRequiredVars.filter(v => !process.env[v]);
19
+ if (missing.length > 0) {
20
+ throw new Error(`Missing required PowerPlatform configuration: ${missing.join(', ')}`);
21
+ }
22
+ const hasClientSecret = !!process.env.POWERPLATFORM_CLIENT_SECRET;
23
+ const config = {
24
+ organizationUrl: process.env.POWERPLATFORM_URL,
25
+ clientId: process.env.POWERPLATFORM_CLIENT_ID,
26
+ clientSecret: process.env.POWERPLATFORM_CLIENT_SECRET,
27
+ tenantId: process.env.POWERPLATFORM_TENANT_ID,
28
+ };
29
+ ppService = new PowerPlatformService(config);
30
+ const authMode = hasClientSecret ? 'service-principal' : 'interactive';
31
+ console.error(`PowerPlatform auth mode: ${authMode}`);
32
+ }
33
+ return ppService;
34
+ }
35
+ return {
36
+ get pp() { return getPowerPlatformService(); }
37
+ };
38
+ }
39
+ //# sourceMappingURL=context-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAA4B,MAAM,2BAA2B,CAAC;AAG3F;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA8B;IACjE,IAAI,SAAS,GAAgC,OAAO,IAAI,IAAI,CAAC;IAE7D,SAAS,uBAAuB;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,gBAAgB,GAAG;gBACvB,mBAAmB;gBACnB,yBAAyB;gBACzB,yBAAyB;aAC1B,CAAC;YAEF,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,iDAAiD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzF,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;YAElE,MAAM,MAAM,GAAwB;gBAClC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;gBAC/C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAwB;gBAC9C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;gBACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAwB;aAC/C,CAAC;YAEF,SAAS,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,OAAO,uBAAuB,EAAE,CAAC,CAAC,CAAC;KAC/C,CAAC;AACJ,CAAC"}
package/build/index.d.ts CHANGED
@@ -1,10 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { PowerPlatformService, type PowerPlatformConfig } from './PowerPlatformService.js';
2
+ /**
3
+ * @mcp-consultant-tools/powerplatform
4
+ *
5
+ * MCP server for PowerPlatform read-only integration (46 tools, 12 prompts).
6
+ * Entry point: MCP server startup + backward-compatible registerPowerPlatformTools().
7
+ */
8
+ import { PowerPlatformService } from './PowerPlatformService.js';
3
9
  /**
4
10
  * Register PowerPlatform read-only tools with an MCP server
5
11
  * @param server - MCP server instance
6
12
  * @param service - Optional pre-initialized PowerPlatformService (for testing)
7
13
  */
8
14
  export declare function registerPowerPlatformTools(server: any, service?: PowerPlatformService): void;
9
- export { PowerPlatformService, PowerPlatformConfig };
15
+ export { PowerPlatformService } from './PowerPlatformService.js';
16
+ export type { PowerPlatformConfig } from './PowerPlatformService.js';
17
+ export type { ServiceContext } from './types.js';
10
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAY3F;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,QAs0FrF;AAGD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAMH,OAAO,EAAE,oBAAoB,EAA4B,MAAM,2BAA2B,CAAC;AAiD3F;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,QAIrF;AAGD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}