@mcp-consultant-tools/powerplatform-customization 28.0.0-beta.7 → 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 (92) hide show
  1. package/build/PowerPlatformService.d.ts +14 -0
  2. package/build/PowerPlatformService.d.ts.map +1 -1
  3. package/build/PowerPlatformService.js +64 -0
  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 +49 -0
  8. package/build/cli/commands/app-commands.js.map +1 -0
  9. package/build/cli/commands/attribute-commands.d.ts +7 -0
  10. package/build/cli/commands/attribute-commands.d.ts.map +1 -0
  11. package/build/cli/commands/attribute-commands.js +208 -0
  12. package/build/cli/commands/attribute-commands.js.map +1 -0
  13. package/build/cli/commands/entity-commands.d.ts +7 -0
  14. package/build/cli/commands/entity-commands.d.ts.map +1 -0
  15. package/build/cli/commands/entity-commands.js +134 -0
  16. package/build/cli/commands/entity-commands.js.map +1 -0
  17. package/build/cli/commands/flow-commands.d.ts +8 -0
  18. package/build/cli/commands/flow-commands.d.ts.map +1 -0
  19. package/build/cli/commands/flow-commands.js +209 -0
  20. package/build/cli/commands/flow-commands.js.map +1 -0
  21. package/build/cli/commands/form-commands.d.ts +7 -0
  22. package/build/cli/commands/form-commands.d.ts.map +1 -0
  23. package/build/cli/commands/form-commands.js +95 -0
  24. package/build/cli/commands/form-commands.js.map +1 -0
  25. package/build/cli/commands/index.d.ts +21 -0
  26. package/build/cli/commands/index.d.ts.map +1 -0
  27. package/build/cli/commands/index.js +48 -0
  28. package/build/cli/commands/index.js.map +1 -0
  29. package/build/cli/commands/integration-commands.d.ts +7 -0
  30. package/build/cli/commands/integration-commands.d.ts.map +1 -0
  31. package/build/cli/commands/integration-commands.js +100 -0
  32. package/build/cli/commands/integration-commands.js.map +1 -0
  33. package/build/cli/commands/optionset-commands.d.ts +7 -0
  34. package/build/cli/commands/optionset-commands.d.ts.map +1 -0
  35. package/build/cli/commands/optionset-commands.js +133 -0
  36. package/build/cli/commands/optionset-commands.js.map +1 -0
  37. package/build/cli/commands/plugin-commands.d.ts +8 -0
  38. package/build/cli/commands/plugin-commands.d.ts.map +1 -0
  39. package/build/cli/commands/plugin-commands.js +278 -0
  40. package/build/cli/commands/plugin-commands.js.map +1 -0
  41. package/build/cli/commands/relationship-commands.d.ts +7 -0
  42. package/build/cli/commands/relationship-commands.d.ts.map +1 -0
  43. package/build/cli/commands/relationship-commands.js +102 -0
  44. package/build/cli/commands/relationship-commands.js.map +1 -0
  45. package/build/cli/commands/solution-commands.d.ts +8 -0
  46. package/build/cli/commands/solution-commands.d.ts.map +1 -0
  47. package/build/cli/commands/solution-commands.js +132 -0
  48. package/build/cli/commands/solution-commands.js.map +1 -0
  49. package/build/cli/commands/view-commands.d.ts +7 -0
  50. package/build/cli/commands/view-commands.d.ts.map +1 -0
  51. package/build/cli/commands/view-commands.js +94 -0
  52. package/build/cli/commands/view-commands.js.map +1 -0
  53. package/build/cli/commands/webhook-commands.d.ts +7 -0
  54. package/build/cli/commands/webhook-commands.d.ts.map +1 -0
  55. package/build/cli/commands/webhook-commands.js +46 -0
  56. package/build/cli/commands/webhook-commands.js.map +1 -0
  57. package/build/cli/commands/webresource-commands.d.ts +7 -0
  58. package/build/cli/commands/webresource-commands.d.ts.map +1 -0
  59. package/build/cli/commands/webresource-commands.js +96 -0
  60. package/build/cli/commands/webresource-commands.js.map +1 -0
  61. package/build/cli/commands/workflow-commands.d.ts +8 -0
  62. package/build/cli/commands/workflow-commands.d.ts.map +1 -0
  63. package/build/cli/commands/workflow-commands.js +107 -0
  64. package/build/cli/commands/workflow-commands.js.map +1 -0
  65. package/build/cli/output.d.ts +20 -0
  66. package/build/cli/output.d.ts.map +1 -0
  67. package/build/cli/output.js +45 -0
  68. package/build/cli/output.js.map +1 -0
  69. package/build/cli.d.ts +9 -0
  70. package/build/cli.d.ts.map +1 -0
  71. package/build/cli.js +27 -0
  72. package/build/cli.js.map +1 -0
  73. package/build/context-factory.d.ts +8 -0
  74. package/build/context-factory.d.ts.map +1 -0
  75. package/build/context-factory.js +36 -0
  76. package/build/context-factory.js.map +1 -0
  77. package/build/index.js +0 -0
  78. package/build/tool-examples.d.ts +4 -0
  79. package/build/tool-examples.d.ts.map +1 -1
  80. package/build/tool-examples.js +7 -0
  81. package/build/tool-examples.js.map +1 -1
  82. package/build/tools/app-endpoint-tools.d.ts.map +1 -1
  83. package/build/tools/app-endpoint-tools.js +9 -0
  84. package/build/tools/app-endpoint-tools.js.map +1 -1
  85. package/build/tools/entity-tools.d.ts.map +1 -1
  86. package/build/tools/entity-tools.js +18 -1
  87. package/build/tools/entity-tools.js.map +1 -1
  88. package/build/tools/index.js +3 -3
  89. package/build/tools/web-resource-tools.d.ts.map +1 -1
  90. package/build/tools/web-resource-tools.js +36 -3
  91. package/build/tools/web-resource-tools.js.map +1 -1
  92. package/package.json +6 -4
