@copado/agentia-cli 0.119.0-alpha.0 → 0.121.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 (34) hide show
  1. package/README.md +235 -234
  2. package/dist/commands/cicd/work/done.js +2 -1
  3. package/dist/commands/cicd/work/done.js.map +1 -1
  4. package/dist/commands/cicd/work/publish.js +2 -1
  5. package/dist/commands/cicd/work/publish.js.map +1 -1
  6. package/dist/commands/cicd/work/push.js +2 -1
  7. package/dist/commands/cicd/work/push.js.map +1 -1
  8. package/dist/commands/cicd/work/submit.js +134 -132
  9. package/dist/commands/cicd/work/submit.js.map +1 -1
  10. package/dist/lib/agentia-command.d.ts +1 -0
  11. package/dist/lib/agentia-command.js +14 -1
  12. package/dist/lib/agentia-command.js.map +1 -1
  13. package/dist/lib/command-output-buffer.d.ts +31 -0
  14. package/dist/lib/command-output-buffer.js +124 -0
  15. package/dist/lib/command-output-buffer.js.map +1 -0
  16. package/dist/lib/loopback-callback-server.d.ts +1 -0
  17. package/dist/lib/loopback-callback-server.js +13 -6
  18. package/dist/lib/loopback-callback-server.js.map +1 -1
  19. package/dist/lib/mcp/tools.d.ts +20 -8
  20. package/dist/lib/mcp/work-tools.d.ts +20 -8
  21. package/dist/lib/mcp/work-tools.js +96 -95
  22. package/dist/lib/mcp/work-tools.js.map +1 -1
  23. package/dist/lib/work-publish-command.js +1 -1
  24. package/dist/lib/work-publish-command.js.map +1 -1
  25. package/dist/lib/work-push.d.ts +2 -0
  26. package/dist/lib/work-push.js +20 -6
  27. package/dist/lib/work-push.js.map +1 -1
  28. package/dist/lib/work-types.d.ts +10 -0
  29. package/dist/lib/work-types.js.map +1 -1
  30. package/dist/lib/yaml-replacement.d.ts +1 -0
  31. package/dist/lib/yaml-replacement.js +1 -0
  32. package/dist/lib/yaml-replacement.js.map +1 -1
  33. package/oclif.manifest.json +121 -121
  34. package/package.json +13 -3
@@ -1,4 +1,5 @@
1
1
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { commandStdioCaptureOptions, withCapturedCommandOutput } from '../../../lib/command-output-buffer.js';
2
3
  import { runWorkDone, workDoneFlags } from '../../../lib/work-done.js';
