@copado/agentia-cli 0.62.0-alpha.0 → 0.64.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 (55) hide show
  1. package/README.md +364 -153
  2. package/dist/commands/cicd/metadata/list.d.ts +6 -0
  3. package/dist/commands/cicd/metadata/list.js +12 -0
  4. package/dist/commands/cicd/metadata/list.js.map +1 -1
  5. package/dist/commands/cicd/work/deployment-step/create.d.ts +34 -0
  6. package/dist/commands/cicd/work/deployment-step/create.js +158 -0
  7. package/dist/commands/cicd/work/deployment-step/create.js.map +1 -0
  8. package/dist/commands/cicd/work/deployment-step/delete.d.ts +15 -0
  9. package/dist/commands/cicd/work/deployment-step/delete.js +41 -0
  10. package/dist/commands/cicd/work/deployment-step/delete.js.map +1 -0
  11. package/dist/commands/cicd/work/deployment-step/list.d.ts +10 -0
  12. package/dist/commands/cicd/work/deployment-step/list.js +44 -0
  13. package/dist/commands/cicd/work/deployment-step/list.js.map +1 -0
  14. package/dist/commands/cicd/work/deployment-step/reorder.d.ts +12 -0
  15. package/dist/commands/cicd/work/deployment-step/reorder.js +80 -0
  16. package/dist/commands/cicd/work/deployment-step/reorder.js.map +1 -0
  17. package/dist/commands/cicd/work/deployment-step/types.d.ts +7 -0
  18. package/dist/commands/cicd/work/deployment-step/types.js +27 -0
  19. package/dist/commands/cicd/work/deployment-step/types.js.map +1 -0
  20. package/dist/commands/cicd/work/deployment-step/update.d.ts +20 -0
  21. package/dist/commands/cicd/work/deployment-step/update.js +83 -0
  22. package/dist/commands/cicd/work/deployment-step/update.js.map +1 -0
  23. package/dist/lib/agentia-command.js +1 -1
  24. package/dist/lib/agentia-command.js.map +1 -1
  25. package/dist/lib/ai-gateway.js +2 -1
  26. package/dist/lib/ai-gateway.js.map +1 -1
  27. package/dist/lib/cicd-gateway.d.ts +7 -1
  28. package/dist/lib/cicd-gateway.js +16 -2
  29. package/dist/lib/cicd-gateway.js.map +1 -1
  30. package/dist/lib/deployment-step-config.d.ts +27 -0
  31. package/dist/lib/deployment-step-config.js +110 -0
  32. package/dist/lib/deployment-step-config.js.map +1 -0
  33. package/dist/lib/deployment-step-types.d.ts +92 -0
  34. package/dist/lib/deployment-step-types.js +194 -0
  35. package/dist/lib/deployment-step-types.js.map +1 -0
  36. package/dist/lib/deployment-step-wizard.d.ts +28 -0
  37. package/dist/lib/deployment-step-wizard.js +155 -0
  38. package/dist/lib/deployment-step-wizard.js.map +1 -0
  39. package/dist/lib/mcp/deployment-step-tools.d.ts +78 -0
  40. package/dist/lib/mcp/deployment-step-tools.js +205 -0
  41. package/dist/lib/mcp/deployment-step-tools.js.map +1 -0
  42. package/dist/lib/mcp/result.d.ts +2 -0
  43. package/dist/lib/mcp/result.js +10 -0
  44. package/dist/lib/mcp/result.js.map +1 -1
  45. package/dist/lib/mcp/server.js +6 -0
  46. package/dist/lib/mcp/server.js.map +1 -1
  47. package/dist/lib/mcp/tools.d.ts +65 -0
  48. package/dist/lib/mcp/tools.js +23 -9
  49. package/dist/lib/mcp/tools.js.map +1 -1
  50. package/dist/lib/testing-gateway.js +2 -1
  51. package/dist/lib/testing-gateway.js.map +1 -1
  52. package/dist/lib/testing-operations.js +2 -0
  53. package/dist/lib/testing-operations.js.map +1 -1
  54. package/oclif.manifest.json +3270 -2692
  55. package/package.json +4 -1
