@copado/agentia-cli 0.71.0-alpha.0 → 0.73.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/LICENSE.md +9 -9
- package/README.md +180 -170
- package/dist/commands/cicd/work/done.js +36 -22
- package/dist/commands/cicd/work/done.js.map +1 -1
- package/dist/commands/cicd/work/get.js +19 -10
- package/dist/commands/cicd/work/get.js.map +1 -1
- package/dist/commands/cicd/work/push.js +26 -21
- package/dist/commands/cicd/work/push.js.map +1 -1
- package/dist/commands/cicd/work/set.js +11 -20
- package/dist/commands/cicd/work/set.js.map +1 -1
- package/dist/commands/cicd/work/submit.js +40 -23
- package/dist/commands/cicd/work/submit.js.map +1 -1
- package/dist/commands/cicd/work/test.js +4 -0
- package/dist/commands/cicd/work/test.js.map +1 -1
- package/dist/hooks/init/migrate-user-config.d.ts +3 -0
- package/dist/hooks/init/migrate-user-config.js +17 -0
- package/dist/hooks/init/migrate-user-config.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/ai-gateway.js +2 -5
- package/dist/lib/ai-gateway.js.map +1 -1
- package/dist/lib/cicd-gateway.d.ts +4 -0
- package/dist/lib/cicd-gateway.js +23 -2
- package/dist/lib/cicd-gateway.js.map +1 -1
- package/dist/lib/defaults-store.d.ts +15 -0
- package/dist/lib/defaults-store.js +128 -21
- package/dist/lib/defaults-store.js.map +1 -1
- package/dist/lib/format.js +73 -26
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/git-worktree.d.ts +18 -0
- package/dist/lib/git-worktree.js +44 -0
- package/dist/lib/git-worktree.js.map +1 -1
- package/dist/lib/mcp/command-id.d.ts +4 -0
- package/dist/lib/mcp/command-id.js +59 -0
- package/dist/lib/mcp/command-id.js.map +1 -0
- package/dist/lib/mcp/result.d.ts +2 -1
- package/dist/lib/mcp/result.js +5 -3
- package/dist/lib/mcp/result.js.map +1 -1
- package/dist/lib/mcp/server.js +6 -2
- package/dist/lib/mcp/server.js.map +1 -1
- package/dist/lib/mcp/work-tools.js +25 -57
- package/dist/lib/mcp/work-tools.js.map +1 -1
- package/dist/lib/project-setup.js +59 -7
- package/dist/lib/project-setup.js.map +1 -1
- package/dist/lib/setup-templates.d.ts +3 -1
- package/dist/lib/setup-templates.js +3 -1
- package/dist/lib/setup-templates.js.map +1 -1
- package/dist/lib/testing-gateway.js +2 -5
- package/dist/lib/testing-gateway.js.map +1 -1
- package/dist/lib/var-replacement.d.ts +47 -0
- package/dist/lib/var-replacement.js +150 -0
- package/dist/lib/var-replacement.js.map +1 -0
- package/dist/lib/work-get-selection.d.ts +6 -0
- package/dist/lib/work-get-selection.js +44 -0
- package/dist/lib/work-get-selection.js.map +1 -0
- package/dist/lib/work-local-run-tests.d.ts +3 -0
- package/dist/lib/work-local-run-tests.js +5 -0
- package/dist/lib/work-local-run-tests.js.map +1 -1
- package/dist/lib/work-push.d.ts +21 -1
- package/dist/lib/work-push.js +203 -40
- package/dist/lib/work-push.js.map +1 -1
- package/dist/lib/work-set-selection.d.ts +11 -0
- package/dist/lib/work-set-selection.js +27 -0
- package/dist/lib/work-set-selection.js.map +1 -0
- package/dist/lib/work-types.d.ts +26 -0
- package/dist/lib/work-types.js +16 -0
- package/dist/lib/work-types.js.map +1 -1
- package/dist/lib/yaml-replacement.d.ts +41 -0
- package/dist/lib/yaml-replacement.js +129 -0
- package/dist/lib/yaml-replacement.js.map +1 -0
- package/oclif.manifest.json +1273 -1273
- package/package.json +7 -4
- package/vendor/java/var-replace-command.jar +0 -0
- package/vendor/java/yaml-replace-command.jar +0 -0
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
2
|
import { CicdGateway } from '../../../lib/cicd-gateway.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { extractUserStoryFromFeatureBranch, workDoneEndpoint, } from '../../../lib/work-types.js';
|
|
3
|
+
import { hasUnpushedCommits, listPendingChanges } from '../../../lib/git-worktree.js';
|
|
4
|
+
import { performWorkPush, resolveActiveFeatureWorkItem, resolveWorkPushContext, WorkPushValidationError, } from '../../../lib/work-push.js';
|
|
5
|
+
import { formatWorkCommandMessage, workDoneEndpoint, } from '../../../lib/work-types.js';
|
|
7
6
|
export default class WorkDone extends AgentiaCommand {
|
|
8
7
|
static description = [
|
|
9
|
-
'Mark the current feature
|
|
8
|
+
'Mark the current feature/<lastWorkItem> work item done and promote it to the next environment.',
|
|
10
9
|
'Pushes and registers commits when the branch is ahead of origin, then calls headless work/done',
|
|
11
10
|
'(Promote Action with validate=false).',
|
|
12
11
|
].join(' ');
|
|
13
12
|
static examples = ['<%= config.bin %> <%= command.id %>', '<%= config.bin %> <%= command.id %> --json'];
|
|
14
13
|
async run() {
|
|
15
14
|
await this.parse(WorkDone);
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
const startedAt = Date.now();
|
|
16
|
+
let branch;
|
|
17
|
+
let workItem;
|
|
18
|
+
try {
|
|
19
|
+
;
|
|
20
|
+
({ branch, workItem } = await resolveActiveFeatureWorkItem());
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof WorkPushValidationError) {
|
|
24
|
+
this.error(error.message, {
|
|
25
|
+
exit: error.exit,
|
|
26
|
+
suggestions: error.suggestions,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
throw error;
|
|
23
30
|
}
|
|
24
31
|
const pendingFiles = await listPendingChanges();
|
|
25
32
|
if (pendingFiles.length > 0) {
|
|
@@ -38,26 +45,32 @@ export default class WorkDone extends AgentiaCommand {
|
|
|
38
45
|
let pushResult;
|
|
39
46
|
const needsPush = await hasUnpushedCommits(branch);
|
|
40
47
|
if (needsPush) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
let pushContext;
|
|
49
|
+
try {
|
|
50
|
+
pushContext = await resolveWorkPushContext();
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof WorkPushValidationError) {
|
|
54
|
+
this.error(error.message, {
|
|
55
|
+
exit: error.exit,
|
|
56
|
+
suggestions: error.suggestions,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
46
60
|
}
|
|
47
61
|
this.display(() => {
|
|
48
|
-
this.log(`Base branch: ${baseBranch}`);
|
|
62
|
+
this.log(`Base branch: ${pushContext.baseBranch}`);
|
|
63
|
+
this.log(`Dev org branch: ${pushContext.devOrgBranch}`);
|
|
49
64
|
this.log('Unpushed commits detected; pushing before done.');
|
|
50
65
|
});
|
|
51
66
|
try {
|
|
52
67
|
pushResult = await performWorkPush({
|
|
53
|
-
|
|
54
|
-
branch,
|
|
68
|
+
...pushContext,
|
|
55
69
|
hooks: {
|
|
56
70
|
display: (render) => this.display(render),
|
|
57
71
|
log: (message) => this.log(message),
|
|
58
72
|
withSpinner: (message, action) => this.withSpinner(message, action),
|
|
59
73
|
},
|
|
60
|
-
workItem,
|
|
61
74
|
});
|
|
62
75
|
}
|
|
63
76
|
catch (error) {
|
|
@@ -85,8 +98,9 @@ export default class WorkDone extends AgentiaCommand {
|
|
|
85
98
|
method: 'POST',
|
|
86
99
|
}));
|
|
87
100
|
this.display(() => {
|
|
88
|
-
this.log(done.message);
|
|
101
|
+
this.log(formatWorkCommandMessage(done.message));
|
|
89
102
|
});
|
|
103
|
+
this.logElapsed(startedAt);
|
|
90
104
|
return {
|
|
91
105
|
branch,
|
|
92
106
|
done,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"done.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/done.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"done.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/done.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,25 +2,29 @@ import { Args } from '@oclif/core';
|
|
|
2
2
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
3
3
|
import { CicdGateway } from '../../../lib/cicd-gateway.js';
|
|
4
4
|
import { resolveWorkItemId, WorkActiveResolutionError } from '../../../lib/work-active.js';
|
|
5
|
-
import {
|
|
5
|
+
import { persistActiveDevOrgBranchFromGet } from '../../../lib/work-get-selection.js';
|
|
6
|
+
import { formatUserStoryDetail, workGetEndpoint, } from '../../../lib/work-types.js';
|
|
6
7
|
export default class WorkGet extends AgentiaCommand {
|
|
7
8
|
static args = {
|
|
8
9
|
id: Args.string({
|
|
9
|
-
description: 'User story ID (defaults to the active work item from `work set`)',
|
|
10
|
+
description: 'User story ID or name (defaults to the active work item from `work set`)',
|
|
10
11
|
required: false,
|
|
11
12
|
}),
|
|
12
13
|
};
|
|
13
|
-
static description =
|
|
14
|
+
static description = [
|
|
15
|
+
'Get a Copado user story by ID or name via headless work/get.',
|
|
16
|
+
'When the response includes `devOrgBranch` for the active work item, persists it as `lastDevOrgBranch`.',
|
|
17
|
+
].join(' ');
|
|
14
18
|
static examples = [
|
|
15
19
|
'<%= config.bin %> <%= command.id %>',
|
|
16
20
|
'<%= config.bin %> <%= command.id %> a0SKC000000CmZ2AU',
|
|
17
|
-
'<%= config.bin %> <%= command.id %>
|
|
21
|
+
'<%= config.bin %> <%= command.id %> US-0001 --json',
|
|
18
22
|
];
|
|
19
23
|
async run() {
|
|
20
24
|
const { args } = await this.parse(WorkGet);
|
|
21
|
-
let
|
|
25
|
+
let workItemKey;
|
|
22
26
|
try {
|
|
23
|
-
|
|
27
|
+
workItemKey = await resolveWorkItemId(args.id);
|
|
24
28
|
}
|
|
25
29
|
catch (error) {
|
|
26
30
|
if (error instanceof WorkActiveResolutionError) {
|
|
@@ -31,14 +35,19 @@ export default class WorkGet extends AgentiaCommand {
|
|
|
31
35
|
}
|
|
32
36
|
throw error;
|
|
33
37
|
}
|
|
34
|
-
const
|
|
35
|
-
endpoint:
|
|
38
|
+
const getResponse = await this.withSpinner('Fetching user story', () => CicdGateway.call({
|
|
39
|
+
endpoint: workGetEndpoint(workItemKey),
|
|
36
40
|
method: 'GET',
|
|
37
41
|
}));
|
|
42
|
+
await persistActiveDevOrgBranchFromGet(getResponse);
|
|
38
43
|
this.display(() => {
|
|
39
|
-
this.log(formatUserStoryDetail(
|
|
44
|
+
this.log(formatUserStoryDetail(getResponse.workItem));
|
|
45
|
+
const devOrgBranch = getResponse.devOrgBranch?.trim();
|
|
46
|
+
if (devOrgBranch !== undefined && devOrgBranch.length > 0) {
|
|
47
|
+
this.log(`Dev org branch: ${devOrgBranch}`);
|
|
48
|
+
}
|
|
40
49
|
});
|
|
41
|
-
return
|
|
50
|
+
return getResponse.workItem;
|
|
42
51
|
}
|
|
43
52
|
}
|
|
44
53
|
//# sourceMappingURL=get.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAC,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,6BAA6B,CAAA;AACxF,OAAO,EAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAC,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,6BAA6B,CAAA;AACxF,OAAO,EAAC,gCAAgC,EAAC,MAAM,oCAAoC,CAAA;AACnF,OAAO,EACL,qBAAqB,EAErB,eAAe,GAEhB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAAc;IACjD,MAAM,CAAU,IAAI,GAAG;QACrB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,0EAA0E;YACvF,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAA;IACD,MAAM,CAAU,WAAW,GAAG;QAC5B,8DAA8D;QAC9D,wGAAwG;KACzG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,uDAAuD;QACvD,oDAAoD;KACrD,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAExC,IAAI,WAAmB,CAAA;QAEvB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,CAAC;oBACP,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC;iBACvD,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,GAAG,EAAE,CACrE,WAAW,CAAC,IAAI,CAAkB;YAChC,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC;YACtC,MAAM,EAAE,KAAK;SACd,CAAC,CACH,CAAA;QAED,MAAM,gCAAgC,CAAC,WAAW,CAAC,CAAA;QAEnD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;YACrD,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,CAAA;YACrD,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,GAAG,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,WAAW,CAAC,QAAQ,CAAA;IAC7B,CAAC"}
|
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { performWorkPush, WorkPushValidationError } from '../../../lib/work-push.js';
|
|
5
|
-
import { extractUserStoryFromFeatureBranch } from '../../../lib/work-types.js';
|
|
2
|
+
import { listPendingChanges } from '../../../lib/git-worktree.js';
|
|
3
|
+
import { performWorkPush, resolveWorkPushContext, WorkPushValidationError, } from '../../../lib/work-push.js';
|
|
6
4
|
export default class WorkPush extends AgentiaCommand {
|
|
7
5
|
static description = [
|
|
8
|
-
'Push the current feature
|
|
9
|
-
'Requires a clean working tree and
|
|
10
|
-
'
|
|
6
|
+
'Push the current feature/<lastWorkItem> branch and register commits with Copado.',
|
|
7
|
+
'Requires a clean working tree, base branch, and dev org branch from `.agentia/config.user.json`.',
|
|
8
|
+
'Applies Copado environment-variable then yaml replacements when needed, commits both as a single follow-up commit, locks the tip commit, runs `git push origin <branch>`,',
|
|
9
|
+
'calls headless work/push, then merges the feature branch into the recorded dev org branch.',
|
|
11
10
|
].join(' ');
|
|
12
11
|
static examples = ['<%= config.bin %> <%= command.id %>', '<%= config.bin %> <%= command.id %> --json'];
|
|
13
12
|
async run() {
|
|
14
13
|
await this.parse(WorkPush);
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
exit: 1,
|
|
20
|
-
suggestions: ['Checkout a feature/US-XXXX branch created by `agentia cicd work set`.'],
|
|
21
|
-
});
|
|
14
|
+
const startedAt = Date.now();
|
|
15
|
+
let context;
|
|
16
|
+
try {
|
|
17
|
+
context = await resolveWorkPushContext();
|
|
22
18
|
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (error instanceof WorkPushValidationError) {
|
|
21
|
+
this.error(error.message, {
|
|
22
|
+
exit: error.exit,
|
|
23
|
+
suggestions: error.suggestions,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
const { baseBranch, branch, devOrgBranch, workItem, workItemId } = context;
|
|
23
29
|
const pendingFiles = await listPendingChanges();
|
|
24
30
|
if (pendingFiles.length > 0) {
|
|
25
31
|
this.error([
|
|
@@ -30,28 +36,27 @@ export default class WorkPush extends AgentiaCommand {
|
|
|
30
36
|
suggestions: ['git add -A && git commit', `${this.config.bin} cicd work push`],
|
|
31
37
|
});
|
|
32
38
|
}
|
|
33
|
-
const baseBranch = (await readLastBaseBranch())?.trim();
|
|
34
|
-
if (baseBranch === undefined || baseBranch.length === 0) {
|
|
35
|
-
this.error('No base branch recorded. Run `agentia cicd work set <work-item>` first.', {
|
|
36
|
-
exit: 1,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
39
|
this.display(() => {
|
|
40
40
|
this.log(`Branch: ${branch}`);
|
|
41
41
|
this.log(`Work item: ${workItem}`);
|
|
42
42
|
this.log(`Base branch: ${baseBranch}`);
|
|
43
|
+
this.log(`Dev org branch: ${devOrgBranch}`);
|
|
43
44
|
});
|
|
44
45
|
try {
|
|
45
|
-
|
|
46
|
+
const result = await performWorkPush({
|
|
46
47
|
baseBranch,
|
|
47
48
|
branch,
|
|
49
|
+
devOrgBranch,
|
|
48
50
|
hooks: {
|
|
49
51
|
display: (render) => this.display(render),
|
|
50
52
|
log: (message) => this.log(message),
|
|
51
53
|
withSpinner: (message, action) => this.withSpinner(message, action),
|
|
52
54
|
},
|
|
53
55
|
workItem,
|
|
56
|
+
workItemId,
|
|
54
57
|
});
|
|
58
|
+
this.logElapsed(startedAt);
|
|
59
|
+
return result;
|
|
55
60
|
}
|
|
56
61
|
catch (error) {
|
|
57
62
|
if (error instanceof WorkPushValidationError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
|
3
3
|
import { CicdGateway } from '../../../lib/cicd-gateway.js';
|
|
4
4
|
import { writeLastWorkSelection } from '../../../lib/defaults-store.js';
|
|
5
5
|
import { checkoutFeatureBranch, fetchOriginBranch, listPendingChanges } from '../../../lib/git-worktree.js';
|
|
6
|
+
import { parseWorkSetSelection } from '../../../lib/work-set-selection.js';
|
|
6
7
|
import { featureBranchName, workSetEndpoint, } from '../../../lib/work-types.js';
|
|
7
8
|
export default class WorkSet extends AgentiaCommand {
|
|
8
9
|
static args = {
|
|
@@ -40,21 +41,14 @@ export default class WorkSet extends AgentiaCommand {
|
|
|
40
41
|
this.display(() => {
|
|
41
42
|
this.log(setResponse.message);
|
|
42
43
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
: setResponse.baseBranch?.trim());
|
|
47
|
-
if (baseBranch === undefined || baseBranch.length === 0) {
|
|
48
|
-
this.error('Work set response did not include a base branch.', { exit: 1 });
|
|
44
|
+
let selection;
|
|
45
|
+
try {
|
|
46
|
+
selection = parseWorkSetSelection(setResponse, flags['base-branch']);
|
|
49
47
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
this.error('Work set response did not include a user story ID.', { exit: 1 });
|
|
53
|
-
}
|
|
54
|
-
const userStoryName = setResponse.workItem.name?.trim();
|
|
55
|
-
if (userStoryName === undefined || userStoryName.length === 0) {
|
|
56
|
-
this.error('Work set response did not include a user story name for the feature branch.', { exit: 1 });
|
|
48
|
+
catch (error) {
|
|
49
|
+
this.error(error instanceof Error ? error.message : String(error), { exit: 1 });
|
|
57
50
|
}
|
|
51
|
+
const { baseBranch, devOrgBranch, pullRequestBaseUrl, userStoryId, userStoryName } = selection;
|
|
58
52
|
const branch = featureBranchName(userStoryName);
|
|
59
53
|
const pendingFiles = await listPendingChanges();
|
|
60
54
|
if (pendingFiles.length > 0) {
|
|
@@ -82,27 +76,24 @@ export default class WorkSet extends AgentiaCommand {
|
|
|
82
76
|
this.log(`Checked out existing branch ${checkout.branch}.`);
|
|
83
77
|
}
|
|
84
78
|
});
|
|
85
|
-
const pullRequestBaseUrl = setResponse.pullRequestBaseUrl?.trim();
|
|
86
79
|
await writeLastWorkSelection({
|
|
87
80
|
lastBaseBranch: baseBranch,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
: {}),
|
|
81
|
+
lastDevOrgBranch: devOrgBranch,
|
|
82
|
+
...(pullRequestBaseUrl === undefined ? {} : { lastPullRequestBaseUrl: pullRequestBaseUrl }),
|
|
91
83
|
lastWorkItem: userStoryName,
|
|
92
84
|
lastWorkItemId: userStoryId,
|
|
93
85
|
});
|
|
94
86
|
return {
|
|
95
87
|
baseBranch,
|
|
96
88
|
command: setResponse.command,
|
|
89
|
+
devOrgBranch,
|
|
97
90
|
git: {
|
|
98
91
|
branch: checkout.branch,
|
|
99
92
|
branchCreated: checkout.created,
|
|
100
93
|
fetched: true,
|
|
101
94
|
},
|
|
102
95
|
message: setResponse.message,
|
|
103
|
-
...(pullRequestBaseUrl
|
|
104
|
-
? { pullRequestBaseUrl }
|
|
105
|
-
: {}),
|
|
96
|
+
...(pullRequestBaseUrl === undefined ? {} : { pullRequestBaseUrl }),
|
|
106
97
|
workItem: setResponse.workItem,
|
|
107
98
|
};
|
|
108
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAC,qBAAqB,EAAE,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,8BAA8B,CAAA;AACzG,OAAO,EACL,iBAAiB,EACjB,eAAe,GAGhB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,cAAc;IACjD,MAAM,CAAU,IAAI,GAAG;QACrB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,uBAAuB;YACpC,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAA;IACD,MAAM,CAAU,WAAW,GAAG;QAC5B,8DAA8D;QAC9D,kFAAkF;QAClF,2EAA2E;QAC3E,4BAA4B;KAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,uDAAuD;QACvD,oDAAoD;QACpD,mEAAmE;KACpE,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,4DAA4D;SAC1E,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,EAAE,CACnE,WAAW,CAAC,IAAI,CAAkB;YAChC,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAC;YACzB,QAAQ,EAAE,eAAe,EAAE;YAC3B,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,MAAM,EAAE,MAAM;SACf,CAAC,CACH,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;QAEF,
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/set.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,15 +3,15 @@ import path from 'node:path';
|
|
|
3
3
|
import { AgentiaCommand } from '../../../lib/agentia-command.js';
|
|
4
4
|
import { CicdGateway } from '../../../lib/cicd-gateway.js';
|
|
5
5
|
import { readLastBaseBranch, readLastPullRequestBaseUrl, readSkipPullRequest, } from '../../../lib/defaults-store.js';
|
|
6
|
-
import {
|
|
6
|
+
import { hasUnpushedCommits, listPendingChanges } from '../../../lib/git-worktree.js';
|
|
7
7
|
import { LocalQualityGatesError, resolveLocalQualityGatesScript, runLocalQualityGates, } from '../../../lib/local-quality-gates.js';
|
|
8
8
|
import { openUrl } from '../../../lib/open-browser.js';
|
|
9
9
|
import { reportLocalQualityGatesFailure, reportLocalQualityGatesOutcome, } from '../../../lib/work-local-run-tests.js';
|
|
10
|
-
import { performWorkPush, WorkPushValidationError } from '../../../lib/work-push.js';
|
|
11
|
-
import { buildPullRequestCompareUrl,
|
|
10
|
+
import { performWorkPush, resolveActiveFeatureWorkItem, resolveWorkPushContext, WorkPushValidationError, } from '../../../lib/work-push.js';
|
|
11
|
+
import { buildPullRequestCompareUrl, formatWorkCommandMessage, workSubmitEndpoint, } from '../../../lib/work-types.js';
|
|
12
12
|
export default class WorkSubmit extends AgentiaCommand {
|
|
13
13
|
static description = [
|
|
14
|
-
'Submit the current feature
|
|
14
|
+
'Submit the current feature/<lastWorkItem> work item for pipeline quality gates and validation.',
|
|
15
15
|
'Runs project-root .agentia_quality_gates.sh (macOS/Linux) or .agentia_quality_gates.cmd (Windows) when present,',
|
|
16
16
|
'pushes and registers commits when the branch is ahead of origin, then calls headless work/submit',
|
|
17
17
|
'(Promote Action with validate=true).',
|
|
@@ -33,18 +33,26 @@ export default class WorkSubmit extends AgentiaCommand {
|
|
|
33
33
|
}),
|
|
34
34
|
'skip-pull-request': Flags.boolean({
|
|
35
35
|
default: false,
|
|
36
|
-
description: 'Do not open the pull request compare URL after submit (also configurable via skipPullRequest in .agentia/config.json)',
|
|
36
|
+
description: 'Do not open the pull request compare URL after submit (also configurable via skipPullRequest in .agentia/config.json or .agentia/config.user.json)',
|
|
37
37
|
}),
|
|
38
38
|
};
|
|
39
39
|
async run() {
|
|
40
40
|
const { flags } = await this.parse(WorkSubmit);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
const startedAt = Date.now();
|
|
42
|
+
let branch;
|
|
43
|
+
let workItem;
|
|
44
|
+
try {
|
|
45
|
+
;
|
|
46
|
+
({ branch, workItem } = await resolveActiveFeatureWorkItem());
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error instanceof WorkPushValidationError) {
|
|
50
|
+
this.error(error.message, {
|
|
51
|
+
exit: error.exit,
|
|
52
|
+
suggestions: error.suggestions,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
throw error;
|
|
48
56
|
}
|
|
49
57
|
const pendingFiles = await listPendingChanges();
|
|
50
58
|
if (pendingFiles.length > 0) {
|
|
@@ -85,6 +93,7 @@ export default class WorkSubmit extends AgentiaCommand {
|
|
|
85
93
|
}
|
|
86
94
|
}
|
|
87
95
|
await reportLocalQualityGatesOutcome({
|
|
96
|
+
onLog: (message) => this.display(() => this.log(message)),
|
|
88
97
|
onWarning: (message) => this.warn(message),
|
|
89
98
|
qualityGates,
|
|
90
99
|
workItem,
|
|
@@ -97,6 +106,7 @@ export default class WorkSubmit extends AgentiaCommand {
|
|
|
97
106
|
});
|
|
98
107
|
await reportLocalQualityGatesFailure({
|
|
99
108
|
error,
|
|
109
|
+
onLog: (message) => this.display(() => this.log(message)),
|
|
100
110
|
onWarning: (message) => this.warn(message),
|
|
101
111
|
workItem,
|
|
102
112
|
});
|
|
@@ -110,26 +120,32 @@ export default class WorkSubmit extends AgentiaCommand {
|
|
|
110
120
|
let pushResult;
|
|
111
121
|
const needsPush = await hasUnpushedCommits(branch);
|
|
112
122
|
if (needsPush) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
123
|
+
let pushContext;
|
|
124
|
+
try {
|
|
125
|
+
pushContext = await resolveWorkPushContext();
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
if (error instanceof WorkPushValidationError) {
|
|
129
|
+
this.error(error.message, {
|
|
130
|
+
exit: error.exit,
|
|
131
|
+
suggestions: error.suggestions,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
118
135
|
}
|
|
119
136
|
this.display(() => {
|
|
120
|
-
this.log(`Base branch: ${baseBranch}`);
|
|
137
|
+
this.log(`Base branch: ${pushContext.baseBranch}`);
|
|
138
|
+
this.log(`Dev org branch: ${pushContext.devOrgBranch}`);
|
|
121
139
|
this.log('Unpushed commits detected; pushing before submit.');
|
|
122
140
|
});
|
|
123
141
|
try {
|
|
124
142
|
pushResult = await performWorkPush({
|
|
125
|
-
|
|
126
|
-
branch,
|
|
143
|
+
...pushContext,
|
|
127
144
|
hooks: {
|
|
128
145
|
display: (render) => this.display(render),
|
|
129
146
|
log: (message) => this.log(message),
|
|
130
147
|
withSpinner: (message, action) => this.withSpinner(message, action),
|
|
131
148
|
},
|
|
132
|
-
workItem,
|
|
133
149
|
});
|
|
134
150
|
}
|
|
135
151
|
catch (error) {
|
|
@@ -157,9 +173,10 @@ export default class WorkSubmit extends AgentiaCommand {
|
|
|
157
173
|
method: 'POST',
|
|
158
174
|
}));
|
|
159
175
|
this.display(() => {
|
|
160
|
-
this.log(submit.message);
|
|
176
|
+
this.log(formatWorkCommandMessage(submit.message));
|
|
161
177
|
});
|
|
162
178
|
await this.openPullRequestCompareUrl(branch, flags['skip-pull-request']);
|
|
179
|
+
this.logElapsed(startedAt);
|
|
163
180
|
return {
|
|
164
181
|
branch,
|
|
165
182
|
push: pushResult,
|
|
@@ -182,7 +199,7 @@ export default class WorkSubmit extends AgentiaCommand {
|
|
|
182
199
|
this.display(() => {
|
|
183
200
|
this.log(skipFlag
|
|
184
201
|
? 'Skipping pull request open (--skip-pull-request).'
|
|
185
|
-
: 'Skipping pull request open (skipPullRequest in .agentia/config.json).');
|
|
202
|
+
: 'Skipping pull request open (skipPullRequest in .agentia/config.json or .agentia/config.user.json).');
|
|
186
203
|
});
|
|
187
204
|
return;
|
|
188
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/submit.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ export default class WorkTest extends AgentiaCommand {
|
|
|
27
27
|
};
|
|
28
28
|
async run() {
|
|
29
29
|
const { flags } = await this.parse(WorkTest);
|
|
30
|
+
const startedAt = Date.now();
|
|
30
31
|
if (!flags.local) {
|
|
31
32
|
this.error('Only --local is supported for now.', {
|
|
32
33
|
exit: 1,
|
|
@@ -65,6 +66,7 @@ export default class WorkTest extends AgentiaCommand {
|
|
|
65
66
|
}
|
|
66
67
|
throw error;
|
|
67
68
|
}
|
|
69
|
+
this.logElapsed(startedAt);
|
|
68
70
|
return {
|
|
69
71
|
local: true,
|
|
70
72
|
qualityGates,
|
|
@@ -78,6 +80,7 @@ export default class WorkTest extends AgentiaCommand {
|
|
|
78
80
|
}
|
|
79
81
|
await reportLocalQualityGatesFailure({
|
|
80
82
|
error,
|
|
83
|
+
onLog: (message) => this.display(() => this.log(message)),
|
|
81
84
|
onWarning: (message) => this.warn(message),
|
|
82
85
|
workItem,
|
|
83
86
|
});
|
|
@@ -89,6 +92,7 @@ export default class WorkTest extends AgentiaCommand {
|
|
|
89
92
|
return;
|
|
90
93
|
}
|
|
91
94
|
await reportLocalQualityGatesOutcome({
|
|
95
|
+
onLog: (message) => this.display(() => this.log(message)),
|
|
92
96
|
onWarning: (message) => this.warn(message),
|
|
93
97
|
qualityGates,
|
|
94
98
|
workItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,GACrB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAC,iCAAiC,EAAsB,MAAM,4BAA4B,CAAA;AAEjG,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,cAAc;IAClD,MAAM,CAAU,WAAW,GAAG;QAC5B,8CAA8C;QAC9C,4EAA4E;QAC5E,0FAA0F;KAC3F,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,6CAA6C;QAC7C,kFAAkF;QAClF,oDAAoD;KACrD,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC;YAChC,WAAW,EACT,kGAAkG;SACrG,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,8CAA8C;SAC5D,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,GACrB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAC,iCAAiC,EAAsB,MAAM,4BAA4B,CAAA;AAEjG,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,cAAc;IAClD,MAAM,CAAU,WAAW,GAAG;QAC5B,8CAA8C;QAC9C,4EAA4E;QAC5E,0FAA0F;KAC3F,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,6CAA6C;QAC7C,kFAAkF;QAClF,oDAAoD;KACrD,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC;YAChC,WAAW,EACT,kGAAkG;SACrG,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,8CAA8C;SAC5D,CAAC;KACH,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,oCAAoC,EAAE;gBAC/C,IAAI,EAAE,CAAC;gBACP,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,yBAAyB,CAAC;aAC3D,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,YAA4C,CAAA;QAChD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,8BAA8B,EAAE,CAAA;YACnD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAChB,IAAI,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,YAAY,GAAG,MAAM,oBAAoB,CAAC;gBACxC,eAAe,EAAE,KAAK,CAAC,mBAAmB,CAAC;aAC5C,CAAC,CAAA;YAEF,IAAI,YAAY,CAAC,GAAG,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAChB,IAAI,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAoB,CAAC,IAAI,CAAC,CAAA;gBACjG,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,IAAI,YAAY,CAAC,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC7C,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAChB,IAAI,CAAC,GAAG,CAAC,iCAAiC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBAChF,CAAC,CAAC,CAAA;gBACF,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;gBACpC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;iBAC1B,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAE1B,OAAO;YACL,KAAK,EAAE,IAAI;YACX,YAAY;SACb,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,KAA6B;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAA;QACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;YAC1F,OAAM;QACR,CAAC;QAED,MAAM,8BAA8B,CAAC;YACnC,KAAK;YACL,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,YAA4C;QAC3E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAA;QACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;YAC1F,OAAM;QACR,CAAC;QAED,MAAM,8BAA8B,CAAC;YACnC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C,YAAY;YACZ,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAA;QACvC,OAAO,iCAAiC,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { migrateUserSettingsFromProjectConfig } from '../../lib/defaults-store.js';
|
|
2
|
+
const hook = async function ({ id }) {
|
|
3
|
+
if (id === undefined || !id.startsWith('cicd')) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
try {
|
|
7
|
+
const result = await migrateUserSettingsFromProjectConfig();
|
|
8
|
+
if (result.migrated) {
|
|
9
|
+
this.warn('Moved user settings from .agentia/config.json to .agentia/config.user.json.');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// Best-effort migration must never block the requested command.
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export default hook;
|
|
17
|
+
//# sourceMappingURL=migrate-user-config.js.map
|