@kenkaiiii/ggcoder 4.3.204 → 4.3.206

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 (183) hide show
  1. package/dist/cli.js +38 -26
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config.js +2 -2
  4. package/dist/core/compaction/compactor.d.ts.map +1 -1
  5. package/dist/core/compaction/compactor.js +6 -0
  6. package/dist/core/compaction/compactor.js.map +1 -1
  7. package/dist/core/compaction/compactor.test.js +16 -0
  8. package/dist/core/compaction/compactor.test.js.map +1 -1
  9. package/dist/core/goal-controller.d.ts +57 -0
  10. package/dist/core/goal-controller.d.ts.map +1 -0
  11. package/dist/core/goal-controller.js +285 -0
  12. package/dist/core/goal-controller.js.map +1 -0
  13. package/dist/core/goal-controller.test.d.ts +2 -0
  14. package/dist/core/goal-controller.test.d.ts.map +1 -0
  15. package/dist/core/goal-controller.test.js +377 -0
  16. package/dist/core/goal-controller.test.js.map +1 -0
  17. package/dist/core/goal-lifecycle-smoke.test.d.ts +2 -0
  18. package/dist/core/goal-lifecycle-smoke.test.d.ts.map +1 -0
  19. package/dist/core/goal-lifecycle-smoke.test.js +207 -0
  20. package/dist/core/goal-lifecycle-smoke.test.js.map +1 -0
  21. package/dist/core/goal-store.d.ts +164 -0
  22. package/dist/core/goal-store.d.ts.map +1 -0
  23. package/dist/core/goal-store.js +721 -0
  24. package/dist/core/goal-store.js.map +1 -0
  25. package/dist/core/goal-store.test.d.ts +2 -0
  26. package/dist/core/goal-store.test.d.ts.map +1 -0
  27. package/dist/core/goal-store.test.js +341 -0
  28. package/dist/core/goal-store.test.js.map +1 -0
  29. package/dist/core/goal-verifier.d.ts +17 -0
  30. package/dist/core/goal-verifier.d.ts.map +1 -0
  31. package/dist/core/goal-verifier.js +84 -0
  32. package/dist/core/goal-verifier.js.map +1 -0
  33. package/dist/core/goal-verifier.test.d.ts +2 -0
  34. package/dist/core/goal-verifier.test.d.ts.map +1 -0
  35. package/dist/core/goal-verifier.test.js +88 -0
  36. package/dist/core/goal-verifier.test.js.map +1 -0
  37. package/dist/core/goal-worker.d.ts +47 -0
  38. package/dist/core/goal-worker.d.ts.map +1 -0
  39. package/dist/core/goal-worker.js +329 -0
  40. package/dist/core/goal-worker.js.map +1 -0
  41. package/dist/core/goal-worker.test.d.ts +2 -0
  42. package/dist/core/goal-worker.test.d.ts.map +1 -0
  43. package/dist/core/goal-worker.test.js +206 -0
  44. package/dist/core/goal-worker.test.js.map +1 -0
  45. package/dist/core/oauth/gemini.d.ts.map +1 -1
  46. package/dist/core/oauth/gemini.js +138 -30
  47. package/dist/core/oauth/gemini.js.map +1 -1
  48. package/dist/core/oauth/gemini.test.d.ts +2 -0
  49. package/dist/core/oauth/gemini.test.d.ts.map +1 -0
  50. package/dist/core/oauth/gemini.test.js +154 -0
  51. package/dist/core/oauth/gemini.test.js.map +1 -0
  52. package/dist/core/prompt-commands.d.ts.map +1 -1
  53. package/dist/core/prompt-commands.js +124 -0
  54. package/dist/core/prompt-commands.js.map +1 -1
  55. package/dist/core/prompt-commands.test.js +36 -0
  56. package/dist/core/prompt-commands.test.js.map +1 -1
  57. package/dist/core/repomap.js +2 -0
  58. package/dist/core/repomap.js.map +1 -1
  59. package/dist/core/repomap.test.js +18 -0
  60. package/dist/core/repomap.test.js.map +1 -1
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/interactive.d.ts.map +1 -1
  66. package/dist/interactive.js +20 -11
  67. package/dist/interactive.js.map +1 -1
  68. package/dist/system-prompt.d.ts.map +1 -1
  69. package/dist/system-prompt.js +18 -50
  70. package/dist/system-prompt.js.map +1 -1
  71. package/dist/system-prompt.test.js +124 -1
  72. package/dist/system-prompt.test.js.map +1 -1
  73. package/dist/tools/edit-diff.d.ts.map +1 -1
  74. package/dist/tools/edit-diff.js +71 -32
  75. package/dist/tools/edit-diff.js.map +1 -1
  76. package/dist/tools/edit-diff.test.js +14 -0
  77. package/dist/tools/edit-diff.test.js.map +1 -1
  78. package/dist/tools/edit.d.ts.map +1 -1
  79. package/dist/tools/edit.js +16 -6
  80. package/dist/tools/edit.js.map +1 -1
  81. package/dist/tools/edit.test.js +27 -0
  82. package/dist/tools/edit.test.js.map +1 -1
  83. package/dist/tools/enter-plan.d.ts.map +1 -1
  84. package/dist/tools/enter-plan.js +1 -0
  85. package/dist/tools/enter-plan.js.map +1 -1
  86. package/dist/tools/find.d.ts.map +1 -1
  87. package/dist/tools/find.js +2 -0
  88. package/dist/tools/find.js.map +1 -1
  89. package/dist/tools/goals.d.ts +110 -0
  90. package/dist/tools/goals.d.ts.map +1 -0
  91. package/dist/tools/goals.js +500 -0
  92. package/dist/tools/goals.js.map +1 -0
  93. package/dist/tools/goals.test.d.ts +2 -0
  94. package/dist/tools/goals.test.d.ts.map +1 -0
  95. package/dist/tools/goals.test.js +431 -0
  96. package/dist/tools/goals.test.js.map +1 -0
  97. package/dist/tools/grep.d.ts.map +1 -1
  98. package/dist/tools/grep.js +2 -0
  99. package/dist/tools/grep.js.map +1 -1
  100. package/dist/tools/index.d.ts +2 -0
  101. package/dist/tools/index.d.ts.map +1 -1
  102. package/dist/tools/index.js +6 -0
  103. package/dist/tools/index.js.map +1 -1
  104. package/dist/tools/prompt-hints.d.ts.map +1 -1
  105. package/dist/tools/prompt-hints.js +2 -0
  106. package/dist/tools/prompt-hints.js.map +1 -1
  107. package/dist/tools/source-path.d.ts +9 -0
  108. package/dist/tools/source-path.d.ts.map +1 -0
  109. package/dist/tools/source-path.js +119 -0
  110. package/dist/tools/source-path.js.map +1 -0
  111. package/dist/tools/source-path.test.d.ts +2 -0
  112. package/dist/tools/source-path.test.d.ts.map +1 -0
  113. package/dist/tools/source-path.test.js +80 -0
  114. package/dist/tools/source-path.test.js.map +1 -0
  115. package/dist/tools/subagent.js +16 -0
  116. package/dist/tools/subagent.js.map +1 -1
  117. package/dist/ui/App.d.ts +36 -3
  118. package/dist/ui/App.d.ts.map +1 -1
  119. package/dist/ui/App.js +879 -57
  120. package/dist/ui/App.js.map +1 -1
  121. package/dist/ui/activity-phrases.d.ts.map +1 -1
  122. package/dist/ui/activity-phrases.js +7 -3
  123. package/dist/ui/activity-phrases.js.map +1 -1
  124. package/dist/ui/app-state-persistence.test.d.ts +2 -0
  125. package/dist/ui/app-state-persistence.test.d.ts.map +1 -0
  126. package/dist/ui/app-state-persistence.test.js +56 -0
  127. package/dist/ui/app-state-persistence.test.js.map +1 -0
  128. package/dist/ui/components/BackgroundTasksBar.d.ts +16 -1
  129. package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -1
  130. package/dist/ui/components/BackgroundTasksBar.js +15 -2
  131. package/dist/ui/components/BackgroundTasksBar.js.map +1 -1
  132. package/dist/ui/components/Banner.d.ts +2 -1
  133. package/dist/ui/components/Banner.d.ts.map +1 -1
  134. package/dist/ui/components/Banner.js +3 -3
  135. package/dist/ui/components/Banner.js.map +1 -1
  136. package/dist/ui/components/GoalOverlay.d.ts +21 -0
  137. package/dist/ui/components/GoalOverlay.d.ts.map +1 -0
  138. package/dist/ui/components/GoalOverlay.js +336 -0
  139. package/dist/ui/components/GoalOverlay.js.map +1 -0
  140. package/dist/ui/components/GoalStatusBar.d.ts +24 -0
  141. package/dist/ui/components/GoalStatusBar.d.ts.map +1 -0
  142. package/dist/ui/components/GoalStatusBar.js +113 -0
  143. package/dist/ui/components/GoalStatusBar.js.map +1 -0
  144. package/dist/ui/components/InputArea.d.ts +2 -1
  145. package/dist/ui/components/InputArea.d.ts.map +1 -1
  146. package/dist/ui/components/InputArea.js +6 -1
  147. package/dist/ui/components/InputArea.js.map +1 -1
  148. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  149. package/dist/ui/components/ToolExecution.js +94 -1
  150. package/dist/ui/components/ToolExecution.js.map +1 -1
  151. package/dist/ui/footer-status-layout.test.d.ts +2 -0
  152. package/dist/ui/footer-status-layout.test.d.ts.map +1 -0
  153. package/dist/ui/footer-status-layout.test.js +56 -0
  154. package/dist/ui/footer-status-layout.test.js.map +1 -0
  155. package/dist/ui/goal-events.d.ts +20 -0
  156. package/dist/ui/goal-events.d.ts.map +1 -0
  157. package/dist/ui/goal-events.js +102 -0
  158. package/dist/ui/goal-events.js.map +1 -0
  159. package/dist/ui/goal-events.test.d.ts +2 -0
  160. package/dist/ui/goal-events.test.d.ts.map +1 -0
  161. package/dist/ui/goal-events.test.js +208 -0
  162. package/dist/ui/goal-events.test.js.map +1 -0
  163. package/dist/ui/goal-overlay.test.d.ts +2 -0
  164. package/dist/ui/goal-overlay.test.d.ts.map +1 -0
  165. package/dist/ui/goal-overlay.test.js +122 -0
  166. package/dist/ui/goal-overlay.test.js.map +1 -0
  167. package/dist/ui/goal-status-bar.test.d.ts +2 -0
  168. package/dist/ui/goal-status-bar.test.d.ts.map +1 -0
  169. package/dist/ui/goal-status-bar.test.js +143 -0
  170. package/dist/ui/goal-status-bar.test.js.map +1 -0
  171. package/dist/ui/live-item-flush.test.js +48 -0
  172. package/dist/ui/live-item-flush.test.js.map +1 -1
  173. package/dist/ui/render.d.ts +8 -3
  174. package/dist/ui/render.d.ts.map +1 -1
  175. package/dist/ui/render.js +10 -3
  176. package/dist/ui/render.js.map +1 -1
  177. package/dist/ui/scroll-stabilization.test.d.ts +2 -0
  178. package/dist/ui/scroll-stabilization.test.d.ts.map +1 -0
  179. package/dist/ui/scroll-stabilization.test.js +23 -0
  180. package/dist/ui/scroll-stabilization.test.js.map +1 -0
  181. package/dist/utils/format.js +44 -0
  182. package/dist/utils/format.js.map +1 -1
  183. package/package.json +5 -4
