@copado/agentia-cli 0.5.0-alpha.0 → 0.7.0-alpha.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 (177) hide show
  1. package/README.md +1106 -83
  2. package/dist/commands/auth/get.d.ts +23 -0
  3. package/dist/commands/auth/get.js +73 -0
  4. package/dist/commands/auth/get.js.map +1 -0
  5. package/dist/commands/auth/set.d.ts +21 -0
  6. package/dist/commands/auth/set.js +113 -0
  7. package/dist/commands/auth/set.js.map +1 -0
  8. package/dist/commands/environment/auth/status.d.ts +13 -0
  9. package/dist/commands/environment/auth/status.js +36 -0
  10. package/dist/commands/environment/auth/status.js.map +1 -0
  11. package/dist/commands/environment/auth/web/login.d.ts +15 -0
  12. package/dist/commands/environment/auth/web/login.js +55 -0
  13. package/dist/commands/environment/auth/web/login.js.map +1 -0
  14. package/dist/commands/environment/create.d.ts +22 -0
  15. package/dist/commands/environment/create.js +41 -0
  16. package/dist/commands/environment/create.js.map +1 -0
  17. package/dist/commands/environment/get.d.ts +10 -0
  18. package/dist/commands/environment/get.js +30 -0
  19. package/dist/commands/environment/get.js.map +1 -0
  20. package/dist/commands/environment/list.d.ts +17 -0
  21. package/dist/commands/environment/list.js +69 -0
  22. package/dist/commands/environment/list.js.map +1 -0
  23. package/dist/commands/environment/update.d.ts +23 -0
  24. package/dist/commands/environment/update.js +70 -0
  25. package/dist/commands/environment/update.js.map +1 -0
  26. package/dist/commands/job/get.d.ts +14 -0
  27. package/dist/commands/job/get.js +33 -0
  28. package/dist/commands/job/get.js.map +1 -0
  29. package/dist/commands/job/kill.d.ts +14 -0
  30. package/dist/commands/job/kill.js +34 -0
  31. package/dist/commands/job/kill.js.map +1 -0
  32. package/dist/commands/job/list.d.ts +18 -0
  33. package/dist/commands/job/list.js +68 -0
  34. package/dist/commands/job/list.js.map +1 -0
  35. package/dist/commands/job/pause.d.ts +14 -0
  36. package/dist/commands/job/pause.js +34 -0
  37. package/dist/commands/job/pause.js.map +1 -0
  38. package/dist/commands/job/resume.d.ts +14 -0
  39. package/dist/commands/job/resume.js +34 -0
  40. package/dist/commands/job/resume.js.map +1 -0
  41. package/dist/commands/job/run.d.ts +15 -0
  42. package/dist/commands/job/run.js +40 -0
  43. package/dist/commands/job/run.js.map +1 -0
  44. package/dist/commands/mcp/start.d.ts +7 -0
  45. package/dist/commands/mcp/start.js +15 -0
  46. package/dist/commands/mcp/start.js.map +1 -0
  47. package/dist/commands/metadata/content/compare.d.ts +40 -0
  48. package/dist/commands/metadata/content/compare.js +127 -0
  49. package/dist/commands/metadata/content/compare.js.map +1 -0
  50. package/dist/commands/metadata/content/get.d.ts +39 -0
  51. package/dist/commands/metadata/content/get.js +158 -0
  52. package/dist/commands/metadata/content/get.js.map +1 -0
  53. package/dist/commands/metadata/dependency/list.d.ts +49 -0
  54. package/dist/commands/metadata/dependency/list.js +216 -0
  55. package/dist/commands/metadata/dependency/list.js.map +1 -0
  56. package/dist/commands/metadata/index/compare.d.ts +34 -0
  57. package/dist/commands/metadata/index/compare.js +100 -0
  58. package/dist/commands/metadata/index/compare.js.map +1 -0
  59. package/dist/commands/metadata/list.d.ts +56 -0
  60. package/dist/commands/metadata/list.js +133 -0
  61. package/dist/commands/metadata/list.js.map +1 -0
  62. package/dist/commands/metadata/refresh/deleted.d.ts +15 -0
  63. package/dist/commands/metadata/refresh/deleted.js +55 -0
  64. package/dist/commands/metadata/refresh/deleted.js.map +1 -0
  65. package/dist/commands/metadata/refresh/run.d.ts +23 -0
  66. package/dist/commands/metadata/refresh/run.js +95 -0
  67. package/dist/commands/metadata/refresh/run.js.map +1 -0
  68. package/dist/commands/metadata/refresh/status.d.ts +14 -0
  69. package/dist/commands/metadata/refresh/status.js +49 -0
  70. package/dist/commands/metadata/refresh/status.js.map +1 -0
  71. package/dist/commands/pipeline/connection/list.d.ts +12 -0
  72. package/dist/commands/pipeline/connection/list.js +39 -0
  73. package/dist/commands/pipeline/connection/list.js.map +1 -0
  74. package/dist/commands/pipeline/get.d.ts +14 -0
  75. package/dist/commands/pipeline/get.js +33 -0
  76. package/dist/commands/pipeline/get.js.map +1 -0
  77. package/dist/commands/pipeline/list.d.ts +11 -0
  78. package/dist/commands/pipeline/list.js +30 -0
  79. package/dist/commands/pipeline/list.js.map +1 -0
  80. package/dist/commands/project/default/get.d.ts +21 -0
  81. package/dist/commands/project/default/get.js +44 -0
  82. package/dist/commands/project/default/get.js.map +1 -0
  83. package/dist/commands/project/default/set.d.ts +21 -0
  84. package/dist/commands/project/default/set.js +55 -0
  85. package/dist/commands/project/default/set.js.map +1 -0
  86. package/dist/commands/project/default/unset.d.ts +21 -0
  87. package/dist/commands/project/default/unset.js +45 -0
  88. package/dist/commands/project/default/unset.js.map +1 -0
  89. package/dist/index.d.ts +1 -0
  90. package/dist/index.js +2 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/lib/agentia-command.d.ts +7 -0
  93. package/dist/lib/agentia-command.js +28 -0
  94. package/dist/lib/agentia-command.js.map +1 -0
  95. package/dist/lib/agentia-oauth-error-codes.d.ts +17 -0
  96. package/dist/lib/agentia-oauth-error-codes.js +30 -0
  97. package/dist/lib/agentia-oauth-error-codes.js.map +1 -0
  98. package/dist/lib/assert.d.ts +1 -0
  99. package/dist/lib/assert.js +7 -0
  100. package/dist/lib/assert.js.map +1 -0
  101. package/dist/lib/cicd-gateway.d.ts +57 -0
  102. package/dist/lib/cicd-gateway.js +221 -0
  103. package/dist/lib/cicd-gateway.js.map +1 -0
  104. package/dist/lib/cicd-region.d.ts +4 -0
  105. package/dist/lib/cicd-region.js +8 -0
  106. package/dist/lib/cicd-region.js.map +1 -0
  107. package/dist/lib/credential-store.d.ts +18 -0
  108. package/dist/lib/credential-store.js +43 -0
  109. package/dist/lib/credential-store.js.map +1 -0
  110. package/dist/lib/defaults-store.d.ts +12 -0
  111. package/dist/lib/defaults-store.js +142 -0
  112. package/dist/lib/defaults-store.js.map +1 -0
  113. package/dist/lib/dependency-from-changes.d.ts +6 -0
  114. package/dist/lib/dependency-from-changes.js +97 -0
  115. package/dist/lib/dependency-from-changes.js.map +1 -0
  116. package/dist/lib/environment-auth-status.d.ts +18 -0
  117. package/dist/lib/environment-auth-status.js +74 -0
  118. package/dist/lib/environment-auth-status.js.map +1 -0
  119. package/dist/lib/environment-auth.d.ts +26 -0
  120. package/dist/lib/environment-auth.js +150 -0
  121. package/dist/lib/environment-auth.js.map +1 -0
  122. package/dist/lib/environment-credential-selection.d.ts +14 -0
  123. package/dist/lib/environment-credential-selection.js +60 -0
  124. package/dist/lib/environment-credential-selection.js.map +1 -0
  125. package/dist/lib/environment-flags.d.ts +81 -0
  126. package/dist/lib/environment-flags.js +134 -0
  127. package/dist/lib/environment-flags.js.map +1 -0
  128. package/dist/lib/environment-types.d.ts +84 -0
  129. package/dist/lib/environment-types.js +52 -0
  130. package/dist/lib/environment-types.js.map +1 -0
  131. package/dist/lib/format.d.ts +5 -0
  132. package/dist/lib/format.js +8 -0
  133. package/dist/lib/format.js.map +1 -0
  134. package/dist/lib/job-types.d.ts +85 -0
  135. package/dist/lib/job-types.js +115 -0
  136. package/dist/lib/job-types.js.map +1 -0
  137. package/dist/lib/loopback-callback-server.d.ts +35 -0
  138. package/dist/lib/loopback-callback-server.js +162 -0
  139. package/dist/lib/loopback-callback-server.js.map +1 -0
  140. package/dist/lib/mcp/redaction.d.ts +2 -0
  141. package/dist/lib/mcp/redaction.js +24 -0
  142. package/dist/lib/mcp/redaction.js.map +1 -0
  143. package/dist/lib/mcp/result.d.ts +37 -0
  144. package/dist/lib/mcp/result.js +39 -0
  145. package/dist/lib/mcp/result.js.map +1 -0
  146. package/dist/lib/mcp/server.d.ts +5 -0
  147. package/dist/lib/mcp/server.js +24 -0
  148. package/dist/lib/mcp/server.js.map +1 -0
  149. package/dist/lib/mcp/tools.d.ts +235 -0
  150. package/dist/lib/mcp/tools.js +683 -0
  151. package/dist/lib/mcp/tools.js.map +1 -0
  152. package/dist/lib/metadata-common.d.ts +159 -0
  153. package/dist/lib/metadata-common.js +234 -0
  154. package/dist/lib/metadata-common.js.map +1 -0
  155. package/dist/lib/metadata-refresh.d.ts +68 -0
  156. package/dist/lib/metadata-refresh.js +104 -0
  157. package/dist/lib/metadata-refresh.js.map +1 -0
  158. package/dist/lib/open-browser.d.ts +8 -0
  159. package/dist/lib/open-browser.js +40 -0
  160. package/dist/lib/open-browser.js.map +1 -0
  161. package/dist/lib/pipeline-flags.d.ts +10 -0
  162. package/dist/lib/pipeline-flags.js +18 -0
  163. package/dist/lib/pipeline-flags.js.map +1 -0
  164. package/dist/lib/pipeline-types.d.ts +84 -0
  165. package/dist/lib/pipeline-types.js +67 -0
  166. package/dist/lib/pipeline-types.js.map +1 -0
  167. package/dist/lib/project-default-flags.d.ts +41 -0
  168. package/dist/lib/project-default-flags.js +82 -0
  169. package/dist/lib/project-default-flags.js.map +1 -0
  170. package/dist/lib/project-defaults.d.ts +23 -0
  171. package/dist/lib/project-defaults.js +51 -0
  172. package/dist/lib/project-defaults.js.map +1 -0
  173. package/dist/lib/user-context-types.d.ts +12 -0
  174. package/dist/lib/user-context-types.js +2 -0
  175. package/dist/lib/user-context-types.js.map +1 -0
  176. package/oclif.manifest.json +2315 -2
  177. package/package.json +5 -2