3
4
  /**
4
5
  * Compatibility alias of `cicd work submit --done` (Copado UI Submit when promoting).
@@ -21,7 +22,7 @@ export default class WorkDone extends AgentiaCommand {
21
22
  };
22
23
  async run() {
23
24
  const { flags } = await this.parse(WorkDone);
24
- return runWorkDone(this, flags);
25
+ return withCapturedCommandOutput(() => runWorkDone(this, flags), commandStdioCaptureOptions(this));
25
26
  }
26
27
  }
27
28
  //# sourceMappingURL=done.js.map
@@ -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,EAAE,aAAa,EAAoB,MAAM,2BAA2B,CAAA;AAGvF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,cAAc;IAClD,MAAM,CAAU,WAAW,GAAG;QAC5B,mCAAmC;QACnC,8DAA8D;QAC9D,0CAA0C;KAC3C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,2CAA2C;QAC3C,qCAAqC;QACrC,sEAAsE;QACtE,4CAA4C;KAC7C,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,aAAa;KACjB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC1C,OAAO,WAAW,CAAC,IAA+B,EAAE,KAAK,CAAC,CAAA;IAC5D,CAAC"}
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,0BAA0B,EAAE,yBAAyB,EAAC,MAAM,uCAAuC,CAAA;AAC3G,OAAO,EAAC,WAAW,EAAE,aAAa,EAAoB,MAAM,2BAA2B,CAAA;AAGvF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,cAAc;IAClD,MAAM,CAAU,WAAW,GAAG;QAC5B,mCAAmC;QACnC,8DAA8D;QAC9D,0CAA0C;KAC3C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,2CAA2C;QAC3C,qCAAqC;QACrC,sEAAsE;QACtE,4CAA4C;KAC7C,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,aAAa;KACjB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC1C,OAAO,yBAAyB,CAC9B,GAAG,EAAE,CAAC,WAAW,CAAC,IAA+B,EAAE,KAAK,CAAC,EACzD,0BAA0B,CAAC,IAAI,CAAC,CACjC,CAAA;IACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { commandStdioCaptureOptions, withCapturedCommandOutput } from '../../../lib/command-output-buffer.js';
2
3
  import { runWorkPublish, WORK_PUBLISH_DESCRIPTION, workPublishFlags, } from '../../../lib/work-publish-command.js';
3
4
  export default class WorkPublish extends AgentiaCommand {
4
5
  static description = WORK_PUBLISH_DESCRIPTION;
@@ -14,7 +15,7 @@ export default class WorkPublish extends AgentiaCommand {
14
15
  };
15
16
  async run() {
16
17
  const { flags } = await this.parse(WorkPublish);
17
- return runWorkPublish(this, flags);
18
+ return withCapturedCommandOutput(() => runWorkPublish(this, flags), commandStdioCaptureOptions(this));
18
19
  }
19
20
  }
20
21
  //# sourceMappingURL=publish.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,gBAAgB,GAEjB,MAAM,sCAAsC,CAAA;AAG7C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,cAAc;IACrD,MAAM,CAAU,WAAW,GAAG,wBAAwB,CAAA;IACtD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,uGAAuG;QACvG,oFAAoF;QACpF,sEAAsE;QACtE,4CAA4C;KAC7C,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,gBAAgB;KACpB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC7C,OAAO,cAAc,CAAC,IAAkC,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAC,0BAA0B,EAAE,yBAAyB,EAAC,MAAM,uCAAuC,CAAA;AAC3G,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,gBAAgB,GAEjB,MAAM,sCAAsC,CAAA;AAG7C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,cAAc;IACrD,MAAM,CAAU,WAAW,GAAG,wBAAwB,CAAA;IACtD,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,uGAAuG;QACvG,oFAAoF;QACpF,sEAAsE;QACtE,4CAA4C;KAC7C,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,gBAAgB;KACpB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC7C,OAAO,yBAAyB,CAC9B,GAAG,EAAE,CAAC,cAAc,CAAC,IAAkC,EAAE,KAAK,CAAC,EAC/D,0BAA0B,CAAC,IAAI,CAAC,CACjC,CAAA;IACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
2
+ import { commandStdioCaptureOptions, withCapturedCommandOutput } from '../../../lib/command-output-buffer.js';
2
3
  import { runWorkPublish, workPublishFlags, } from '../../../lib/work-publish-command.js';
3
4
  /**
4
5
  * Compatibility alias of `cicd work publish`.
@@ -21,7 +22,7 @@ export default class WorkPush extends AgentiaCommand {
21
22
  };
22
23
  async run() {
23
24
  const { flags } = await this.parse(WorkPush);
24
- return runWorkPublish(this, flags);
25
+ return withCapturedCommandOutput(() => runWorkPublish(this, flags), commandStdioCaptureOptions(this));
25
26
  }
26
27
  }
27
28
  //# sourceMappingURL=push.js.map
@@ -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,EACL,cAAc,EACd,gBAAgB,GAEjB,MAAM,sCAAsC,CAAA;AAG7C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,cAAc;IAClD,MAAM,CAAU,WAAW,GAAG;QAC5B,6BAA6B;QAC7B,wFAAwF;QACxF,oCAAoC;KACrC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,qCAAqC;QACrC,sEAAsE;QACtE,4CAA4C;KAC7C,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,gBAAgB;KACpB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC1C,OAAO,cAAc,CAAC,IAAkC,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC"}
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,0BAA0B,EAAE,yBAAyB,EAAC,MAAM,uCAAuC,CAAA;AAC3G,OAAO,EACL,cAAc,EACd,gBAAgB,GAEjB,MAAM,sCAAsC,CAAA;AAG7C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,cAAc;IAClD,MAAM,CAAU,WAAW,GAAG;QAC5B,6BAA6B;QAC7B,wFAAwF;QACxF,oCAAoC;KACrC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAU,QAAQ,GAAG;QACzB,qCAAqC;QACrC,qCAAqC;QACrC,sEAAsE;QACtE,4CAA4C;KAC7C,CAAA;IACD,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,gBAAgB;KACpB,CAAA;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC1C,OAAO,yBAAyB,CAC9B,GAAG,EAAE,CAAC,cAAc,CAAC,IAAkC,EAAE,KAAK,CAAC,EAC/D,0BAA0B,CAAC,IAAI,CAAC,CACjC,CAAA;IACH,CAAC"}
@@ -2,6 +2,7 @@ import { Flags } from '@oclif/core';
2
2
  import path from 'node:path';
3
3
  import { AgentiaCommand } from '../../../lib/agentia-command.js';
4
4
  import { CicdGateway } from '../../../lib/cicd-gateway.js';
5
+ import { attachCapturedOutputLogs, commandStdioCaptureOptions, withCapturedCommandOutput } from '../../../lib/command-output-buffer.js';
5
6
  import { readLastBaseBranch, readLastPullRequestBaseUrl, readSkipPullRequest, } from '../../../lib/defaults-store.js';
6
7
  import { listPendingChanges } from '../../../lib/git-worktree.js';
7
8
  import { LocalQualityGatesError, resolveLocalQualityGatesScript, runLocalQualityGates, } from '../../../lib/local-quality-gates.js';
@@ -54,133 +55,94 @@ export default class WorkSubmit extends AgentiaCommand {
54
55
  async run() {
55
56
  const { flags } = await this.parse(WorkSubmit);
56
57
  if (this.shouldPromote(flags)) {
57
- return runWorkDone(this, pickWorkDoneFlags(flags));
58
+ return withCapturedCommandOutput(() => runWorkDone(this, pickWorkDoneFlags(flags)), commandStdioCaptureOptions(this));
58
59
  }
59
- const startedAt = Date.now();
60
- let branch;
61
- let workItem;
62
- try {
63
- ;
64
- ({ branch, workItem } = await resolveActiveFeatureWorkItem());
65
- }
66
- catch (error) {
67
- if (error instanceof WorkPushValidationError) {
68
- this.error(error.message, {
69
- exit: error.exit,
70
- suggestions: error.suggestions,
71
- });
60
+ return withCapturedCommandOutput(async () => {
61
+ const startedAt = Date.now();
62
+ let branch;
63
+ let workItem;
64
+ try {
65
+ ;
66
+ ({ branch, workItem } = await resolveActiveFeatureWorkItem());
72
67
  }
73
- throw error;
74
- }
75
- const pendingFiles = await listPendingChanges();
76
- if (pendingFiles.length > 0) {
77
- this.error([
78
- 'Uncommitted tracked changes present. Commit them, then try again:',
79
- ...pendingFiles.map((file) => ` ${file}`),
80
- ].join('\n'), {
81
- exit: 2,
82
- suggestions: ['git add -A && git commit', `${this.config.bin} cicd work submit`],
83
- });
84
- }
85
- this.display(() => {
86
- this.log(`Branch: ${branch}`);
87
- this.log(`Work item: ${workItem}`);
88
- });
89
- let qualityGates;
90
- try {
91
- if (flags['skip-local-tests']) {
92
- this.display(() => {
93
- this.log('Skipping local quality gates (--skip-local-tests).');
68
+ catch (error) {
69
+ if (error instanceof WorkPushValidationError) {
70
+ this.error(error.message, {
71
+ exit: error.exit,
72
+ suggestions: error.suggestions,
73
+ });
74
+ }
75
+ throw error;
76
+ }
77
+ const pendingFiles = await listPendingChanges();
78
+ if (pendingFiles.length > 0) {
79
+ this.error([
80
+ 'Uncommitted tracked changes present. Commit them, then try again:',
81
+ ...pendingFiles.map((file) => ` ${file}`),
82
+ ].join('\n'), {
83
+ exit: 2,
84
+ suggestions: ['git add -A && git commit', `${this.config.bin} cicd work submit`],
94
85
  });
95
- qualityGates = await runLocalQualityGates({ skip: true });
96
86
  }
97
- else {
98
- const scriptPath = resolveLocalQualityGatesScript();
99
- if (scriptPath !== undefined) {
87
+ this.display(() => {
88
+ this.log(`Branch: ${branch}`);
89
+ this.log(`Work item: ${workItem}`);
90
+ });
91
+ let qualityGates;
92
+ try {
93
+ if (flags['skip-local-tests']) {
100
94
  this.display(() => {
101
- this.log(`Running local quality gates (${path.basename(scriptPath)})...`);
95
+ this.log('Skipping local quality gates (--skip-local-tests).');
102
96
  });
97
+ qualityGates = await runLocalQualityGates({ skip: true });
103
98
  }
104
- qualityGates = await runLocalQualityGates({
105
- apexTestClasses: flags['apex-test-classes'],
106
- });
107
- if (qualityGates.ran && qualityGates.scriptPath !== undefined) {
108
- this.display(() => {
109
- this.log(`Finished local quality gates (${path.basename(qualityGates.scriptPath)}).`);
99
+ else {
100
+ const scriptPath = resolveLocalQualityGatesScript();
101
+ if (scriptPath !== undefined) {
102
+ this.display(() => {
103
+ this.log(`Running local quality gates (${path.basename(scriptPath)})...`);
104
+ });
105
+ }
106
+ qualityGates = await runLocalQualityGates({
107
+ apexTestClasses: flags['apex-test-classes'],
110
108
  });
109
+ if (qualityGates.ran && qualityGates.scriptPath !== undefined) {
110
+ this.display(() => {
111
+ this.log(`Finished local quality gates (${path.basename(qualityGates.scriptPath)}).`);
112
+ });
113
+ }
111
114
  }
112
- }
113
- await reportLocalQualityGatesOutcome({
114
- onLog: (message) => this.display(() => this.log(message)),
115
- onWarning: (message) => this.warn(message),
116
- qualityGates,
117
- workItem,
118
- });
119
- }
120
- catch (error) {
121
- if (error instanceof LocalQualityGatesError) {
122
- this.display(() => {
123
- this.log(`Finished local quality gates (${path.basename(error.scriptPath)}).`);
124
- });
125
- await reportLocalQualityGatesFailure({
126
- error,
115
+ await reportLocalQualityGatesOutcome({
127
116
  onLog: (message) => this.display(() => this.log(message)),
128
117
  onWarning: (message) => this.warn(message),
118
+ qualityGates,
129
119
  workItem,
130
120
  });
131
- this.error(error.message, {
132
- exit: error.exitCode || 1,
133
- suggestions: [`${this.config.bin} cicd work submit --skip-local-tests`],
134
- });
135
- }
136
- throw error;
137
- }
138
- let needsPush;
139
- let skippedForDataSteps = false;
140
- try {
141
- const pushNeed = await resolveWorkPushNeed(branch);
142
- needsPush = pushNeed.needsPush;
143
- skippedForDataSteps = pushNeed.skippedForDataSteps;
144
- }
145
- catch (error) {
146
- if (error instanceof WorkPushValidationError) {
147
- this.error(error.message, {
148
- exit: error.exit,
149
- suggestions: error.suggestions,
150
- });
151
- }
152
- throw error;
153
- }
154
- let pushResult;
155
- if (needsPush) {
156
- let pushContext;
157
- try {
158
- pushContext = await resolveWorkPushContext();
159
121
  }
160
122
  catch (error) {
161
- if (error instanceof WorkPushValidationError) {
123
+ if (error instanceof LocalQualityGatesError) {
124
+ this.display(() => {
125
+ this.log(`Finished local quality gates (${path.basename(error.scriptPath)}).`);
126
+ });
127
+ await reportLocalQualityGatesFailure({
128
+ error,
129
+ onLog: (message) => this.display(() => this.log(message)),
130
+ onWarning: (message) => this.warn(message),
131
+ workItem,
132
+ });
162
133
  this.error(error.message, {
163
- exit: error.exit,
164
- suggestions: error.suggestions,
134
+ exit: error.exitCode || 1,
135
+ suggestions: [`${this.config.bin} cicd work submit --skip-local-tests`],
165
136
  });
166
137
  }
167
138
  throw error;
168
139
  }
169
- this.display(() => {
170
- this.log(`Base branch: ${pushContext.baseBranch}`);
171
- this.log(`Dev org branch: ${pushContext.devOrgBranch}`);
172
- this.log('Unpushed commits detected; pushing before submit.');
173
- });
140
+ let needsPush;
141
+ let skippedForDataSteps = false;
174
142
  try {
175
- pushResult = await performWorkPush({
176
- ...pushContext,
177
- hooks: {
178
- display: (render) => this.display(render),
179
- log: (message) => this.log(message),
180
- withSpinner: (message, action) => this.withSpinner(message, action),
181
- },
182
- skipNestedMetadataDetection: flags['skip-nested-metadata-detection'],
183
- });
143
+ const pushNeed = await resolveWorkPushNeed(branch);
144
+ needsPush = pushNeed.needsPush;
145
+ skippedForDataSteps = pushNeed.skippedForDataSteps;
184
146
  }
185
147
  catch (error) {
186
148
  if (error instanceof WorkPushValidationError) {
@@ -191,34 +153,74 @@ export default class WorkSubmit extends AgentiaCommand {
191
153
  }
192
154
  throw error;
193
155
  }
194
- }
195
- else if (!skippedForDataSteps) {
156
+ let pushResult;
157
+ if (needsPush) {
158
+ let pushContext;
159
+ try {
160
+ pushContext = await resolveWorkPushContext();
161
+ }
162
+ catch (error) {
163
+ if (error instanceof WorkPushValidationError) {
164
+ this.error(error.message, {
165
+ exit: error.exit,
166
+ suggestions: error.suggestions,
167
+ });
168
+ }
169
+ throw error;
170
+ }
171
+ this.display(() => {
172
+ this.log(`Base branch: ${pushContext.baseBranch}`);
173
+ this.log(`Dev org branch: ${pushContext.devOrgBranch}`);
174
+ this.log('Unpushed commits detected; pushing before submit.');
175
+ });
176
+ try {
177
+ pushResult = await performWorkPush({
178
+ ...pushContext,
179
+ hooks: {
180
+ display: (render) => this.display(render),
181
+ log: (message) => this.log(message),
182
+ withSpinner: (message, action) => this.withSpinner(message, action),
183
+ },
184
+ skipNestedMetadataDetection: flags['skip-nested-metadata-detection'],
185
+ });
186
+ }
187
+ catch (error) {
188
+ if (error instanceof WorkPushValidationError) {
189
+ this.error(error.message, {
190
+ exit: error.exit,
191
+ suggestions: error.suggestions,
192
+ });
193
+ }
194
+ throw error;
195
+ }
196
+ }
197
+ else if (!skippedForDataSteps) {
198
+ this.display(() => {
199
+ this.log('Branch is up to date with origin; skipping push.');
200
+ });
201
+ }
202
+ const submit = await this.withSpinner('Submitting work item', () => CicdGateway.call({
203
+ body: attachCapturedOutputLogs({ workItem }),
204
+ endpoint: workSubmitEndpoint(),
205
+ headers: {
206
+ 'Content-Type': 'application/json',
207
+ },
208
+ method: 'POST',
209
+ }));
196
210
  this.display(() => {
197
- this.log('Branch is up to date with origin; skipping push.');
211
+ this.log(formatWorkCommandMessage(submit.message));
198
212
  });
199
- }
200
- const submitBody = { workItem };
201
- const submit = await this.withSpinner('Submitting work item', () => CicdGateway.call({
202
- body: submitBody,
203
- endpoint: workSubmitEndpoint(),
204
- headers: {
205
- 'Content-Type': 'application/json',
206
- },
207
- method: 'POST',
208
- }));
209
- this.display(() => {
210
- this.log(formatWorkCommandMessage(submit.message));
211
- });
212
- await this.openPullRequestCompareUrl(branch, flags['skip-pull-request']);
213
- this.logElapsed(startedAt);
214
- return {
215
- branch,
216
- push: pushResult,
217
- pushed: needsPush,
218
- qualityGates,
219
- submit,
220
- workItem,
221
- };
213
+ await this.openPullRequestCompareUrl(branch, flags['skip-pull-request']);
214
+ this.logElapsed(startedAt);
215
+ return {
216
+ branch,
217
+ push: pushResult,
218
+ pushed: needsPush,
219
+ qualityGates,
220
+ submit,
221
+ workItem,
222
+ };
223
+ }, commandStdioCaptureOptions(this));
222
224
  }
223
225
  async openPullRequestCompareUrl(featureBranch, skipFlag) {
224
226
  const pullRequestBaseUrl = (await readLastPullRequestBaseUrl())?.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../../src/commands/cicd/work/submit.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare abstract class AgentiaCommand extends Command {
7
7
  protected _run<T>(): Promise<T>;
8
8
  protected display(render: () => void): void;
9
9
  protected finally(error: Error | undefined): Promise<unknown>;
10
+ log(message?: string, ...args: string[]): void;
10
11
  protected logElapsed(startedAtMs: number): void;
11
12
  protected toErrorJson(err: unknown): unknown;
12
13
  protected toSuccessJson(result: unknown): unknown;
@@ -1,5 +1,7 @@
1
1
  import { Command, ux } from '@oclif/core';
2
+ import { format } from 'node:util';
2
3
  import { createTransactionId, runWithGatewayTransactionContext } from './cicd-gateway.js';
4
+ import { isCommandOutputCaptureActive } from './command-output-buffer.js';
3
5
  import { rememberIdeCommandError } from './ide-command-events.js';
4
6
  export function elapsedSecondsSince(startedAtMs, nowMs = Date.now()) {
5
7
  return Math.max(0, Math.floor((nowMs - startedAtMs) / 1000));
@@ -16,7 +18,7 @@ export class AgentiaCommand extends Command {
16
18
  return runWithGatewayTransactionContext({ origin: 'cli', referer: this.id, transactionId }, () => super._run());
17
19
  }
18
20
  display(render) {
19
- if (!this.jsonEnabled()) {
21
+ if (!this.jsonEnabled() || isCommandOutputCaptureActive()) {
20
22
  render();
21
23
  }
22
24
  }
@@ -24,6 +26,14 @@ export class AgentiaCommand extends Command {
24
26
  rememberIdeCommandError(error);
25
27
  return super.finally(error);
26
28
  }
29
+ log(message, ...args) {
30
+ if (this.jsonEnabled() && isCommandOutputCaptureActive()) {
31
+ const formatted = format(message ?? '', ...args);
32
+ process.stdout.write(formatted.endsWith('\n') ? formatted : `${formatted}\n`);
33
+ return;
34
+ }
35
+ super.log(message, ...args);
36
+ }
27
37
  logElapsed(startedAtMs) {
28
38
  this.display(() => {
29
39
  this.log(formatElapsedSecondsMessage(elapsedSecondsSince(startedAtMs)));
@@ -38,6 +48,9 @@ export class AgentiaCommand extends Command {
38
48
  }
39
49
  async withSpinner(message, action) {
40
50
  if (this.jsonEnabled()) {
51
+ if (isCommandOutputCaptureActive()) {
52
+ this.log(message);
53
+ }
41
54
  return action();
42
55
  }
43
56
  ux.action.start(message);
@@ -1 +1 @@
1
- {"version":3,"file":"agentia-command.js","sourceRoot":"","sources":["../../src/lib/agentia-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,EAAE,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,mBAAmB,EAAE,gCAAgC,EAAC,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAA;AAE/D,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IACjF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,OAAO,YAAY,OAAO,GAAG,CAAA;AAC/B,CAAC;AAED,MAAM,OAAgB,cAAe,SAAQ,OAAO;IAClD,MAAM,CAAU,cAAc,GAAG,IAAI,CAAA;IAC7B,oBAAoB,CAAS;IAElB,KAAK,CAAC,IAAI;QAC3B,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAA;QAC3C,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAA;QACzC,OAAO,gCAAgC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAK,CAAC,CAAA;IAClH,CAAC;IAES,OAAO,CAAC,MAAkB;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,EAAE,CAAA;QACV,CAAC;IACH,CAAC;IAEkB,KAAK,CAAC,OAAO,CAAC,KAAwB;QACvD,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAES,UAAU,CAAC,WAAmB;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACJ,CAAC;IAEkB,WAAW,CAAC,GAAY;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAA4B,CAAA;QAC9D,OAAO,EAAC,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IAC5D,CAAC;IAEkB,aAAa,CAAC,MAAe;QAC9C,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IACtE,CAAC;IAES,KAAK,CAAC,WAAW,CAAI,OAAe,EAAE,MAAwB;QACtE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO,MAAM,EAAE,CAAA;QACjB,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;YAC5C,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"agentia-command.js","sourceRoot":"","sources":["../../src/lib/agentia-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,EAAE,EAAC,MAAM,aAAa,CAAA;AACvC,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAC,mBAAmB,EAAE,gCAAgC,EAAC,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAAC,4BAA4B,EAAC,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAA;AAE/D,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,QAAgB,IAAI,CAAC,GAAG,EAAE;IACjF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,OAAO,YAAY,OAAO,GAAG,CAAA;AAC/B,CAAC;AAED,MAAM,OAAgB,cAAe,SAAQ,OAAO;IAClD,MAAM,CAAU,cAAc,GAAG,IAAI,CAAA;IAC7B,oBAAoB,CAAS;IAElB,KAAK,CAAC,IAAI;QAC3B,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAA;QAC3C,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAA;QACzC,OAAO,gCAAgC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAK,CAAC,CAAA;IAClH,CAAC;IAES,OAAO,CAAC,MAAkB;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,4BAA4B,EAAE,EAAE,CAAC;YAC1D,MAAM,EAAE,CAAA;QACV,CAAC;IACH,CAAC;IAEkB,KAAK,CAAC,OAAO,CAAC,KAAwB;QACvD,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAEe,GAAG,CAAC,OAAgB,EAAE,GAAG,IAAc;QACrD,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,4BAA4B,EAAE,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;YAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAA;YAC7E,OAAM;QACR,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;IAC7B,CAAC;IAES,UAAU,CAAC,WAAmB;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACJ,CAAC;IAEkB,WAAW,CAAC,GAAY;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAA4B,CAAA;QAC9D,OAAO,EAAC,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IAC5D,CAAC;IAEkB,aAAa,CAAC,MAAe;QAC9C,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,EAAC,CAAA;IACtE,CAAC;IAES,KAAK,CAAC,WAAW,CAAI,OAAe,EAAE,MAAwB;QACtE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,IAAI,4BAA4B,EAAE,EAAE,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACnB,CAAC;YAED,OAAO,MAAM,EAAE,CAAA;QACjB,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAExB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAA;YAC7B,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAChB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;YAC5C,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /** Total captured transcript size for one command. */
2
+ export declare const COMMAND_OUTPUT_MAX_BYTES: number;
3
+ export type CommandStdioCaptureOptions = {
4
+ /** When false, captured stderr is not written through. Default true. */
5
+ forwardStderr?: boolean;
6
+ /** When false, captured stdout is not written through (JSON / MCP). Default true. */
7
+ forwardStdout?: boolean;
8
+ };
9
+ export declare function isCommandOutputCaptureActive(): boolean;
10
+ export declare function redactCommandOutput(text: string): string;
11
+ export declare function appendCommandOutput(text: string): void;
12
+ export declare function appendCommandOutputLine(message?: string): void;
13
+ export declare function commandStdioCaptureOptions(command: {
14
+ jsonEnabled(): boolean;
15
+ }): CommandStdioCaptureOptions;
16
+ export declare const MCP_STDIO_CAPTURE_OPTIONS: CommandStdioCaptureOptions;
17
+ export declare function splitCommandOutputLines(text: string): string[];
18
+ export declare function runWithCommandOutputCapture<T>(fn: () => Promise<T>, options?: CommandStdioCaptureOptions): Promise<{
19
+ logs: string[];
20
+ result: T;
21
+ }>;
22
+ export declare function attachCapturedLogs<T extends object>(result: T, logs: string[]): T & {
23
+ logs?: string[];
24
+ };
25
+ export declare function readCapturedCommandOutputText(): string | undefined;
26
+ export declare function attachCapturedOutputLogs<T extends object>(body: T): T & {
27
+ logs?: string;
28
+ };
29
+ export declare function withCapturedCommandOutput<T extends object>(fn: () => Promise<T>, options?: CommandStdioCaptureOptions): Promise<T & {
30
+ logs?: string[];
31
+ }>;
@@ -0,0 +1,124 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { redactSecrets } from './secret-redaction.js';
3
+ /** Total captured transcript size for one command. */
4
+ export const COMMAND_OUTPUT_MAX_BYTES = 256 * 1024;
5
+ const TRUNCATED_MARKER = '[truncated]\n';
6
+ const URL_CREDENTIAL_PATTERN = /:\/\/[^/\s:@]+:[^/\s@]+@/g;
7
+ const commandOutputStore = new AsyncLocalStorage();
8
+ export function isCommandOutputCaptureActive() {
9
+ return commandOutputStore.getStore() !== undefined;
10
+ }
11
+ export function redactCommandOutput(text) {
12
+ return redactSecrets(text).replaceAll(URL_CREDENTIAL_PATTERN, '://[REDACTED]@');
13
+ }
14
+ export function appendCommandOutput(text) {
15
+ const buffer = commandOutputStore.getStore();
16
+ if (buffer === undefined || text.length === 0) {
17
+ return;
18
+ }
19
+ if (buffer.truncated) {
20
+ return;
21
+ }
22
+ const redacted = redactCommandOutput(text);
23
+ const combined = buffer.value + redacted;
24
+ if (combined.length <= COMMAND_OUTPUT_MAX_BYTES) {
25
+ buffer.value = combined;
26
+ return;
27
+ }
28
+ buffer.value = `${combined.slice(0, COMMAND_OUTPUT_MAX_BYTES - TRUNCATED_MARKER.length)}${TRUNCATED_MARKER}`;
29
+ buffer.truncated = true;
30
+ }
31
+ export function appendCommandOutputLine(message) {
32
+ if (message === undefined || message.length === 0) {
33
+ appendCommandOutput('\n');
34
+ return;
35
+ }
36
+ appendCommandOutput(message.endsWith('\n') ? message : `${message}\n`);
37
+ }
38
+ export function commandStdioCaptureOptions(command) {
39
+ return {
40
+ forwardStderr: true,
41
+ forwardStdout: !command.jsonEnabled(),
42
+ };
43
+ }
44
+ export const MCP_STDIO_CAPTURE_OPTIONS = {
45
+ forwardStderr: true,
46
+ forwardStdout: false,
47
+ };
48
+ function writeChunkToString(chunk) {
49
+ if (typeof chunk === 'string') {
50
+ return chunk;
51
+ }
52
+ if (chunk instanceof Uint8Array) {
53
+ return new TextDecoder().decode(chunk);
54
+ }
55
+ return String(chunk);
56
+ }
57
+ function wrapWrite(original, forward) {
58
+ return ((chunk, encoding, callback) => {
59
+ appendCommandOutput(writeChunkToString(chunk));
60
+ if (forward) {
61
+ return original(chunk, encoding, callback);
62
+ }
63
+ const cb = typeof encoding === 'function' ? encoding : callback;
64
+ if (typeof cb === 'function') {
65
+ cb();
66
+ }
67
+ return true;
68
+ });
69
+ }
70
+ export function splitCommandOutputLines(text) {
71
+ if (text.length === 0) {
72
+ return [];
73
+ }
74
+ const lines = text.split(/\r?\n/);
75
+ if (lines.at(-1) === '') {
76
+ lines.pop();
77
+ }
78
+ return lines;
79
+ }
80
+ export async function runWithCommandOutputCapture(fn, options = {}) {
81
+ const buffer = { truncated: false, value: '' };
82
+ const forwardStdout = options.forwardStdout !== false;
83
+ const forwardStderr = options.forwardStderr !== false;
84
+ return commandOutputStore.run(buffer, async () => {
85
+ const originalStdoutWrite = process.stdout.write;
86
+ const originalStderrWrite = process.stderr.write;
87
+ process.stdout.write = wrapWrite(originalStdoutWrite.bind(process.stdout), forwardStdout);
88
+ process.stderr.write = wrapWrite(originalStderrWrite.bind(process.stderr), forwardStderr);
89
+ try {
90
+ const result = await fn();
91
+ return { logs: splitCommandOutputLines(buffer.value), result };
92
+ }
93
+ finally {
94
+ process.stdout.write = originalStdoutWrite;
95
+ process.stderr.write = originalStderrWrite;
96
+ }
97
+ });
98
+ }
99
+ export function attachCapturedLogs(result, logs) {
100
+ if (logs.length === 0) {
101
+ return result;
102
+ }
103
+ return { ...result, logs };
104
+ }
105
+ export function readCapturedCommandOutputText() {
106
+ const buffer = commandOutputStore.getStore();
107
+ if (buffer === undefined || buffer.value.length === 0) {
108
+ return undefined;
109
+ }
110
+ const text = splitCommandOutputLines(buffer.value).join('\n');
111
+ return text.length === 0 ? undefined : text;
112
+ }
113
+ export function attachCapturedOutputLogs(body) {
114
+ const logs = readCapturedCommandOutputText();
115
+ if (logs === undefined) {
116
+ return body;
117
+ }
118
+ return { ...body, logs };
119
+ }
120
+ export async function withCapturedCommandOutput(fn, options = {}) {
121
+ const { logs, result } = await runWithCommandOutputCapture(fn, options);
122
+ return attachCapturedLogs(result, logs);
123
+ }
124
+ //# sourceMappingURL=command-output-buffer.js.map