@@ -0,0 +1,88 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { EventEmitter } from "node:events";
3
+ EventEmitter.captureRejections = true;
4
+ import { PassThrough } from "node:stream";
5
+ import fs from "node:fs/promises";
6
+ import os from "node:os";
7
+ import path from "node:path";
8
+ import { projectDir } from "./goal-store.js";
9
+ const spawnMock = vi.hoisted(() => vi.fn());
10
+ vi.mock("node:child_process", () => ({ spawn: spawnMock }));
11
+ vi.mock("node:fs/promises", async () => {
12
+ const actual = await vi.importActual("node:fs/promises");
13
+ const writeFile = vi.fn((file, data, options) => actual.writeFile(file, data, options));
14
+ return { ...actual, writeFile };
15
+ });
16
+ class FakeChild extends EventEmitter {
17
+ stdout = new PassThrough();
18
+ stderr = new PassThrough();
19
+ pid = 4242;
20
+ kill = vi.fn();
21
+ }
22
+ let tmpBase;
23
+ let tmpProject;
24
+ let child;
25
+ beforeEach(async () => {
26
+ vi.useFakeTimers();
27
+ tmpBase = await fs.mkdtemp(path.join(os.tmpdir(), "goal-verifier-test-base-"));
28
+ tmpProject = await fs.mkdtemp(path.join(os.tmpdir(), "goal-verifier-test-project-"));
29
+ process.env.GG_GOALS_BASE = tmpBase;
30
+ child = new FakeChild();
31
+ spawnMock.mockReturnValue(child);
32
+ });
33
+ afterEach(async () => {
34
+ vi.useRealTimers();
35
+ vi.clearAllMocks();
36
+ delete process.env.GG_GOALS_BASE;
37
+ await fs.rm(tmpBase, { recursive: true, force: true });
38
+ await fs.rm(tmpProject, { recursive: true, force: true });
39
+ });
40
+ describe("runGoalVerifierCommand", () => {
41
+ it("records spawn errors as failed verifier artifacts", async () => {
42
+ const { runGoalVerifierCommand } = await import("./goal-verifier.js");
43
+ const resultPromise = runGoalVerifierCommand({
44
+ cwd: tmpProject,
45
+ runId: "goal-a",
46
+ command: "missing-verifier",
47
+ now: () => 1234,
48
+ });
49
+ await vi.waitFor(() => expect(child.listenerCount("error")).toBeGreaterThan(0));
50
+ child.listeners("error").forEach((listener) => listener.call(child, new Error("spawn ENOENT")));
51
+ child.emit("close", 1);
52
+ const result = await resultPromise;
53
+ expect(result.failureClass).toBe("verifier_spawn_error");
54
+ expect(result.verification).toMatchObject({
55
+ status: "fail",
56
+ command: "missing-verifier",
57
+ exitCode: 1,
58
+ summary: "Verifier process error: spawn ENOENT",
59
+ });
60
+ expect(result.verification.outputPath).toBe(path.join(projectDir(tmpProject), "verifiers", "goal-a-1234.log"));
61
+ await expect(fs.readFile(result.verification.outputPath, "utf-8")).resolves.toContain("Verifier process error: spawn ENOENT");
62
+ });
63
+ it("times out hung verifiers, kills them, and writes stable output artifacts", async () => {
64
+ const { runGoalVerifierCommand } = await import("./goal-verifier.js");
65
+ const resultPromise = runGoalVerifierCommand({
66
+ cwd: tmpProject,
67
+ runId: "goal-a",
68
+ command: "sleep forever",
69
+ timeoutMs: 25,
70
+ now: () => 2000,
71
+ });
72
+ await vi.waitFor(() => expect(child.listenerCount("close")).toBeGreaterThan(0));
73
+ await vi.waitFor(() => expect(child.stdout.listenerCount("data")).toBeGreaterThan(0));
74
+ child.stdout
75
+ .listeners("data")
76
+ .forEach((listener) => listener.call(child.stdout, Buffer.from("partial output")));
77
+ await vi.advanceTimersByTimeAsync(25);
78
+ child.emit("close", 124);
79
+ const result = await resultPromise;
80
+ expect(child.kill).toHaveBeenCalledWith("SIGTERM");
81
+ expect(result.failureClass).toBe("verifier_timeout");
82
+ expect(result.verification).toMatchObject({ status: "fail", exitCode: 124 });
83
+ expect(result.verification.summary).toContain("Verifier timed out after 25ms");
84
+ expect(result.verification.outputPath).toBe(path.join(projectDir(tmpProject), "verifiers", "goal-a-2000.log"));
85
+ await expect(fs.readFile(result.verification.outputPath, "utf-8")).resolves.toContain("Verifier timed out after 25ms");
86
+ });
87
+ });
88
+ //# sourceMappingURL=goal-verifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-verifier.test.js","sourceRoot":"","sources":["../../src/core/goal-verifier.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { Provider } from "@kenkaiiii/gg-ai";
2
+ export interface GoalWorkerRecord {
3
+ id: string;
4
+ pid: number;
5
+ goalRunId: string;
6
+ goalTaskId: string;
7
+ cwd: string;
8
+ provider: Provider;
9
+ model: string;
10
+ startedAt: string;
11
+ logFile: string;
12
+ status: "running" | "done" | "failed" | "stopped";
13
+ exitCode: number | null;
14
+ currentActivity?: string;
15
+ }
16
+ export interface GoalWorkerToolUse {
17
+ name: string;
18
+ ok: boolean;
19
+ }
20
+ export interface GoalWorkerCompletion {
21
+ worker: GoalWorkerRecord;
22
+ summary: string;
23
+ status: "done" | "failed";
24
+ exitCode: number;
25
+ toolsUsed: GoalWorkerToolUse[];
26
+ reason?: "exit" | "spawn_error" | "timeout";
27
+ }
28
+ export type GoalWorkerCompletionListener = (completion: GoalWorkerCompletion) => void;
29
+ export interface StartGoalWorkerOptions {
30
+ cwd: string;
31
+ provider: Provider;
32
+ model: string;
33
+ goalRunId: string;
34
+ goalTaskId: string;
35
+ prompt: string;
36
+ systemPrompt?: string;
37
+ parentCacheKey?: string;
38
+ maxTurns?: number;
39
+ onComplete?: (completion: GoalWorkerCompletion) => void;
40
+ }
41
+ export declare function subscribeGoalWorkerCompletions(listener: GoalWorkerCompletionListener, projectPath?: string): () => void;
42
+ export declare function startGoalWorker(options: StartGoalWorkerOptions): Promise<GoalWorkerRecord>;
43
+ export declare function listGoalWorkers(projectPath?: string): GoalWorkerRecord[];
44
+ export declare function stopGoalWorker(workerId: string): Promise<string>;
45
+ export declare function shutdownGoalWorkers(projectPath?: string): void;
46
+ export declare function hasGoalWorkerLog(record: GoalWorkerRecord): boolean;
47
+ //# sourceMappingURL=goal-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-worker.d.ts","sourceRoot":"","sources":["../../src/core/goal-worker.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAejD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,MAAM,4BAA4B,GAAG,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAOtF,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACzD;AAoDD,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,4BAA4B,EACtC,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,IAAI,CAqBZ;AA0BD,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsMhG;AAED,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAGxE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BtE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ9D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAElE"}
@@ -0,0 +1,329 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createInterface } from "node:readline";
3
+ import { createWriteStream, existsSync } from "node:fs";
4
+ import { mkdir } from "node:fs/promises";
5
+ import { join } from "node:path";
6
+ import { randomUUID } from "node:crypto";
7
+ import { killProcessTree } from "../utils/process.js";
8
+ import { log } from "./logger.js";
9
+ import { appendGoalEvidence, projectDir, updateGoalTask, upsertGoalRun, getGoalRun, } from "./goal-store.js";
10
+ const DEFAULT_GOAL_WORKER_MAX_TURNS = 12;
11
+ const MAX_SUMMARY_CHARS = 4000;
12
+ const workers = new Map();
13
+ const children = new Map();
14
+ const completionSubscriptions = new Set();
15
+ const pendingCompletions = [];
16
+ const MAX_PENDING_COMPLETIONS = 100;
17
+ function getCliPath() {
18
+ return process.argv[1] ?? "";
19
+ }
20
+ function goalWorkerSystemPrompt(goalRunId, goalTaskId) {
21
+ return ("You are a disposable Goal worker running inside the same project as the main GG Coder session. " +
22
+ "Follow only the assigned Goal task prompt. Keep changes focused, use local/free tools, source_path/docs/kencode real-code research when relevant, create needed scripts/fixtures/harnesses, run requested verification, " +
23
+ "and update durable Goal state with the goals tool using command/file evidence. Record evidence and task status for " +
24
+ `goal ${goalRunId}, task ${goalTaskId}. Do not mark the whole goal complete; only the orchestrator/verifier can complete it.`);
25
+ }
26
+ function appendSummary(summary, text) {
27
+ const next = summary + text;
28
+ return next.length > MAX_SUMMARY_CHARS ? next.slice(next.length - MAX_SUMMARY_CHARS) : next;
29
+ }
30
+ function completionMatchesProject(completion, projectPath) {
31
+ return projectPath === undefined || completion.worker.cwd === projectPath;
32
+ }
33
+ function emitGoalWorkerCompletion(completion) {
34
+ let delivered = false;
35
+ for (const subscription of completionSubscriptions) {
36
+ if (!completionMatchesProject(completion, subscription.projectPath))
37
+ continue;
38
+ delivered = true;
39
+ try {
40
+ subscription.listener(completion);
41
+ }
42
+ catch (err) {
43
+ log("ERROR", "goal-worker", err instanceof Error ? err.message : String(err));
44
+ }
45
+ }
46
+ if (delivered)
47
+ return;
48
+ pendingCompletions.push(completion);
49
+ if (pendingCompletions.length > MAX_PENDING_COMPLETIONS) {
50
+ pendingCompletions.splice(0, pendingCompletions.length - MAX_PENDING_COMPLETIONS);
51
+ }
52
+ }
53
+ export function subscribeGoalWorkerCompletions(listener, projectPath) {
54
+ const subscription = { listener, projectPath };
55
+ completionSubscriptions.add(subscription);
56
+ for (let index = 0; index < pendingCompletions.length;) {
57
+ const completion = pendingCompletions[index];
58
+ if (!completionMatchesProject(completion, projectPath)) {
59
+ index += 1;
60
+ continue;
61
+ }
62
+ pendingCompletions.splice(index, 1);
63
+ try {
64
+ listener(completion);
65
+ }
66
+ catch (err) {
67
+ log("ERROR", "goal-worker", err instanceof Error ? err.message : String(err));
68
+ }
69
+ }
70
+ return () => {
71
+ completionSubscriptions.delete(subscription);
72
+ };
73
+ }
74
+ function formatActivity(name, args) {
75
+ const firstString = Object.values(args).find((value) => typeof value === "string");
76
+ return firstString ? `${name}: ${firstString.slice(0, 80)}` : name;
77
+ }
78
+ async function setRunWorker(cwd, runId, workerId) {
79
+ const run = await getGoalRun(cwd, runId);
80
+ if (!run)
81
+ return;
82
+ const patch = workerId
83
+ ? { ...run, activeWorkerId: workerId, status: "running" }
84
+ : {
85
+ ...run,
86
+ activeWorkerId: undefined,
87
+ status: run.status === "running" ? "ready" : run.status,
88
+ };
89
+ await upsertGoalRun(cwd, patch);
90
+ }
91
+ export async function startGoalWorker(options) {
92
+ const cliPath = getCliPath();
93
+ if (!cliPath)
94
+ throw new Error("Cannot start Goal worker: CLI path is unavailable.");
95
+ const existing = listGoalWorkers(options.cwd).find((worker) => worker.goalRunId === options.goalRunId && worker.status === "running");
96
+ if (existing)
97
+ return existing;
98
+ const workerId = randomUUID().slice(0, 8);
99
+ const workerDir = join(projectDir(options.cwd), "workers");
100
+ await mkdir(workerDir, { recursive: true });
101
+ const logFile = join(workerDir, `${workerId}.ndjson`);
102
+ const logStream = createWriteStream(logFile, { flags: "a" });
103
+ const cliArgs = [
104
+ "--json",
105
+ "--provider",
106
+ options.provider,
107
+ "--model",
108
+ options.model,
109
+ "--max-turns",
110
+ String(options.maxTurns ?? DEFAULT_GOAL_WORKER_MAX_TURNS),
111
+ "--system-prompt",
112
+ options.systemPrompt ?? goalWorkerSystemPrompt(options.goalRunId, options.goalTaskId),
113
+ ];
114
+ if (options.parentCacheKey) {
115
+ cliArgs.push("--prompt-cache-key", `${options.parentCacheKey}:goal`);
116
+ }
117
+ cliArgs.push(options.prompt);
118
+ const child = spawn(process.execPath, [cliPath, ...cliArgs], {
119
+ cwd: options.cwd,
120
+ stdio: ["ignore", "pipe", "pipe"],
121
+ env: { ...process.env },
122
+ });
123
+ const record = {
124
+ id: workerId,
125
+ pid: child.pid ?? 0,
126
+ goalRunId: options.goalRunId,
127
+ goalTaskId: options.goalTaskId,
128
+ cwd: options.cwd,
129
+ provider: options.provider,
130
+ model: options.model,
131
+ startedAt: new Date().toISOString(),
132
+ logFile,
133
+ status: "running",
134
+ exitCode: null,
135
+ };
136
+ workers.set(workerId, record);
137
+ children.set(workerId, child);
138
+ await updateGoalTask(options.cwd, options.goalRunId, options.goalTaskId, {
139
+ status: "running",
140
+ workerId,
141
+ });
142
+ await setRunWorker(options.cwd, options.goalRunId, workerId);
143
+ let summary = "";
144
+ let stderr = "";
145
+ const activeTools = new Map();
146
+ const toolsUsed = [];
147
+ const rl = createInterface({ input: child.stdout });
148
+ rl.on("line", (line) => {
149
+ logStream.write(line + "\n");
150
+ try {
151
+ const event = JSON.parse(line);
152
+ if (event.type === "text_delta" && typeof event.text === "string") {
153
+ summary = appendSummary(summary, event.text);
154
+ }
155
+ else if (event.type === "tool_call_start") {
156
+ const name = typeof event.name === "string" ? event.name : "tool";
157
+ const toolCallId = typeof event.toolCallId === "string" ? event.toolCallId : randomUUID();
158
+ activeTools.set(toolCallId, name);
159
+ const args = typeof event.args === "object" && event.args !== null
160
+ ? event.args
161
+ : {};
162
+ record.currentActivity = formatActivity(name, args);
163
+ void appendGoalEvidence(options.cwd, options.goalRunId, {
164
+ kind: "log",
165
+ label: `Worker ${workerId} tool start`,
166
+ content: record.currentActivity,
167
+ path: logFile,
168
+ });
169
+ }
170
+ else if (event.type === "tool_call_end") {
171
+ const toolCallId = typeof event.toolCallId === "string" ? event.toolCallId : "";
172
+ const name = activeTools.get(toolCallId);
173
+ activeTools.delete(toolCallId);
174
+ if (name)
175
+ toolsUsed.push({ name, ok: event.isError !== true });
176
+ }
177
+ else if (event.type === "agent_done") {
178
+ summary = appendSummary(summary, "\n[agent_done]");
179
+ }
180
+ else if (event.type === "error") {
181
+ const message = typeof event.message === "string" ? event.message : "Worker error";
182
+ summary = appendSummary(summary, `\n[error] ${message}`);
183
+ }
184
+ }
185
+ catch {
186
+ summary = appendSummary(summary, line + "\n");
187
+ }
188
+ });
189
+ child.stderr?.on("data", (chunk) => {
190
+ const text = chunk.toString("utf-8");
191
+ stderr = appendSummary(stderr, text);
192
+ logStream.write(JSON.stringify({ type: "stderr", text }) + "\n");
193
+ });
194
+ child.on("close", (code) => {
195
+ void (async () => {
196
+ rl.close();
197
+ logStream.end();
198
+ children.delete(workerId);
199
+ record.exitCode = code;
200
+ if (record.status === "stopped") {
201
+ log("INFO", "goal-worker", `Worker ${workerId} stopped`, {
202
+ code: String(code ?? 1),
203
+ goalRunId: options.goalRunId,
204
+ goalTaskId: options.goalTaskId,
205
+ });
206
+ return;
207
+ }
208
+ record.status = code === 0 ? "done" : "failed";
209
+ const finalSummary = summary.trim() || stderr.trim() || (code === 0 ? "Worker completed." : "Worker failed.");
210
+ const finalCode = code ?? (record.status === "done" ? 0 : 1);
211
+ await updateGoalTask(options.cwd, options.goalRunId, options.goalTaskId, {
212
+ status: code === 0 ? "done" : "failed",
213
+ workerId,
214
+ lastSummary: finalSummary,
215
+ });
216
+ await appendGoalEvidence(options.cwd, options.goalRunId, {
217
+ kind: "log",
218
+ label: `Worker ${workerId} ${record.status}`,
219
+ content: finalSummary,
220
+ path: logFile,
221
+ });
222
+ await setRunWorker(options.cwd, options.goalRunId, undefined);
223
+ const completion = {
224
+ worker: { ...record },
225
+ summary: finalSummary,
226
+ status: record.status,
227
+ exitCode: finalCode,
228
+ toolsUsed: [...toolsUsed],
229
+ reason: "exit",
230
+ };
231
+ options.onComplete?.(completion);
232
+ emitGoalWorkerCompletion(completion);
233
+ log("INFO", "goal-worker", `Worker ${workerId} exited`, {
234
+ code: String(code ?? 1),
235
+ goalRunId: options.goalRunId,
236
+ goalTaskId: options.goalTaskId,
237
+ });
238
+ })().catch((err) => {
239
+ log("ERROR", "goal-worker", err instanceof Error ? err.message : String(err));
240
+ });
241
+ });
242
+ child.on("error", (err) => {
243
+ void (async () => {
244
+ logStream.end();
245
+ children.delete(workerId);
246
+ record.exitCode = 1;
247
+ record.status = "failed";
248
+ const finalSummary = `Failed to spawn Goal worker: ${err.message}`;
249
+ await updateGoalTask(options.cwd, options.goalRunId, options.goalTaskId, {
250
+ status: "failed",
251
+ workerId,
252
+ lastSummary: finalSummary,
253
+ });
254
+ await appendGoalEvidence(options.cwd, options.goalRunId, {
255
+ kind: "log",
256
+ label: `Worker ${workerId} spawn failed`,
257
+ content: err.message,
258
+ path: logFile,
259
+ });
260
+ await setRunWorker(options.cwd, options.goalRunId, undefined);
261
+ const completion = {
262
+ worker: { ...record },
263
+ summary: finalSummary,
264
+ status: "failed",
265
+ exitCode: 1,
266
+ toolsUsed: [...toolsUsed],
267
+ reason: "spawn_error",
268
+ };
269
+ options.onComplete?.(completion);
270
+ emitGoalWorkerCompletion(completion);
271
+ })().catch((error) => {
272
+ log("ERROR", "goal-worker", error instanceof Error ? error.message : String(error));
273
+ });
274
+ });
275
+ log("INFO", "goal-worker", `Worker ${workerId} started`, {
276
+ pid: String(record.pid),
277
+ goalRunId: options.goalRunId,
278
+ goalTaskId: options.goalTaskId,
279
+ });
280
+ return record;
281
+ }
282
+ export function listGoalWorkers(projectPath) {
283
+ const records = [...workers.values()];
284
+ return projectPath ? records.filter((record) => record.cwd === projectPath) : records;
285
+ }
286
+ export async function stopGoalWorker(workerId) {
287
+ const record = workers.get(workerId);
288
+ if (!record)
289
+ return `No Goal worker with id "${workerId}".`;
290
+ const child = children.get(workerId);
291
+ if (!child || record.status !== "running")
292
+ return `Goal worker ${workerId} is not running.`;
293
+ record.status = "stopped";
294
+ try {
295
+ if (child.pid)
296
+ killProcessTree(child.pid);
297
+ }
298
+ catch {
299
+ child.kill("SIGTERM");
300
+ }
301
+ children.delete(workerId);
302
+ await updateGoalTask(record.cwd, record.goalRunId, record.goalTaskId, {
303
+ status: "blocked",
304
+ workerId,
305
+ lastSummary: "Worker stopped by user.",
306
+ });
307
+ await appendGoalEvidence(record.cwd, record.goalRunId, {
308
+ kind: "summary",
309
+ label: `Worker ${workerId} stopped`,
310
+ content: "Worker stopped by user.",
311
+ path: record.logFile,
312
+ });
313
+ await setRunWorker(record.cwd, record.goalRunId, undefined);
314
+ return `Goal worker ${workerId} stopped.`;
315
+ }
316
+ export function shutdownGoalWorkers(projectPath) {
317
+ for (const record of listGoalWorkers(projectPath)) {
318
+ const child = children.get(record.id);
319
+ if (!child || !child.pid)
320
+ continue;
321
+ killProcessTree(child.pid);
322
+ children.delete(record.id);
323
+ record.status = "stopped";
324
+ }
325
+ }
326
+ export function hasGoalWorkerLog(record) {
327
+ return existsSync(record.logFile);
328
+ }
329
+ //# sourceMappingURL=goal-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-worker.js","sourceRoot":"","sources":["../../src/core/goal-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=goal-worker.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-worker.test.d.ts","sourceRoot":"","sources":["../../src/core/goal-worker.test.ts"],"names":[],"mappings":""}