@@ -0,0 +1,127 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
3
+ import { CicdGateway } from '../../../lib/cicd-gateway.js';
4
+ import { assertRequired, CONTENT_SOURCES, contentResultToCompareSide, createUnifiedDiff, sourceSideLabel, } from '../../../lib/metadata-common.js';
5
+ export function buildMetadataCompareFileRequests(flags) {
6
+ const pipelineId = assertRequired(flags['pipeline-id'], '--pipeline-id');
7
+ const sourceOrgId = assertRequired(flags['source-org-id'], '--source-org-id');
8
+ const sourceCredentialId = assertRequired(flags['source-credential-id'], '--source-credential-id');
9
+ const targetOrgId = assertRequired(flags['target-org-id'], '--target-org-id');
10
+ const metadataType = assertRequired(flags['metadata-type'], '--metadata-type');
11
+ const apiName = assertRequired(flags['api-name'], '--api-name');
12
+ const sourceRequest = {
13
+ apiName,
14
+ branch: flags['source-branch'] ?? '',
15
+ metadataType,
16
+ pipelineId,
17
+ source: flags.source,
18
+ sourceCredentialId,
19
+ sourceOrgId,
20
+ };
21
+ const targetRequest = {
22
+ apiName,
23
+ branch: flags['target-branch'] ?? '',
24
+ metadataType,
25
+ pipelineId,
26
+ source: flags['target-source'],
27
+ sourceCredentialId: flags['target-credential-id'] || sourceCredentialId,
28
+ sourceOrgId: targetOrgId,
29
+ };
30
+ if (flags['file-name']) {
31
+ sourceRequest.fileName = flags['file-name'];
32
+ targetRequest.fileName = flags['file-name'];
33
+ }
34
+ return { sourceRequest, targetRequest };
35
+ }
36
+ export default class MetadataCompareFile extends AgentiaCommand {
37
+ static description = 'Compare metadata file content between two orgs or Git branches';
38
+ static examples = [
39
+ '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --pipeline-id <id> --source-org-id <id> --source-credential-id <id> --target-org-id <id>',
40
+ '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --source REPOSITORY --source-branch feature/us-123 --target-source REPOSITORY --target-branch main',
41
+ '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --json',
42
+ ];
43
+ static flags = {
44
+ 'api-name': Flags.string({
45
+ description: 'Metadata API name',
46
+ required: true,
47
+ }),
48
+ 'file-name': Flags.string({
49
+ description: 'Optional metadata file name',
50
+ }),
51
+ 'metadata-type': Flags.string({
52
+ description: 'Metadata type, for example ApexClass',
53
+ required: true,
54
+ }),
55
+ 'pipeline-id': Flags.string({
56
+ description: 'Pipeline Id',
57
+ }),
58
+ source: Flags.string({
59
+ default: 'ENVIRONMENT',
60
+ description: 'Content source for the source side',
61
+ options: [...CONTENT_SOURCES],
62
+ }),
63
+ 'source-branch': Flags.string({
64
+ default: '',
65
+ description: 'Git branch for the source side when source is REPOSITORY or GIT_MIRROR',
66
+ }),
67
+ 'source-credential-id': Flags.string({
68
+ description: 'Source org credential Id',
69
+ }),
70
+ 'source-org-id': Flags.string({
71
+ description: 'Source org Id',
72
+ }),
73
+ 'target-branch': Flags.string({
74
+ default: '',
75
+ description: 'Git branch for the target side when target source is REPOSITORY or GIT_MIRROR',
76
+ }),
77
+ 'target-credential-id': Flags.string({
78
+ description: 'Target org credential Id; defaults to the source credential',
79
+ }),
80
+ 'target-org-id': Flags.string({
81
+ description: 'Target org Id',
82
+ }),
83
+ 'target-source': Flags.string({
84
+ default: 'ENVIRONMENT',
85
+ description: 'Content source for the target side',
86
+ options: [...CONTENT_SOURCES],
87
+ }),
88
+ };
89
+ async run() {
90
+ const { flags } = await this.parse(MetadataCompareFile);
91
+ const compareFlags = flags;
92
+ const { sourceRequest, targetRequest } = buildMetadataCompareFileRequests(compareFlags);
93
+ const result = await this.withSpinner('Fetching metadata content for comparison', () => CicdGateway.call({
94
+ body: [sourceRequest, targetRequest],
95
+ endpoint: '/release/metadata/content',
96
+ headers: { 'Content-Type': 'application/json' },
97
+ method: 'POST',
98
+ }));
99
+ const rows = Array.isArray(result) ? result : [];
100
+ const source = contentResultToCompareSide(rows[0], sourceRequest);
101
+ const target = contentResultToCompareSide(rows[1] ?? rows[0], targetRequest);
102
+ const leftLabel = sourceSideLabel(source, 'source');
103
+ const rightLabel = sourceSideLabel(target, 'target');
104
+ const diff = createUnifiedDiff(leftLabel, rightLabel, source.content, target.content);
105
+ const response = {
106
+ apiName: sourceRequest.apiName,
107
+ diff,
108
+ identical: diff === '',
109
+ metadataType: sourceRequest.metadataType,
110
+ source,
111
+ target,
112
+ };
113
+ this.display(() => {
114
+ this.log('Metadata file diff');
115
+ this.log(`${sourceRequest.metadataType}/${sourceRequest.apiName}`);
116
+ this.log(`Source: ${leftLabel}`);
117
+ this.log(`Target: ${rightLabel}`);
118
+ if (response.identical) {
119
+ this.log('Files are identical.');
120
+ return;
121
+ }
122
+ process.stdout.write(`${response.diff}\n`);
123
+ });
124
+ return response;
125
+ }
126
+ }
127
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../src/commands/metadata/content/compare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { type ContentSource, type MetadataContentRequest, type MetadataContentResult } from '../../../lib/metadata-common.js';
3
+ type ContentFlags = {
4
+ 'api-name'?: string;
5
+ branch?: string;
6
+ file?: string;
7
+ 'file-name'?: string;
8
+ 'metadata-type'?: string;
9
+ 'output-file'?: string;
10
+ 'pipeline-id'?: string;
11
+ 'result-id'?: string;
12
+ show: boolean;
13
+ source: ContentSource;
14
+ 'source-credential-id'?: string;
15
+ 'source-org-id'?: string;
16
+ };
17
+ export declare function buildMetadataContentRequest(flags: ContentFlags): MetadataContentRequest;
18
+ export declare function buildMetadataContentRequests(flags: ContentFlags): MetadataContentRequest[];
19
+ export default class MetadataContent extends AgentiaCommand {
20
+ static description: string;
21
+ static examples: string[];
22
+ static flags: {
23
+ 'api-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
+ branch: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
26
+ 'file-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
27
+ 'metadata-type': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
28
+ 'output-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
29
+ 'pipeline-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
30
+ 'result-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
31
+ show: import("@oclif/core/interfaces").BooleanFlag<boolean>;
32
+ source: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
33
+ 'source-credential-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
34
+ 'source-org-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
35
+ };
36
+ run(): Promise<MetadataContentResult[]>;
37
+ private printContent;
38
+ }
39
+ export {};
@@ -0,0 +1,158 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { readFileSync, writeFileSync } from 'node:fs';
3
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
4
+ import { CicdGateway } from '../../../lib/cicd-gateway.js';
5
+ import { assertRequired, CONTENT_SOURCES, decodeBase64, formatContentTable, normalizeContentRows, } from '../../../lib/metadata-common.js';
6
+ const FILE_EXCLUSIVE_FLAGS = [
7
+ 'api-name',
8
+ 'file-name',
9
+ 'metadata-type',
10
+ 'pipeline-id',
11
+ 'result-id',
12
+ 'source-credential-id',
13
+ 'source-org-id',
14
+ ];
15
+ function readJsonArrayFile(path) {
16
+ let parsed;
17
+ try {
18
+ parsed = JSON.parse(readFileSync(path, 'utf8'));
19
+ }
20
+ catch (error) {
21
+ const message = error instanceof Error ? error.message : String(error);
22
+ throw new Error(`Invalid JSON: ${message}`);
23
+ }
24
+ if (!Array.isArray(parsed)) {
25
+ throw new TypeError('Request file must contain a JSON array of metadata content requests.');
26
+ }
27
+ return parsed;
28
+ }
29
+ export function buildMetadataContentRequest(flags) {
30
+ const body = {
31
+ apiName: assertRequired(flags['api-name'], '--api-name'),
32
+ metadataType: assertRequired(flags['metadata-type'], '--metadata-type'),
33
+ pipelineId: assertRequired(flags['pipeline-id'], '--pipeline-id'),
34
+ source: flags.source,
35
+ sourceOrgId: assertRequired(flags['source-org-id'], '--source-org-id'),
36
+ };
37
+ if (flags.branch) {
38
+ body.branch = flags.branch;
39
+ }
40
+ if (flags['source-credential-id']) {
41
+ body.sourceCredentialId = flags['source-credential-id'];
42
+ }
43
+ if (flags['file-name']) {
44
+ body.fileName = flags['file-name'];
45
+ }
46
+ if (flags['result-id']) {
47
+ body.resultId = flags['result-id'];
48
+ }
49
+ return body;
50
+ }
51
+ export function buildMetadataContentRequests(flags) {
52
+ if (flags.file) {
53
+ const conflictingFlag = FILE_EXCLUSIVE_FLAGS.find((flag) => flags[flag] !== undefined);
54
+ if (conflictingFlag) {
55
+ throw new Error(`--file cannot be used with --${conflictingFlag}.`);
56
+ }
57
+ return readJsonArrayFile(flags.file);
58
+ }
59
+ return [buildMetadataContentRequest(flags)];
60
+ }
61
+ export default class MetadataContent extends AgentiaCommand {
62
+ static description = 'Retrieve metadata file content via the CICD gateway';
63
+ static examples = [
64
+ '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --pipeline-id <id> --source-org-id <id>',
65
+ '<%= config.bin %> <%= command.id %> --metadata-type ApexClass --api-name MyClass --show',
66
+ '<%= config.bin %> <%= command.id %> --file requests.json --json',
67
+ ];
68
+ static flags = {
69
+ 'api-name': Flags.string({
70
+ description: 'Metadata API name',
71
+ }),
72
+ branch: Flags.string({
73
+ description: 'Git branch when source is REPOSITORY or GIT_MIRROR',
74
+ }),
75
+ file: Flags.string({
76
+ description: 'Path to a JSON file with an array of metadata content requests',
77
+ }),
78
+ 'file-name': Flags.string({
79
+ description: 'Optional metadata file name',
80
+ }),
81
+ 'metadata-type': Flags.string({
82
+ description: 'Metadata type, for example ApexClass',
83
+ }),
84
+ 'output-file': Flags.string({
85
+ description: 'Write decoded content from the first result to this file path',
86
+ }),
87
+ 'pipeline-id': Flags.string({
88
+ description: 'Pipeline Id',
89
+ }),
90
+ 'result-id': Flags.string({
91
+ description: 'Optional result Id from a prior metadata operation',
92
+ }),
93
+ show: Flags.boolean({
94
+ default: false,
95
+ description: 'Print decoded metadata content to stdout after retrieval',
96
+ }),
97
+ source: Flags.string({
98
+ default: 'ENVIRONMENT',
99
+ description: 'Content source',
100
+ options: [...CONTENT_SOURCES],
101
+ }),
102
+ 'source-credential-id': Flags.string({
103
+ description: 'Source org credential Id',
104
+ }),
105
+ 'source-org-id': Flags.string({
106
+ description: 'Source org Id',
107
+ }),
108
+ };
109
+ async run() {
110
+ const { flags } = await this.parse(MetadataContent);
111
+ const contentFlags = flags;
112
+ const body = buildMetadataContentRequests(contentFlags);
113
+ const result = await this.withSpinner('Fetching metadata content', () => CicdGateway.call({
114
+ body,
115
+ endpoint: '/release/metadata/content',
116
+ headers: { 'Content-Type': 'application/json' },
117
+ method: 'POST',
118
+ }));
119
+ const rows = Array.isArray(result) ? result : [];
120
+ if (contentFlags['output-file'] && rows.length > 0) {
121
+ writeFileSync(contentFlags['output-file'], decodeBase64(rows[0].contentBase64));
122
+ this.display(() => {
123
+ this.log(`Wrote metadata content to ${contentFlags['output-file']}.`);
124
+ });
125
+ }
126
+ this.display(() => {
127
+ if (contentFlags.show) {
128
+ this.printContent(rows);
129
+ return;
130
+ }
131
+ const tableRows = normalizeContentRows(rows);
132
+ if (tableRows.length === 0) {
133
+ this.log('No metadata content was returned.');
134
+ return;
135
+ }
136
+ this.log('Metadata content');
137
+ this.log(formatContentTable(tableRows));
138
+ });
139
+ return rows;
140
+ }
141
+ printContent(rows) {
142
+ if (rows.length === 0) {
143
+ this.log('No metadata content was returned.');
144
+ return;
145
+ }
146
+ for (const [index, row] of rows.entries()) {
147
+ if (rows.length > 1) {
148
+ this.log(row.metadataPath || `${row.metadataType}/${row.apiName}`);
149
+ }
150
+ const content = decodeBase64(row.contentBase64).toString('utf8');
151
+ process.stdout.write(content);
152
+ if (!content.endsWith('\n') && index < rows.length - 1) {
153
+ process.stdout.write('\n');
154
+ }
155
+ }
156
+ }
157
+ }
158
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/metadata/content/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { type DependencyRequest, type DependencyResult, type ModuleType, type RetrieveMode } from '../../../lib/metadata-common.js';
3
+ type DependencyFlags = {
4
+ 'base-ref': string;
5
+ file?: string;
6
+ 'from-changes': boolean;
7
+ 'metadata-category'?: string;
8
+ 'metadata-name'?: string;
9
+ 'metadata-raw-json'?: string;
10
+ 'metadata-type'?: string;
11
+ 'module-type'?: ModuleType;
12
+ 'pipeline-id'?: string;
13
+ 'platform-experience'?: string;
14
+ 'result-id'?: string;
15
+ 'retrieve-mode'?: RetrieveMode;
16
+ 'source-credential-id'?: string;
17
+ 'source-org-id'?: string;
18
+ stdin: boolean;
19
+ 'target-org-id'?: string;
20
+ };
21
+ type RequestWithPlatform = {
22
+ body: DependencyRequest;
23
+ platformExperience?: string;
24
+ };
25
+ export declare function buildDependencyRequest(flags: DependencyFlags): Promise<RequestWithPlatform>;
26
+ export default class DependencyGet extends AgentiaCommand {
27
+ static description: string;
28
+ static examples: string[];
29
+ static flags: {
30
+ 'base-ref': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
31
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
32
+ 'from-changes': import("@oclif/core/interfaces").BooleanFlag<boolean>;
33
+ 'metadata-category': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
34
+ 'metadata-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
35
+ 'metadata-raw-json': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
36
+ 'metadata-type': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
37
+ 'module-type': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
38
+ 'pipeline-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
39
+ 'platform-experience': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
40
+ 'result-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
41
+ 'retrieve-mode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
42
+ 'source-credential-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
43
+ 'source-org-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
44
+ stdin: import("@oclif/core/interfaces").BooleanFlag<boolean>;
45
+ 'target-org-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
46
+ };
47
+ run(): Promise<DependencyResult>;
48
+ }
49
+ export {};
@@ -0,0 +1,216 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { readFileSync } from 'node:fs';
3
+ import { AgentiaCommand } from '../../../lib/agentia-command.js';
4
+ import { assertRequired } from '../../../lib/assert.js';
5
+ import { CicdGateway } from '../../../lib/cicd-gateway.js';
6
+ import { selectionsFromChangedFiles } from '../../../lib/dependency-from-changes.js';
7
+ import { formatDependencyTable, MODULE_TYPES, normalizeDependencyItem, normalizeDependencySelection, parseJsonValue, PLATFORM_EXPERIENCES, RETRIEVE_MODES, } from '../../../lib/metadata-common.js';
8
+ function readStdin() {
9
+ return new Promise((resolve, reject) => {
10
+ let data = '';
11
+ process.stdin.setEncoding('utf8');
12
+ process.stdin.on('data', (chunk) => {
13
+ data += chunk;
14
+ });
15
+ process.stdin.on('end', () => resolve(data));
16
+ process.stdin.on('error', reject);
17
+ });
18
+ }
19
+ function normalizeObjectKeys(value) {
20
+ if (Array.isArray(value)) {
21
+ return value.map((item) => normalizeObjectKeys(item));
22
+ }
23
+ if (value && typeof value === 'object') {
24
+ const output = {};
25
+ for (const [key, child] of Object.entries(value)) {
26
+ const normalizedKey = key.replaceAll(/_([a-z])/g, (_match, letter) => letter.toUpperCase());
27
+ output[normalizedKey] = normalizeObjectKeys(child);
28
+ }
29
+ return output;
30
+ }
31
+ return value;
32
+ }
33
+ function assertDependencyRequestShape(value) {
34
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
35
+ throw new Error('Dependency request must be a JSON object.');
36
+ }
37
+ const request = value;
38
+ if (typeof request.pipelineId !== 'string' || request.pipelineId.length === 0) {
39
+ throw new Error('Dependency request requires pipelineId.');
40
+ }
41
+ if (!Array.isArray(request.metadataSelections) || request.metadataSelections.length === 0) {
42
+ throw new Error('Dependency request requires metadataSelections.');
43
+ }
44
+ if (!request.compareOptions || typeof request.compareOptions !== 'object') {
45
+ throw new Error('Dependency request requires compareOptions.');
46
+ }
47
+ return request;
48
+ }
49
+ function normalizeDependencyRequest(request) {
50
+ return {
51
+ ...request,
52
+ metadataSelections: request.metadataSelections.map((selection) => normalizeDependencySelection(selection)),
53
+ };
54
+ }
55
+ function dependencyRequestFromJson(raw) {
56
+ const parsed = normalizeObjectKeys(parseJsonValue(raw, 'dependency request'));
57
+ const body = normalizeDependencyRequest(assertDependencyRequestShape(parsed));
58
+ const platformExperience = parsed.platformExperience ?? parsed.platform_experience ?? parsed.headers?.platformExperience ?? parsed.headers?.['platform-experience'];
59
+ delete body.platformExperience;
60
+ delete body.platform_experience;
61
+ delete body.headers;
62
+ return { body, platformExperience };
63
+ }
64
+ function metadataSelectionFromFlags(flags) {
65
+ const selection = {
66
+ name: assertRequired(flags['metadata-name'], '--metadata-name'),
67
+ type: assertRequired(flags['metadata-type'], '--metadata-type'),
68
+ };
69
+ if (flags['metadata-category']) {
70
+ selection.category = flags['metadata-category'];
71
+ }
72
+ if (flags['metadata-raw-json']) {
73
+ selection.rawJson = parseJsonValue(flags['metadata-raw-json'], '--metadata-raw-json');
74
+ }
75
+ return normalizeDependencySelection(selection);
76
+ }
77
+ function requestFromSelections(flags, selections) {
78
+ const body = {
79
+ compareOptions: {
80
+ sourceCredentialId: assertRequired(flags['source-credential-id'], '--source-credential-id'),
81
+ sourceOrgId: assertRequired(flags['source-org-id'], '--source-org-id'),
82
+ },
83
+ metadataSelections: selections.map((selection) => normalizeDependencySelection(selection)),
84
+ pipelineId: assertRequired(flags['pipeline-id'], '--pipeline-id'),
85
+ };
86
+ if (flags['target-org-id']) {
87
+ body.compareOptions.targetOrgId = flags['target-org-id'];
88
+ }
89
+ if (flags['retrieve-mode']) {
90
+ body.compareOptions.retrieveMode = flags['retrieve-mode'];
91
+ }
92
+ if (flags['module-type']) {
93
+ body.moduleType = flags['module-type'];
94
+ }
95
+ if (flags['result-id']) {
96
+ body.resultId = flags['result-id'];
97
+ }
98
+ return {
99
+ body,
100
+ platformExperience: assertRequired(flags['platform-experience'], '--platform-experience'),
101
+ };
102
+ }
103
+ export async function buildDependencyRequest(flags) {
104
+ const inputModes = [Boolean(flags.file), flags.stdin, flags['from-changes']].filter(Boolean).length;
105
+ if (inputModes > 1) {
106
+ throw new Error('Use only one input mode: --file, --stdin, or --from-changes.');
107
+ }
108
+ if (flags.file) {
109
+ return dependencyRequestFromJson(readFileSync(flags.file, 'utf8'));
110
+ }
111
+ if (flags.stdin) {
112
+ return dependencyRequestFromJson(await readStdin());
113
+ }
114
+ if (flags['from-changes']) {
115
+ const selections = await selectionsFromChangedFiles(flags['base-ref'], flags['module-type']);
116
+ return requestFromSelections(flags, selections);
117
+ }
118
+ if (!flags['metadata-name'] || !flags['metadata-type']) {
119
+ throw new Error('Requires `--metadata-name` and `--metadata-type`, or an input mode such as --file, --stdin, or --from-changes.');
120
+ }
121
+ return requestFromSelections(flags, [metadataSelectionFromFlags(flags)]);
122
+ }
123
+ export default class DependencyGet extends AgentiaCommand {
124
+ static description = 'Retrieve metadata dependencies via the CICD gateway';
125
+ static examples = [
126
+ '<%= config.bin %> <%= command.id %> --metadata-name MyClass --metadata-type ApexClass --pipeline-id <id> --source-org-id <id> --source-credential-id <id>',
127
+ 'cat request.json | <%= config.bin %> <%= command.id %> --stdin',
128
+ '<%= config.bin %> <%= command.id %> --from-changes --base-ref origin/main --retrieve-mode all --pipeline-id <id> --source-org-id <id> --source-credential-id <id>',
129
+ ];
130
+ static flags = {
131
+ 'base-ref': Flags.string({
132
+ default: 'origin/main',
133
+ description: 'Base Git ref used with --from-changes',
134
+ }),
135
+ file: Flags.string({
136
+ char: 'f',
137
+ description: 'Path to a JSON dependency request body',
138
+ }),
139
+ 'from-changes': Flags.boolean({
140
+ default: false,
141
+ description: 'Build metadata selections from changed Git files',
142
+ }),
143
+ 'metadata-category': Flags.string({
144
+ description: 'Optional metadata category',
145
+ }),
146
+ 'metadata-name': Flags.string({
147
+ description: 'Metadata component name',
148
+ }),
149
+ 'metadata-raw-json': Flags.string({
150
+ description: 'Optional raw metadata JSON for the selection',
151
+ }),
152
+ 'metadata-type': Flags.string({
153
+ description: 'Metadata type, for example ApexClass',
154
+ }),
155
+ 'module-type': Flags.string({
156
+ description: 'Optional addon module type',
157
+ options: [...MODULE_TYPES],
158
+ }),
159
+ 'pipeline-id': Flags.string({
160
+ description: 'Pipeline Id',
161
+ }),
162
+ 'platform-experience': Flags.string({
163
+ default: 'salesforce',
164
+ description: 'Gateway platform experience header',
165
+ options: [...PLATFORM_EXPERIENCES],
166
+ }),
167
+ 'result-id': Flags.string({
168
+ description: 'Optional result Id from a prior metadata operation',
169
+ }),
170
+ 'retrieve-mode': Flags.string({
171
+ description: 'Dependency retrieve mode',
172
+ options: [...RETRIEVE_MODES],
173
+ }),
174
+ 'source-credential-id': Flags.string({
175
+ description: 'Source org credential Id',
176
+ }),
177
+ 'source-org-id': Flags.string({
178
+ description: 'Source org Id',
179
+ }),
180
+ stdin: Flags.boolean({
181
+ default: false,
182
+ description: 'Read a JSON dependency request body from stdin',
183
+ }),
184
+ 'target-org-id': Flags.string({
185
+ description: 'Target org Id',
186
+ }),
187
+ };
188
+ async run() {
189
+ const { flags } = await this.parse(DependencyGet);
190
+ const dependencyFlags = flags;
191
+ const { body, platformExperience } = await buildDependencyRequest(dependencyFlags);
192
+ const headers = { 'Content-Type': 'application/json' };
193
+ if (platformExperience) {
194
+ headers['platform-experience'] = platformExperience;
195
+ }
196
+ const result = await this.withSpinner('Retrieving metadata dependencies', () => CicdGateway.call({
197
+ body,
198
+ endpoint: '/release/metadata/dependencies',
199
+ headers,
200
+ method: 'POST',
201
+ }));
202
+ this.display(() => {
203
+ const dependencies = Array.isArray(result.dependencies)
204
+ ? result.dependencies.map((item) => normalizeDependencyItem(item))
205
+ : [];
206
+ if (dependencies.length === 0) {
207
+ this.log('No dependencies were returned.');
208
+ return;
209
+ }
210
+ this.log('Metadata dependencies');
211
+ this.log(formatDependencyTable(dependencies));
212
+ });
213
+ return result;
214
+ }
215
+ }
216
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/metadata/dependency/list.ts"],"names":[],"mappings":"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"}