jumbo-cli 2.13.0 → 2.14.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 (35) hide show
  1. package/dist/presentation/cli/commands/registry/generated-commands.d.ts.map +1 -1
  2. package/dist/presentation/cli/commands/registry/generated-commands.js +6 -0
  3. package/dist/presentation/cli/commands/registry/generated-commands.js.map +1 -1
  4. package/dist/presentation/cli/commands/work/refine/RefineryDisplay.d.ts +5 -39
  5. package/dist/presentation/cli/commands/work/refine/RefineryDisplay.d.ts.map +1 -1
  6. package/dist/presentation/cli/commands/work/refine/RefineryDisplay.js +12 -86
  7. package/dist/presentation/cli/commands/work/refine/RefineryDisplay.js.map +1 -1
  8. package/dist/presentation/cli/commands/work/refine/work.refine.d.ts.map +1 -1
  9. package/dist/presentation/cli/commands/work/refine/work.refine.js +25 -106
  10. package/dist/presentation/cli/commands/work/refine/work.refine.js.map +1 -1
  11. package/dist/presentation/cli/commands/work/review/ReviewerDisplay.d.ts +17 -0
  12. package/dist/presentation/cli/commands/work/review/ReviewerDisplay.d.ts.map +1 -0
  13. package/dist/presentation/cli/commands/work/review/ReviewerDisplay.js +41 -0
  14. package/dist/presentation/cli/commands/work/review/ReviewerDisplay.js.map +1 -0
  15. package/dist/presentation/cli/commands/work/review/work.review.d.ts +23 -0
  16. package/dist/presentation/cli/commands/work/review/work.review.d.ts.map +1 -0
  17. package/dist/presentation/cli/commands/work/review/work.review.js +109 -0
  18. package/dist/presentation/cli/commands/work/review/work.review.js.map +1 -0
  19. package/dist/presentation/cli/commands/work/shared/AgentSpawner.d.ts +18 -0
  20. package/dist/presentation/cli/commands/work/shared/AgentSpawner.d.ts.map +1 -0
  21. package/dist/presentation/cli/commands/work/shared/AgentSpawner.js +38 -0
  22. package/dist/presentation/cli/commands/work/shared/AgentSpawner.js.map +1 -0
  23. package/dist/presentation/cli/commands/work/shared/DaemonDisplay.d.ts +56 -0
  24. package/dist/presentation/cli/commands/work/shared/DaemonDisplay.d.ts.map +1 -0
  25. package/dist/presentation/cli/commands/work/shared/DaemonDisplay.js +93 -0
  26. package/dist/presentation/cli/commands/work/shared/DaemonDisplay.js.map +1 -0
  27. package/dist/presentation/cli/commands/work/shared/DaemonLoop.d.ts +40 -0
  28. package/dist/presentation/cli/commands/work/shared/DaemonLoop.d.ts.map +1 -0
  29. package/dist/presentation/cli/commands/work/shared/DaemonLoop.js +82 -0
  30. package/dist/presentation/cli/commands/work/shared/DaemonLoop.js.map +1 -0
  31. package/dist/presentation/cli/commands/work/shared/GoalStatusQuery.d.ts +13 -0
  32. package/dist/presentation/cli/commands/work/shared/GoalStatusQuery.d.ts.map +1 -0
  33. package/dist/presentation/cli/commands/work/shared/GoalStatusQuery.js +29 -0
  34. package/dist/presentation/cli/commands/work/shared/GoalStatusQuery.js.map +1 -0
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"generated-commands.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/registry/generated-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmFzD,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EAiZvC,CAAC"}
1
+ {"version":3,"file":"generated-commands.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/registry/generated-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAoFzD,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EAsZvC,CAAC"}
@@ -89,6 +89,7 @@ const value_update_js_1 = require("../../commands/value-propositions/update/valu
89
89
  const work_pause_js_1 = require("../../commands/work/pause/work.pause.js");
90
90
  const work_refine_js_1 = require("../../commands/work/refine/work.refine.js");
91
91
  const work_resume_js_1 = require("../../commands/work/resume/work.resume.js");
92
+ const work_review_js_1 = require("../../commands/work/review/work.review.js");
92
93
  exports.commands = [
93
94
  {
94
95
  path: 'architecture define',
@@ -489,6 +490,11 @@ exports.commands = [
489
490
  path: 'work resume',
490
491
  metadata: work_resume_js_1.metadata,
491
492
  handler: work_resume_js_1.workResume
493
+ },
494
+ {
495
+ path: 'work review',
496
+ metadata: work_review_js_1.metadata,
497
+ handler: work_review_js_1.workReview
492
498
  }
493
499
  ];
494
500
  //# sourceMappingURL=generated-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-commands.js","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/registry/generated-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generated-commands.js","sourceRoot":"","sources":["../../../../../src/presentation/cli/commands/registry/generated-commands.ts"],"names":[],"mappings":"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"}
@@ -1,45 +1,11 @@
1
1
  /**
2
2
  * Refinery Display
3
3
  *
4
- * Layout and rendering for the `jumbo work refine` daemon.
5
- * Implements the mockup design with accent bars, glimmer title,
6
- * compact config, and gradient braille spinners.
4
+ * Display module for the `jumbo work refine` daemon.
5
+ * Extends DaemonDisplay with refine-specific labels.
7
6
  */
8
- export interface RefineryConfig {
9
- agentId: string;
10
- pollIntervalS: number;
11
- maxRetries: number;
12
- }
13
- export declare class RefineryDisplay {
14
- private config;
15
- private write;
16
- constructor(config: RefineryConfig);
17
- /** Render the header block: accent bar + glimmer title + config + divider */
18
- renderHeader(): Promise<void>;
19
- /** Start the idle "Waiting..." braille spinner */
20
- startWaiting(): {
21
- stop: () => void;
22
- };
23
- /** Render goal discovery info */
24
- renderGoalStart(goalId: string, objective: string, attempt: number, maxRetries: number): void;
25
- /** Start the active "Refining..." braille spinner */
26
- startRefining(): {
27
- stop: () => void;
28
- };
29
- /** Render goal completion */
30
- renderGoalComplete(goalId: string, objective: string, attempts: number): void;
31
- /** Render goal exhaustion/skip warning */
32
- renderGoalSkipped(goalId: string, status: string, maxRetries: number): void;
33
- /** Render retry info */
34
- renderRetry(attempt: number, maxRetries: number): void;
35
- /** Render unknown agent error */
36
- renderUnknownAgent(agent: string, supported: readonly string[]): void;
37
- /** Render shutdown message */
38
- renderShutdown(): void;
39
- private out;
40
- private line;
41
- private divider;
42
- private truncateObjective;
43
- private shortId;
7
+ import { DaemonDisplay, DaemonRuntimeConfig } from "../shared/DaemonDisplay.js";
8
+ export declare class RefineryDisplay extends DaemonDisplay {
9
+ constructor(runtimeConfig: DaemonRuntimeConfig);
44
10
  }
45
11
  //# sourceMappingURL=RefineryDisplay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RefineryDisplay.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/RefineryDisplay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAsB;gBAEvB,MAAM,EAAE,cAAc;IAKlC,6EAA6E;IACvE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBnC,kDAAkD;IAClD,YAAY,IAAI;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;IAIpC,iCAAiC;IACjC,eAAe,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,IAAI;IAQP,qDAAqD;IACrD,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;IAIrC,6BAA6B;IAC7B,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,IAAI;IASP,0CAA0C;IAC1C,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,IAAI;IAQP,wBAAwB;IACxB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAItD,iCAAiC;IACjC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIrE,8BAA8B;IAC9B,cAAc,IAAI,IAAI;IAOtB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,OAAO;CAGhB"}
1
+ {"version":3,"file":"RefineryDisplay.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/RefineryDisplay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEhF,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,aAAa,EAAE,mBAAmB;CAY/C"}
@@ -2,95 +2,21 @@
2
2
  /**
3
3
  * Refinery Display
4
4
  *
5
- * Layout and rendering for the `jumbo work refine` daemon.
6
- * Implements the mockup design with accent bars, glimmer title,
7
- * compact config, and gradient braille spinners.
5
+ * Display module for the `jumbo work refine` daemon.
6
+ * Extends DaemonDisplay with refine-specific labels.
8
7
  */
9
8
  Object.defineProperty(exports, "__esModule", { value: true });
10
9
  exports.RefineryDisplay = void 0;
11
- const StyleConfig_js_1 = require("../../../rendering/StyleConfig.js");
12
- const GlimmerEffect_js_1 = require("../../../animations/GlimmerEffect.js");
13
- const BrailleSpinner_js_1 = require("../../../animations/BrailleSpinner.js");
14
- // Raw ANSI codes retained only for the glimmer animation API
15
- // which requires raw string prefixes, not chalk-wrapped strings.
16
- const RESET = "\x1b[0m";
17
- const BRIGHT_WHITE = "\x1b[97m";
18
- const [jbR, jbG, jbB] = StyleConfig_js_1.BrandColors.jumboBlueRaw;
19
- const JUMBO_BLUE = `\x1b[38;2;${jbR};${jbG};${jbB}m`;
20
- class RefineryDisplay {
21
- constructor(config) {
22
- this.config = config;
23
- this.write = (s) => process.stderr.write(s);
24
- }
25
- /** Render the header block: accent bar + glimmer title + config + divider */
26
- async renderHeader() {
27
- const { agentId, pollIntervalS, maxRetries } = this.config;
28
- this.line("");
29
- await (0, GlimmerEffect_js_1.playGlimmer)("Jumbo Refinery", ` ${JUMBO_BLUE}│${RESET} `, {
30
- baseColor: JUMBO_BLUE,
31
- highlightColor: BRIGHT_WHITE,
32
- }, this.write);
33
- this.out("\n");
34
- this.line(` ${StyleConfig_js_1.BrandColors.jumboBlue(StyleConfig_js_1.Symbols.accentBar)} ${StyleConfig_js_1.Colors.dim(`${agentId} · poll ${pollIntervalS}s · retries ${maxRetries} · Q to stop`)}`);
35
- this.divider();
36
- }
37
- /** Start the idle "Waiting..." braille spinner */
38
- startWaiting() {
39
- return (0, BrailleSpinner_js_1.startBrailleSpinner)({ label: "foraging", write: this.write });
40
- }
41
- /** Render goal discovery info */
42
- renderGoalStart(goalId, objective, attempt, maxRetries) {
43
- const sid = this.shortId(goalId);
44
- this.line(` ${StyleConfig_js_1.Colors.success(StyleConfig_js_1.Symbols.filledCircle)} ${StyleConfig_js_1.Colors.bold(sid)} ${StyleConfig_js_1.Colors.dim(`attempt ${attempt}/${maxRetries}`)}`);
45
- this.line(` ${StyleConfig_js_1.Colors.dim(this.truncateObjective(objective))}`);
46
- }
47
- /** Start the active "Refining..." braille spinner */
48
- startRefining() {
49
- return (0, BrailleSpinner_js_1.startBrailleSpinner)({ label: "refining", write: this.write });
50
- }
51
- /** Render goal completion */
52
- renderGoalComplete(goalId, objective, attempts) {
53
- const sid = this.shortId(goalId);
54
- this.line(` ${StyleConfig_js_1.Colors.success(StyleConfig_js_1.Symbols.check)} ${StyleConfig_js_1.Colors.success("refined")} ${StyleConfig_js_1.Colors.bold(sid)} ${StyleConfig_js_1.Colors.dim(`${attempts} attempt${attempts !== 1 ? "s" : ""}`)}`);
55
- this.line(` ${StyleConfig_js_1.Colors.dim(this.truncateObjective(objective))}`);
56
- this.line("");
57
- }
58
- /** Render goal exhaustion/skip warning */
59
- renderGoalSkipped(goalId, status, maxRetries) {
60
- const sid = this.shortId(goalId);
61
- this.line(` ${StyleConfig_js_1.Colors.warning(StyleConfig_js_1.Symbols.warning)} ${sid} did not reach 'refined' after ${maxRetries} attempts (status: ${status}). Skipping.`);
62
- this.line("");
63
- }
64
- /** Render retry info */
65
- renderRetry(attempt, maxRetries) {
66
- this.line(` ${StyleConfig_js_1.Colors.dim(`${StyleConfig_js_1.Symbols.arrow} Retry ${attempt}/${maxRetries}...`)}`);
67
- }
68
- /** Render unknown agent error */
69
- renderUnknownAgent(agent, supported) {
70
- this.line(`${StyleConfig_js_1.Colors.error(StyleConfig_js_1.Symbols.cross)} Unknown agent '${agent}'. Supported: ${supported.join(", ")}`);
71
- }
72
- /** Render shutdown message */
73
- renderShutdown() {
74
- this.line("");
75
- this.line(` ${StyleConfig_js_1.Colors.dim(`${StyleConfig_js_1.Symbols.arrow} Refinery stopped.`)}`);
76
- }
77
- // --- Private helpers ---
78
- out(msg) {
79
- this.write(msg);
80
- }
81
- line(msg) {
82
- this.write(`${msg}\n`);
83
- }
84
- divider() {
85
- this.line(` ${StyleConfig_js_1.Colors.dim("─".repeat(50))}`);
86
- }
87
- truncateObjective(text, max = 60) {
88
- if (text.length <= max)
89
- return text;
90
- return text.slice(0, max - 3) + "...";
91
- }
92
- shortId(goalId) {
93
- return goalId.length > 12 ? goalId.slice(0, 8) : goalId;
10
+ const DaemonDisplay_js_1 = require("../shared/DaemonDisplay.js");
11
+ class RefineryDisplay extends DaemonDisplay_js_1.DaemonDisplay {
12
+ constructor(runtimeConfig) {
13
+ super({
14
+ title: "Jumbo Refinery",
15
+ idleLabel: "foraging",
16
+ activeLabel: "refining",
17
+ completeStatus: "refined",
18
+ daemonName: "Refinery",
19
+ }, runtimeConfig);
94
20
  }
95
21
  }
96
22
  exports.RefineryDisplay = RefineryDisplay;
@@ -1 +1 @@
1
- {"version":3,"file":"RefineryDisplay.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/RefineryDisplay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RefineryDisplay.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/RefineryDisplay.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,iEAAgF;AAEhF,MAAa,eAAgB,SAAQ,gCAAa;IAChD,YAAY,aAAkC;QAC5C,KAAK,CACH;YACE,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,UAAU;YACvB,cAAc,EAAE,SAAS;YACzB,UAAU,EAAE,UAAU;SACvB,EACD,aAAa,CACd,CAAC;IACJ,CAAC;CACF;AAbD,0CAaC"}
@@ -1 +1 @@
1
- {"version":3,"file":"work.refine.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/work.refine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AAkBjG,eAAO,MAAM,QAAQ,EAAE,eAgCtB,CAAC;AAEF,UAAU,iBAAiB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAsDD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,qBAAqB,iBA4FlC"}
1
+ {"version":3,"file":"work.refine.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/work.refine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AASjG,eAAO,MAAM,QAAQ,EAAE,eAgCtB,CAAC;AAEF,UAAU,iBAAiB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAoBD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,qBAAqB,iBAqClC"}
@@ -13,15 +13,9 @@ exports.metadata = void 0;
13
13
  exports.workRefine = workRefine;
14
14
  const node_child_process_1 = require("node:child_process");
15
15
  const RefineryDisplay_js_1 = require("./RefineryDisplay.js");
16
- const SUPPORTED_AGENTS = ["claude", "gemini", "copilot", "codex", "cursor", "vibe"];
17
- const AGENT_COMMANDS = {
18
- claude: { executable: "claude", promptFlag: "-p" },
19
- gemini: { executable: "gemini", promptFlag: "-p" },
20
- copilot: { executable: "gh copilot", promptFlag: "-p" },
21
- codex: { executable: "codex", promptFlag: "-p" },
22
- cursor: { executable: "cursor", promptFlag: "-p" },
23
- vibe: { executable: "vibe", promptFlag: "-p" },
24
- };
16
+ const AgentSpawner_js_1 = require("../shared/AgentSpawner.js");
17
+ const GoalStatusQuery_js_1 = require("../shared/GoalStatusQuery.js");
18
+ const DaemonLoop_js_1 = require("../shared/DaemonLoop.js");
25
19
  const DEFAULT_POLL_INTERVAL_S = 30;
26
20
  const DEFAULT_MAX_RETRIES = 3;
27
21
  exports.metadata = {
@@ -30,7 +24,7 @@ exports.metadata = {
30
24
  requiredOptions: [
31
25
  {
32
26
  flags: "--agent <agentId>",
33
- description: `Agent to delegate refinement to (${SUPPORTED_AGENTS.join(", ")})`,
27
+ description: `Agent to delegate refinement to (${AgentSpawner_js_1.SUPPORTED_AGENTS.join(", ")})`,
34
28
  },
35
29
  ],
36
30
  options: [
@@ -57,10 +51,7 @@ exports.metadata = {
57
51
  ],
58
52
  related: ["goal refine", "work pause", "work resume"],
59
53
  };
60
- // --- Subprocess helpers ---
61
- function sleep(ms) {
62
- return new Promise((resolve) => setTimeout(resolve, ms));
63
- }
54
+ // --- Refine-specific subprocess helpers ---
64
55
  function queryDefinedGoals() {
65
56
  try {
66
57
  const stdout = (0, node_child_process_1.execSync)("npx jumbo goals list --status defined", {
@@ -75,107 +66,35 @@ function queryDefinedGoals() {
75
66
  return [];
76
67
  }
77
68
  }
78
- function queryGoalStatus(goalId) {
79
- try {
80
- const stdout = (0, node_child_process_1.execSync)(`npx jumbo goal show --id ${goalId}`, {
81
- stdio: ["ignore", "pipe", "ignore"],
82
- timeout: 30000,
83
- }).toString();
84
- const parsed = JSON.parse(stdout);
85
- return parsed.status ?? parsed.goal?.status ?? "unknown";
86
- }
87
- catch {
88
- return "unknown";
89
- }
90
- }
91
- function spawnAgent(agentId, goalId) {
92
- const { executable, promptFlag } = AGENT_COMMANDS[agentId];
93
- const prompt = `Run the Jumbo refinement workflow for goal ${goalId}. Execute: jumbo goal refine --id ${goalId}`;
94
- const escaped = prompt.replace(/"/g, '\\"');
95
- const command = `${executable} ${promptFlag} "${escaped}"`;
96
- return new Promise((resolve) => {
97
- const child = (0, node_child_process_1.spawn)(command, [], {
98
- stdio: ["ignore", "ignore", "ignore"],
99
- shell: true,
100
- });
101
- child.on("close", (code) => resolve(code ?? 1));
102
- child.on("error", () => resolve(1));
103
- });
104
- }
105
- // --- Main daemon loop ---
69
+ // --- Main daemon entry ---
106
70
  async function workRefine(options, _container) {
107
71
  const agentId = options.agent;
108
- if (!SUPPORTED_AGENTS.includes(agentId)) {
72
+ if (!AgentSpawner_js_1.SUPPORTED_AGENTS.includes(agentId)) {
109
73
  const display = new RefineryDisplay_js_1.RefineryDisplay({ agentId, pollIntervalS: 0, maxRetries: 0 });
110
- display.renderUnknownAgent(options.agent, SUPPORTED_AGENTS);
74
+ display.renderUnknownAgent(options.agent, AgentSpawner_js_1.SUPPORTED_AGENTS);
111
75
  process.exit(1);
112
76
  }
113
- const pollIntervalMs = (parseInt(options.pollInterval ?? "", 10) || DEFAULT_POLL_INTERVAL_S) * 1000;
77
+ const pollIntervalS = parseInt(options.pollInterval ?? "", 10) || DEFAULT_POLL_INTERVAL_S;
114
78
  const maxRetries = parseInt(options.maxRetries ?? "", 10) || DEFAULT_MAX_RETRIES;
115
- const exhaustedGoals = new Set();
116
79
  const display = new RefineryDisplay_js_1.RefineryDisplay({
117
80
  agentId,
118
- pollIntervalS: pollIntervalMs / 1000,
81
+ pollIntervalS,
119
82
  maxRetries,
120
83
  });
121
- let running = true;
122
- const shutdown = () => {
123
- running = false;
124
- };
125
- // Listen for 'q' keypress to stop gracefully
126
- if (process.stdin.isTTY) {
127
- process.stdin.setRawMode(true);
128
- process.stdin.resume();
129
- process.stdin.on("data", (key) => {
130
- const ch = key.toString();
131
- if (ch === "q" || ch === "Q" || ch === "\x03") {
132
- shutdown();
133
- }
134
- });
135
- }
136
- process.on("SIGINT", shutdown);
137
- process.on("SIGTERM", shutdown);
138
- await display.renderHeader();
139
- while (running) {
140
- const goals = queryDefinedGoals().filter(g => !exhaustedGoals.has(g.goalId));
141
- if (goals.length === 0) {
142
- const spinner = display.startWaiting();
143
- const end = Date.now() + pollIntervalMs;
144
- while (running && Date.now() < end) {
145
- await sleep(250);
146
- }
147
- spinner.stop();
148
- continue;
149
- }
150
- const target = goals[0];
151
- let refined = false;
152
- for (let attempt = 1; attempt <= maxRetries && running; attempt++) {
153
- display.renderGoalStart(target.goalId, target.objective, attempt, maxRetries);
154
- const spinner = display.startRefining();
155
- await spawnAgent(agentId, target.goalId);
156
- spinner.stop();
157
- if (!running)
158
- break;
159
- const status = queryGoalStatus(target.goalId);
160
- if (status === "refined") {
161
- display.renderGoalComplete(target.goalId, target.objective, attempt);
162
- refined = true;
163
- break;
164
- }
165
- if (attempt === maxRetries) {
166
- display.renderGoalSkipped(target.goalId, status, maxRetries);
167
- }
168
- }
169
- if (!refined) {
170
- exhaustedGoals.add(target.goalId);
171
- }
172
- await sleep(2000);
173
- }
174
- // Clean up stdin and exit
175
- if (process.stdin.isTTY) {
176
- process.stdin.setRawMode(false);
177
- process.stdin.pause();
178
- }
179
- display.renderShutdown();
84
+ await (0, DaemonLoop_js_1.runDaemonLoop)({ agentId, pollIntervalS, maxRetries }, display, {
85
+ queryGoals: () => queryDefinedGoals(),
86
+ spawnAgent: (goalId) => {
87
+ const prompt = `Run the Jumbo refinement workflow for goal ${goalId}. Execute: jumbo goal refine --id ${goalId}`;
88
+ return (0, AgentSpawner_js_1.spawnAgent)(agentId, prompt);
89
+ },
90
+ isGoalComplete: (goalId) => (0, GoalStatusQuery_js_1.queryGoalStatus)(goalId) === "refined",
91
+ onGoalComplete: (goalId, objective, attempts) => {
92
+ display.renderGoalComplete(goalId, objective, attempts);
93
+ },
94
+ onGoalSkipped: (goalId, _status, retries) => {
95
+ const status = (0, GoalStatusQuery_js_1.queryGoalStatus)(goalId);
96
+ display.renderGoalSkipped(goalId, status, retries);
97
+ },
98
+ });
180
99
  }
181
100
  //# sourceMappingURL=work.refine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"work.refine.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/work.refine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work.refine.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/refine/work.refine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Reviewer Display
3
+ *
4
+ * Display module for the `jumbo work review` daemon.
5
+ * Extends DaemonDisplay with review-specific labels and
6
+ * outcome-aware completion rendering (approved vs rejected).
7
+ */
8
+ import { DaemonDisplay, DaemonRuntimeConfig } from "../shared/DaemonDisplay.js";
9
+ export declare class ReviewerDisplay extends DaemonDisplay {
10
+ constructor(runtimeConfig: DaemonRuntimeConfig);
11
+ /**
12
+ * Render a review outcome with status-specific styling.
13
+ * Approved = green check, Rejected = yellow warning.
14
+ */
15
+ renderReviewOutcome(goalId: string, objective: string, attempts: number, outcome: string): void;
16
+ }
17
+ //# sourceMappingURL=ReviewerDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewerDisplay.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/review/ReviewerDisplay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEhF,qBAAa,eAAgB,SAAQ,aAAa;gBACpC,aAAa,EAAE,mBAAmB;IAa9C;;;OAGG;IACH,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI;CAiBR"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * Reviewer Display
4
+ *
5
+ * Display module for the `jumbo work review` daemon.
6
+ * Extends DaemonDisplay with review-specific labels and
7
+ * outcome-aware completion rendering (approved vs rejected).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ReviewerDisplay = void 0;
11
+ const StyleConfig_js_1 = require("../../../rendering/StyleConfig.js");
12
+ const DaemonDisplay_js_1 = require("../shared/DaemonDisplay.js");
13
+ class ReviewerDisplay extends DaemonDisplay_js_1.DaemonDisplay {
14
+ constructor(runtimeConfig) {
15
+ super({
16
+ title: "Jumbo Reviewer",
17
+ idleLabel: "awaiting submissions",
18
+ activeLabel: "reviewing",
19
+ completeStatus: "reviewed",
20
+ daemonName: "Reviewer",
21
+ }, runtimeConfig);
22
+ }
23
+ /**
24
+ * Render a review outcome with status-specific styling.
25
+ * Approved = green check, Rejected = yellow warning.
26
+ */
27
+ renderReviewOutcome(goalId, objective, attempts, outcome) {
28
+ const sid = this.shortId(goalId);
29
+ const attemptText = `${attempts} attempt${attempts !== 1 ? "s" : ""}`;
30
+ if (outcome === "approved") {
31
+ this.line(` ${StyleConfig_js_1.Colors.success(StyleConfig_js_1.Symbols.check)} ${StyleConfig_js_1.Colors.success("approved")} ${StyleConfig_js_1.Colors.bold(sid)} ${StyleConfig_js_1.Colors.dim(attemptText)}`);
32
+ }
33
+ else {
34
+ this.line(` ${StyleConfig_js_1.Colors.warning(StyleConfig_js_1.Symbols.warning)} ${StyleConfig_js_1.Colors.warning("rejected")} ${StyleConfig_js_1.Colors.bold(sid)} ${StyleConfig_js_1.Colors.dim(attemptText)}`);
35
+ }
36
+ this.line(` ${StyleConfig_js_1.Colors.dim(this.truncateObjective(objective))}`);
37
+ this.line("");
38
+ }
39
+ }
40
+ exports.ReviewerDisplay = ReviewerDisplay;
41
+ //# sourceMappingURL=ReviewerDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewerDisplay.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/review/ReviewerDisplay.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,sEAAoE;AACpE,iEAAgF;AAEhF,MAAa,eAAgB,SAAQ,gCAAa;IAChD,YAAY,aAAkC;QAC5C,KAAK,CACH;YACE,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,sBAAsB;YACjC,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,UAAU;YAC1B,UAAU,EAAE,UAAU;SACvB,EACD,aAAa,CACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,mBAAmB,CACjB,MAAc,EACd,SAAiB,EACjB,QAAgB,EAChB,OAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,WAAW,GAAG,GAAG,QAAQ,WAAW,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAEtE,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CACP,KAAK,uBAAM,CAAC,OAAO,CAAC,wBAAO,CAAC,KAAK,CAAC,IAAI,uBAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,uBAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,uBAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CACpH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CACP,KAAK,uBAAM,CAAC,OAAO,CAAC,wBAAO,CAAC,OAAO,CAAC,IAAI,uBAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,uBAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,uBAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CACtH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,uBAAM,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;CACF;AAxCD,0CAwCC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * CLI Command: jumbo work review
3
+ *
4
+ * Long-running daemon that continuously polls for goals in 'submitted' state
5
+ * and delegates their QA review to an agent subprocess. Runs until killed.
6
+ *
7
+ * A goal is considered reviewed when its status transitions to either
8
+ * 'approved' or 'rejected' — both are valid review outcomes.
9
+ *
10
+ * Every interaction with Jumbo state is a short-lived subprocess.
11
+ * This command holds no database connections or application infrastructure.
12
+ */
13
+ import { CommandMetadata } from "../../registry/CommandMetadata.js";
14
+ import { IApplicationContainer } from "../../../../../application/host/IApplicationContainer.js";
15
+ export declare const metadata: CommandMetadata;
16
+ interface WorkReviewOptions {
17
+ readonly agent: string;
18
+ readonly pollInterval?: string;
19
+ readonly maxRetries?: string;
20
+ }
21
+ export declare function workReview(options: WorkReviewOptions, _container: IApplicationContainer): Promise<void>;
22
+ export {};
23
+ //# sourceMappingURL=work.review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work.review.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/review/work.review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AAWjG,eAAO,MAAM,QAAQ,EAAE,eAgCtB,CAAC;AAEF,UAAU,iBAAiB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAyBD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,qBAAqB,iBAsClC"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * CLI Command: jumbo work review
4
+ *
5
+ * Long-running daemon that continuously polls for goals in 'submitted' state
6
+ * and delegates their QA review to an agent subprocess. Runs until killed.
7
+ *
8
+ * A goal is considered reviewed when its status transitions to either
9
+ * 'approved' or 'rejected' — both are valid review outcomes.
10
+ *
11
+ * Every interaction with Jumbo state is a short-lived subprocess.
12
+ * This command holds no database connections or application infrastructure.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.metadata = void 0;
16
+ exports.workReview = workReview;
17
+ const node_child_process_1 = require("node:child_process");
18
+ const ReviewerDisplay_js_1 = require("./ReviewerDisplay.js");
19
+ const AgentSpawner_js_1 = require("../shared/AgentSpawner.js");
20
+ const GoalStatusQuery_js_1 = require("../shared/GoalStatusQuery.js");
21
+ const DaemonLoop_js_1 = require("../shared/DaemonLoop.js");
22
+ const DEFAULT_POLL_INTERVAL_S = 30;
23
+ const DEFAULT_MAX_RETRIES = 3;
24
+ const REVIEW_COMPLETE_STATUSES = ["approved", "rejected"];
25
+ exports.metadata = {
26
+ description: "Continuously review submitted goals via an agent subprocess (runs until killed)",
27
+ category: "work",
28
+ requiredOptions: [
29
+ {
30
+ flags: "--agent <agentId>",
31
+ description: `Agent to delegate review to (${AgentSpawner_js_1.SUPPORTED_AGENTS.join(", ")})`,
32
+ },
33
+ ],
34
+ options: [
35
+ {
36
+ flags: "--poll-interval <seconds>",
37
+ description: "Seconds to wait between polling for new goals",
38
+ default: DEFAULT_POLL_INTERVAL_S,
39
+ },
40
+ {
41
+ flags: "--max-retries <number>",
42
+ description: "Max retry attempts per goal before moving on",
43
+ default: DEFAULT_MAX_RETRIES,
44
+ },
45
+ ],
46
+ examples: [
47
+ {
48
+ command: "jumbo work review --agent claude",
49
+ description: "Start the reviewer daemon using Claude",
50
+ },
51
+ {
52
+ command: "jumbo work review --agent claude --poll-interval 60",
53
+ description: "Poll every 60 seconds instead of the default 30",
54
+ },
55
+ ],
56
+ related: ["goal review", "goal approve", "goal reject", "work pause", "work resume"],
57
+ };
58
+ // --- Review-specific subprocess helpers ---
59
+ function querySubmittedGoals() {
60
+ try {
61
+ const stdout = (0, node_child_process_1.execSync)("npx jumbo goals list --status submitted", {
62
+ stdio: ["ignore", "pipe", "ignore"],
63
+ timeout: 30000,
64
+ }).toString();
65
+ const parsed = JSON.parse(stdout);
66
+ const goals = (parsed.goals ?? []);
67
+ return goals.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
68
+ }
69
+ catch {
70
+ return [];
71
+ }
72
+ }
73
+ function isReviewComplete(goalId) {
74
+ const status = (0, GoalStatusQuery_js_1.queryGoalStatus)(goalId);
75
+ return REVIEW_COMPLETE_STATUSES.includes(status);
76
+ }
77
+ // --- Main daemon entry ---
78
+ async function workReview(options, _container) {
79
+ const agentId = options.agent;
80
+ if (!AgentSpawner_js_1.SUPPORTED_AGENTS.includes(agentId)) {
81
+ const display = new ReviewerDisplay_js_1.ReviewerDisplay({ agentId, pollIntervalS: 0, maxRetries: 0 });
82
+ display.renderUnknownAgent(options.agent, AgentSpawner_js_1.SUPPORTED_AGENTS);
83
+ process.exit(1);
84
+ }
85
+ const pollIntervalS = parseInt(options.pollInterval ?? "", 10) || DEFAULT_POLL_INTERVAL_S;
86
+ const maxRetries = parseInt(options.maxRetries ?? "", 10) || DEFAULT_MAX_RETRIES;
87
+ const display = new ReviewerDisplay_js_1.ReviewerDisplay({
88
+ agentId,
89
+ pollIntervalS,
90
+ maxRetries,
91
+ });
92
+ await (0, DaemonLoop_js_1.runDaemonLoop)({ agentId, pollIntervalS, maxRetries }, display, {
93
+ queryGoals: () => querySubmittedGoals(),
94
+ spawnAgent: (goalId) => {
95
+ const prompt = `Run the Jumbo review workflow for goal ${goalId}. Execute: jumbo goal review --id ${goalId}`;
96
+ return (0, AgentSpawner_js_1.spawnAgent)(agentId, prompt);
97
+ },
98
+ isGoalComplete: (goalId) => isReviewComplete(goalId),
99
+ onGoalComplete: (goalId, objective, attempts) => {
100
+ const outcome = (0, GoalStatusQuery_js_1.queryGoalStatus)(goalId);
101
+ display.renderReviewOutcome(goalId, objective, attempts, outcome);
102
+ },
103
+ onGoalSkipped: (goalId, _status, retries) => {
104
+ const status = (0, GoalStatusQuery_js_1.queryGoalStatus)(goalId);
105
+ display.renderGoalSkipped(goalId, status, retries);
106
+ },
107
+ });
108
+ }
109
+ //# sourceMappingURL=work.review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work.review.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/review/work.review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Agent Spawner
3
+ *
4
+ * Encapsulates supported agent CLI tools, their command mappings,
5
+ * and the subprocess spawning logic used by work daemons.
6
+ */
7
+ export declare const SUPPORTED_AGENTS: readonly ["claude", "gemini", "copilot", "codex", "cursor", "vibe"];
8
+ export type AgentId = typeof SUPPORTED_AGENTS[number];
9
+ export declare const AGENT_COMMANDS: Record<AgentId, {
10
+ executable: string;
11
+ promptFlag: string;
12
+ }>;
13
+ /**
14
+ * Spawn an agent CLI subprocess with the given prompt.
15
+ * Returns the exit code (0 = success, non-zero = failure).
16
+ */
17
+ export declare function spawnAgent(agentId: AgentId, prompt: string): Promise<number>;
18
+ //# sourceMappingURL=AgentSpawner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentSpawner.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/AgentSpawner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,gBAAgB,qEAAsE,CAAC;AACpG,MAAM,MAAM,OAAO,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAOtF,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc5E"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Agent Spawner
4
+ *
5
+ * Encapsulates supported agent CLI tools, their command mappings,
6
+ * and the subprocess spawning logic used by work daemons.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AGENT_COMMANDS = exports.SUPPORTED_AGENTS = void 0;
10
+ exports.spawnAgent = spawnAgent;
11
+ const node_child_process_1 = require("node:child_process");
12
+ exports.SUPPORTED_AGENTS = ["claude", "gemini", "copilot", "codex", "cursor", "vibe"];
13
+ exports.AGENT_COMMANDS = {
14
+ claude: { executable: "claude", promptFlag: "-p" },
15
+ gemini: { executable: "gemini", promptFlag: "-p" },
16
+ copilot: { executable: "gh copilot", promptFlag: "-p" },
17
+ codex: { executable: "codex", promptFlag: "-p" },
18
+ cursor: { executable: "cursor", promptFlag: "-p" },
19
+ vibe: { executable: "vibe", promptFlag: "-p" },
20
+ };
21
+ /**
22
+ * Spawn an agent CLI subprocess with the given prompt.
23
+ * Returns the exit code (0 = success, non-zero = failure).
24
+ */
25
+ function spawnAgent(agentId, prompt) {
26
+ const { executable, promptFlag } = exports.AGENT_COMMANDS[agentId];
27
+ const escaped = prompt.replace(/"/g, '\\"');
28
+ const command = `${executable} ${promptFlag} "${escaped}"`;
29
+ return new Promise((resolve) => {
30
+ const child = (0, node_child_process_1.spawn)(command, [], {
31
+ stdio: ["ignore", "ignore", "ignore"],
32
+ shell: true,
33
+ });
34
+ child.on("close", (code) => resolve(code ?? 1));
35
+ child.on("error", () => resolve(1));
36
+ });
37
+ }
38
+ //# sourceMappingURL=AgentSpawner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentSpawner.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/AgentSpawner.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAoBH,gCAcC;AAhCD,2DAA2C;AAE9B,QAAA,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAGvF,QAAA,cAAc,GAAgE;IACzF,MAAM,EAAG,EAAE,UAAU,EAAE,QAAQ,EAAM,UAAU,EAAE,IAAI,EAAE;IACvD,MAAM,EAAG,EAAE,UAAU,EAAE,QAAQ,EAAM,UAAU,EAAE,IAAI,EAAE;IACvD,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;IACvD,KAAK,EAAI,EAAE,UAAU,EAAE,OAAO,EAAO,UAAU,EAAE,IAAI,EAAE;IACvD,MAAM,EAAG,EAAE,UAAU,EAAE,QAAQ,EAAM,UAAU,EAAE,IAAI,EAAE;IACvD,IAAI,EAAK,EAAE,UAAU,EAAE,MAAM,EAAQ,UAAU,EAAE,IAAI,EAAE;CACxD,CAAC;AAEF;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAAgB,EAAE,MAAc;IACzD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,sBAAc,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,GAAG,UAAU,IAAI,UAAU,KAAK,OAAO,GAAG,CAAC;IAE3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE,EAAE,EAAE;YAC/B,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YACrC,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Daemon Display
3
+ *
4
+ * Base class for work daemon display rendering. Provides the shared
5
+ * layout structure (header, spinners, goal lifecycle messages, shutdown)
6
+ * with configurable labels so each daemon can customize its appearance.
7
+ */
8
+ export interface DaemonDisplayConfig {
9
+ /** Display title shown in the glimmer header (e.g. "Jumbo Refinery") */
10
+ readonly title: string;
11
+ /** Label for the idle spinner (e.g. "foraging") */
12
+ readonly idleLabel: string;
13
+ /** Label for the active spinner (e.g. "refining") */
14
+ readonly activeLabel: string;
15
+ /** Status word shown on goal completion (e.g. "refined") */
16
+ readonly completeStatus: string;
17
+ /** Daemon name for the shutdown message (e.g. "Refinery") */
18
+ readonly daemonName: string;
19
+ }
20
+ export interface DaemonRuntimeConfig {
21
+ readonly agentId: string;
22
+ readonly pollIntervalS: number;
23
+ readonly maxRetries: number;
24
+ }
25
+ export declare class DaemonDisplay {
26
+ protected readonly displayConfig: DaemonDisplayConfig;
27
+ protected readonly runtimeConfig: DaemonRuntimeConfig;
28
+ protected readonly write: (s: string) => void;
29
+ constructor(displayConfig: DaemonDisplayConfig, runtimeConfig: DaemonRuntimeConfig);
30
+ /** Render the header block: accent bar + glimmer title + config + divider */
31
+ renderHeader(): Promise<void>;
32
+ /** Start the idle braille spinner */
33
+ startWaiting(): {
34
+ stop: () => void;
35
+ };
36
+ /** Start the active processing braille spinner */
37
+ startProcessing(): {
38
+ stop: () => void;
39
+ };
40
+ /** Render goal discovery info */
41
+ renderGoalStart(goalId: string, objective: string, attempt: number, maxRetries: number): void;
42
+ /** Render goal completion */
43
+ renderGoalComplete(goalId: string, objective: string, attempts: number): void;
44
+ /** Render goal exhaustion/skip warning */
45
+ renderGoalSkipped(goalId: string, status: string, maxRetries: number): void;
46
+ /** Render unknown agent error */
47
+ renderUnknownAgent(agent: string, supported: readonly string[]): void;
48
+ /** Render shutdown message */
49
+ renderShutdown(): void;
50
+ protected out(msg: string): void;
51
+ protected line(msg: string): void;
52
+ protected divider(): void;
53
+ protected truncateObjective(text: string, max?: number): string;
54
+ protected shortId(goalId: string): string;
55
+ }
56
+ //# sourceMappingURL=DaemonDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaemonDisplay.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/DaemonDisplay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,aAAa;IACxB,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACtD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;gBAElC,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,mBAAmB;IAMlF,6EAA6E;IACvE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBnC,qCAAqC;IACrC,YAAY,IAAI;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;IAIpC,kDAAkD;IAClD,eAAe,IAAI;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;IAIvC,iCAAiC;IACjC,eAAe,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,IAAI;IAQP,6BAA6B;IAC7B,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,IAAI;IASP,0CAA0C;IAC1C,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,IAAI;IAQP,iCAAiC;IACjC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIrE,8BAA8B;IAC9B,cAAc,IAAI,IAAI;IAOtB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC,SAAS,CAAC,OAAO,IAAI,IAAI;IAIzB,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,MAAM;IAK3D,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAG1C"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Daemon Display
4
+ *
5
+ * Base class for work daemon display rendering. Provides the shared
6
+ * layout structure (header, spinners, goal lifecycle messages, shutdown)
7
+ * with configurable labels so each daemon can customize its appearance.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DaemonDisplay = void 0;
11
+ const StyleConfig_js_1 = require("../../../rendering/StyleConfig.js");
12
+ const GlimmerEffect_js_1 = require("../../../animations/GlimmerEffect.js");
13
+ const BrailleSpinner_js_1 = require("../../../animations/BrailleSpinner.js");
14
+ // Raw ANSI codes for the glimmer animation API
15
+ const RESET = "\x1b[0m";
16
+ const BRIGHT_WHITE = "\x1b[97m";
17
+ const [jbR, jbG, jbB] = StyleConfig_js_1.BrandColors.jumboBlueRaw;
18
+ const JUMBO_BLUE = `\x1b[38;2;${jbR};${jbG};${jbB}m`;
19
+ class DaemonDisplay {
20
+ constructor(displayConfig, runtimeConfig) {
21
+ this.displayConfig = displayConfig;
22
+ this.runtimeConfig = runtimeConfig;
23
+ this.write = (s) => process.stderr.write(s);
24
+ }
25
+ /** Render the header block: accent bar + glimmer title + config + divider */
26
+ async renderHeader() {
27
+ const { agentId, pollIntervalS, maxRetries } = this.runtimeConfig;
28
+ this.line("");
29
+ await (0, GlimmerEffect_js_1.playGlimmer)(this.displayConfig.title, ` ${JUMBO_BLUE}│${RESET} `, {
30
+ baseColor: JUMBO_BLUE,
31
+ highlightColor: BRIGHT_WHITE,
32
+ }, this.write);
33
+ this.out("\n");
34
+ this.line(` ${StyleConfig_js_1.BrandColors.jumboBlue(StyleConfig_js_1.Symbols.accentBar)} ${StyleConfig_js_1.Colors.dim(`${agentId} · poll ${pollIntervalS}s · retries ${maxRetries} · Q to stop`)}`);
35
+ this.divider();
36
+ }
37
+ /** Start the idle braille spinner */
38
+ startWaiting() {
39
+ return (0, BrailleSpinner_js_1.startBrailleSpinner)({ label: this.displayConfig.idleLabel, write: this.write });
40
+ }
41
+ /** Start the active processing braille spinner */
42
+ startProcessing() {
43
+ return (0, BrailleSpinner_js_1.startBrailleSpinner)({ label: this.displayConfig.activeLabel, write: this.write });
44
+ }
45
+ /** Render goal discovery info */
46
+ renderGoalStart(goalId, objective, attempt, maxRetries) {
47
+ const sid = this.shortId(goalId);
48
+ this.line(` ${StyleConfig_js_1.Colors.success(StyleConfig_js_1.Symbols.filledCircle)} ${StyleConfig_js_1.Colors.bold(sid)} ${StyleConfig_js_1.Colors.dim(`attempt ${attempt}/${maxRetries}`)}`);
49
+ this.line(` ${StyleConfig_js_1.Colors.dim(this.truncateObjective(objective))}`);
50
+ }
51
+ /** Render goal completion */
52
+ renderGoalComplete(goalId, objective, attempts) {
53
+ const sid = this.shortId(goalId);
54
+ this.line(` ${StyleConfig_js_1.Colors.success(StyleConfig_js_1.Symbols.check)} ${StyleConfig_js_1.Colors.success(this.displayConfig.completeStatus)} ${StyleConfig_js_1.Colors.bold(sid)} ${StyleConfig_js_1.Colors.dim(`${attempts} attempt${attempts !== 1 ? "s" : ""}`)}`);
55
+ this.line(` ${StyleConfig_js_1.Colors.dim(this.truncateObjective(objective))}`);
56
+ this.line("");
57
+ }
58
+ /** Render goal exhaustion/skip warning */
59
+ renderGoalSkipped(goalId, status, maxRetries) {
60
+ const sid = this.shortId(goalId);
61
+ this.line(` ${StyleConfig_js_1.Colors.warning(StyleConfig_js_1.Symbols.warning)} ${sid} did not reach '${this.displayConfig.completeStatus}' after ${maxRetries} attempts (status: ${status}). Skipping.`);
62
+ this.line("");
63
+ }
64
+ /** Render unknown agent error */
65
+ renderUnknownAgent(agent, supported) {
66
+ this.line(`${StyleConfig_js_1.Colors.error(StyleConfig_js_1.Symbols.cross)} Unknown agent '${agent}'. Supported: ${supported.join(", ")}`);
67
+ }
68
+ /** Render shutdown message */
69
+ renderShutdown() {
70
+ this.line("");
71
+ this.line(` ${StyleConfig_js_1.Colors.dim(`${StyleConfig_js_1.Symbols.arrow} ${this.displayConfig.daemonName} stopped.`)}`);
72
+ }
73
+ // --- Protected helpers ---
74
+ out(msg) {
75
+ this.write(msg);
76
+ }
77
+ line(msg) {
78
+ this.write(`${msg}\n`);
79
+ }
80
+ divider() {
81
+ this.line(` ${StyleConfig_js_1.Colors.dim("─".repeat(50))}`);
82
+ }
83
+ truncateObjective(text, max = 60) {
84
+ if (text.length <= max)
85
+ return text;
86
+ return text.slice(0, max - 3) + "...";
87
+ }
88
+ shortId(goalId) {
89
+ return goalId.length > 12 ? goalId.slice(0, 8) : goalId;
90
+ }
91
+ }
92
+ exports.DaemonDisplay = DaemonDisplay;
93
+ //# sourceMappingURL=DaemonDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaemonDisplay.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/DaemonDisplay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Daemon Loop
3
+ *
4
+ * Generic polling daemon infrastructure for work commands.
5
+ * Encapsulates the poll-process-sleep cycle, retry/exhaustion tracking
6
+ * per goal, and graceful shutdown via SIGINT/SIGTERM/'q' keypress.
7
+ */
8
+ import { DaemonDisplay } from "./DaemonDisplay.js";
9
+ export interface DaemonConfig {
10
+ /** Agent identifier for display and spawning */
11
+ readonly agentId: string;
12
+ /** Seconds between polling cycles */
13
+ readonly pollIntervalS: number;
14
+ /** Max retry attempts per goal before marking exhausted */
15
+ readonly maxRetries: number;
16
+ }
17
+ export interface GoalEntry {
18
+ readonly goalId: string;
19
+ readonly objective: string;
20
+ }
21
+ export interface DaemonCallbacks {
22
+ /** Query for goals eligible for processing */
23
+ queryGoals: () => GoalEntry[];
24
+ /** Spawn the agent to process a goal; returns exit code */
25
+ spawnAgent: (goalId: string) => Promise<number>;
26
+ /** Check whether the goal reached the desired state */
27
+ isGoalComplete: (goalId: string) => boolean;
28
+ /** Called when a goal successfully completes */
29
+ onGoalComplete: (goalId: string, objective: string, attempts: number) => void;
30
+ /** Called when a goal is exhausted after max retries */
31
+ onGoalSkipped: (goalId: string, status: string, maxRetries: number) => void;
32
+ }
33
+ /**
34
+ * Run the daemon polling loop.
35
+ *
36
+ * Polls for goals, processes them with retry logic, and handles
37
+ * graceful shutdown. Returns when shutdown is triggered.
38
+ */
39
+ export declare function runDaemonLoop(config: DaemonConfig, display: DaemonDisplay, callbacks: DaemonCallbacks): Promise<void>;
40
+ //# sourceMappingURL=DaemonLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaemonLoop.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/DaemonLoop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,SAAS,EAAE,CAAC;IAC9B,2DAA2D;IAC3D,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,uDAAuD;IACvD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,gDAAgD;IAChD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9E,wDAAwD;IACxD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7E;AAMD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CA2Ef"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * Daemon Loop
4
+ *
5
+ * Generic polling daemon infrastructure for work commands.
6
+ * Encapsulates the poll-process-sleep cycle, retry/exhaustion tracking
7
+ * per goal, and graceful shutdown via SIGINT/SIGTERM/'q' keypress.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.runDaemonLoop = runDaemonLoop;
11
+ function sleep(ms) {
12
+ return new Promise((resolve) => setTimeout(resolve, ms));
13
+ }
14
+ /**
15
+ * Run the daemon polling loop.
16
+ *
17
+ * Polls for goals, processes them with retry logic, and handles
18
+ * graceful shutdown. Returns when shutdown is triggered.
19
+ */
20
+ async function runDaemonLoop(config, display, callbacks) {
21
+ const pollIntervalMs = config.pollIntervalS * 1000;
22
+ const exhaustedGoals = new Set();
23
+ let running = true;
24
+ const shutdown = () => {
25
+ running = false;
26
+ };
27
+ // Listen for 'q' keypress to stop gracefully
28
+ if (process.stdin.isTTY) {
29
+ process.stdin.setRawMode(true);
30
+ process.stdin.resume();
31
+ process.stdin.on("data", (key) => {
32
+ const ch = key.toString();
33
+ if (ch === "q" || ch === "Q" || ch === "\x03") {
34
+ shutdown();
35
+ }
36
+ });
37
+ }
38
+ process.on("SIGINT", shutdown);
39
+ process.on("SIGTERM", shutdown);
40
+ await display.renderHeader();
41
+ while (running) {
42
+ const goals = callbacks.queryGoals().filter(g => !exhaustedGoals.has(g.goalId));
43
+ if (goals.length === 0) {
44
+ const spinner = display.startWaiting();
45
+ const end = Date.now() + pollIntervalMs;
46
+ while (running && Date.now() < end) {
47
+ await sleep(250);
48
+ }
49
+ spinner.stop();
50
+ continue;
51
+ }
52
+ const target = goals[0];
53
+ let completed = false;
54
+ for (let attempt = 1; attempt <= config.maxRetries && running; attempt++) {
55
+ display.renderGoalStart(target.goalId, target.objective, attempt, config.maxRetries);
56
+ const spinner = display.startProcessing();
57
+ await callbacks.spawnAgent(target.goalId);
58
+ spinner.stop();
59
+ if (!running)
60
+ break;
61
+ if (callbacks.isGoalComplete(target.goalId)) {
62
+ callbacks.onGoalComplete(target.goalId, target.objective, attempt);
63
+ completed = true;
64
+ break;
65
+ }
66
+ if (attempt === config.maxRetries) {
67
+ callbacks.onGoalSkipped(target.goalId, "not-complete", config.maxRetries);
68
+ }
69
+ }
70
+ if (!completed) {
71
+ exhaustedGoals.add(target.goalId);
72
+ }
73
+ await sleep(2000);
74
+ }
75
+ // Clean up stdin and exit
76
+ if (process.stdin.isTTY) {
77
+ process.stdin.setRawMode(false);
78
+ process.stdin.pause();
79
+ }
80
+ display.renderShutdown();
81
+ }
82
+ //# sourceMappingURL=DaemonLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaemonLoop.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/DaemonLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Goal Status Query
3
+ *
4
+ * Subprocess-based helper to query the current status of a goal.
5
+ * Used by work daemons to check whether an agent subprocess
6
+ * successfully transitioned a goal to the expected state.
7
+ */
8
+ /**
9
+ * Query the current status of a goal via a short-lived subprocess.
10
+ * Returns the status string, or "unknown" on failure.
11
+ */
12
+ export declare function queryGoalStatus(goalId: string): string;
13
+ //# sourceMappingURL=GoalStatusQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoalStatusQuery.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/GoalStatusQuery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWtD"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Goal Status Query
4
+ *
5
+ * Subprocess-based helper to query the current status of a goal.
6
+ * Used by work daemons to check whether an agent subprocess
7
+ * successfully transitioned a goal to the expected state.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.queryGoalStatus = queryGoalStatus;
11
+ const node_child_process_1 = require("node:child_process");
12
+ /**
13
+ * Query the current status of a goal via a short-lived subprocess.
14
+ * Returns the status string, or "unknown" on failure.
15
+ */
16
+ function queryGoalStatus(goalId) {
17
+ try {
18
+ const stdout = (0, node_child_process_1.execSync)(`npx jumbo goal show --id ${goalId}`, {
19
+ stdio: ["ignore", "pipe", "ignore"],
20
+ timeout: 30000,
21
+ }).toString();
22
+ const parsed = JSON.parse(stdout);
23
+ return parsed.status ?? parsed.goal?.status ?? "unknown";
24
+ }
25
+ catch {
26
+ return "unknown";
27
+ }
28
+ }
29
+ //# sourceMappingURL=GoalStatusQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoalStatusQuery.js","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/work/shared/GoalStatusQuery.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAQH,0CAWC;AAjBD,2DAA8C;AAE9C;;;GAGG;AACH,SAAgB,eAAe,CAAC,MAAc;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,6BAAQ,EAAC,4BAA4B,MAAM,EAAE,EAAE;YAC5D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,KAAM;SAChB,CAAC,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jumbo-cli",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
4
4
  "description": "Memory and Context Orchestration for Coding Agents",
5
5
  "keywords": [
6
6
  "cli",