jumbo-cli 2.10.0 → 2.11.1
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 +26 -7
- package/dist/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.d.ts +1 -1
- package/dist/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.js +11 -6
- package/dist/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/goals/approve/goal.approve.d.ts +1 -0
- package/dist/presentation/cli/commands/goals/approve/goal.approve.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/approve/goal.approve.js +6 -4
- package/dist/presentation/cli/commands/goals/approve/goal.approve.js.map +1 -1
- package/dist/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.d.ts +1 -1
- package/dist/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.js +9 -5
- package/dist/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/goals/close/goal.close.d.ts +1 -0
- package/dist/presentation/cli/commands/goals/close/goal.close.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/close/goal.close.js +6 -4
- package/dist/presentation/cli/commands/goals/close/goal.close.js.map +1 -1
- package/dist/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.d.ts +1 -1
- package/dist/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.js +9 -3
- package/dist/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/goals/commit/goal.commit.d.ts +1 -0
- package/dist/presentation/cli/commands/goals/commit/goal.commit.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/commit/goal.commit.js +3 -2
- package/dist/presentation/cli/commands/goals/commit/goal.commit.js.map +1 -1
- package/dist/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.d.ts +1 -1
- package/dist/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.js +12 -4
- package/dist/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/goals/reject/goal.reject.d.ts +1 -0
- package/dist/presentation/cli/commands/goals/reject/goal.reject.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/reject/goal.reject.js +3 -2
- package/dist/presentation/cli/commands/goals/reject/goal.reject.js.map +1 -1
- package/dist/presentation/cli/commands/goals/show/GoalShowOutputBuilder.d.ts +16 -3
- package/dist/presentation/cli/commands/goals/show/GoalShowOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/show/GoalShowOutputBuilder.js +253 -119
- package/dist/presentation/cli/commands/goals/show/GoalShowOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/goals/show/goal.show.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/show/goal.show.js +5 -2
- package/dist/presentation/cli/commands/goals/show/goal.show.js.map +1 -1
- package/dist/presentation/cli/commands/goals/submit/GoalSubmitOutputBuilder.d.ts +1 -1
- package/dist/presentation/cli/commands/goals/submit/GoalSubmitOutputBuilder.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/submit/GoalSubmitOutputBuilder.js +15 -6
- package/dist/presentation/cli/commands/goals/submit/GoalSubmitOutputBuilder.js.map +1 -1
- package/dist/presentation/cli/commands/goals/submit/goal.submit.d.ts +1 -0
- package/dist/presentation/cli/commands/goals/submit/goal.submit.d.ts.map +1 -1
- package/dist/presentation/cli/commands/goals/submit/goal.submit.js +3 -2
- package/dist/presentation/cli/commands/goals/submit/goal.submit.js.map +1 -1
- package/dist/presentation/cli/commands/registry/CommandMetadata.d.ts +5 -0
- package/dist/presentation/cli/commands/registry/CommandMetadata.d.ts.map +1 -1
- package/dist/presentation/cli/commands/registry/CommandMetadata.js +9 -0
- package/dist/presentation/cli/commands/registry/CommandMetadata.js.map +1 -1
- package/dist/presentation/cli/rendering/StyleConfig.d.ts +7 -1
- package/dist/presentation/cli/rendering/StyleConfig.d.ts.map +1 -1
- package/dist/presentation/cli/rendering/StyleConfig.js +29 -1
- package/dist/presentation/cli/rendering/StyleConfig.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,16 +52,35 @@ Those solve the core problems. These make Jumbo pleasant to use:
|
|
|
52
52
|
|
|
53
53
|
## Quick Start
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
1. Install Jumbo globally
|
|
56
|
+
``` bash
|
|
57
|
+
> npm i -g jumbo-cli
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
2. Browse your project folder and initialize Jumbo
|
|
61
|
+
``` bash
|
|
62
|
+
> jumbo init
|
|
63
|
+
```
|
|
64
|
+
Jumbo will guide you in getting started.
|
|
65
|
+
|
|
66
|
+
3. Run your agent as normal (claude, codex, gemini, vibe)
|
|
67
|
+
|
|
68
|
+
``` bash
|
|
69
|
+
> claude
|
|
70
|
+
[Nudge your agent once its running]
|
|
71
|
+
> Follow instructions
|
|
72
|
+
```
|
|
62
73
|
|
|
63
74
|
Jumbo will automatically orient the agent about your project and available goals.
|
|
64
75
|
|
|
76
|
+
> [!NOTE]
|
|
77
|
+
> Goals are the heart of Jumbo. Every memory, guideline, and constraint attaches to a goal — so define your work there first. (see `jumbo goal add --help`)
|
|
78
|
+
>
|
|
79
|
+
> Your agent can help define goals too. It knows how to use Jumbo.
|
|
80
|
+
|
|
81
|
+
> [!TIP]
|
|
82
|
+
> Hit the ground running with the [Jumbo Memories](https://github.com/jumbocontext/jumbo-memories) repo — a curated library of best practice guidelines and invariants ready to drop into any project.
|
|
83
|
+
|
|
65
84
|
See the [Getting started](docs/getting-started/first-run.md) guide for the full workflow.
|
|
66
85
|
|
|
67
86
|
## Compatibility
|
|
@@ -14,7 +14,7 @@ export declare class GoalApproveOutputBuilder {
|
|
|
14
14
|
* Build output for successful goal approval.
|
|
15
15
|
* Renders approval result with next steps.
|
|
16
16
|
*/
|
|
17
|
-
buildSuccess(response: QualifyGoalResponse): TerminalOutput;
|
|
17
|
+
buildSuccess(response: QualifyGoalResponse, continueFlag?: boolean): TerminalOutput;
|
|
18
18
|
/**
|
|
19
19
|
* Build output for goal approval failure.
|
|
20
20
|
* Renders error message when goal approval fails.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalApproveOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yEAAyE,CAAC;AAE9G;;;;;;GAMG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,mBAAmB,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"GoalApproveOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yEAAyE,CAAC;AAE9G;;;;;;GAMG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,GAAE,OAAe,GAAG,cAAc;IAqC1F;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc;CAQzD"}
|
|
@@ -17,9 +17,8 @@ class GoalApproveOutputBuilder {
|
|
|
17
17
|
* Build output for successful goal approval.
|
|
18
18
|
* Renders approval result with next steps.
|
|
19
19
|
*/
|
|
20
|
-
buildSuccess(response) {
|
|
20
|
+
buildSuccess(response, continueFlag = false) {
|
|
21
21
|
this.builder.reset();
|
|
22
|
-
// Header and success message
|
|
23
22
|
this.builder.addPrompt("# Goal Approved\n" +
|
|
24
23
|
`Goal ID: ${response.goalId}\n` +
|
|
25
24
|
`Objective: ${response.objective}\n` +
|
|
@@ -28,10 +27,16 @@ class GoalApproveOutputBuilder {
|
|
|
28
27
|
"## QA Review Passed\n" +
|
|
29
28
|
"The goal has been approved and is ready for codification.\n" +
|
|
30
29
|
"---");
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
30
|
+
let nextSteps;
|
|
31
|
+
if (continueFlag) {
|
|
32
|
+
nextSteps = "## Next Steps\n" +
|
|
33
|
+
"Codify the goal:\n" +
|
|
34
|
+
` Run: jumbo goal codify --id ${response.goalId}`;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
nextSteps = "## [Next Phase] Codification\n" +
|
|
38
|
+
`To codify the goal: jumbo goal codify --id ${response.goalId}`;
|
|
39
|
+
}
|
|
35
40
|
if (response.nextGoalId) {
|
|
36
41
|
nextSteps += "\n\nAfter closing, the next goal in the queue is:\n" +
|
|
37
42
|
` Goal ID: ${response.nextGoalId}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalApproveOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAIjF;;;;;;GAMG;AACH,MAAa,wBAAwB;IAGnC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAA6B;
|
|
1
|
+
{"version":3,"file":"GoalApproveOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/GoalApproveOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAIjF;;;;;;GAMG;AACH,MAAa,wBAAwB;IAGnC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAA6B,EAAE,eAAwB,KAAK;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,mBAAmB;YACnB,YAAY,QAAQ,CAAC,MAAM,IAAI;YAC/B,cAAc,QAAQ,CAAC,SAAS,IAAI;YACpC,WAAW,QAAQ,CAAC,MAAM,IAAI;YAC9B,SAAS;YACT,uBAAuB;YACvB,6DAA6D;YAC7D,KAAK,CACN,CAAC;QAEF,IAAI,SAAiB,CAAC;QAEtB,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,GAAG,iBAAiB;gBACjB,oBAAoB;gBACpB,iCAAiC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,gCAAgC;gBAChC,8CAA8C,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9E,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,SAAS,IAAI,qDAAqD;gBACrD,cAAc,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnD,CAAC;QAED,SAAS,IAAI,SAAS,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAqB;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACxD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AA5DD,4DA4DC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.approve.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/goal.approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"goal.approve.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/goal.approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAmB,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AAIjG;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,eAiBtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3C,SAAS,EAAE,qBAAqB,iBAqBjC"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.metadata = void 0;
|
|
13
13
|
exports.goalApprove = goalApprove;
|
|
14
|
+
const CommandMetadata_js_1 = require("../../registry/CommandMetadata.js");
|
|
14
15
|
const Renderer_js_1 = require("../../../rendering/Renderer.js");
|
|
15
16
|
const GoalApproveOutputBuilder_js_1 = require("./GoalApproveOutputBuilder.js");
|
|
16
17
|
/**
|
|
@@ -25,7 +26,7 @@ exports.metadata = {
|
|
|
25
26
|
description: "ID of the goal to approve"
|
|
26
27
|
}
|
|
27
28
|
],
|
|
28
|
-
options: [],
|
|
29
|
+
options: [CommandMetadata_js_1.CONTINUE_OPTION],
|
|
29
30
|
examples: [
|
|
30
31
|
{
|
|
31
32
|
command: "jumbo goal approve --id goal_abc123",
|
|
@@ -40,18 +41,19 @@ exports.metadata = {
|
|
|
40
41
|
*/
|
|
41
42
|
async function goalApprove(options, container) {
|
|
42
43
|
const renderer = Renderer_js_1.Renderer.getInstance();
|
|
44
|
+
const outputBuilder = new GoalApproveOutputBuilder_js_1.GoalApproveOutputBuilder();
|
|
43
45
|
try {
|
|
44
46
|
// 1. Execute via controller (delegates to same QualifyGoalController)
|
|
45
47
|
const response = await container.qualifyGoalController.handle({
|
|
46
48
|
goalId: options.id,
|
|
47
49
|
});
|
|
48
50
|
// 2. Build and render output using builder pattern
|
|
49
|
-
const
|
|
50
|
-
const output = outputBuilder.buildSuccess(response);
|
|
51
|
+
const output = outputBuilder.buildSuccess(response, options.continue === true);
|
|
51
52
|
renderer.info(output.toHumanReadable());
|
|
52
53
|
}
|
|
53
54
|
catch (error) {
|
|
54
|
-
|
|
55
|
+
const errorOutput = outputBuilder.buildFailureError(error instanceof Error ? error : String(error));
|
|
56
|
+
renderer.error(errorOutput.toHumanReadable());
|
|
55
57
|
process.exit(1);
|
|
56
58
|
}
|
|
57
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.approve.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/goal.approve.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAiCH,
|
|
1
|
+
{"version":3,"file":"goal.approve.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/approve/goal.approve.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAiCH,kCAuBC;AAtDD,0EAAqF;AAErF,gEAA0D;AAC1D,+EAAyE;AAEzE;;GAEG;AACU,QAAA,QAAQ,GAAoB;IACvC,WAAW,EAAE,2CAA2C;IACxD,QAAQ,EAAE,MAAM;IAChB,eAAe,EAAE;QACf;YACE,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,2BAA2B;SACzC;KACF;IACD,OAAO,EAAE,CAAC,oCAAe,CAAC;IAC1B,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,qCAAqC;YAC9C,WAAW,EAAE,uCAAuC;SACrD;KACF;IACD,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC;CACxD,CAAC;AAEF;;;GAGG;AACI,KAAK,UAAU,WAAW,CAC/B,OAA2C,EAC3C,SAAgC;IAEhC,MAAM,QAAQ,GAAG,sBAAQ,CAAC,WAAW,EAAE,CAAC;IAExC,MAAM,aAAa,GAAG,IAAI,sDAAwB,EAAE,CAAC;IAErD,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC;YAC5D,MAAM,EAAE,OAAO,CAAC,EAAE;SACnB,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAE1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -14,7 +14,7 @@ export declare class GoalCloseOutputBuilder {
|
|
|
14
14
|
* Build output for successful goal close.
|
|
15
15
|
* Renders close confirmation and optional next goal information.
|
|
16
16
|
*/
|
|
17
|
-
buildSuccess(response: CloseGoalResponse): TerminalOutput;
|
|
17
|
+
buildSuccess(response: CloseGoalResponse, continueFlag?: boolean): TerminalOutput;
|
|
18
18
|
/**
|
|
19
19
|
* Build output for goal close failure.
|
|
20
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalCloseOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qEAAqE,CAAC;AAExG;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"GoalCloseOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qEAAqE,CAAC;AAExG;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,iBAAiB,EAAE,YAAY,GAAE,OAAe,GAAG,cAAc;IAmCxF;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc;CAQzD"}
|
|
@@ -17,15 +17,13 @@ class GoalCloseOutputBuilder {
|
|
|
17
17
|
* Build output for successful goal close.
|
|
18
18
|
* Renders close confirmation and optional next goal information.
|
|
19
19
|
*/
|
|
20
|
-
buildSuccess(response) {
|
|
20
|
+
buildSuccess(response, continueFlag = false) {
|
|
21
21
|
this.builder.reset();
|
|
22
|
-
// Header
|
|
23
22
|
this.builder.addPrompt("# Goal Closed\n" +
|
|
24
23
|
`Goal ID: ${response.goalId}\n` +
|
|
25
24
|
`Objective: ${response.objective}\n` +
|
|
26
25
|
`Status: ${response.status}\n` +
|
|
27
26
|
"---");
|
|
28
|
-
// Next goal in chain (if exists)
|
|
29
27
|
if (response.nextGoal) {
|
|
30
28
|
this.builder.addPrompt("## Next goal in chain:");
|
|
31
29
|
this.builder.addData({
|
|
@@ -33,8 +31,14 @@ class GoalCloseOutputBuilder {
|
|
|
33
31
|
objective: response.nextGoal.objective,
|
|
34
32
|
status: response.nextGoal.status,
|
|
35
33
|
});
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
if (continueFlag) {
|
|
35
|
+
this.builder.addPrompt("Start the next goal immediately. Run:\n" +
|
|
36
|
+
` jumbo goal start --id ${response.nextGoal.goalId}`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.builder.addPrompt("[Next Phase] Implementation\n" +
|
|
40
|
+
`To start the next goal: jumbo goal start --id ${response.nextGoal.goalId}`);
|
|
41
|
+
}
|
|
38
42
|
}
|
|
39
43
|
return this.builder.build();
|
|
40
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalCloseOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAIjF;;;;;;GAMG;AACH,MAAa,sBAAsB;IAGjC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAA2B;
|
|
1
|
+
{"version":3,"file":"GoalCloseOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/GoalCloseOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAIjF;;;;;;GAMG;AACH,MAAa,sBAAsB;IAGjC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAA2B,EAAE,eAAwB,KAAK;QACrE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,iBAAiB;YACjB,YAAY,QAAQ,CAAC,MAAM,IAAI;YAC/B,cAAc,QAAQ,CAAC,SAAS,IAAI;YACpC,WAAW,QAAQ,CAAC,MAAM,IAAI;YAC9B,KAAK,CACN,CAAC;QAEF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBACnB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;gBAChC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;gBACtC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;aACjC,CAAC,CAAC;YAEH,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,yCAAyC;oBACzC,2BAA2B,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CACtD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,+BAA+B;oBAC/B,iDAAiD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAC5E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAqB;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACxD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AAzDD,wDAyDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.close.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/goal.close.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"goal.close.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/goal.close.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAmB,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AAIjG;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,eAiBtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3C,SAAS,EAAE,qBAAqB,iBAqBjC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.metadata = void 0;
|
|
10
10
|
exports.goalClose = goalClose;
|
|
11
|
+
const CommandMetadata_js_1 = require("../../registry/CommandMetadata.js");
|
|
11
12
|
const Renderer_js_1 = require("../../../rendering/Renderer.js");
|
|
12
13
|
const GoalCloseOutputBuilder_js_1 = require("./GoalCloseOutputBuilder.js");
|
|
13
14
|
/**
|
|
@@ -22,7 +23,7 @@ exports.metadata = {
|
|
|
22
23
|
description: "ID of the goal to close"
|
|
23
24
|
}
|
|
24
25
|
],
|
|
25
|
-
options: [],
|
|
26
|
+
options: [CommandMetadata_js_1.CONTINUE_OPTION],
|
|
26
27
|
examples: [
|
|
27
28
|
{
|
|
28
29
|
command: "jumbo goal close --id goal_abc123",
|
|
@@ -37,18 +38,19 @@ exports.metadata = {
|
|
|
37
38
|
*/
|
|
38
39
|
async function goalClose(options, container) {
|
|
39
40
|
const renderer = Renderer_js_1.Renderer.getInstance();
|
|
41
|
+
const outputBuilder = new GoalCloseOutputBuilder_js_1.GoalCloseOutputBuilder();
|
|
40
42
|
try {
|
|
41
43
|
// 1. Execute via controller
|
|
42
44
|
const response = await container.closeGoalController.handle({
|
|
43
45
|
goalId: options.id,
|
|
44
46
|
});
|
|
45
47
|
// 2. Build and render output using builder pattern
|
|
46
|
-
const
|
|
47
|
-
const output = outputBuilder.buildSuccess(response);
|
|
48
|
+
const output = outputBuilder.buildSuccess(response, options.continue === true);
|
|
48
49
|
renderer.info(output.toHumanReadable());
|
|
49
50
|
}
|
|
50
51
|
catch (error) {
|
|
51
|
-
|
|
52
|
+
const errorOutput = outputBuilder.buildFailureError(error instanceof Error ? error : String(error));
|
|
53
|
+
renderer.error(errorOutput.toHumanReadable());
|
|
52
54
|
process.exit(1);
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.close.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/goal.close.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiCH,
|
|
1
|
+
{"version":3,"file":"goal.close.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/close/goal.close.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiCH,8BAuBC;AAtDD,0EAAqF;AAErF,gEAA0D;AAC1D,2EAAqE;AAErE;;GAEG;AACU,QAAA,QAAQ,GAAoB;IACvC,WAAW,EAAE,mEAAmE;IAChF,QAAQ,EAAE,MAAM;IAChB,eAAe,EAAE;QACf;YACE,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,yBAAyB;SACvC;KACF;IACD,OAAO,EAAE,CAAC,oCAAe,CAAC;IAC1B,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,mCAAmC;YAC5C,WAAW,EAAE,iCAAiC;SAC/C;KACF;IACD,OAAO,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;CACvC,CAAC;AAEF;;;GAGG;AACI,KAAK,UAAU,SAAS,CAC7B,OAA2C,EAC3C,SAAgC;IAEhC,MAAM,QAAQ,GAAG,sBAAQ,CAAC,WAAW,EAAE,CAAC;IAExC,MAAM,aAAa,GAAG,IAAI,kDAAsB,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC1D,MAAM,EAAE,OAAO,CAAC,EAAE;SACnB,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAE1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -13,7 +13,7 @@ export declare class GoalCommitOutputBuilder {
|
|
|
13
13
|
* Build output for successful goal commit.
|
|
14
14
|
* Renders success message with next step to start the goal.
|
|
15
15
|
*/
|
|
16
|
-
buildSuccess(goalId: string, status: string): TerminalOutput;
|
|
16
|
+
buildSuccess(goalId: string, status: string, continueFlag?: boolean): TerminalOutput;
|
|
17
17
|
/**
|
|
18
18
|
* Build output for goal not found error.
|
|
19
19
|
* Renders error message when goal doesn't exist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalCommitOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"GoalCommitOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,OAAe,GAAG,cAAc;IAoB3F;;;OAGG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAOtD;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc;CAQzD"}
|
|
@@ -17,12 +17,18 @@ class GoalCommitOutputBuilder {
|
|
|
17
17
|
* Build output for successful goal commit.
|
|
18
18
|
* Renders success message with next step to start the goal.
|
|
19
19
|
*/
|
|
20
|
-
buildSuccess(goalId, status) {
|
|
20
|
+
buildSuccess(goalId, status, continueFlag = false) {
|
|
21
21
|
this.builder.reset();
|
|
22
22
|
this.builder.addPrompt("✓ Goal committed");
|
|
23
23
|
this.builder.addData({ goalId, status });
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
if (continueFlag) {
|
|
25
|
+
this.builder.addPrompt("\n@LLM: Goal refinement is committed and ready to start.\n" +
|
|
26
|
+
`Run: jumbo goal start --id ${goalId}`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.builder.addPrompt("\n[Next Phase] Implementation\n" +
|
|
30
|
+
`The goal is now refined and can be started with: jumbo goal start --id ${goalId}`);
|
|
31
|
+
}
|
|
26
32
|
return this.builder.build();
|
|
27
33
|
}
|
|
28
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalCommitOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAGjF;;;;;;GAMG;AACH,MAAa,uBAAuB;IAGlC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,MAAc,EAAE,MAAc;
|
|
1
|
+
{"version":3,"file":"GoalCommitOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/GoalCommitOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAGjF;;;;;;GAMG;AACH,MAAa,uBAAuB;IAGlC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,MAAc,EAAE,MAAc,EAAE,eAAwB,KAAK;QACxE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzC,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,4DAA4D;gBAC5D,8BAA8B,MAAM,EAAE,CACvC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,iCAAiC;gBACjC,0EAA0E,MAAM,EAAE,CACnF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,MAAc;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,2BAA2B,MAAM,EAAE,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAqB;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACxD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AAtDD,0DAsDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.commit.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/goal.commit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"goal.commit.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/goal.commit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAmB,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AAIjG;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,eAiBtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3C,SAAS,EAAE,qBAAqB,iBAoBjC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.metadata = void 0;
|
|
10
10
|
exports.goalCommit = goalCommit;
|
|
11
|
+
const CommandMetadata_js_1 = require("../../registry/CommandMetadata.js");
|
|
11
12
|
const Renderer_js_1 = require("../../../rendering/Renderer.js");
|
|
12
13
|
const GoalCommitOutputBuilder_js_1 = require("./GoalCommitOutputBuilder.js");
|
|
13
14
|
/**
|
|
@@ -22,7 +23,7 @@ exports.metadata = {
|
|
|
22
23
|
description: "ID of the goal to commit"
|
|
23
24
|
}
|
|
24
25
|
],
|
|
25
|
-
options: [],
|
|
26
|
+
options: [CommandMetadata_js_1.CONTINUE_OPTION],
|
|
26
27
|
examples: [
|
|
27
28
|
{
|
|
28
29
|
command: "jumbo goal commit --id goal_abc123",
|
|
@@ -44,7 +45,7 @@ async function goalCommit(options, container) {
|
|
|
44
45
|
goalId: options.id,
|
|
45
46
|
});
|
|
46
47
|
// 2. Build and render output using builder pattern
|
|
47
|
-
const output = outputBuilder.buildSuccess(response.goalId, response.status);
|
|
48
|
+
const output = outputBuilder.buildSuccess(response.goalId, response.status, options.continue === true);
|
|
48
49
|
renderer.info(output.toHumanReadable());
|
|
49
50
|
}
|
|
50
51
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.commit.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/goal.commit.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiCH,gCAsBC;
|
|
1
|
+
{"version":3,"file":"goal.commit.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/commit/goal.commit.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiCH,gCAsBC;AArDD,0EAAqF;AAErF,gEAA0D;AAC1D,6EAAuE;AAEvE;;GAEG;AACU,QAAA,QAAQ,GAAoB;IACvC,WAAW,EAAE,4CAA4C;IACzD,QAAQ,EAAE,MAAM;IAChB,eAAe,EAAE;QACf;YACE,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,0BAA0B;SACxC;KACF;IACD,OAAO,EAAE,CAAC,oCAAe,CAAC;IAC1B,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,oCAAoC;YAC7C,WAAW,EAAE,8CAA8C;SAC5D;KACF;IACD,OAAO,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,cAAc,CAAC;CACvD,CAAC;AAEF;;;GAGG;AACI,KAAK,UAAU,UAAU,CAC9B,OAA2C,EAC3C,SAAgC;IAEhC,MAAM,QAAQ,GAAG,sBAAQ,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,oDAAuB,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC3D,MAAM,EAAE,OAAO,CAAC,EAAE;SACnB,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACvG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAE1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -14,7 +14,7 @@ export declare class GoalRejectOutputBuilder {
|
|
|
14
14
|
* Build output for successful goal rejection.
|
|
15
15
|
* Renders rejection result with review issues and next steps for the implementing agent.
|
|
16
16
|
*/
|
|
17
|
-
buildSuccess(response: RejectGoalResponse): TerminalOutput;
|
|
17
|
+
buildSuccess(response: RejectGoalResponse, continueFlag?: boolean): TerminalOutput;
|
|
18
18
|
/**
|
|
19
19
|
* Build output for goal rejection failure.
|
|
20
20
|
* Renders error message when goal rejection fails.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalRejectOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uEAAuE,CAAC;AAE3G;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"GoalRejectOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uEAAuE,CAAC;AAE3G;;;;;;GAMG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAwB;;IAMvC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,GAAE,OAAe,GAAG,cAAc;IAuCzF;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc;CAQzD"}
|
|
@@ -17,7 +17,7 @@ class GoalRejectOutputBuilder {
|
|
|
17
17
|
* Build output for successful goal rejection.
|
|
18
18
|
* Renders rejection result with review issues and next steps for the implementing agent.
|
|
19
19
|
*/
|
|
20
|
-
buildSuccess(response) {
|
|
20
|
+
buildSuccess(response, continueFlag = false) {
|
|
21
21
|
this.builder.reset();
|
|
22
22
|
this.builder.addPrompt("# Goal Rejected\n" +
|
|
23
23
|
`Goal ID: ${response.goalId}\n` +
|
|
@@ -28,9 +28,17 @@ class GoalRejectOutputBuilder {
|
|
|
28
28
|
"The goal has been returned for rework. The following issues were found:\n\n" +
|
|
29
29
|
`${response.reviewIssues}\n` +
|
|
30
30
|
"---");
|
|
31
|
-
let nextSteps
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
let nextSteps;
|
|
32
|
+
if (continueFlag) {
|
|
33
|
+
nextSteps = "## Next Steps\n" +
|
|
34
|
+
"The implementing agent should address the review issues and restart the goal:\n" +
|
|
35
|
+
` Run: jumbo goal start --id ${response.goalId}`;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
nextSteps = "## [Next Phase] Rework\n" +
|
|
39
|
+
"The implementing agent should address the review issues.\n" +
|
|
40
|
+
`To restart the goal: jumbo goal start --id ${response.goalId}`;
|
|
41
|
+
}
|
|
34
42
|
if (response.nextGoalId) {
|
|
35
43
|
nextSteps += "\n\nThe next goal in the queue is:\n" +
|
|
36
44
|
` Goal ID: ${response.nextGoalId}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalRejectOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAIjF;;;;;;GAMG;AACH,MAAa,uBAAuB;IAGlC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAA4B;
|
|
1
|
+
{"version":3,"file":"GoalRejectOutputBuilder.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/GoalRejectOutputBuilder.ts"],"names":[],"mappings":";;;AAAA,uFAAiF;AAIjF;;;;;;GAMG;AACH,MAAa,uBAAuB;IAGlC;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,gDAAqB,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAA4B,EAAE,eAAwB,KAAK;QACtE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,SAAS,CACpB,mBAAmB;YACnB,YAAY,QAAQ,CAAC,MAAM,IAAI;YAC/B,cAAc,QAAQ,CAAC,SAAS,IAAI;YACpC,WAAW,QAAQ,CAAC,MAAM,IAAI;YAC9B,SAAS;YACT,uBAAuB;YACvB,6EAA6E;YAC7E,GAAG,QAAQ,CAAC,YAAY,IAAI;YAC5B,KAAK,CACN,CAAC;QAEF,IAAI,SAAiB,CAAC;QAEtB,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,GAAG,iBAAiB;gBACjB,iFAAiF;gBACjF,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,0BAA0B;gBAC1B,4DAA4D;gBAC5D,8CAA8C,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9E,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,SAAS,IAAI,sCAAsC;gBACtC,cAAc,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnD,CAAC;QAED,SAAS,IAAI,SAAS,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAqB;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;SACxD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF;AA9DD,0DA8DC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.reject.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/goal.reject.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"goal.reject.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/goal.reject.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAmB,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AAIjG;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,eAqBtB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACjE,SAAS,EAAE,qBAAqB,iBAqBjC"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.metadata = void 0;
|
|
11
11
|
exports.goalReject = goalReject;
|
|
12
|
+
const CommandMetadata_js_1 = require("../../registry/CommandMetadata.js");
|
|
12
13
|
const Renderer_js_1 = require("../../../rendering/Renderer.js");
|
|
13
14
|
const GoalRejectOutputBuilder_js_1 = require("./GoalRejectOutputBuilder.js");
|
|
14
15
|
/**
|
|
@@ -27,7 +28,7 @@ exports.metadata = {
|
|
|
27
28
|
description: "Description of implementation problems that need fixing"
|
|
28
29
|
}
|
|
29
30
|
],
|
|
30
|
-
options: [],
|
|
31
|
+
options: [CommandMetadata_js_1.CONTINUE_OPTION],
|
|
31
32
|
examples: [
|
|
32
33
|
{
|
|
33
34
|
command: 'jumbo goal reject --id goal_abc123 --review-issues "Missing error handling in API endpoint"',
|
|
@@ -50,7 +51,7 @@ async function goalReject(options, container) {
|
|
|
50
51
|
reviewIssues: options.reviewIssues,
|
|
51
52
|
});
|
|
52
53
|
// 2. Build and render output using builder pattern
|
|
53
|
-
const output = outputBuilder.buildSuccess(response);
|
|
54
|
+
const output = outputBuilder.buildSuccess(response, options.continue === true);
|
|
54
55
|
renderer.info(output.toHumanReadable());
|
|
55
56
|
}
|
|
56
57
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.reject.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/goal.reject.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAqCH,gCAuBC;
|
|
1
|
+
{"version":3,"file":"goal.reject.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/reject/goal.reject.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAqCH,gCAuBC;AA1DD,0EAAqF;AAErF,gEAA0D;AAC1D,6EAAuE;AAEvE;;GAEG;AACU,QAAA,QAAQ,GAAoB;IACvC,WAAW,EAAE,sCAAsC;IACnD,QAAQ,EAAE,MAAM;IAChB,eAAe,EAAE;QACf;YACE,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,0BAA0B;SACxC;QACD;YACE,KAAK,EAAE,8BAA8B;YACrC,WAAW,EAAE,yDAAyD;SACvE;KACF;IACD,OAAO,EAAE,CAAC,oCAAe,CAAC;IAC1B,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,6FAA6F;YACtG,WAAW,EAAE,kCAAkC;SAChD;KACF;IACD,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC;CACvD,CAAC;AAEF;;;GAGG;AACI,KAAK,UAAU,UAAU,CAC9B,OAAiE,EACjE,SAAgC;IAEhC,MAAM,QAAQ,GAAG,sBAAQ,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,oDAAuB,EAAE,CAAC;IAEpD,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC3D,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAE1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,aAAa,CAAC,iBAAiB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -4,16 +4,29 @@ import { ContextualGoalView } from '../../../../../application/context/goals/get
|
|
|
4
4
|
* Specialized builder for goal.show command output.
|
|
5
5
|
* Encapsulates all output rendering for the show goal command.
|
|
6
6
|
*
|
|
7
|
+
* Visual language follows the Jumbo design system (mockups/design-system.svg):
|
|
8
|
+
* - BrandColors.jumboBlue accent bar (|) as structural element at x=24
|
|
9
|
+
* - Section headings at x=38, content at x=42, indented at x=54
|
|
10
|
+
* - Only two dividers: after metadata block, before architecture band
|
|
11
|
+
* - BrandColors.accentCyan for entity names in Band 2
|
|
12
|
+
* - Static footer with ➤ arrow
|
|
13
|
+
*
|
|
7
14
|
* Pattern: Output builders contain ALL prompt and output content.
|
|
8
15
|
* Command files must not duplicate or add additional output after calling the builder.
|
|
9
16
|
*/
|
|
10
17
|
export declare class GoalShowOutputBuilder {
|
|
11
18
|
private builder;
|
|
12
19
|
constructor();
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
private bar;
|
|
21
|
+
private divider;
|
|
22
|
+
private heading;
|
|
23
|
+
private metaField;
|
|
24
|
+
private contentLine;
|
|
25
|
+
private indentLine;
|
|
16
26
|
private formatStatus;
|
|
27
|
+
private wrapContent;
|
|
28
|
+
private wrapContentWithPrefix;
|
|
29
|
+
private wrapBulletContinuation;
|
|
17
30
|
/**
|
|
18
31
|
* Build output for TTY (human-readable formatted text).
|
|
19
32
|
* Renders complete goal details with all fields.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalShowOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/show/GoalShowOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;
|
|
1
|
+
{"version":3,"file":"GoalShowOutputBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/goals/show/GoalShowOutputBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAmCxG;;;;;;;;;;;;;GAaG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAwB;;IAMvC,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,sBAAsB;IAc9B;;;OAGG;IACH,KAAK,CAAC,cAAc,EAAE,kBAAkB,GAAG,cAAc;IAkNzD;;;OAGG;IACH,qBAAqB,CAAC,cAAc,EAAE,kBAAkB,GAAG,cAAc;IAqCzE;;;OAGG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAOtD;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc;CAQzD"}
|