@@ -0,0 +1,100 @@
1
+ import { outputResult, handleCliError } from '../output.js';
2
+ export function registerIntegrationCommands(program, ctx) {
3
+ const integration = program.command('integration').description('Service endpoint operations');
4
+ integration
5
+ .command('create-endpoint')
6
+ .description('Create a new service endpoint (webhook, Service Bus, Event Hub, etc.)')
7
+ .requiredOption('--name <name>', 'Friendly name for the service endpoint')
8
+ .requiredOption('--url <url>', 'Endpoint URL (must be HTTPS for webhooks)')
9
+ .requiredOption('--contract <type>', 'Contract type: Webhook, Queue, Topic, EventHub, EventGrid, REST, OneWay, TwoWay')
10
+ .requiredOption('--auth-type <type>', 'Auth type: Anonymous, HttpHeader, HttpQueryString, WebKey, SASKey, AzureKey, Certificate')
11
+ .option('--auth-value <value>', 'Authentication value (API key, token)')
12
+ .option('--description <desc>', 'Description of the endpoint')
13
+ .option('--message-format <format>', 'Message format: Json, BinaryXML, TextXML')
14
+ .option('--path <path>', 'Service Bus queue/topic path')
15
+ .option('--saskeyname <name>', 'Service Bus SAS key name')
16
+ .option('--saskey <key>', 'Service Bus SAS key value')
17
+ .option('--solution <name>', 'Solution unique name')
18
+ .action(async (opts) => {
19
+ try {
20
+ const service = ctx.pp;
21
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
22
+ const result = await service.createServiceEndpoint({
23
+ name: opts.name,
24
+ url: opts.url,
25
+ contract: opts.contract,
26
+ authType: opts.authType,
27
+ authValue: opts.authValue,
28
+ description: opts.description,
29
+ messageFormat: opts.messageFormat,
30
+ path: opts.path,
31
+ saskeyname: opts.saskeyname,
32
+ saskey: opts.saskey,
33
+ solutionUniqueName: opts.solution || POWERPLATFORM_DEFAULT_SOLUTION,
34
+ });
35
+ outputResult(result);
36
+ }
37
+ catch (error) {
38
+ handleCliError(error);
39
+ }
40
+ });
41
+ integration
42
+ .command('update-endpoint')
43
+ .description('Update an existing service endpoint')
44
+ .requiredOption('--service-endpoint-id <guid>', 'GUID of the service endpoint to update')
45
+ .option('--name <name>', 'New friendly name')
46
+ .option('--url <url>', 'New endpoint URL')
47
+ .option('--auth-type <type>', 'New auth type: Anonymous, HttpHeader, HttpQueryString, WebKey, SASKey, AzureKey, Certificate')
48
+ .option('--auth-value <value>', 'New authentication value')
49
+ .option('--description <desc>', 'New description')
50
+ .option('--message-format <format>', 'New message format: Json, BinaryXML, TextXML')
51
+ .option('--path <path>', 'New Service Bus queue/topic path')
52
+ .option('--namespace-address <uri>', 'Service Bus namespace URI (sb://). Runtime-authoritative for Queue/Topic/EventHub.')
53
+ .option('--sas-key <value>', 'Service Bus SAS key value')
54
+ .option('--sas-key-name <name>', 'Service Bus SAS key / policy name')
55
+ .option('--solution <name>', 'Solution unique name')
56
+ .action(async (opts) => {
57
+ try {
58
+ const service = ctx.pp;
59
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
60
+ await service.updateServiceEndpoint({
61
+ serviceEndpointId: opts.serviceEndpointId,
62
+ name: opts.name,
63
+ url: opts.url,
64
+ authType: opts.authType,
65
+ authValue: opts.authValue,
66
+ description: opts.description,
67
+ messageFormat: opts.messageFormat,
68
+ path: opts.path,
69
+ namespaceAddress: opts.namespaceAddress,
70
+ sasKey: opts.sasKey,
71
+ saskeyname: opts.sasKeyName,
72
+ solutionUniqueName: opts.solution || POWERPLATFORM_DEFAULT_SOLUTION || undefined,
73
+ });
74
+ outputResult({ success: true, serviceEndpointId: opts.serviceEndpointId });
75
+ }
76
+ catch (error) {
77
+ handleCliError(error);
78
+ }
79
+ });
80
+ integration
81
+ .command('delete-endpoint')
82
+ .description('Delete a service endpoint (also removes associated SDK steps)')
83
+ .requiredOption('--service-endpoint-id <guid>', 'GUID of the service endpoint to delete')
84
+ .option('--confirm', 'Confirm deletion (required)', false)
85
+ .action(async (opts) => {
86
+ try {
87
+ if (!opts.confirm) {
88
+ console.error('Deletion not confirmed. Use --confirm to proceed.');
89
+ process.exit(1);
90
+ }
91
+ const service = ctx.pp;
92
+ await service.deleteServiceEndpoint(opts.serviceEndpointId);
93
+ outputResult({ success: true, deleted: opts.serviceEndpointId });
94
+ }
95
+ catch (error) {
96
+ handleCliError(error);
97
+ }
98
+ });
99
+ }
100
+ //# sourceMappingURL=integration-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/integration-commands.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,UAAU,2BAA2B,CAAC,OAAgB,EAAE,GAAmB;IAE/E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IAE9F,WAAW;SACR,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uEAAuE,CAAC;SACpF,cAAc,CAAC,eAAe,EAAE,wCAAwC,CAAC;SACzE,cAAc,CAAC,aAAa,EAAE,2CAA2C,CAAC;SAC1E,cAAc,CAAC,mBAAmB,EAAE,iFAAiF,CAAC;SACtH,cAAc,CAAC,oBAAoB,EAAE,0FAA0F,CAAC;SAChI,MAAM,CAAC,sBAAsB,EAAE,uCAAuC,CAAC;SACvE,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;SAC7D,MAAM,CAAC,2BAA2B,EAAE,0CAA0C,CAAC;SAC/E,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;SACzD,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;SACrD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,8BAA8B,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,EAAE,CAAC;YACxF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC;gBACjD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,kBAAkB,EAAE,IAAI,CAAC,QAAQ,IAAI,8BAA8B;aACpE,CAAC,CAAC;YACH,YAAY,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,WAAW;SACR,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,qCAAqC,CAAC;SAClD,cAAc,CAAC,8BAA8B,EAAE,wCAAwC,CAAC;SACxF,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;SAC5C,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;SACzC,MAAM,CAAC,oBAAoB,EAAE,8FAA8F,CAAC;SAC5H,MAAM,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;SAC1D,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;SACjD,MAAM,CAAC,2BAA2B,EAAE,8CAA8C,CAAC;SACnF,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;SAC3D,MAAM,CAAC,2BAA2B,EAAE,oFAAoF,CAAC;SACzH,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SACxD,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,CAAC;SACpE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,8BAA8B,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,EAAE,CAAC;YACxF,MAAM,OAAO,CAAC,qBAAqB,CAAC;gBAClC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,kBAAkB,EAAE,IAAI,CAAC,QAAQ,IAAI,8BAA8B,IAAI,SAAS;aACjF,CAAC,CAAC;YACH,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,WAAW;SACR,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,+DAA+D,CAAC;SAC5E,cAAc,CAAC,8BAA8B,EAAE,wCAAwC,CAAC;SACxF,MAAM,CAAC,WAAW,EAAE,6BAA6B,EAAE,KAAK,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5D,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Option Set CLI commands: create-global, update-global, add-value, update-value, delete-value, reorder
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../context-factory.js';
6
+ export declare function registerOptionsetCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=optionset-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionset-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/optionset-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA2IrF"}
@@ -0,0 +1,133 @@
1
+ import { outputResult, handleCliError } from '../output.js';
2
+ export function registerOptionsetCommands(program, ctx) {
3
+ const optionset = program.command('optionset').description('Option set operations');
4
+ optionset
5
+ .command('create-global')
6
+ .description('Create a picklist attribute using an existing global option set')
7
+ .requiredOption('--entity <name>', 'Entity logical name')
8
+ .requiredOption('--schema-name <name>', 'Attribute schema name with publisher prefix (e.g., si_status)')
9
+ .requiredOption('--display-name <name>', 'Attribute display name')
10
+ .requiredOption('--global-option-set-name <name>', 'Global option set name to use')
11
+ .option('--description <desc>', 'Attribute description')
12
+ .option('--required-level <level>', 'Required level: None, Recommended, ApplicationRequired')
13
+ .option('--solution <name>', 'Solution unique name')
14
+ .action(async (opts) => {
15
+ try {
16
+ const service = ctx.pp;
17
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
18
+ const solution = opts.solution || POWERPLATFORM_DEFAULT_SOLUTION;
19
+ const result = await service.createGlobalOptionSetAttribute(opts.entity, opts.schemaName, opts.displayName, opts.globalOptionSetName, {
20
+ description: opts.description,
21
+ requiredLevel: opts.requiredLevel,
22
+ solutionUniqueName: solution
23
+ });
24
+ outputResult(result);
25
+ }
26
+ catch (error) {
27
+ handleCliError(error);
28
+ }
29
+ });
30
+ optionset
31
+ .command('update-global')
32
+ .description('Update a global option set display name or description')
33
+ .requiredOption('--metadata-id <guid>', 'The MetadataId of the option set (GUID)')
34
+ .option('--display-name <name>', 'New display name')
35
+ .option('--description <desc>', 'New description')
36
+ .option('--solution <name>', 'Solution unique name')
37
+ .action(async (opts) => {
38
+ try {
39
+ const service = ctx.pp;
40
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
41
+ const updates = { '@odata.type': 'Microsoft.Dynamics.CRM.OptionSetMetadata' };
42
+ if (opts.displayName) {
43
+ updates.DisplayName = {
44
+ LocalizedLabels: [{ Label: opts.displayName, LanguageCode: 1033 }]
45
+ };
46
+ }
47
+ if (opts.description) {
48
+ updates.Description = {
49
+ LocalizedLabels: [{ Label: opts.description, LanguageCode: 1033 }]
50
+ };
51
+ }
52
+ const solution = opts.solution || POWERPLATFORM_DEFAULT_SOLUTION;
53
+ await service.updateGlobalOptionSet(opts.metadataId, updates, solution);
54
+ outputResult({ success: true, metadataId: opts.metadataId });
55
+ }
56
+ catch (error) {
57
+ handleCliError(error);
58
+ }
59
+ });
60
+ optionset
61
+ .command('add-value')
62
+ .description('Add a new value to a global option set')
63
+ .requiredOption('--option-set-name <name>', 'The name of the option set')
64
+ .requiredOption('--value <n>', 'The numeric value', parseInt)
65
+ .requiredOption('--label <label>', 'The display label for the value')
66
+ .option('--solution <name>', 'Solution unique name')
67
+ .action(async (opts) => {
68
+ try {
69
+ const service = ctx.pp;
70
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
71
+ const solution = opts.solution || POWERPLATFORM_DEFAULT_SOLUTION;
72
+ await service.addOptionSetValue(opts.optionSetName, opts.value, opts.label, solution);
73
+ outputResult({ success: true, optionSetName: opts.optionSetName, value: opts.value, label: opts.label });
74
+ }
75
+ catch (error) {
76
+ handleCliError(error);
77
+ }
78
+ });
79
+ optionset
80
+ .command('update-value')
81
+ .description('Update an existing value in a global option set')
82
+ .requiredOption('--option-set-name <name>', 'The name of the option set')
83
+ .requiredOption('--value <n>', 'The numeric value to update', parseInt)
84
+ .requiredOption('--label <label>', 'The new display label')
85
+ .option('--solution <name>', 'Solution unique name')
86
+ .action(async (opts) => {
87
+ try {
88
+ const service = ctx.pp;
89
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
90
+ const solution = opts.solution || POWERPLATFORM_DEFAULT_SOLUTION;
91
+ await service.updateOptionSetValue(opts.optionSetName, opts.value, opts.label, solution);
92
+ outputResult({ success: true, optionSetName: opts.optionSetName, value: opts.value, label: opts.label });
93
+ }
94
+ catch (error) {
95
+ handleCliError(error);
96
+ }
97
+ });
98
+ optionset
99
+ .command('delete-value')
100
+ .description('Delete a value from a global option set')
101
+ .requiredOption('--option-set-name <name>', 'The name of the option set')
102
+ .requiredOption('--value <n>', 'The numeric value to delete', parseInt)
103
+ .action(async (opts) => {
104
+ try {
105
+ const service = ctx.pp;
106
+ await service.deleteOptionSetValue(opts.optionSetName, opts.value);
107
+ outputResult({ success: true, optionSetName: opts.optionSetName, deletedValue: opts.value });
108
+ }
109
+ catch (error) {
110
+ handleCliError(error);
111
+ }
112
+ });
113
+ optionset
114
+ .command('reorder')
115
+ .description('Reorder the values in a global option set')
116
+ .requiredOption('--option-set-name <name>', 'The name of the option set')
117
+ .requiredOption('--values <json>', 'JSON array of values in desired order (e.g., [1,2,3])')
118
+ .option('--solution <name>', 'Solution unique name')
119
+ .action(async (opts) => {
120
+ try {
121
+ const service = ctx.pp;
122
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
123
+ const solution = opts.solution || POWERPLATFORM_DEFAULT_SOLUTION;
124
+ const values = JSON.parse(opts.values);
125
+ await service.reorderOptionSetValues(opts.optionSetName, values, solution);
126
+ outputResult({ success: true, optionSetName: opts.optionSetName, reorderedCount: values.length });
127
+ }
128
+ catch (error) {
129
+ handleCliError(error);
130
+ }
131
+ });
132
+ }
133
+ //# sourceMappingURL=optionset-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionset-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/optionset-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Plugin CLI commands: create-assembly, update-assembly, register-step, register-image,
3
+ * deploy, deploy-status, packages, deploy-pkg
4
+ */
5
+ import type { Command } from 'commander';
6
+ import type { ServiceContext } from '../../context-factory.js';
7
+ export declare function registerPluginCommands(program: Command, ctx: ServiceContext): void;
8
+ //# 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;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAySlF"}
@@ -0,0 +1,278 @@
1
+ import { outputResult, handleCliError } from '../output.js';
2
+ export function registerPluginCommands(program, ctx) {
3
+ const plugin = program.command('plugin').description('Plugin assembly and step operations');
4
+ plugin
5
+ .command('create-assembly')
6
+ .description('Upload a compiled plugin DLL to Dynamics 365')
7
+ .requiredOption('--assembly-path <path>', 'Local file path to compiled DLL')
8
+ .requiredOption('--assembly-name <name>', 'Friendly name for the assembly')
9
+ .option('--version <ver>', 'Version string (auto-extracted if omitted)')
10
+ .option('--isolation-mode <n>', 'Isolation mode: 2=Sandbox (default)', parseInt)
11
+ .option('--description <desc>', 'Assembly description')
12
+ .option('--solution <name>', 'Solution unique name')
13
+ .action(async (opts) => {
14
+ try {
15
+ const service = ctx.pp;
16
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
17
+ const fs = await import('fs/promises');
18
+ const normalizedPath = opts.assemblyPath.replace(/\\/g, '/');
19
+ const dllBuffer = await fs.readFile(normalizedPath);
20
+ const dllBase64 = dllBuffer.toString('base64');
21
+ const header = dllBuffer.toString('utf8', 0, 2);
22
+ if (header !== 'MZ') {
23
+ throw new Error('Invalid .NET assembly format (missing MZ header)');
24
+ }
25
+ const extractedVersion = opts.version || await service.extractAssemblyVersion(opts.assemblyPath);
26
+ const result = await service.createPluginAssembly({
27
+ name: opts.assemblyName,
28
+ content: dllBase64,
29
+ version: extractedVersion,
30
+ isolationMode: opts.isolationMode ?? 2,
31
+ description: opts.description,
32
+ solutionUniqueName: opts.solution || POWERPLATFORM_DEFAULT_SOLUTION,
33
+ });
34
+ outputResult(result);
35
+ }
36
+ catch (error) {
37
+ handleCliError(error);
38
+ }
39
+ });
40
+ plugin
41
+ .command('update-assembly')
42
+ .description('Update an existing plugin assembly with new compiled DLL')
43
+ .requiredOption('--assembly-id <guid>', 'Assembly ID (GUID)')
44
+ .requiredOption('--assembly-path <path>', 'Local file path to new compiled DLL')
45
+ .option('--version <ver>', 'Version string (auto-extracted if omitted)')
46
+ .option('--solution <name>', 'Solution context')
47
+ .action(async (opts) => {
48
+ try {
49
+ const service = ctx.pp;
50
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
51
+ const fs = await import('fs/promises');
52
+ const normalizedPath = opts.assemblyPath.replace(/\\/g, '/');
53
+ const dllBuffer = await fs.readFile(normalizedPath);
54
+ const dllBase64 = dllBuffer.toString('base64');
55
+ const extractedVersion = opts.version || await service.extractAssemblyVersion(opts.assemblyPath);
56
+ await service.updatePluginAssembly(opts.assemblyId, dllBase64, extractedVersion, opts.solution || POWERPLATFORM_DEFAULT_SOLUTION);
57
+ outputResult({ success: true, assemblyId: opts.assemblyId, version: extractedVersion });
58
+ }
59
+ catch (error) {
60
+ handleCliError(error);
61
+ }
62
+ });
63
+ plugin
64
+ .command('register-step')
65
+ .description('Register a plugin step on an SDK message')
66
+ .requiredOption('--assembly-name <name>', 'Assembly name')
67
+ .requiredOption('--plugin-type-name <name>', 'Full type name including namespace')
68
+ .requiredOption('--step-name <name>', 'Friendly step name')
69
+ .requiredOption('--message-name <name>', 'SDK message: Create, Update, Delete, etc.')
70
+ .requiredOption('--primary-entity <name>', 'Entity logical name')
71
+ .requiredOption('--stage <stage>', 'Execution stage: PreValidation, PreOperation, PostOperation')
72
+ .requiredOption('--execution-mode <mode>', 'Execution mode: Sync, Async')
73
+ .option('--rank <n>', 'Execution order (default: 1)', parseInt)
74
+ .option('--filtering-attributes <attrs>', 'Comma-separated fields to monitor for Update message')
75
+ .option('--configuration <json>', 'Secure/unsecure config JSON')
76
+ .option('--solution <name>', 'Solution unique name')
77
+ .action(async (opts) => {
78
+ try {
79
+ const service = ctx.pp;
80
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
81
+ const pluginTypeId = await service.queryPluginTypeByTypename(opts.pluginTypeName);
82
+ const stageMap = {
83
+ PreValidation: 10, PreOperation: 20, PostOperation: 40
84
+ };
85
+ const modeMap = { Sync: 0, Async: 1 };
86
+ const result = await service.registerPluginStep({
87
+ pluginTypeId,
88
+ name: opts.stepName,
89
+ messageName: opts.messageName,
90
+ primaryEntityName: opts.primaryEntity,
91
+ stage: stageMap[opts.stage],
92
+ executionMode: modeMap[opts.executionMode],
93
+ rank: opts.rank ?? 1,
94
+ filteringAttributes: opts.filteringAttributes || undefined,
95
+ configuration: opts.configuration,
96
+ solutionUniqueName: opts.solution || POWERPLATFORM_DEFAULT_SOLUTION,
97
+ });
98
+ outputResult(result);
99
+ }
100
+ catch (error) {
101
+ handleCliError(error);
102
+ }
103
+ });
104
+ plugin
105
+ .command('register-image')
106
+ .description('Add a pre/post image to a plugin step')
107
+ .requiredOption('--step-id <guid>', 'Plugin step ID')
108
+ .requiredOption('--image-name <name>', 'Image name (e.g., PreImage, PostImage)')
109
+ .requiredOption('--image-type <type>', 'Image type: PreImage, PostImage, Both')
110
+ .requiredOption('--entity-alias <alias>', 'Alias for code access (e.g., target, preimage)')
111
+ .option('--attributes <attrs>', 'Comma-separated attributes to include (empty = all)')
112
+ .option('--message-property-name <name>', 'Message property (default: Target)')
113
+ .action(async (opts) => {
114
+ try {
115
+ const service = ctx.pp;
116
+ const imageTypeMap = { PreImage: 0, PostImage: 1, Both: 2 };
117
+ const result = await service.registerPluginImage({
118
+ stepId: opts.stepId,
119
+ name: opts.imageName,
120
+ imageType: imageTypeMap[opts.imageType],
121
+ entityAlias: opts.entityAlias,
122
+ attributes: opts.attributes || undefined,
123
+ messagePropertyName: opts.messagePropertyName || 'Target',
124
+ });
125
+ outputResult(result);
126
+ }
127
+ catch (error) {
128
+ handleCliError(error);
129
+ }
130
+ });
131
+ plugin
132
+ .command('deploy')
133
+ .description('End-to-end plugin deployment: upload DLL, register steps, configure images, publish')
134
+ .requiredOption('--assembly-path <path>', 'Local file path to compiled DLL')
135
+ .requiredOption('--assembly-name <name>', 'Assembly name')
136
+ .option('--step-configurations <json>', 'JSON array of step configurations')
137
+ .option('--solution <name>', 'Solution unique name')
138
+ .option('--replace-existing', 'Update existing assembly vs. create new', false)
139
+ .action(async (opts) => {
140
+ try {
141
+ const service = ctx.pp;
142
+ const POWERPLATFORM_DEFAULT_SOLUTION = process.env.POWERPLATFORM_DEFAULT_SOLUTION || "";
143
+ const fs = await import('fs/promises');
144
+ const normalizedPath = opts.assemblyPath.replace(/\\/g, '/');
145
+ const dllBuffer = await fs.readFile(normalizedPath);
146
+ const dllBase64 = dllBuffer.toString('base64');
147
+ const version = await service.extractAssemblyVersion(opts.assemblyPath);
148
+ const stepConfigurations = opts.stepConfigurations
149
+ ? JSON.parse(opts.stepConfigurations) : undefined;
150
+ const existingAssemblyId = await service.queryPluginAssemblyByName(opts.assemblyName);
151
+ let assemblyResult;
152
+ if (existingAssemblyId) {
153
+ await service.updatePluginAssembly(existingAssemblyId, dllBase64, version, opts.solution || POWERPLATFORM_DEFAULT_SOLUTION);
154
+ assemblyResult = { action: 'updated', assemblyId: existingAssemblyId };
155
+ }
156
+ else {
157
+ const uploadResult = await service.createPluginAssembly({
158
+ name: opts.assemblyName,
159
+ content: dllBase64,
160
+ version,
161
+ solutionUniqueName: opts.solution || POWERPLATFORM_DEFAULT_SOLUTION,
162
+ });
163
+ assemblyResult = { action: 'created', assemblyId: uploadResult.pluginAssemblyId };
164
+ }
165
+ if (stepConfigurations) {
166
+ const stageMap = {
167
+ PreValidation: 10, PreOperation: 20, PostOperation: 40
168
+ };
169
+ const modeMap = { Sync: 0, Async: 1 };
170
+ for (const stepConfig of stepConfigurations) {
171
+ const pluginTypeId = await service.queryPluginTypeByTypename(stepConfig.pluginTypeName);
172
+ const stepResult = await service.registerPluginStep({
173
+ pluginTypeId,
174
+ name: stepConfig.stepName,
175
+ messageName: stepConfig.messageName,
176
+ primaryEntityName: stepConfig.primaryEntity,
177
+ stage: stageMap[stepConfig.stage],
178
+ executionMode: modeMap[stepConfig.executionMode],
179
+ rank: stepConfig.rank ?? 1,
180
+ filteringAttributes: stepConfig.filteringAttributes?.join(','),
181
+ solutionUniqueName: opts.solution || POWERPLATFORM_DEFAULT_SOLUTION,
182
+ });
183
+ if (stepConfig.preImage) {
184
+ await service.registerPluginImage({
185
+ stepId: stepResult.stepId,
186
+ name: stepConfig.preImage.name,
187
+ imageType: 0,
188
+ entityAlias: stepConfig.preImage.alias,
189
+ attributes: stepConfig.preImage.attributes?.join(','),
190
+ });
191
+ }
192
+ if (stepConfig.postImage) {
193
+ await service.registerPluginImage({
194
+ stepId: stepResult.stepId,
195
+ name: stepConfig.postImage.name,
196
+ imageType: 1,
197
+ entityAlias: stepConfig.postImage.alias,
198
+ attributes: stepConfig.postImage.attributes?.join(','),
199
+ });
200
+ }
201
+ }
202
+ }
203
+ await service.publishAllCustomizations();
204
+ outputResult({ ...assemblyResult, version, published: true });
205
+ }
206
+ catch (error) {
207
+ handleCliError(error);
208
+ }
209
+ });
210
+ plugin
211
+ .command('deploy-status')
212
+ .description('Get deployment status of a plugin assembly')
213
+ .requiredOption('--assembly-name <name>', 'Name of the plugin assembly to check')
214
+ .option('--include-disabled', 'Include disabled steps', false)
215
+ .action(async (opts) => {
216
+ try {
217
+ const service = ctx.pp;
218
+ const assemblyId = await service.queryPluginAssemblyByName(opts.assemblyName);
219
+ if (!assemblyId) {
220
+ outputResult({ found: false, message: `Assembly '${opts.assemblyName}' not found` });
221
+ return;
222
+ }
223
+ const result = await service.getPluginAssemblyComplete(opts.assemblyName, opts.includeDisabled || false);
224
+ outputResult(result);
225
+ }
226
+ catch (error) {
227
+ handleCliError(error);
228
+ }
229
+ });
230
+ plugin
231
+ .command('packages')
232
+ .description('List NuGet-based plugin packages deployed in the environment')
233
+ .option('--include-managed', 'Include managed packages', false)
234
+ .option('--max-records <n>', 'Maximum records to return (default: 100)', parseInt)
235
+ .action(async (opts) => {
236
+ try {
237
+ const service = ctx.pp;
238
+ const packages = await service.getPluginPackages(opts.includeManaged, opts.maxRecords);
239
+ outputResult(packages);
240
+ }
241
+ catch (error) {
242
+ handleCliError(error);
243
+ }
244
+ });
245
+ plugin
246
+ .command('deploy-pkg')
247
+ .description('Deploy a NuGet plugin package (.nupkg) to Dataverse')
248
+ .requiredOption('--package-path <path>', 'Local file path to the .nupkg file')
249
+ .option('--unique-name <name>', 'Unique name for the package (defaults to filename)')
250
+ .option('--version <ver>', 'Package version (default: 1.0.0.0)')
251
+ .option('--solution <name>', 'Solution to add the package to')
252
+ .action(async (opts) => {
253
+ try {
254
+ const service = ctx.pp;
255
+ const fs = await import('fs/promises');
256
+ const path = await import('path');
257
+ const normalizedPath = opts.packagePath.replace(/\\/g, '/');
258
+ const buffer = await fs.readFile(normalizedPath);
259
+ if (buffer.length < 4 || buffer[0] !== 0x50 || buffer[1] !== 0x4B) {
260
+ throw new Error('Invalid .nupkg file (not a valid zip/NuGet package)');
261
+ }
262
+ const content = buffer.toString('base64');
263
+ const resolvedName = opts.uniqueName || path.basename(normalizedPath).replace(/\.nupkg$/i, '');
264
+ const resolvedVersion = opts.version || '1.0.0.0';
265
+ const result = await service.deployPluginPackage({
266
+ content,
267
+ uniqueName: resolvedName,
268
+ version: resolvedVersion,
269
+ solutionUniqueName: opts.solution || undefined,
270
+ });
271
+ outputResult(result);
272
+ }
273
+ catch (error) {
274
+ handleCliError(error);
275
+ }
276
+ });
277
+ }
278
+ //# 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
+ * Relationship CLI commands: create-o2m, create-m2m, delete, update
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../context-factory.js';
6
+ export declare function registerRelationshipCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=relationship-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/relationship-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAsGxF"}