@mcp-consultant-tools/powerplatform 28.0.0-beta.6 → 28.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 (49) hide show
  1. package/build/cli/commands/app-commands.d.ts +7 -0
  2. package/build/cli/commands/app-commands.d.ts.map +1 -0
  3. package/build/cli/commands/app-commands.js +65 -0
  4. package/build/cli/commands/app-commands.js.map +1 -0
  5. package/build/cli/commands/flow-commands.d.ts +7 -0
  6. package/build/cli/commands/flow-commands.d.ts.map +1 -0
  7. package/build/cli/commands/flow-commands.js +170 -0
  8. package/build/cli/commands/flow-commands.js.map +1 -0
  9. package/build/cli/commands/form-commands.d.ts +7 -0
  10. package/build/cli/commands/form-commands.d.ts.map +1 -0
  11. package/build/cli/commands/form-commands.js +104 -0
  12. package/build/cli/commands/form-commands.js.map +1 -0
  13. package/build/cli/commands/index.d.ts +15 -0
  14. package/build/cli/commands/index.d.ts.map +1 -0
  15. package/build/cli/commands/index.js +30 -0
  16. package/build/cli/commands/index.js.map +1 -0
  17. package/build/cli/commands/integration-commands.d.ts +7 -0
  18. package/build/cli/commands/integration-commands.d.ts.map +1 -0
  19. package/build/cli/commands/integration-commands.js +97 -0
  20. package/build/cli/commands/integration-commands.js.map +1 -0
  21. package/build/cli/commands/metadata-commands.d.ts +7 -0
  22. package/build/cli/commands/metadata-commands.d.ts.map +1 -0
  23. package/build/cli/commands/metadata-commands.js +83 -0
  24. package/build/cli/commands/metadata-commands.js.map +1 -0
  25. package/build/cli/commands/plugin-commands.d.ts +7 -0
  26. package/build/cli/commands/plugin-commands.d.ts.map +1 -0
  27. package/build/cli/commands/plugin-commands.js +79 -0
  28. package/build/cli/commands/plugin-commands.js.map +1 -0
  29. package/build/cli/commands/security-commands.d.ts +7 -0
  30. package/build/cli/commands/security-commands.d.ts.map +1 -0
  31. package/build/cli/commands/security-commands.js +89 -0
  32. package/build/cli/commands/security-commands.js.map +1 -0
  33. package/build/cli/commands/solution-commands.d.ts +7 -0
  34. package/build/cli/commands/solution-commands.d.ts.map +1 -0
  35. package/build/cli/commands/solution-commands.js +146 -0
  36. package/build/cli/commands/solution-commands.js.map +1 -0
  37. package/build/cli/output.d.ts +11 -0
  38. package/build/cli/output.d.ts.map +1 -0
  39. package/build/cli/output.js +10 -0
  40. package/build/cli/output.js.map +1 -0
  41. package/build/cli.d.ts +9 -0
  42. package/build/cli.d.ts.map +1 -0
  43. package/build/cli.js +30 -0
  44. package/build/cli.js.map +1 -0
  45. package/build/context-factory.d.ts +11 -0
  46. package/build/context-factory.d.ts.map +1 -0
  47. package/build/context-factory.js +39 -0
  48. package/build/context-factory.js.map +1 -0
  49. package/package.json +6 -4
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Metadata CLI Commands - 5 commands for entity metadata inspection
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerMetadataCommands(program, ctx) {
7
+ const metadata = program.command('metadata').description('Entity metadata inspection');
8
+ metadata
9
+ .command('get')
10
+ .description('Get metadata for a Dataverse entity')
11
+ .argument('<entityName>', 'Entity logical name (e.g., account, contact, si_customentity)')
12
+ .action(async (entityName) => {
13
+ try {
14
+ const result = await ctx.pp.getEntityMetadata(entityName);
15
+ outputResult({ fileName: `metadata-${entityName}`, data: result, summary: `Entity metadata for '${entityName}'` }, getGlobalFlags(program));
16
+ }
17
+ catch (error) {
18
+ handleCliError(error, 'get entity metadata');
19
+ }
20
+ });
21
+ metadata
22
+ .command('attributes')
23
+ .description('Get attributes/fields of a Dataverse entity')
24
+ .argument('<entityName>', 'Entity logical name')
25
+ .option('-p, --prefix <prefix>', 'Filter by schema name prefix (e.g., si_)')
26
+ .option('-t, --type <type>', 'Filter by attribute type (e.g., String, Lookup, Picklist)')
27
+ .option('-m, --max <n>', 'Maximum number of attributes to return')
28
+ .action(async (entityName, opts) => {
29
+ try {
30
+ const result = await ctx.pp.getEntityAttributes(entityName, {
31
+ prefix: opts.prefix,
32
+ attributeType: opts.type,
33
+ maxAttributes: opts.max ? parseInt(opts.max) : undefined,
34
+ });
35
+ outputResult({ fileName: `attributes-${entityName}`, data: result, summary: `Attributes for '${entityName}' (${result.returnedCount} returned)` }, getGlobalFlags(program));
36
+ }
37
+ catch (error) {
38
+ handleCliError(error, 'get entity attributes');
39
+ }
40
+ });
41
+ metadata
42
+ .command('attribute')
43
+ .description('Get a specific attribute of a Dataverse entity')
44
+ .argument('<entityName>', 'Entity logical name')
45
+ .argument('<attributeName>', 'Attribute logical name (e.g., emailaddress1)')
46
+ .action(async (entityName, attributeName) => {
47
+ try {
48
+ const result = await ctx.pp.getEntityAttribute(entityName, attributeName);
49
+ outputResult({ fileName: `attribute-${entityName}-${attributeName}`, data: result, summary: `Attribute '${attributeName}' for entity '${entityName}'` }, getGlobalFlags(program));
50
+ }
51
+ catch (error) {
52
+ handleCliError(error, 'get entity attribute');
53
+ }
54
+ });
55
+ metadata
56
+ .command('relationships')
57
+ .description('Get relationships for a Dataverse entity')
58
+ .argument('<entityName>', 'Entity logical name')
59
+ .action(async (entityName) => {
60
+ try {
61
+ const result = await ctx.pp.getEntityRelationships(entityName);
62
+ const totalCount = (result.oneToMany?.value?.length || 0) + (result.manyToMany?.value?.length || 0);
63
+ outputResult({ fileName: `relationships-${entityName}`, data: result, summary: `Relationships for '${entityName}' (${totalCount} total)` }, getGlobalFlags(program));
64
+ }
65
+ catch (error) {
66
+ handleCliError(error, 'get entity relationships');
67
+ }
68
+ });
69
+ metadata
70
+ .command('option-set')
71
+ .description('Get a global option set by name')
72
+ .argument('<optionSetName>', 'Global option set name (e.g., si_applicationstatus)')
73
+ .action(async (optionSetName) => {
74
+ try {
75
+ const result = await ctx.pp.getGlobalOptionSet(optionSetName);
76
+ outputResult({ fileName: `optionset-${optionSetName}`, data: result, summary: `Global option set '${optionSetName}'` }, getGlobalFlags(program));
77
+ }
78
+ catch (error) {
79
+ handleCliError(error, 'get global option set');
80
+ }
81
+ });
82
+ }
83
+ //# sourceMappingURL=metadata-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/metadata-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Plugin CLI Commands - 4 commands for plugin inspection
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../types.js';
6
+ export declare function registerPluginCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=plugin-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plugin-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA4ElF"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Plugin CLI Commands - 4 commands for plugin inspection
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerPluginCommands(program, ctx) {
7
+ const plugin = program.command('plugin').description('Plugin assembly inspection');
8
+ plugin
9
+ .command('list')
10
+ .description('List all plugin assemblies in the environment')
11
+ .option('--include-managed', 'Include managed assemblies', false)
12
+ .option('-m, --max <n>', 'Maximum number of assemblies to return', '100')
13
+ .action(async (opts) => {
14
+ try {
15
+ const result = await ctx.pp.getPluginAssemblies(opts.includeManaged, parseInt(opts.max));
16
+ outputResult({ fileName: 'plugin-assemblies', data: result, summary: `Found ${result.totalCount} plugin assemblies` }, getGlobalFlags(program));
17
+ }
18
+ catch (error) {
19
+ handleCliError(error, 'list plugin assemblies');
20
+ }
21
+ });
22
+ plugin
23
+ .command('get')
24
+ .description('Get comprehensive info about a plugin assembly')
25
+ .argument('<assemblyName>', 'Plugin assembly name')
26
+ .option('--include-disabled', 'Include disabled steps', false)
27
+ .action(async (assemblyName, opts) => {
28
+ try {
29
+ const result = await ctx.pp.getPluginAssemblyComplete(assemblyName, opts.includeDisabled);
30
+ outputResult({ fileName: `plugin-${assemblyName}`, data: result, summary: `Plugin assembly '${assemblyName}' - ${result.steps.length} steps, ${result.pluginTypes.length} types` }, getGlobalFlags(program));
31
+ }
32
+ catch (error) {
33
+ handleCliError(error, 'get plugin assembly');
34
+ }
35
+ });
36
+ plugin
37
+ .command('entity')
38
+ .description('Get all plugins registered on a specific entity')
39
+ .argument('<entityName>', 'Entity logical name')
40
+ .option('--message <msg>', 'Filter by SDK message (e.g., Create, Update, Delete)')
41
+ .option('--include-disabled', 'Include disabled steps', false)
42
+ .action(async (entityName, opts) => {
43
+ try {
44
+ const result = await ctx.pp.getEntityPluginPipeline(entityName, opts.message, opts.includeDisabled);
45
+ outputResult({ fileName: `plugins-${entityName}`, data: result, summary: `Plugin pipeline for '${entityName}' - ${result.steps.length} steps` }, getGlobalFlags(program));
46
+ }
47
+ catch (error) {
48
+ handleCliError(error, 'get entity plugins');
49
+ }
50
+ });
51
+ plugin
52
+ .command('trace-logs')
53
+ .description('Query plugin trace logs')
54
+ .option('-e, --entity <name>', 'Filter by entity logical name')
55
+ .option('--message <name>', 'Filter by SDK message name')
56
+ .option('--correlation-id <guid>', 'Filter by correlation ID')
57
+ .option('--step-id <guid>', 'Filter by specific step ID')
58
+ .option('--exception-only', 'Only return logs with exceptions', false)
59
+ .option('--hours-back <n>', 'How many hours back to search', '24')
60
+ .option('-m, --max <n>', 'Maximum number of logs to return', '50')
61
+ .action(async (opts) => {
62
+ try {
63
+ const result = await ctx.pp.getPluginTraceLogs({
64
+ entityName: opts.entity,
65
+ messageName: opts.message,
66
+ correlationId: opts.correlationId,
67
+ pluginStepId: opts.stepId,
68
+ exceptionOnly: opts.exceptionOnly,
69
+ hoursBack: parseInt(opts.hoursBack),
70
+ maxRecords: parseInt(opts.max),
71
+ });
72
+ outputResult({ fileName: 'plugin-trace-logs', data: result, summary: `Plugin trace logs (found ${result.totalCount})` }, getGlobalFlags(program));
73
+ }
74
+ catch (error) {
75
+ handleCliError(error, 'get plugin trace logs');
76
+ }
77
+ });
78
+ }
79
+ //# sourceMappingURL=plugin-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/plugin-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Security CLI Commands - 4 commands for connection references and security roles
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../types.js';
6
+ export declare function registerSecurityCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=security-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/security-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAqFpF"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Security CLI Commands - 4 commands for connection references and security roles
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerSecurityCommands(program, ctx) {
7
+ const security = program.command('security').description('Security roles and connection references');
8
+ security
9
+ .command('connection-refs')
10
+ .description('Get all connection references with connector details')
11
+ .option('-m, --max <n>', 'Maximum records to return', '100')
12
+ .option('--managed-only', 'Filter to managed connection references only', false)
13
+ .option('--has-connection', 'Filter: only refs with connections set')
14
+ .option('--no-connection', 'Filter: only refs without connections')
15
+ .action(async (opts) => {
16
+ try {
17
+ let hasConnection;
18
+ if (opts.hasConnection)
19
+ hasConnection = true;
20
+ if (opts.connection === false)
21
+ hasConnection = false;
22
+ const result = await ctx.pp.getConnectionReferences({
23
+ maxRecords: parseInt(opts.max),
24
+ managedOnly: opts.managedOnly,
25
+ hasConnection,
26
+ });
27
+ outputResult({ fileName: 'connection-references', data: result, summary: `Connection references: ${result.summary.total} total, ${result.summary.withConnection} with connection` }, getGlobalFlags(program));
28
+ }
29
+ catch (error) {
30
+ handleCliError(error, 'get connection references');
31
+ }
32
+ });
33
+ security
34
+ .command('roles')
35
+ .description('Get custom security roles in the environment')
36
+ .option('-s, --solution <name>', 'Filter to roles in a specific solution')
37
+ .option('--include-system', 'Include system roles (System Admin, etc.)', false)
38
+ .option('-m, --max <n>', 'Maximum records to return', '100')
39
+ .action(async (opts) => {
40
+ try {
41
+ const result = await ctx.pp.getSecurityRoles({
42
+ solutionUniqueName: opts.solution,
43
+ excludeSystemRoles: !opts.includeSystem,
44
+ maxRecords: parseInt(opts.max),
45
+ });
46
+ outputResult({ fileName: 'security-roles', data: result, summary: `Security roles: ${result.summary.total} total (${result.summary.managed} managed, ${result.summary.unmanaged} unmanaged)` }, getGlobalFlags(program));
47
+ }
48
+ catch (error) {
49
+ handleCliError(error, 'get security roles');
50
+ }
51
+ });
52
+ security
53
+ .command('role-privileges')
54
+ .description('Get privilege assignments for a specific security role')
55
+ .argument('<roleId>', 'Role ID (GUID)')
56
+ .option('-e, --entity <name>', 'Filter privileges to a specific entity (partial match)')
57
+ .option('-a, --access-right <right>', 'Filter by access right (Create, Read, Write, Delete, etc.)')
58
+ .action(async (roleId, opts) => {
59
+ try {
60
+ const result = await ctx.pp.getSecurityRolePrivileges({
61
+ roleId,
62
+ entityFilter: opts.entity,
63
+ accessRightFilter: opts.accessRight,
64
+ });
65
+ outputResult({ fileName: `role-privileges-${roleId}`, data: result, summary: `Role privileges: ${result.summary.total} privileges across ${result.summary.entityCount} entities` }, getGlobalFlags(program));
66
+ }
67
+ catch (error) {
68
+ handleCliError(error, 'get security role privileges');
69
+ }
70
+ });
71
+ security
72
+ .command('roles-by-solution')
73
+ .description('Get all security roles in a specific solution')
74
+ .argument('<solutionName>', 'Solution unique name')
75
+ .option('--include-privileges', 'Include privilege count summary per role', false)
76
+ .action(async (solutionName, opts) => {
77
+ try {
78
+ const result = await ctx.pp.getSecurityRolesBySolution({
79
+ solutionUniqueName: solutionName,
80
+ includePrivileges: opts.includePrivileges,
81
+ });
82
+ outputResult({ fileName: `roles-solution-${solutionName}`, data: result, summary: `Security roles in solution '${solutionName}': ${result.summary.total} roles` }, getGlobalFlags(program));
83
+ }
84
+ catch (error) {
85
+ handleCliError(error, 'get security roles by solution');
86
+ }
87
+ });
88
+ }
89
+ //# sourceMappingURL=security-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/security-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Solution CLI Commands - 8 commands for solution management and validation
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../types.js';
6
+ export declare function registerSolutionCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=solution-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solution-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/solution-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA6JpF"}
@@ -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"}