@@ -0,0 +1,205 @@
1
+ import { z } from 'zod';
2
+ import { CicdGateway } from '../cicd-gateway.js';
3
+ import { buildFriendlyDeploymentStepConfig, hasFriendlyDeploymentStepConfig, } from '../deployment-step-config.js';
4
+ import { buildDeploymentStepCreatePayload, buildDeploymentStepUpdatePayload, DEPLOYMENT_STEP_STANDARD_TYPES, deploymentStepTypesEndpoint, normalizeDeploymentSteps, normalizeDeploymentStepTypes, userStoryDeploymentStepEndpoint, userStoryDeploymentStepOrderEndpoint, userStoryDeploymentStepsEndpoint, validateCompleteDeploymentStepOrder, } from '../deployment-step-types.js';
5
+ import { resolveWorkItemId } from '../work-active.js';
6
+ import { safelyHandleTool } from './result.js';
7
+ async function deploymentStepTypes() {
8
+ const response = await CicdGateway.call({
9
+ endpoint: deploymentStepTypesEndpoint(),
10
+ method: 'GET',
11
+ });
12
+ return { deploymentStepTypes: normalizeDeploymentStepTypes(response) };
13
+ }
14
+ async function deploymentStepList(args = {}) {
15
+ const userStoryId = await resolveWorkItemId(args.userStoryId);
16
+ const response = await CicdGateway.call({
17
+ endpoint: userStoryDeploymentStepsEndpoint(userStoryId),
18
+ method: 'GET',
19
+ });
20
+ return { deploymentSteps: normalizeDeploymentSteps(response), userStoryId };
21
+ }
22
+ async function deploymentStepCreate(args) {
23
+ const userStoryId = await resolveWorkItemId(args.userStoryId);
24
+ const friendlyFlags = {
25
+ 'apex-script': args.apexScript,
26
+ 'assignee-id': args.assigneeId,
27
+ 'assignee-name': args.assigneeName,
28
+ 'crt-run-on': args.crtRunOn,
29
+ 'crt-test-id': args.crtTestId,
30
+ 'data-set-id': args.dataSetId,
31
+ 'data-template-id': args.dataTemplateId,
32
+ environment: args.environment,
33
+ 'flow-name': args.flowName,
34
+ 'function-name': args.functionName,
35
+ instructions: args.instructions,
36
+ parameter: args.parameters?.map(({ name, value }) => `${name}=${value}`),
37
+ };
38
+ const friendly = hasFriendlyDeploymentStepConfig(friendlyFlags);
39
+ if (friendly && args.configJson !== undefined) {
40
+ throw new Error('Type-specific configuration fields cannot be combined with configJson.');
41
+ }
42
+ if (friendly && args.type === undefined) {
43
+ throw new Error('Type-specific configuration fields require type.');
44
+ }
45
+ const configJson = friendly && args.type !== undefined
46
+ ? buildFriendlyDeploymentStepConfig(args.type, friendlyFlags)
47
+ : args.configJson;
48
+ if (configJson === undefined) {
49
+ throw new Error('Provide configJson or the type-specific configuration fields.');
50
+ }
51
+ const body = buildDeploymentStepCreatePayload({
52
+ ...(args.customStepApiName === undefined ? {} : { 'custom-step-api-name': args.customStepApiName }),
53
+ 'config-json': JSON.stringify(configJson),
54
+ name: args.name,
55
+ ...(args.queueName === undefined ? {} : { 'queue-name': args.queueName }),
56
+ ...(args.runOnValidation === undefined ? {} : { 'run-on-validation': args.runOnValidation }),
57
+ ...(args.sequence === undefined ? {} : { sequence: args.sequence }),
58
+ ...(args.skipBackPromotion === undefined ? {} : { 'skip-back-promotion': args.skipBackPromotion }),
59
+ ...(args.skipCondition === undefined ? {} : { 'skip-condition': args.skipCondition }),
60
+ ...(args.type === undefined ? {} : { type: args.type }),
61
+ });
62
+ const deploymentStep = await CicdGateway.call({
63
+ body,
64
+ endpoint: userStoryDeploymentStepsEndpoint(userStoryId),
65
+ headers: { 'Content-Type': 'application/json' },
66
+ method: 'POST',
67
+ });
68
+ return { deploymentStep, userStoryId };
69
+ }
70
+ async function deploymentStepUpdate(args) {
71
+ const userStoryId = await resolveWorkItemId(args.userStoryId);
72
+ const body = buildDeploymentStepUpdatePayload({
73
+ ...(args.configJson === undefined ? {} : { 'config-json': JSON.stringify(args.configJson) }),
74
+ ...(args.name === undefined ? {} : { name: args.name }),
75
+ ...(args.queueName === null
76
+ ? { 'clear-queue-name': true }
77
+ : args.queueName === undefined
78
+ ? {}
79
+ : { 'queue-name': args.queueName }),
80
+ ...(args.runOnValidation === undefined ? {} : { 'run-on-validation': args.runOnValidation }),
81
+ ...(args.skipBackPromotion === undefined ? {} : { 'skip-back-promotion': args.skipBackPromotion }),
82
+ ...(args.skipCondition === null
83
+ ? { 'clear-skip-condition': true }
84
+ : args.skipCondition === undefined
85
+ ? {}
86
+ : { 'skip-condition': args.skipCondition }),
87
+ });
88
+ const deploymentStep = await CicdGateway.call({
89
+ body,
90
+ endpoint: userStoryDeploymentStepEndpoint(userStoryId, args.stepId),
91
+ headers: { 'Content-Type': 'application/json' },
92
+ method: 'PATCH',
93
+ });
94
+ return { deploymentStep, userStoryId };
95
+ }
96
+ async function deploymentStepReorder(args) {
97
+ const userStoryId = await resolveWorkItemId(args.userStoryId);
98
+ const currentResponse = await CicdGateway.call({
99
+ endpoint: userStoryDeploymentStepsEndpoint(userStoryId),
100
+ method: 'GET',
101
+ });
102
+ const current = normalizeDeploymentSteps(currentResponse);
103
+ const order = { after: args.after, before: args.before };
104
+ validateCompleteDeploymentStepOrder(order, current);
105
+ const response = await CicdGateway.call({
106
+ body: order,
107
+ endpoint: userStoryDeploymentStepOrderEndpoint(userStoryId),
108
+ headers: { 'Content-Type': 'application/json' },
109
+ method: 'PUT',
110
+ });
111
+ return { deploymentSteps: normalizeDeploymentSteps(response), userStoryId };
112
+ }
113
+ async function deploymentStepDelete(args) {
114
+ const userStoryId = await resolveWorkItemId(args.userStoryId);
115
+ await CicdGateway.call({
116
+ endpoint: userStoryDeploymentStepEndpoint(userStoryId, args.stepId),
117
+ method: 'DELETE',
118
+ });
119
+ return { deleted: true, stepId: args.stepId, userStoryId };
120
+ }
121
+ export const agentiaMcpDeploymentStepToolHandlers = {
122
+ deploymentStepCreate,
123
+ deploymentStepDelete,
124
+ deploymentStepList,
125
+ deploymentStepReorder,
126
+ deploymentStepTypes,
127
+ deploymentStepUpdate,
128
+ };
129
+ const userStoryIdSchema = z.string().optional().describe('User story ID. Defaults to the active work item.');
130
+ const configJsonSchema = z.record(z.string(), z.unknown()).describe('Resolved inner ConfigJson object.');
131
+ export function registerAgentiaMcpDeploymentStepTools(server) {
132
+ server.registerTool('agentia_work_deployment_step_types', {
133
+ description: 'List standard and custom metadata-backed deployment-step types.',
134
+ inputSchema: {},
135
+ title: 'Agentia Work Deployment Step Types',
136
+ }, () => safelyHandleTool(() => deploymentStepTypes()));
137
+ server.registerTool('agentia_work_deployment_step_list', {
138
+ description: 'List persisted deployment steps for an explicit or active user story.',
139
+ inputSchema: { userStoryId: userStoryIdSchema },
140
+ title: 'Agentia Work Deployment Step List',
141
+ }, (args) => safelyHandleTool(() => deploymentStepList(args || {})));
142
+ server.registerTool('agentia_work_deployment_step_create', {
143
+ description: 'Create a standard or custom metadata-backed deployment step on a user story.',
144
+ inputSchema: {
145
+ apexScript: z.string().optional().describe('Apex script for an Apex step.'),
146
+ assigneeId: z.string().optional().describe('Manual Task assignee Salesforce user ID.'),
147
+ assigneeName: z.string().optional().describe('Manual Task assignee display name.'),
148
+ configJson: configJsonSchema.optional().describe('Resolved expert ConfigJson object.'),
149
+ crtRunOn: z.enum(['source', 'destination']).optional().describe('Environment where the Robotic Test runs.'),
150
+ crtTestId: z.string().optional().describe('Robotic Test Salesforce ID.'),
151
+ customStepApiName: z.string().optional().describe('Custom metadata developerName. Mutually exclusive with type.'),
152
+ dataSetId: z.string().optional().describe('Salesforce Data Set ID.'),
153
+ dataTemplateId: z.string().optional().describe('Salesforce Data Template ID.'),
154
+ environment: z.enum(['source', 'destination', 'both']).optional().describe('Manual Task environment.'),
155
+ flowName: z.string().optional().describe('Salesforce Flow API name.'),
156
+ functionName: z.string().optional().describe('Function name.'),
157
+ instructions: z.string().optional().describe('Manual Task instructions.'),
158
+ name: z.string().describe('Step name, up to 80 characters.'),
159
+ parameters: z
160
+ .array(z.object({ name: z.string(), value: z.string() }))
161
+ .optional()
162
+ .describe('Flow or Function parameters.'),
163
+ queueName: z.string().optional(),
164
+ runOnValidation: z.boolean().optional(),
165
+ sequence: z.enum(['before', 'after']).optional(),
166
+ skipBackPromotion: z.boolean().optional(),
167
+ skipCondition: z.string().optional(),
168
+ type: z.enum(DEPLOYMENT_STEP_STANDARD_TYPES).optional().describe('Standard deployment-step type.'),
169
+ userStoryId: userStoryIdSchema,
170
+ },
171
+ title: 'Agentia Work Deployment Step Create',
172
+ }, (args) => safelyHandleTool(() => deploymentStepCreate(args)));
173
+ server.registerTool('agentia_work_deployment_step_update', {
174
+ description: 'Partially update a persisted deployment step. Null clears queueName or skipCondition.',
175
+ inputSchema: {
176
+ configJson: configJsonSchema.optional(),
177
+ name: z.string().optional(),
178
+ queueName: z.string().nullable().optional(),
179
+ runOnValidation: z.boolean().optional(),
180
+ skipBackPromotion: z.boolean().optional(),
181
+ skipCondition: z.string().nullable().optional(),
182
+ stepId: z.string().describe('Deployment-step ID.'),
183
+ userStoryId: userStoryIdSchema,
184
+ },
185
+ title: 'Agentia Work Deployment Step Update',
186
+ }, (args) => safelyHandleTool(() => deploymentStepUpdate(args)));
187
+ server.registerTool('agentia_work_deployment_step_reorder', {
188
+ description: 'Replace the complete before/after deployment-step order for a user story.',
189
+ inputSchema: {
190
+ after: z.array(z.string()).describe('Complete ordered after-step IDs.'),
191
+ before: z.array(z.string()).describe('Complete ordered before-step IDs.'),
192
+ userStoryId: userStoryIdSchema,
193
+ },
194
+ title: 'Agentia Work Deployment Step Reorder',
195
+ }, (args) => safelyHandleTool(() => deploymentStepReorder(args)));
196
+ server.registerTool('agentia_work_deployment_step_delete', {
197
+ description: 'Delete a persisted deployment step owned by a user story.',
198
+ inputSchema: {
199
+ stepId: z.string().describe('Deployment-step ID.'),
200
+ userStoryId: userStoryIdSchema,
201
+ },
202
+ title: 'Agentia Work Deployment Step Delete',
203
+ }, (args) => safelyHandleTool(() => deploymentStepDelete(args)));
204
+ }
205
+ //# sourceMappingURL=deployment-step-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-step-tools.js","sourceRoot":"","sources":["../../../src/lib/mcp/deployment-step-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAA;AAErB,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACL,iCAAiC,EAKjC,+BAA+B,GAChC,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAK9B,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,+BAA+B,EAC/B,oCAAoC,EACpC,gCAAgC,EAChC,mCAAmC,GACpC,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAA;AAsC5C,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAU;QAC/C,QAAQ,EAAE,2BAA2B,EAAE;QACvC,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IACF,OAAO,EAAC,mBAAmB,EAAE,4BAA4B,CAAC,QAAQ,CAAC,EAAC,CAAA;AACtE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAA+B,EAAE;IACjE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAU;QAC/C,QAAQ,EAAE,gCAAgC,CAAC,WAAW,CAAC;QACvD,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IACF,OAAO,EAAC,eAAe,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAC,CAAA;AAC3E,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAA8B;IAChE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7D,MAAM,aAAa,GAAsC;QACvD,aAAa,EAAE,IAAI,CAAC,UAAU;QAC9B,aAAa,EAAE,IAAI,CAAC,UAAU;QAC9B,eAAe,EAAE,IAAI,CAAC,YAAY;QAClC,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,aAAa,EAAE,IAAI,CAAC,SAAS;QAC7B,aAAa,EAAE,IAAI,CAAC,SAAS;QAC7B,kBAAkB,EAAE,IAAI,CAAC,cAAc;QACvC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,QAAQ;QAC1B,eAAe,EAAE,IAAI,CAAC,YAAY;QAClC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;KACvE,CAAA;IACD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,aAAa,CAAC,CAAA;IAC/D,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;IAC3F,CAAC;IAED,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACrE,CAAC;IAED,MAAM,UAAU,GACd,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QACjC,CAAC,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;QAC7D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;IACrB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAClF,CAAC;IAED,MAAM,IAAI,GAAG,gCAAgC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,sBAAsB,EAAE,IAAI,CAAC,iBAAiB,EAAC,CAAC;QACjG,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACzC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAC,CAAC;QAC1F,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,EAAC,CAAC;QAChG,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAC,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC;KACtD,CAAC,CAAA;IACF,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,IAAI,CAAiB;QAC5D,IAAI;QACJ,QAAQ,EAAE,gCAAgC,CAAC,WAAW,CAAC;QACvD,OAAO,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC;QAC7C,MAAM,EAAE,MAAM;KACf,CAAC,CAAA;IACF,OAAO,EAAC,cAAc,EAAE,WAAW,EAAC,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAA8B;IAChE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,gCAAgC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,CAAC;QAC1F,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI;YACzB,CAAC,CAAC,EAAC,kBAAkB,EAAE,IAAI,EAAC;YAC5B,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;gBAC5B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAC,CAAC;QAC1F,GAAG,CAAC,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,EAAC,CAAC;QAChG,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI;YAC7B,CAAC,CAAC,EAAC,sBAAsB,EAAE,IAAI,EAAC;YAChC,CAAC,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS;gBAChC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAC,CAAC;KAC9C,CAAC,CAAA;IACF,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,IAAI,CAAiB;QAC5D,IAAI;QACJ,QAAQ,EAAE,+BAA+B,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;QACnE,OAAO,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC;QAC7C,MAAM,EAAE,OAAO;KAChB,CAAC,CAAA;IACF,OAAO,EAAC,cAAc,EAAE,WAAW,EAAC,CAAA;AACtC,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,IAAkD;IACrF,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7D,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,IAAI,CAAU;QACtD,QAAQ,EAAE,gCAAgC,CAAC,WAAW,CAAC;QACvD,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAA;IACzD,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAA;IACtD,mCAAmC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAU;QAC/C,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,oCAAoC,CAAC,WAAW,CAAC;QAC3D,OAAO,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC;QAC7C,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IACF,OAAO,EAAC,eAAe,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAC,CAAA;AAC3E,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAA4C;IAC9E,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC7D,MAAM,WAAW,CAAC,IAAI,CAAO;QAC3B,QAAQ,EAAE,+BAA+B,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;QACnE,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAA;IACF,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAC,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,oCAAoC,GAAG;IAClD,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;CACrB,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAA;AAC5G,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAA;AAExG,MAAM,UAAU,qCAAqC,CAAC,MAAiB;IACrE,MAAM,CAAC,YAAY,CACjB,oCAAoC,EACpC;QACE,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,oCAAoC;KAC5C,EACD,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,CACpD,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,mCAAmC,EACnC;QACE,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,EAAC,WAAW,EAAE,iBAAiB,EAAC;QAC7C,KAAK,EAAE,mCAAmC;KAC3C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CACjE,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,qCAAqC,EACrC;QACE,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC3E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACtF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAClF,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACtF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YAC3G,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACxE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;YACjH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACpE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC9E,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACtG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACrE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC9D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC5D,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC,CAAC;iBACtD,QAAQ,EAAE;iBACV,QAAQ,CAAC,8BAA8B,CAAC;YAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACvC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;YAChD,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAClG,WAAW,EAAE,iBAAiB;SAC/B;QACD,KAAK,EAAE,qCAAqC;KAC7C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,qCAAqC,EACrC;QACE,WAAW,EAAE,uFAAuF;QACpG,WAAW,EAAE;YACX,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;YACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YAC3C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACvC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;YAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClD,WAAW,EAAE,iBAAiB;SAC/B;QACD,KAAK,EAAE,qCAAqC;KAC7C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,sCAAsC,EACtC;QACE,WAAW,EAAE,2EAA2E;QACxF,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACvE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACzE,WAAW,EAAE,iBAAiB;SAC/B;QACD,KAAK,EAAE,sCAAsC;KAC9C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAC9D,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,qCAAqC,EACrC;QACE,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClD,WAAW,EAAE,iBAAiB;SAC/B;QACD,KAAK,EAAE,qCAAqC;KAC7C,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAA;AACH,CAAC"}
@@ -1,3 +1,5 @@
1
+ export declare function mcpToolNameFromHandler(handlerName: string): string;
2
+ export declare function wrapMcpToolHandlers<T extends Record<string, (...args: never[]) => Promise<unknown>>>(handlers: T): T;
1
3
  export declare function toolResult(data: Record<string, unknown>): {
2
4
  content: {
3
5
  text: string;
@@ -1,4 +1,14 @@
1
+ import { createTransactionId, runWithGatewayTransactionContext } from '../cicd-gateway.js';
1
2
  import { redactErrorMessage, redactSecrets } from './redaction.js';
3
+ export function mcpToolNameFromHandler(handlerName) {
4
+ return `agentia_${handlerName.replaceAll(/[A-Z]/gu, (letter) => `_${letter.toLowerCase()}`)}`;
5
+ }
6
+ export function wrapMcpToolHandlers(handlers) {
7
+ return Object.fromEntries(Object.entries(handlers).map(([name, handler]) => [
8
+ name,
9
+ (...args) => runWithGatewayTransactionContext({ referer: mcpToolNameFromHandler(name), transactionId: createTransactionId() }, () => handler(...args)),
10
+ ]));
11
+ }
2
12
  export function toolResult(data) {
3
13
  const redacted = redactSecrets(data);
4
14
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/lib/mcp/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAEhE,MAAM,UAAU,UAAU,CAAC,IAA6B;IACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAEpC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,MAAe;aACtB;SACF;QACD,iBAAiB,EAAE,QAAQ;KAC5B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,MAAM,UAAU,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/F,MAAM,OAAO,GAAG;QACd,KAAK,EAAE;YACL,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,UAAU,CAAC,UAAU,EAAC,CAAC;YACnF,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC;YAClC,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAC,CAAC;SACxE;KACF,CAAA;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAEvC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,MAAe;aACtB;SACF;QACD,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,QAAQ;KAC5B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA+C;IACpF,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/lib/mcp/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,gCAAgC,EAAC,MAAM,oBAAoB,CAAA;AACxF,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAA;AAEhE,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,OAAO,WAAW,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAA;AAC/F,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAmE,QAAW;IAC/G,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;QAChD,IAAI;QACJ,CAAC,GAAG,IAAa,EAAE,EAAE,CACnB,gCAAgC,CAC9B,EAAC,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAC,EAC7E,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CACvB;KACJ,CAAC,CACE,CAAA;AACR,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAA6B;IACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAEpC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,MAAe;aACtB;SACF;QACD,iBAAiB,EAAE,QAAQ;KAC5B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,MAAM,UAAU,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/F,MAAM,OAAO,GAAG;QACd,KAAK,EAAE;YACL,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,UAAU,CAAC,UAAU,EAAC,CAAC;YACnF,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC;YAClC,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAC,CAAC;SACxE;KACF,CAAA;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAEvC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,MAAe;aACtB;SACF;QACD,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,QAAQ;KAC5B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA+C;IACpF,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
3
  import { createRequire } from 'node:module';
4
+ import { createTransactionId, runWithGatewayTransactionContext } from '../cicd-gateway.js';
4
5
  import { registerAgentiaMcpTools } from './tools.js';
5
6
  const require = createRequire(import.meta.url);
6
7
  const packageJson = require('../../../package.json');
@@ -9,9 +10,14 @@ export function createAgentiaMcpServer() {
9
10
  name: packageJson.name ?? 'agentia-cli',
10
11
  version: packageJson.version,
11
12
  });
13
+ wrapMcpToolRegistration(server);
12
14
  registerAgentiaMcpTools(server);
13
15
  return server;
14
16
  }
17
+ function wrapMcpToolRegistration(server) {
18
+ const registerTool = server.registerTool.bind(server);
19
+ server.registerTool = ((name, config, handler) => registerTool(name, config, (...args) => runWithGatewayTransactionContext({ referer: name, transactionId: createTransactionId() }, async () => handler(...args))));
20
+ }
15
21
  export async function startAgentiaMcpServer(transport = new StdioServerTransport()) {
16
22
  const server = createAgentiaMcpServer();
17
23
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/lib/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AACjE,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAC,uBAAuB,EAAC,MAAM,YAAY,CAAA;AAElD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAqC,CAAA;AAExF,MAAM,UAAU,sBAAsB;IACpC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,aAAa;QACvC,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC,CAAA;IAEF,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAS,GAAG,IAAI,oBAAoB,EAAE;IAChF,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAA;IACvC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,KAAK,GAAI,MAAkE,CAAC,gBAAgB,CAAA;IAClG,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACxC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/lib/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAA;AACjE,OAAO,EAAC,oBAAoB,EAAC,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAC,mBAAmB,EAAE,gCAAgC,EAAC,MAAM,oBAAoB,CAAA;AACxF,OAAO,EAAC,uBAAuB,EAAC,MAAM,YAAY,CAAA;AAElD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,uBAAuB,CAAqC,CAAA;AAExF,MAAM,UAAU,sBAAsB;IACpC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,aAAa;QACvC,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC,CAAA;IAEF,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAiB;IAChD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAIxC,CAAA;IAEZ,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,IAAY,EAAE,MAAe,EAAE,OAAsC,EAAE,EAAE,CAC/F,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAa,EAAE,EAAE,CAC9C,gCAAgC,CAC9B,EAAC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAC,EACrD,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAC7B,CACF,CAA+B,CAAA;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAS,GAAG,IAAI,oBAAoB,EAAE;IAChF,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAA;IACvC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,KAAK,GAAI,MAAkE,CAAC,gBAAgB,CAAA;IAClG,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACxC,CAAC"}
@@ -113,6 +113,8 @@ type RepositoryUpdateArgs = RepositoryMutationArgs & {
113
113
  };
114
114
  type MetadataListArgs = {
115
115
  avoidSourceTracking?: boolean;
116
+ changeDateFrom?: string;
117
+ changeDateTo?: string;
116
118
  filterType?: string;
117
119
  findManagedPackages?: boolean;
118
120
  limit?: number;
@@ -1107,6 +1109,69 @@ export declare const agentiaMcpToolHandlers: {
1107
1109
  repositoryValidate: typeof repositoryValidate;
1108
1110
  userGet: typeof userGet;
1109
1111
  workStatus: typeof workStatus;
1112
+ deploymentStepCreate: (args: {
1113
+ apexScript?: string;
1114
+ assigneeId?: string;
1115
+ assigneeName?: string;
1116
+ configJson?: Record<string, unknown>;
1117
+ crtRunOn?: import("../deployment-step-config.js").CrtRunOn;
1118
+ crtTestId?: string;
1119
+ customStepApiName?: string;
1120
+ dataSetId?: string;
1121
+ dataTemplateId?: string;
1122
+ environment?: import("../deployment-step-config.js").DeploymentStepEnvironment;
1123
+ flowName?: string;
1124
+ functionName?: string;
1125
+ instructions?: string;
1126
+ name: string;
1127
+ parameters?: import("../deployment-step-config.js").DeploymentStepParameter[];
1128
+ queueName?: string;
1129
+ runOnValidation?: boolean;
1130
+ sequence?: import("../deployment-step-types.js").DeploymentStepSequence;
1131
+ skipBackPromotion?: boolean;
1132
+ skipCondition?: string;
1133
+ type?: import("../deployment-step-types.js").DeploymentStepStandardType;
1134
+ userStoryId?: string;
1135
+ }) => Promise<{
1136
+ deploymentStep: import("../deployment-step-types.js").DeploymentStep;
1137
+ userStoryId: string;
1138
+ }>;
1139
+ deploymentStepDelete: (args: {
1140
+ stepId: string;
1141
+ userStoryId?: string;
1142
+ }) => Promise<{
1143
+ deleted: boolean;
1144
+ stepId: string;
1145
+ userStoryId: string;
1146
+ }>;
1147
+ deploymentStepList: (args?: {
1148
+ userStoryId?: string;
1149
+ }) => Promise<{
1150
+ deploymentSteps: import("../deployment-step-types.js").DeploymentStep[];
1151
+ userStoryId: string;
1152
+ }>;
1153
+ deploymentStepReorder: (args: import("../deployment-step-types.js").DeploymentStepOrder & {
1154
+ userStoryId?: string;
1155
+ }) => Promise<{
1156
+ deploymentSteps: import("../deployment-step-types.js").DeploymentStep[];
1157
+ userStoryId: string;
1158
+ }>;
1159
+ deploymentStepTypes: () => Promise<{
1160
+ deploymentStepTypes: import("../deployment-step-types.js").DeploymentStepType[];
1161
+ }>;
1162
+ deploymentStepUpdate: (args: {
1163
+ configJson?: Record<string, unknown>;
1164
+ name?: string;
1165
+ queueName?: null | string;
1166
+ runOnValidation?: boolean;
1167
+ skipBackPromotion?: boolean;
1168
+ skipCondition?: null | string;
1169
+ stepId: string;
1170
+ userStoryId?: string;
1171
+ }) => Promise<{
1172
+ deploymentStep: import("../deployment-step-types.js").DeploymentStep;
1173
+ userStoryId: string;
1174
+ }>;
1110
1175
  dataCommitCreate: (args: import("../data-types.js").DataCommitApiRequest) => Promise<{
1111
1176
  result: import("../data-types.js").DataCommitResponse;
1112
1177
  }>;
@@ -12,7 +12,7 @@ import { CICD_REGIONS } from '../cicd-region.js';
12
12
  import { ALL_CREDENTIAL_TYPES, credentialLabel, getCicdBaseUrl, getCredential, maskSecret, } from '../credential-store.js';
13
13
  import { readDefaults, readLastWorkItem, resolveDefaults, unsetDefaults, writeDefaults } from '../defaults-store.js';
14
14
  import { runEnvironmentAuthStatus } from '../environment-auth-status.js';
15
- import { collectCredentialUpdateFlagKeys, validateCredentialName, } from '../environment-credential-flags.js';
15
+ import { collectCredentialUpdateFlagKeys, validateCredentialName } from '../environment-credential-flags.js';
16
16
  import { createEnvironmentCredential, resolveEnvironmentOrgType, updateEnvironmentCredential, } from '../environment-credential-operations.js';
17
17
  import { buildCreatePayload, buildMutationPayload, ENVIRONMENT_STRING_VALIDATION_KEYS, validateNonEmptyStringFields, } from '../environment-flags.js';
18
18
  import { DEFAULT_ENVIRONMENT_PLATFORM, DEFAULT_ENVIRONMENT_TYPE, ENVIRONMENT_TYPES, environmentEndpoint, environmentsListEndpoint, } from '../environment-types.js';
@@ -38,7 +38,8 @@ import { DEFAULT_USER_ID, resolveUserId, userEndpoint } from '../user-types.js';
38
38
  import { workStatusEndpoint } from '../work-types.js';
39
39
  import { agentiaMcpAiToolHandlers, registerAgentiaMcpAiTools } from './ai-tools.js';
40
40
  import { agentiaMcpDataToolHandlers, registerAgentiaMcpDataTools } from './data-tools.js';
41
- import { safelyHandleTool } from './result.js';
41
+ import { agentiaMcpDeploymentStepToolHandlers, registerAgentiaMcpDeploymentStepTools } from './deployment-step-tools.js';
42
+ import { safelyHandleTool, wrapMcpToolHandlers } from './result.js';
42
43
  import { agentiaMcpTestingToolHandlers, registerAgentiaMcpTestingTools } from './testing-tools.js';
43
44
  import { agentiaMcpWorkToolHandlers, registerAgentiaMcpWorkTools } from './work-tools.js';
44
45
  const MAX_LIMIT = 2000;
@@ -486,9 +487,7 @@ async function functionResultLogGet(args) {
486
487
  };
487
488
  }
488
489
  async function functionRunLocal(args) {
489
- const parameter = args.parameters === undefined
490
- ? undefined
491
- : Object.entries(args.parameters).map(([key, value]) => `${key}=${value}`);
490
+ const parameter = args.parameters === undefined ? undefined : Object.entries(args.parameters).map(([key, value]) => `${key}=${value}`);
492
491
  return executeLocalFunctionRun({
493
492
  cwd: args.cwd,
494
493
  image: args.image,
@@ -587,6 +586,8 @@ async function metadataList(args) {
587
586
  const platformExperience = args.platformExperience ?? 'salesforce';
588
587
  const body = buildMetadataIndexRequest({
589
588
  'avoid-source-tracking': Boolean(args.avoidSourceTracking),
589
+ 'change-date-from': args.changeDateFrom,
590
+ 'change-date-to': args.changeDateTo,
590
591
  'filter-type': args.filterType,
591
592
  'find-managed-packages': Boolean(args.findManagedPackages),
592
593
  limit: args.limit,
@@ -883,9 +884,10 @@ async function navigationResolve(args) {
883
884
  resourceType: args.resourceType,
884
885
  });
885
886
  }
886
- export const agentiaMcpToolHandlers = {
887
+ export const agentiaMcpToolHandlers = wrapMcpToolHandlers({
887
888
  ...agentiaMcpAiToolHandlers,
888
889
  ...agentiaMcpDataToolHandlers,
890
+ ...agentiaMcpDeploymentStepToolHandlers,
889
891
  authGet,
890
892
  authSet,
891
893
  credentialCreate,
@@ -946,7 +948,7 @@ export const agentiaMcpToolHandlers = {
946
948
  workStatus,
947
949
  ...agentiaMcpTestingToolHandlers,
948
950
  ...agentiaMcpWorkToolHandlers,
949
- };
951
+ });
950
952
  const environmentMutationSchema = {
951
953
  apexTestLevel: z.string().optional().describe('Apex test level.'),
952
954
  enableRollback: z.boolean().optional().describe('Enable rollback.'),
@@ -1005,6 +1007,7 @@ const promotionListSchema = {
1005
1007
  export function registerAgentiaMcpTools(server) {
1006
1008
  registerAgentiaMcpAiTools(server);
1007
1009
  registerAgentiaMcpDataTools(server);
1010
+ registerAgentiaMcpDeploymentStepTools(server);
1008
1011
  registerAgentiaMcpTestingTools(server);
1009
1012
  server.registerTool('agentia_environment_list', {
1010
1013
  description: 'List Copado environments via the CICD gateway.',
@@ -1083,14 +1086,20 @@ export function registerAgentiaMcpTools(server) {
1083
1086
  .array(z.string())
1084
1087
  .optional()
1085
1088
  .describe('Ordered deployment-step Salesforce IDs. The gateway order is used when omitted.'),
1086
- ignoredMetadata: z.array(z.unknown()).optional().describe('Ignored metadata persisted before starting the run.'),
1089
+ ignoredMetadata: z
1090
+ .array(z.unknown())
1091
+ .optional()
1092
+ .describe('Ignored metadata persisted before starting the run.'),
1087
1093
  operation: z
1088
1094
  .enum(PROMOTION_OPERATIONS)
1089
1095
  .optional()
1090
1096
  .describe('Promotion operation. Required unless resumeJobExecutionId is supplied.'),
1091
1097
  promotionId: z.string().describe('18-character Salesforce Promotion ID.'),
1092
1098
  recreatePromotionBranch: z.boolean().optional().describe('Recreate the promotion branch before execution.'),
1093
- resumeJobExecutionId: z.string().optional().describe('Resume this existing promotion execution instead of /run.'),
1099
+ resumeJobExecutionId: z
1100
+ .string()
1101
+ .optional()
1102
+ .describe('Resume this existing promotion execution instead of /run.'),
1094
1103
  wait: z.boolean().optional().describe('Poll all created executions to terminal status. Defaults to true.'),
1095
1104
  waitTimeout: z
1096
1105
  .number()
@@ -1229,6 +1238,11 @@ export function registerAgentiaMcpTools(server) {
1229
1238
  .boolean()
1230
1239
  .optional()
1231
1240
  .describe('Pass avoidSourceTracking=true to the gateway index route.'),
1241
+ changeDateFrom: z
1242
+ .string()
1243
+ .optional()
1244
+ .describe('Optional change-date-from filter (ISO datetime).'),
1245
+ changeDateTo: z.string().optional().describe('Optional change-date-to filter (ISO datetime).'),
1232
1246
  filterType: z.string().optional().describe('Optional metadata type name filter, for example ApexClass.'),
1233
1247
  findManagedPackages: z.boolean().optional().describe('Include managed package metadata in the search.'),
1234
1248
  limit: z.number().int().min(1).max(MAX_LIMIT).optional().describe('Maximum number of records to return.'),