@copado/agentia-cli 0.27.0-alpha.0 → 0.29.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.
- package/README.md +170 -86
- package/dist/commands/environment/list.d.ts +5 -1
- package/dist/commands/environment/list.js +10 -8
- package/dist/commands/environment/list.js.map +1 -1
- package/dist/commands/job/list.d.ts +4 -2
- package/dist/commands/job/list.js +10 -12
- package/dist/commands/job/list.js.map +1 -1
- package/dist/commands/pipeline/list.d.ts +6 -1
- package/dist/commands/pipeline/list.js +10 -7
- package/dist/commands/pipeline/list.js.map +1 -1
- package/dist/commands/project/list.d.ts +4 -1
- package/dist/commands/project/list.js +7 -5
- package/dist/commands/project/list.js.map +1 -1
- package/dist/commands/promotion/list.d.ts +4 -2
- package/dist/commands/promotion/list.js +8 -6
- package/dist/commands/promotion/list.js.map +1 -1
- package/dist/commands/setup.d.ts +12 -0
- package/dist/commands/setup.js +52 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/work/list.d.ts +4 -1
- package/dist/commands/work/list.js +7 -5
- package/dist/commands/work/list.js.map +1 -1
- package/dist/commands/work/set.js +8 -1
- package/dist/commands/work/set.js.map +1 -1
- package/dist/commands/work/submit.d.ts +5 -0
- package/dist/commands/work/submit.js +93 -5
- package/dist/commands/work/submit.js.map +1 -1
- package/dist/commands/work/test.d.ts +10 -0
- package/dist/commands/work/test.js +61 -0
- package/dist/commands/work/test.js.map +1 -0
- package/dist/lib/agentia-command.d.ts +3 -0
- package/dist/lib/agentia-command.js +12 -1
- package/dist/lib/agentia-command.js.map +1 -1
- package/dist/lib/cicd-gateway.d.ts +3 -0
- package/dist/lib/cicd-gateway.js +19 -2
- package/dist/lib/cicd-gateway.js.map +1 -1
- package/dist/lib/defaults-store.d.ts +3 -0
- package/dist/lib/defaults-store.js +24 -0
- package/dist/lib/defaults-store.js.map +1 -1
- package/dist/lib/environment-flags.d.ts +3 -1
- package/dist/lib/environment-flags.js +3 -1
- package/dist/lib/environment-flags.js.map +1 -1
- package/dist/lib/environment-types.d.ts +4 -1
- package/dist/lib/environment-types.js +2 -0
- package/dist/lib/environment-types.js.map +1 -1
- package/dist/lib/git-worktree.d.ts +4 -0
- package/dist/lib/git-worktree.js +46 -2
- package/dist/lib/git-worktree.js.map +1 -1
- package/dist/lib/job-types.d.ts +7 -4
- package/dist/lib/job-types.js +8 -15
- package/dist/lib/job-types.js.map +1 -1
- package/dist/lib/list-pagination.d.ts +46 -0
- package/dist/lib/list-pagination.js +106 -0
- package/dist/lib/list-pagination.js.map +1 -0
- package/dist/lib/local-quality-gates.d.ts +45 -0
- package/dist/lib/local-quality-gates.js +103 -0
- package/dist/lib/local-quality-gates.js.map +1 -0
- package/dist/lib/mcp/tools.d.ts +67 -75
- package/dist/lib/mcp/tools.js +28 -360
- package/dist/lib/mcp/tools.js.map +1 -1
- package/dist/lib/mcp/work-tools.d.ts +73 -0
- package/dist/lib/mcp/work-tools.js +475 -0
- package/dist/lib/mcp/work-tools.js.map +1 -0
- package/dist/lib/open-browser.d.ts +3 -0
- package/dist/lib/open-browser.js +13 -1
- package/dist/lib/open-browser.js.map +1 -1
- package/dist/lib/pipeline-types.d.ts +6 -1
- package/dist/lib/pipeline-types.js +10 -6
- package/dist/lib/pipeline-types.js.map +1 -1
- package/dist/lib/project-flags.d.ts +3 -2
- package/dist/lib/project-flags.js +3 -1
- package/dist/lib/project-flags.js.map +1 -1
- package/dist/lib/project-setup.d.ts +80 -0
- package/dist/lib/project-setup.js +383 -0
- package/dist/lib/project-setup.js.map +1 -0
- package/dist/lib/project-types.d.ts +5 -1
- package/dist/lib/project-types.js +6 -10
- package/dist/lib/project-types.js.map +1 -1
- package/dist/lib/promotion-flags.d.ts +4 -3
- package/dist/lib/promotion-flags.js +3 -8
- package/dist/lib/promotion-flags.js.map +1 -1
- package/dist/lib/promotion-types.d.ts +8 -5
- package/dist/lib/promotion-types.js +10 -14
- package/dist/lib/promotion-types.js.map +1 -1
- package/dist/lib/setup-templates.d.ts +11 -0
- package/dist/lib/setup-templates.js +181 -0
- package/dist/lib/setup-templates.js.map +1 -0
- package/dist/lib/work-flags.d.ts +3 -1
- package/dist/lib/work-flags.js +3 -1
- package/dist/lib/work-flags.js.map +1 -1
- package/dist/lib/work-types.d.ts +20 -1
- package/dist/lib/work-types.js +16 -3
- package/dist/lib/work-types.js.map +1 -1
- package/oclif.manifest.json +194 -18
- package/package.json +1 -1
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { assertRequired } from '../assert.js';
|
|
3
|
+
import { CicdGateway } from '../cicd-gateway.js';
|
|
4
|
+
import { readDefaults, readLastBaseBranch, resolveDefaults, writeLastWorkSelection, } from '../defaults-store.js';
|
|
5
|
+
import { checkoutFeatureBranch, fetchOriginBranch, getCurrentBranch, hasUnpushedCommits, listPendingChanges, } from '../git-worktree.js';
|
|
6
|
+
import { listPaginationZodFields, mcpPaginatedListPayload } from '../list-pagination.js';
|
|
7
|
+
import { LocalQualityGatesError, runLocalQualityGates } from '../local-quality-gates.js';
|
|
8
|
+
import { PROJECT_DEFAULT_KEYS } from '../project-defaults.js';
|
|
9
|
+
import { getUserContext } from '../user-context.js';
|
|
10
|
+
import { resolveWorkItemId } from '../work-active.js';
|
|
11
|
+
import { buildWorkCreatePayload } from '../work-defaults.js';
|
|
12
|
+
import { validateNonEmptyStringFields as validateWorkNonEmptyStringFields, WORK_STRING_VALIDATION_KEYS, } from '../work-flags.js';
|
|
13
|
+
import { performWorkPush } from '../work-push.js';
|
|
14
|
+
import { extractUserStoryFromFeatureBranch, featureBranchName, normalizeUserStoriesListPage, workCreateEndpoint, workDoneEndpoint, workEndpoint, workListEndpoint, workSetEndpoint, workSubmitEndpoint, } from '../work-types.js';
|
|
15
|
+
import { safelyHandleTool } from './result.js';
|
|
16
|
+
const silentWorkPushHooks = {
|
|
17
|
+
display() { },
|
|
18
|
+
log() { },
|
|
19
|
+
withSpinner: async (_message, action) => action(),
|
|
20
|
+
};
|
|
21
|
+
const WORK_MUTATION_PAYLOAD_KEYS = [
|
|
22
|
+
'acceptanceCriteria',
|
|
23
|
+
'actualPoints',
|
|
24
|
+
'asA',
|
|
25
|
+
'assignee',
|
|
26
|
+
'cancellationReason',
|
|
27
|
+
'closeDate',
|
|
28
|
+
'epic',
|
|
29
|
+
'excludedFromCbm',
|
|
30
|
+
'feature',
|
|
31
|
+
'functionalRequirements',
|
|
32
|
+
'ownerId',
|
|
33
|
+
'plannedPoints',
|
|
34
|
+
'priority',
|
|
35
|
+
'project',
|
|
36
|
+
'recordType',
|
|
37
|
+
'releaseId',
|
|
38
|
+
'soThat',
|
|
39
|
+
'sourceCredential',
|
|
40
|
+
'sourceEnvironment',
|
|
41
|
+
'sprintId',
|
|
42
|
+
'status',
|
|
43
|
+
'team',
|
|
44
|
+
'technicalSpecifications',
|
|
45
|
+
'theme',
|
|
46
|
+
'title',
|
|
47
|
+
'wantTo',
|
|
48
|
+
];
|
|
49
|
+
function buildWorkMutationPayloadFromArgs(args) {
|
|
50
|
+
const payload = {};
|
|
51
|
+
for (const key of WORK_MUTATION_PAYLOAD_KEYS) {
|
|
52
|
+
const value = args[key];
|
|
53
|
+
if (value !== undefined) {
|
|
54
|
+
Object.assign(payload, { [key]: value });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return payload;
|
|
58
|
+
}
|
|
59
|
+
async function workList(args = {}) {
|
|
60
|
+
const filters = {
|
|
61
|
+
assigneeId: args.assigneeId,
|
|
62
|
+
assigneeName: args.assigneeName,
|
|
63
|
+
cursor: args.cursor,
|
|
64
|
+
name: args.name,
|
|
65
|
+
ownerId: args.ownerId,
|
|
66
|
+
ownerName: args.ownerName,
|
|
67
|
+
pageSize: args.pageSize,
|
|
68
|
+
projectId: args.projectId,
|
|
69
|
+
projectName: args.projectName,
|
|
70
|
+
status: args.status,
|
|
71
|
+
title: args.title,
|
|
72
|
+
};
|
|
73
|
+
const assignedToMe = args.assignedToMe === true;
|
|
74
|
+
const ownedByMe = args.ownedByMe === true;
|
|
75
|
+
if (assignedToMe && ownedByMe) {
|
|
76
|
+
throw new Error('Use either assignedToMe or ownedByMe, not both.');
|
|
77
|
+
}
|
|
78
|
+
if (assignedToMe && args.assigneeId !== undefined) {
|
|
79
|
+
throw new Error('Cannot use assignedToMe with assigneeId.');
|
|
80
|
+
}
|
|
81
|
+
if (ownedByMe && args.ownerId !== undefined) {
|
|
82
|
+
throw new Error('Cannot use ownedByMe with ownerId.');
|
|
83
|
+
}
|
|
84
|
+
if (assignedToMe || ownedByMe) {
|
|
85
|
+
const userContext = await getUserContext();
|
|
86
|
+
const userId = userContext.id;
|
|
87
|
+
if (userId === undefined || userId.trim().length === 0) {
|
|
88
|
+
throw new Error('Current user ID is unavailable from the CICD gateway context.');
|
|
89
|
+
}
|
|
90
|
+
if (assignedToMe) {
|
|
91
|
+
filters.assigneeId = userId;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
filters.ownerId = userId;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const response = await CicdGateway.call({
|
|
98
|
+
endpoint: workListEndpoint(filters),
|
|
99
|
+
method: 'GET',
|
|
100
|
+
});
|
|
101
|
+
return mcpPaginatedListPayload('userStories', normalizeUserStoriesListPage(response));
|
|
102
|
+
}
|
|
103
|
+
async function workGet(args = {}) {
|
|
104
|
+
const workItemId = await resolveWorkItemId(args.id);
|
|
105
|
+
const userStory = await CicdGateway.call({
|
|
106
|
+
endpoint: workEndpoint(workItemId),
|
|
107
|
+
method: 'GET',
|
|
108
|
+
});
|
|
109
|
+
return { userStory };
|
|
110
|
+
}
|
|
111
|
+
async function workCreate(args = {}) {
|
|
112
|
+
const explicitPayload = buildWorkMutationPayloadFromArgs(args);
|
|
113
|
+
const [localDefaults, globalDefaults] = await Promise.all([readDefaults('local'), readDefaults('global')]);
|
|
114
|
+
const resolvedDefaults = resolveDefaults(localDefaults, globalDefaults, [...PROJECT_DEFAULT_KEYS]);
|
|
115
|
+
const payload = await buildWorkCreatePayload(explicitPayload, resolvedDefaults);
|
|
116
|
+
const validationError = validateWorkNonEmptyStringFields(payload, WORK_STRING_VALIDATION_KEYS);
|
|
117
|
+
if (validationError !== undefined) {
|
|
118
|
+
throw new Error(validationError);
|
|
119
|
+
}
|
|
120
|
+
const userStory = await CicdGateway.call({
|
|
121
|
+
body: payload,
|
|
122
|
+
endpoint: workCreateEndpoint(),
|
|
123
|
+
headers: { 'Content-Type': 'application/json' },
|
|
124
|
+
method: 'POST',
|
|
125
|
+
});
|
|
126
|
+
return { userStory };
|
|
127
|
+
}
|
|
128
|
+
async function workUpdate(args) {
|
|
129
|
+
const payload = buildWorkMutationPayloadFromArgs(args);
|
|
130
|
+
if (Object.keys(payload).length === 0) {
|
|
131
|
+
throw new Error('Must provide at least one field to update.');
|
|
132
|
+
}
|
|
133
|
+
const validationError = validateWorkNonEmptyStringFields(payload, WORK_STRING_VALIDATION_KEYS);
|
|
134
|
+
if (validationError !== undefined) {
|
|
135
|
+
throw new Error(validationError);
|
|
136
|
+
}
|
|
137
|
+
const workItemId = await resolveWorkItemId(args.id);
|
|
138
|
+
const userStory = await CicdGateway.call({
|
|
139
|
+
body: payload,
|
|
140
|
+
endpoint: workEndpoint(workItemId),
|
|
141
|
+
headers: { 'Content-Type': 'application/json' },
|
|
142
|
+
method: 'PATCH',
|
|
143
|
+
});
|
|
144
|
+
return { userStory };
|
|
145
|
+
}
|
|
146
|
+
async function workDelete(args) {
|
|
147
|
+
const id = assertRequired(args.id, 'id');
|
|
148
|
+
await CicdGateway.call({
|
|
149
|
+
endpoint: workEndpoint(id),
|
|
150
|
+
method: 'DELETE',
|
|
151
|
+
});
|
|
152
|
+
return { deleted: true, id };
|
|
153
|
+
}
|
|
154
|
+
function formatPendingChangesError(pendingFiles, action) {
|
|
155
|
+
return new Error([
|
|
156
|
+
`Uncommitted tracked changes present. Commit or stash them, then try ${action} again:`,
|
|
157
|
+
...pendingFiles.map((file) => ` ${file}`),
|
|
158
|
+
].join('\n'));
|
|
159
|
+
}
|
|
160
|
+
async function requireFeatureBranchWorkItem() {
|
|
161
|
+
const branch = await getCurrentBranch();
|
|
162
|
+
const workItem = extractUserStoryFromFeatureBranch(branch);
|
|
163
|
+
if (workItem === undefined) {
|
|
164
|
+
throw new Error(`Current branch '${branch}' is not a feature/US-XXXX branch. Checkout a feature/US-XXXX branch created by work set.`);
|
|
165
|
+
}
|
|
166
|
+
return { branch, workItem };
|
|
167
|
+
}
|
|
168
|
+
async function requireCleanTrackedTree(action) {
|
|
169
|
+
const pendingFiles = await listPendingChanges();
|
|
170
|
+
if (pendingFiles.length > 0) {
|
|
171
|
+
throw formatPendingChangesError(pendingFiles, action);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async function requireRecordedBaseBranch() {
|
|
175
|
+
const baseBranch = (await readLastBaseBranch())?.trim();
|
|
176
|
+
if (baseBranch === undefined || baseBranch.length === 0) {
|
|
177
|
+
throw new Error('No base branch recorded. Run work set first.');
|
|
178
|
+
}
|
|
179
|
+
return baseBranch;
|
|
180
|
+
}
|
|
181
|
+
async function workSet(args) {
|
|
182
|
+
const workItem = assertRequired(args.id, 'id');
|
|
183
|
+
const setResponse = await CicdGateway.call({
|
|
184
|
+
body: { workItem },
|
|
185
|
+
endpoint: workSetEndpoint(),
|
|
186
|
+
headers: {
|
|
187
|
+
'Content-Type': 'application/json',
|
|
188
|
+
},
|
|
189
|
+
method: 'POST',
|
|
190
|
+
});
|
|
191
|
+
const overrideBaseBranch = args.baseBranch?.trim();
|
|
192
|
+
const baseBranch = overrideBaseBranch !== undefined && overrideBaseBranch.length > 0
|
|
193
|
+
? overrideBaseBranch
|
|
194
|
+
: setResponse.baseBranch?.trim();
|
|
195
|
+
if (baseBranch === undefined || baseBranch.length === 0) {
|
|
196
|
+
throw new Error('Work set response did not include a base branch.');
|
|
197
|
+
}
|
|
198
|
+
const userStoryId = setResponse.workItem.id?.trim();
|
|
199
|
+
if (userStoryId === undefined || userStoryId.length === 0) {
|
|
200
|
+
throw new Error('Work set response did not include a user story ID.');
|
|
201
|
+
}
|
|
202
|
+
const userStoryName = setResponse.workItem.name?.trim();
|
|
203
|
+
if (userStoryName === undefined || userStoryName.length === 0) {
|
|
204
|
+
throw new Error('Work set response did not include a user story name for the feature branch.');
|
|
205
|
+
}
|
|
206
|
+
const branch = featureBranchName(userStoryName);
|
|
207
|
+
await requireCleanTrackedTree('work set');
|
|
208
|
+
await fetchOriginBranch(baseBranch);
|
|
209
|
+
const checkout = await checkoutFeatureBranch(branch, baseBranch);
|
|
210
|
+
const pullRequestBaseUrl = setResponse.pullRequestBaseUrl?.trim();
|
|
211
|
+
await writeLastWorkSelection({
|
|
212
|
+
lastBaseBranch: baseBranch,
|
|
213
|
+
...(pullRequestBaseUrl !== undefined && pullRequestBaseUrl.length > 0
|
|
214
|
+
? { lastPullRequestBaseUrl: pullRequestBaseUrl }
|
|
215
|
+
: {}),
|
|
216
|
+
lastWorkItem: userStoryName,
|
|
217
|
+
lastWorkItemId: userStoryId,
|
|
218
|
+
});
|
|
219
|
+
return {
|
|
220
|
+
baseBranch,
|
|
221
|
+
command: setResponse.command,
|
|
222
|
+
git: {
|
|
223
|
+
branch: checkout.branch,
|
|
224
|
+
branchCreated: checkout.created,
|
|
225
|
+
fetched: true,
|
|
226
|
+
},
|
|
227
|
+
message: setResponse.message,
|
|
228
|
+
...(pullRequestBaseUrl !== undefined && pullRequestBaseUrl.length > 0
|
|
229
|
+
? { pullRequestBaseUrl }
|
|
230
|
+
: {}),
|
|
231
|
+
workItem: setResponse.workItem,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
async function workPush() {
|
|
235
|
+
const { branch, workItem } = await requireFeatureBranchWorkItem();
|
|
236
|
+
await requireCleanTrackedTree('work push');
|
|
237
|
+
const baseBranch = await requireRecordedBaseBranch();
|
|
238
|
+
return performWorkPush({
|
|
239
|
+
baseBranch,
|
|
240
|
+
branch,
|
|
241
|
+
hooks: silentWorkPushHooks,
|
|
242
|
+
workItem,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
async function workSubmit(args = {}) {
|
|
246
|
+
const { branch, workItem } = await requireFeatureBranchWorkItem();
|
|
247
|
+
await requireCleanTrackedTree('work submit');
|
|
248
|
+
const qualityGates = await runLocalQualityGates({
|
|
249
|
+
onOutput() {
|
|
250
|
+
// Capture output for the tool result/error; do not stream to the MCP stdio transport.
|
|
251
|
+
},
|
|
252
|
+
skip: args.skipLocalTests === true,
|
|
253
|
+
}).catch((error) => {
|
|
254
|
+
if (error instanceof LocalQualityGatesError && error.output.trim().length > 0) {
|
|
255
|
+
throw new LocalQualityGatesError(`${error.message}\n${error.output.trimEnd()}`, {
|
|
256
|
+
exitCode: error.exitCode,
|
|
257
|
+
output: error.output,
|
|
258
|
+
scriptPath: error.scriptPath,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
throw error;
|
|
262
|
+
});
|
|
263
|
+
let pushResult;
|
|
264
|
+
const needsPush = await hasUnpushedCommits(branch);
|
|
265
|
+
if (needsPush) {
|
|
266
|
+
const baseBranch = await requireRecordedBaseBranch();
|
|
267
|
+
pushResult = await performWorkPush({
|
|
268
|
+
baseBranch,
|
|
269
|
+
branch,
|
|
270
|
+
hooks: silentWorkPushHooks,
|
|
271
|
+
workItem,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
const submitBody = { workItem };
|
|
275
|
+
const submit = await CicdGateway.call({
|
|
276
|
+
body: submitBody,
|
|
277
|
+
endpoint: workSubmitEndpoint(),
|
|
278
|
+
headers: {
|
|
279
|
+
'Content-Type': 'application/json',
|
|
280
|
+
},
|
|
281
|
+
method: 'POST',
|
|
282
|
+
});
|
|
283
|
+
return {
|
|
284
|
+
branch,
|
|
285
|
+
push: pushResult,
|
|
286
|
+
pushed: needsPush,
|
|
287
|
+
qualityGates,
|
|
288
|
+
submit,
|
|
289
|
+
workItem,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
async function workTest(args = {}) {
|
|
293
|
+
if (args.local !== true) {
|
|
294
|
+
throw new Error('Only local=true is supported for now. Pass local: true to run project-root quality gates.');
|
|
295
|
+
}
|
|
296
|
+
const qualityGates = await runLocalQualityGates({
|
|
297
|
+
onOutput() {
|
|
298
|
+
// Capture output for the tool result/error; do not stream to the MCP stdio transport.
|
|
299
|
+
},
|
|
300
|
+
}).catch((error) => {
|
|
301
|
+
if (error instanceof LocalQualityGatesError && error.output.trim().length > 0) {
|
|
302
|
+
throw new LocalQualityGatesError(`${error.message}\n${error.output.trimEnd()}`, {
|
|
303
|
+
exitCode: error.exitCode,
|
|
304
|
+
output: error.output,
|
|
305
|
+
scriptPath: error.scriptPath,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
throw error;
|
|
309
|
+
});
|
|
310
|
+
return {
|
|
311
|
+
local: true,
|
|
312
|
+
qualityGates,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
async function workDone() {
|
|
316
|
+
const { branch, workItem } = await requireFeatureBranchWorkItem();
|
|
317
|
+
await requireCleanTrackedTree('work done');
|
|
318
|
+
let pushResult;
|
|
319
|
+
const needsPush = await hasUnpushedCommits(branch);
|
|
320
|
+
if (needsPush) {
|
|
321
|
+
const baseBranch = await requireRecordedBaseBranch();
|
|
322
|
+
pushResult = await performWorkPush({
|
|
323
|
+
baseBranch,
|
|
324
|
+
branch,
|
|
325
|
+
hooks: silentWorkPushHooks,
|
|
326
|
+
workItem,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
const doneBody = { workItem };
|
|
330
|
+
const done = await CicdGateway.call({
|
|
331
|
+
body: doneBody,
|
|
332
|
+
endpoint: workDoneEndpoint(),
|
|
333
|
+
headers: {
|
|
334
|
+
'Content-Type': 'application/json',
|
|
335
|
+
},
|
|
336
|
+
method: 'POST',
|
|
337
|
+
});
|
|
338
|
+
return {
|
|
339
|
+
branch,
|
|
340
|
+
done,
|
|
341
|
+
push: pushResult,
|
|
342
|
+
pushed: needsPush,
|
|
343
|
+
workItem,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
export const agentiaMcpWorkToolHandlers = {
|
|
347
|
+
workCreate,
|
|
348
|
+
workDelete,
|
|
349
|
+
workDone,
|
|
350
|
+
workGet,
|
|
351
|
+
workList,
|
|
352
|
+
workPush,
|
|
353
|
+
workSet,
|
|
354
|
+
workSubmit,
|
|
355
|
+
workTest,
|
|
356
|
+
workUpdate,
|
|
357
|
+
};
|
|
358
|
+
const workMutationSchema = {
|
|
359
|
+
acceptanceCriteria: z.string().optional().describe('Acceptance criteria.'),
|
|
360
|
+
actualPoints: z.number().int().optional().describe('Actual points.'),
|
|
361
|
+
asA: z.string().optional().describe('User story "as a" clause.'),
|
|
362
|
+
assignee: z.string().optional().describe('Assignee ID.'),
|
|
363
|
+
cancellationReason: z.string().optional().describe('Cancellation reason.'),
|
|
364
|
+
closeDate: z.string().optional().describe('Close date.'),
|
|
365
|
+
epic: z.string().optional().describe('Epic.'),
|
|
366
|
+
excludedFromCbm: z.boolean().optional().describe('Exclude from CBM.'),
|
|
367
|
+
feature: z.string().optional().describe('Feature.'),
|
|
368
|
+
functionalRequirements: z.string().optional().describe('Functional requirements.'),
|
|
369
|
+
ownerId: z.string().optional().describe('Owner ID.'),
|
|
370
|
+
plannedPoints: z.number().int().optional().describe('Planned points.'),
|
|
371
|
+
priority: z.number().int().optional().describe('Priority.'),
|
|
372
|
+
project: z.string().optional().describe('Project ID.'),
|
|
373
|
+
recordType: z.string().optional().describe('Record type.'),
|
|
374
|
+
releaseId: z.string().optional().describe('Release ID.'),
|
|
375
|
+
soThat: z.string().optional().describe('User story "so that" clause.'),
|
|
376
|
+
sourceCredential: z.string().optional().describe('Source credential ID.'),
|
|
377
|
+
sourceEnvironment: z.string().optional().describe('Source environment ID.'),
|
|
378
|
+
sprintId: z.string().optional().describe('Sprint ID.'),
|
|
379
|
+
status: z.string().optional().describe('Status.'),
|
|
380
|
+
team: z.string().optional().describe('Team.'),
|
|
381
|
+
technicalSpecifications: z.string().optional().describe('Technical specifications.'),
|
|
382
|
+
theme: z.string().optional().describe('Theme.'),
|
|
383
|
+
title: z.string().optional().describe('Title.'),
|
|
384
|
+
wantTo: z.string().optional().describe('User story "want to" clause.'),
|
|
385
|
+
};
|
|
386
|
+
const workListSchema = {
|
|
387
|
+
assignedToMe: z.boolean().optional().describe('Filter by the current user as assignee.'),
|
|
388
|
+
assigneeId: z.string().optional().describe('Filter by assignee ID.'),
|
|
389
|
+
assigneeName: z.string().optional().describe('Filter by assignee name.'),
|
|
390
|
+
name: z.string().optional().describe('Filter by name.'),
|
|
391
|
+
ownedByMe: z.boolean().optional().describe('Filter by the current user as owner.'),
|
|
392
|
+
ownerId: z.string().optional().describe('Filter by owner ID.'),
|
|
393
|
+
ownerName: z.string().optional().describe('Filter by owner name.'),
|
|
394
|
+
projectId: z.string().optional().describe('Filter by project ID.'),
|
|
395
|
+
projectName: z.string().optional().describe('Filter by project name.'),
|
|
396
|
+
status: z.string().optional().describe('Filter by status.'),
|
|
397
|
+
title: z.string().optional().describe('Filter by title.'),
|
|
398
|
+
...listPaginationZodFields,
|
|
399
|
+
};
|
|
400
|
+
export function registerAgentiaMcpWorkTools(server) {
|
|
401
|
+
server.registerTool('agentia_work_list', {
|
|
402
|
+
description: 'List Copado user stories via the CICD gateway.',
|
|
403
|
+
inputSchema: workListSchema,
|
|
404
|
+
title: 'Agentia Work List',
|
|
405
|
+
}, (args) => safelyHandleTool(() => workList(args || {})));
|
|
406
|
+
server.registerTool('agentia_work_get', {
|
|
407
|
+
description: 'Get a Copado user story by Id via the CICD gateway. Omit Id to use the active work item from work set.',
|
|
408
|
+
inputSchema: {
|
|
409
|
+
id: z.string().optional().describe('User story Id. Defaults to the active work item from work set.'),
|
|
410
|
+
},
|
|
411
|
+
title: 'Agentia Work Get',
|
|
412
|
+
}, (args) => safelyHandleTool(() => workGet(args || {})));
|
|
413
|
+
server.registerTool('agentia_work_create', {
|
|
414
|
+
description: 'Create a Copado user story via the CICD gateway.',
|
|
415
|
+
inputSchema: workMutationSchema,
|
|
416
|
+
title: 'Agentia Work Create',
|
|
417
|
+
}, (args) => safelyHandleTool(() => workCreate(args || {})));
|
|
418
|
+
server.registerTool('agentia_work_update', {
|
|
419
|
+
description: 'Update a Copado user story by Id via the CICD gateway. Omit Id to use the active work item from work set.',
|
|
420
|
+
inputSchema: {
|
|
421
|
+
...workMutationSchema,
|
|
422
|
+
id: z.string().optional().describe('User story Id. Defaults to the active work item from work set.'),
|
|
423
|
+
},
|
|
424
|
+
title: 'Agentia Work Update',
|
|
425
|
+
}, (args) => safelyHandleTool(() => workUpdate(args)));
|
|
426
|
+
server.registerTool('agentia_work_delete', {
|
|
427
|
+
description: 'Delete a Copado user story by Id via the CICD gateway.',
|
|
428
|
+
inputSchema: {
|
|
429
|
+
id: z.string().describe('User story Id.'),
|
|
430
|
+
},
|
|
431
|
+
title: 'Agentia Work Delete',
|
|
432
|
+
}, (args) => safelyHandleTool(() => workDelete(args)));
|
|
433
|
+
server.registerTool('agentia_work_set', {
|
|
434
|
+
description: 'Set the active Copado work item and prepare a local feature/<user-story-name> branch. Requires a clean tracked working tree.',
|
|
435
|
+
inputSchema: {
|
|
436
|
+
baseBranch: z
|
|
437
|
+
.string()
|
|
438
|
+
.optional()
|
|
439
|
+
.describe('Override the base branch returned by the work/set endpoint.'),
|
|
440
|
+
id: z.string().describe('User story Id or name.'),
|
|
441
|
+
},
|
|
442
|
+
title: 'Agentia Work Set',
|
|
443
|
+
}, (args) => safelyHandleTool(() => workSet(args)));
|
|
444
|
+
server.registerTool('agentia_work_push', {
|
|
445
|
+
description: 'Push the current feature/US-XXXX branch and register commits with Copado. Requires a clean working tree and a base branch from work set.',
|
|
446
|
+
inputSchema: {},
|
|
447
|
+
title: 'Agentia Work Push',
|
|
448
|
+
}, () => safelyHandleTool(() => workPush()));
|
|
449
|
+
server.registerTool('agentia_work_submit', {
|
|
450
|
+
description: 'Submit the current feature/US-XXXX work item for pipeline quality gates and validation. Runs project-root .agentia_quality_gates.sh (macOS/Linux) or .agentia_quality_gates.cmd (Windows) when present, then pushes and registers commits when the branch is ahead of origin.',
|
|
451
|
+
inputSchema: {
|
|
452
|
+
skipLocalTests: z
|
|
453
|
+
.boolean()
|
|
454
|
+
.optional()
|
|
455
|
+
.describe('Skip running local quality gates scripts in the project root.'),
|
|
456
|
+
},
|
|
457
|
+
title: 'Agentia Work Submit',
|
|
458
|
+
}, (args) => safelyHandleTool(() => workSubmit(args || {})));
|
|
459
|
+
server.registerTool('agentia_work_test', {
|
|
460
|
+
description: 'Run quality gates for the current work item. With local=true, runs project-root .agentia_quality_gates.sh (macOS/Linux) or .agentia_quality_gates.cmd (Windows) when present — the same local gates as work submit. Only local is supported for now.',
|
|
461
|
+
inputSchema: {
|
|
462
|
+
local: z
|
|
463
|
+
.boolean()
|
|
464
|
+
.optional()
|
|
465
|
+
.describe('Run local project-root quality gates scripts. Required for now (only local is supported).'),
|
|
466
|
+
},
|
|
467
|
+
title: 'Agentia Work Test',
|
|
468
|
+
}, (args) => safelyHandleTool(() => workTest(args || {})));
|
|
469
|
+
server.registerTool('agentia_work_done', {
|
|
470
|
+
description: 'Mark the current feature/US-XXXX work item done and promote it to the next environment. Pushes and registers commits when the branch is ahead of origin.',
|
|
471
|
+
inputSchema: {},
|
|
472
|
+
title: 'Agentia Work Done',
|
|
473
|
+
}, () => safelyHandleTool(() => workDone()));
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=work-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-tools.js","sourceRoot":"","sources":["../../../src/lib/mcp/work-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,8 @@ export type OpenBrowserDeps = {
|
|
|
4
4
|
platform?: NodeJS.Platform;
|
|
5
5
|
spawnImpl?: typeof spawn;
|
|
6
6
|
};
|
|
7
|
+
export type OpenUrlFn = (url: string, deps?: OpenBrowserDeps) => Promise<void>;
|
|
7
8
|
export declare function isHeadlessEnvironment(deps?: OpenBrowserDeps): boolean;
|
|
8
9
|
export declare function openUrl(url: string, deps?: OpenBrowserDeps): Promise<void>;
|
|
10
|
+
export declare function setOpenUrlForTests(fn: OpenUrlFn): void;
|
|
11
|
+
export declare function resetOpenUrlForTests(): void;
|
package/dist/lib/open-browser.js
CHANGED
|
@@ -8,7 +8,7 @@ export function isHeadlessEnvironment(deps = {}) {
|
|
|
8
8
|
}
|
|
9
9
|
return false;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
async function defaultOpenUrl(url, deps = {}) {
|
|
12
12
|
const currentPlatform = deps.platform ?? platform();
|
|
13
13
|
const spawnFn = deps.spawnImpl ?? spawn;
|
|
14
14
|
let command;
|
|
@@ -37,4 +37,16 @@ export async function openUrl(url, deps = {}) {
|
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
+
let openUrlFn = defaultOpenUrl;
|
|
41
|
+
export async function openUrl(url, deps = {}) {
|
|
42
|
+
await openUrlFn(url, deps);
|
|
43
|
+
}
|
|
44
|
+
// Test-only hook
|
|
45
|
+
export function setOpenUrlForTests(fn) {
|
|
46
|
+
openUrlFn = fn;
|
|
47
|
+
}
|
|
48
|
+
// Test-only hook
|
|
49
|
+
export function resetOpenUrlForTests() {
|
|
50
|
+
openUrlFn = defaultOpenUrl;
|
|
51
|
+
}
|
|
40
52
|
//# sourceMappingURL=open-browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-browser.js","sourceRoot":"","sources":["../../src/lib/open-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"open-browser.js","sourceRoot":"","sources":["../../src/lib/open-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAUhC,MAAM,UAAU,qBAAqB,CAAC,OAAwB,EAAE;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACnC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAA;IAEnD,IAAI,eAAe,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACxD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,OAAwB,EAAE;IACnE,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAA;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAA;IAEvC,IAAI,OAAe,CAAA;IACnB,IAAI,IAAc,CAAA;IAElB,IAAI,eAAe,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,GAAG,MAAM,CAAA;QAChB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;SAAM,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,GAAG,KAAK,CAAA;QACf,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAA;QACpB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE;YACnC,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,IAAI,SAAS,GAAc,cAAc,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,OAAwB,EAAE;IACnE,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,kBAAkB,CAAC,EAAa;IAC9C,SAAS,GAAG,EAAE,CAAA;AAChB,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,oBAAoB;IAClC,SAAS,GAAG,cAAc,CAAA;AAC5B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ListPaginationQuery, type PaginatedListResult } from './list-pagination.js';
|
|
1
2
|
export type Pipeline = {
|
|
2
3
|
id?: null | string;
|
|
3
4
|
mainBranch?: null | string;
|
|
@@ -49,6 +50,8 @@ export type QualityGateRuleCondition = {
|
|
|
49
50
|
export type PipelineListPage = {
|
|
50
51
|
currentPage?: number;
|
|
51
52
|
data?: Pipeline[];
|
|
53
|
+
hasMore?: boolean;
|
|
54
|
+
nextCursor?: string;
|
|
52
55
|
pageSize?: number;
|
|
53
56
|
totalPages?: number;
|
|
54
57
|
totalRecords?: number;
|
|
@@ -74,8 +77,10 @@ export type PipelineDescribeResponse = {
|
|
|
74
77
|
message?: string;
|
|
75
78
|
status?: string;
|
|
76
79
|
};
|
|
77
|
-
export
|
|
80
|
+
export type PipelineListFilters = ListPaginationQuery;
|
|
81
|
+
export declare function pipelineListEndpoint(filters?: PipelineListFilters): string;
|
|
78
82
|
export declare function pipelineDescribeEndpoint(id: string): string;
|
|
83
|
+
export declare function normalizePipelinesListPage(response: Pipeline[] | PipelineListResponse): PaginatedListResult<Pipeline>;
|
|
79
84
|
export declare function normalizePipelines(response: Pipeline[] | PipelineListResponse): Pipeline[];
|
|
80
85
|
export declare function pipelineConnectionsFromPipelines(pipelines: Pipeline[]): PipelineConnection[];
|
|
81
86
|
export declare function normalizePipelineDescribe(response: PipelineDescribe | PipelineDescribeResponse): PipelineDescribe;
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { cellValue, table } from './format.js';
|
|
2
|
+
import { appendListPaginationQueryParams, paginatedResultFromNestedData, } from './list-pagination.js';
|
|
2
3
|
import { normalizeSalesforceId } from './salesforce-id.js';
|
|
3
|
-
export function pipelineListEndpoint() {
|
|
4
|
-
|
|
4
|
+
export function pipelineListEndpoint(filters = {}) {
|
|
5
|
+
const params = new URLSearchParams();
|
|
6
|
+
appendListPaginationQueryParams(params, filters);
|
|
7
|
+
const query = params.toString();
|
|
8
|
+
return query.length > 0 ? `/corpus/pipelines?${query}` : '/corpus/pipelines';
|
|
5
9
|
}
|
|
6
10
|
export function pipelineDescribeEndpoint(id) {
|
|
7
11
|
return `/corpus/pipelines/${normalizeSalesforceId(id)}/describe`;
|
|
8
12
|
}
|
|
13
|
+
export function normalizePipelinesListPage(response) {
|
|
14
|
+
return paginatedResultFromNestedData(response);
|
|
15
|
+
}
|
|
9
16
|
export function normalizePipelines(response) {
|
|
10
|
-
|
|
11
|
-
return response;
|
|
12
|
-
}
|
|
13
|
-
return Array.isArray(response.data?.data) ? response.data.data : [];
|
|
17
|
+
return normalizePipelinesListPage(response).data;
|
|
14
18
|
}
|
|
15
19
|
export function pipelineConnectionsFromPipelines(pipelines) {
|
|
16
20
|
return pipelines.flatMap((pipeline) => pipeline.pipelineConnections ?? []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-types.js","sourceRoot":"","sources":["../../src/lib/pipeline-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"pipeline-types.js","sourceRoot":"","sources":["../../src/lib/pipeline-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,10 @@ import type { ProjectListFilters } from './project-types.js';
|
|
|
2
2
|
export declare const projectListFlags: {
|
|
3
3
|
readonly mine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
4
4
|
readonly name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
5
|
+
readonly cursor: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
6
|
+
readonly 'page-size': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
5
7
|
};
|
|
6
8
|
export type ProjectListFlagValues = {
|
|
7
|
-
|
|
8
|
-
name?: string;
|
|
9
|
+
[K in keyof typeof projectListFlags]?: K extends 'mine' ? boolean : K extends 'page-size' ? number : string;
|
|
9
10
|
};
|
|
10
11
|
export declare function buildProjectListFilters(flags: ProjectListFlagValues): ProjectListFilters;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
|
+
import { buildListPaginationQuery, listPaginationFlags } from './list-pagination.js';
|
|
2
3
|
export const projectListFlags = {
|
|
4
|
+
...listPaginationFlags,
|
|
3
5
|
mine: Flags.boolean({
|
|
4
6
|
description: 'List only projects owned by or related to the current user',
|
|
5
7
|
}),
|
|
@@ -15,6 +17,6 @@ export function buildProjectListFilters(flags) {
|
|
|
15
17
|
if (typeof flags.name === 'string') {
|
|
16
18
|
filters.name = flags.name;
|
|
17
19
|
}
|
|
18
|
-
return filters;
|
|
20
|
+
return { ...filters, ...buildListPaginationQuery(flags) };
|
|
19
21
|
}
|
|
20
22
|
//# sourceMappingURL=project-flags.js.map
|