@kenkaiiii/ggcoder 4.15.0 → 5.0.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 (183) hide show
  1. package/dist/cli/command-routing.d.ts +1 -1
  2. package/dist/cli/command-routing.d.ts.map +1 -1
  3. package/dist/cli/command-routing.js +1 -3
  4. package/dist/cli/command-routing.js.map +1 -1
  5. package/dist/cli/command-routing.test.js +0 -1
  6. package/dist/cli/command-routing.test.js.map +1 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +1 -29
  9. package/dist/cli.js.map +1 -1
  10. package/dist/core/agent-session.d.ts.map +1 -1
  11. package/dist/core/agent-session.js +6 -3
  12. package/dist/core/agent-session.js.map +1 -1
  13. package/dist/core/ideal-review.d.ts +12 -1
  14. package/dist/core/ideal-review.d.ts.map +1 -1
  15. package/dist/core/ideal-review.js +52 -2
  16. package/dist/core/ideal-review.js.map +1 -1
  17. package/dist/core/ideal-review.test.js +41 -1
  18. package/dist/core/ideal-review.test.js.map +1 -1
  19. package/dist/ui/App.d.ts +3 -7
  20. package/dist/ui/App.d.ts.map +1 -1
  21. package/dist/ui/App.js +17 -105
  22. package/dist/ui/App.js.map +1 -1
  23. package/dist/ui/components/ActivityIndicator.d.ts +1 -1
  24. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
  25. package/dist/ui/components/AnimationContext.d.ts +1 -1
  26. package/dist/ui/components/AnimationContext.d.ts.map +1 -1
  27. package/dist/ui/components/AssistantMessage.d.ts +1 -1
  28. package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
  29. package/dist/ui/components/BackgroundTasksBar.d.ts +1 -2
  30. package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -1
  31. package/dist/ui/components/Banner.d.ts +1 -2
  32. package/dist/ui/components/Banner.d.ts.map +1 -1
  33. package/dist/ui/components/ChatFooterPane.d.ts +1 -2
  34. package/dist/ui/components/ChatFooterPane.d.ts.map +1 -1
  35. package/dist/ui/components/ChatInputStack.d.ts +1 -1
  36. package/dist/ui/components/ChatInputStack.d.ts.map +1 -1
  37. package/dist/ui/components/ChatLayout.d.ts +4 -4
  38. package/dist/ui/components/ChatLayout.d.ts.map +1 -1
  39. package/dist/ui/components/ChatLivePane.d.ts +1 -1
  40. package/dist/ui/components/ChatLivePane.d.ts.map +1 -1
  41. package/dist/ui/components/ChatScreen.d.ts +1 -2
  42. package/dist/ui/components/ChatScreen.d.ts.map +1 -1
  43. package/dist/ui/components/ChatScreen.js +1 -1
  44. package/dist/ui/components/ChatScreen.js.map +1 -1
  45. package/dist/ui/components/ChatStatusRow.d.ts +1 -1
  46. package/dist/ui/components/ChatStatusRow.d.ts.map +1 -1
  47. package/dist/ui/components/CompactionNotice.d.ts +2 -3
  48. package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
  49. package/dist/ui/components/DiffFrame.d.ts +1 -1
  50. package/dist/ui/components/DiffFrame.d.ts.map +1 -1
  51. package/dist/ui/components/DiffView.d.ts +1 -2
  52. package/dist/ui/components/DiffView.d.ts.map +1 -1
  53. package/dist/ui/components/Footer.d.ts +1 -2
  54. package/dist/ui/components/Footer.d.ts.map +1 -1
  55. package/dist/ui/components/FooterStatusRow.d.ts +1 -2
  56. package/dist/ui/components/FooterStatusRow.d.ts.map +1 -1
  57. package/dist/ui/components/FullScreenOverlayRouter.d.ts +2 -9
  58. package/dist/ui/components/FullScreenOverlayRouter.d.ts.map +1 -1
  59. package/dist/ui/components/FullScreenOverlayRouter.js +1 -5
  60. package/dist/ui/components/FullScreenOverlayRouter.js.map +1 -1
  61. package/dist/ui/components/IdealHookMessage.d.ts +1 -1
  62. package/dist/ui/components/IdealHookMessage.d.ts.map +1 -1
  63. package/dist/ui/components/InputArea.d.ts +1 -2
  64. package/dist/ui/components/InputArea.d.ts.map +1 -1
  65. package/dist/ui/components/InputArea.js +1 -6
  66. package/dist/ui/components/InputArea.js.map +1 -1
  67. package/dist/ui/components/LiveToolPanel.d.ts +1 -2
  68. package/dist/ui/components/LiveToolPanel.d.ts.map +1 -1
  69. package/dist/ui/components/Markdown.d.ts +2 -2
  70. package/dist/ui/components/Markdown.d.ts.map +1 -1
  71. package/dist/ui/components/ModelSelector.d.ts +1 -2
  72. package/dist/ui/components/ModelSelector.d.ts.map +1 -1
  73. package/dist/ui/components/Overlay.d.ts +1 -1
  74. package/dist/ui/components/Overlay.d.ts.map +1 -1
  75. package/dist/ui/components/PlanApproval.d.ts +1 -2
  76. package/dist/ui/components/PlanApproval.d.ts.map +1 -1
  77. package/dist/ui/components/PlanBanner.d.ts +1 -2
  78. package/dist/ui/components/PlanBanner.d.ts.map +1 -1
  79. package/dist/ui/components/PlanModeLogo.d.ts +1 -2
  80. package/dist/ui/components/PlanModeLogo.d.ts.map +1 -1
  81. package/dist/ui/components/PlanOverlay.d.ts +2 -3
  82. package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
  83. package/dist/ui/components/PlanProgress.d.ts +1 -2
  84. package/dist/ui/components/PlanProgress.d.ts.map +1 -1
  85. package/dist/ui/components/QueueIndicator.d.ts +1 -2
  86. package/dist/ui/components/QueueIndicator.d.ts.map +1 -1
  87. package/dist/ui/components/RewindOverlay.d.ts +1 -2
  88. package/dist/ui/components/RewindOverlay.d.ts.map +1 -1
  89. package/dist/ui/components/SelectList.d.ts +1 -2
  90. package/dist/ui/components/SelectList.d.ts.map +1 -1
  91. package/dist/ui/components/ServerToolExecution.d.ts +1 -2
  92. package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
  93. package/dist/ui/components/SessionSelector.d.ts +1 -2
  94. package/dist/ui/components/SessionSelector.d.ts.map +1 -1
  95. package/dist/ui/components/SessionSummary.d.ts +1 -2
  96. package/dist/ui/components/SessionSummary.d.ts.map +1 -1
  97. package/dist/ui/components/SettingsSelector.d.ts +1 -2
  98. package/dist/ui/components/SettingsSelector.d.ts.map +1 -1
  99. package/dist/ui/components/SkillsOverlay.d.ts +1 -2
  100. package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
  101. package/dist/ui/components/SlashCommandMenu.d.ts +1 -2
  102. package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -1
  103. package/dist/ui/components/SlashStyledSelectList.d.ts +1 -2
  104. package/dist/ui/components/SlashStyledSelectList.d.ts.map +1 -1
  105. package/dist/ui/components/Spinner.d.ts +1 -2
  106. package/dist/ui/components/Spinner.d.ts.map +1 -1
  107. package/dist/ui/components/StreamingArea.d.ts +1 -1
  108. package/dist/ui/components/StreamingArea.d.ts.map +1 -1
  109. package/dist/ui/components/SubAgentPanel.d.ts +1 -2
  110. package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
  111. package/dist/ui/components/TaskPickerMenu.d.ts +1 -2
  112. package/dist/ui/components/TaskPickerMenu.d.ts.map +1 -1
  113. package/dist/ui/components/ThemeSelector.d.ts +1 -2
  114. package/dist/ui/components/ThemeSelector.d.ts.map +1 -1
  115. package/dist/ui/components/ThinkingBlock.d.ts +1 -1
  116. package/dist/ui/components/ThinkingBlock.d.ts.map +1 -1
  117. package/dist/ui/components/ToolExecution.d.ts +1 -2
  118. package/dist/ui/components/ToolExecution.d.ts.map +1 -1
  119. package/dist/ui/components/ToolGroupExecution.d.ts +1 -2
  120. package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
  121. package/dist/ui/components/TranscriptViewport.d.ts +1 -1
  122. package/dist/ui/components/TranscriptViewport.d.ts.map +1 -1
  123. package/dist/ui/components/UserMessage.d.ts +1 -2
  124. package/dist/ui/components/UserMessage.d.ts.map +1 -1
  125. package/dist/ui/hooks/useAgentLoop.d.ts +1 -1
  126. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  127. package/dist/ui/hooks/useAgentLoop.js +1 -3
  128. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  129. package/dist/ui/layout-decisions.d.ts +1 -1
  130. package/dist/ui/layout-decisions.d.ts.map +1 -1
  131. package/dist/ui/render.d.ts +4 -12
  132. package/dist/ui/render.d.ts.map +1 -1
  133. package/dist/ui/render.js +1 -3
  134. package/dist/ui/render.js.map +1 -1
  135. package/dist/ui/transcript/MiscRows.d.ts +7 -8
  136. package/dist/ui/transcript/MiscRows.d.ts.map +1 -1
  137. package/dist/ui/transcript/StatusRow.d.ts +1 -1
  138. package/dist/ui/transcript/StatusRow.d.ts.map +1 -1
  139. package/dist/ui/transcript/ToolRows.d.ts +6 -7
  140. package/dist/ui/transcript/ToolRows.d.ts.map +1 -1
  141. package/dist/ui/transcript/TranscriptItemFrame.d.ts +1 -1
  142. package/dist/ui/transcript/TranscriptItemFrame.d.ts.map +1 -1
  143. package/package.json +4 -5
  144. package/dist/cli/pixel.d.ts +0 -27
  145. package/dist/cli/pixel.d.ts.map +0 -1
  146. package/dist/cli/pixel.js +0 -103
  147. package/dist/cli/pixel.js.map +0 -1
  148. package/dist/core/pixel-fix-agent.d.ts +0 -24
  149. package/dist/core/pixel-fix-agent.d.ts.map +0 -1
  150. package/dist/core/pixel-fix-agent.js +0 -49
  151. package/dist/core/pixel-fix-agent.js.map +0 -1
  152. package/dist/core/pixel-fix.d.ts +0 -70
  153. package/dist/core/pixel-fix.d.ts.map +0 -1
  154. package/dist/core/pixel-fix.js +0 -338
  155. package/dist/core/pixel-fix.js.map +0 -1
  156. package/dist/core/pixel-fix.test.d.ts +0 -2
  157. package/dist/core/pixel-fix.test.d.ts.map +0 -1
  158. package/dist/core/pixel-fix.test.js +0 -310
  159. package/dist/core/pixel-fix.test.js.map +0 -1
  160. package/dist/core/pixel.d.ts +0 -37
  161. package/dist/core/pixel.d.ts.map +0 -1
  162. package/dist/core/pixel.js +0 -378
  163. package/dist/core/pixel.js.map +0 -1
  164. package/dist/core/pixel.test.d.ts +0 -2
  165. package/dist/core/pixel.test.d.ts.map +0 -1
  166. package/dist/core/pixel.test.js +0 -269
  167. package/dist/core/pixel.test.js.map +0 -1
  168. package/dist/ui/components/PixelOverlay.d.ts +0 -12
  169. package/dist/ui/components/PixelOverlay.d.ts.map +0 -1
  170. package/dist/ui/components/PixelOverlay.js +0 -117
  171. package/dist/ui/components/PixelOverlay.js.map +0 -1
  172. package/dist/ui/hooks/usePixelFixFlow.d.ts +0 -57
  173. package/dist/ui/hooks/usePixelFixFlow.d.ts.map +0 -1
  174. package/dist/ui/hooks/usePixelFixFlow.js +0 -102
  175. package/dist/ui/hooks/usePixelFixFlow.js.map +0 -1
  176. package/dist/ui/pixel.d.ts +0 -23
  177. package/dist/ui/pixel.d.ts.map +0 -1
  178. package/dist/ui/pixel.js +0 -393
  179. package/dist/ui/pixel.js.map +0 -1
  180. package/dist/ui/pixel.test.d.ts +0 -2
  181. package/dist/ui/pixel.test.d.ts.map +0 -1
  182. package/dist/ui/pixel.test.js +0 -138
  183. package/dist/ui/pixel.test.js.map +0 -1
@@ -1,338 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { readFileSync, existsSync } from "node:fs";
3
- import { homedir } from "node:os";
4
- import { join } from "node:path";
5
- import chalk from "chalk";
6
- import { DEFAULT_INGEST_URL } from "@kenkaiiii/gg-pixel";
7
- import { PIXEL_FIX_SYSTEM_PROMPT } from "./pixel-fix-agent.js";
8
- import { tryResolveStack } from "./source-maps.js";
9
- export async function fixError(errorId, opts = {}) {
10
- const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\/+$/, "");
11
- const fetchFn = opts.fetchFn ?? fetch;
12
- const home = opts.homeDir ?? homedir();
13
- const owner = await resolveErrorOwner(fetchFn, ingestUrl, errorId, home);
14
- const { error, project, secret } = owner;
15
- const branch = `fix/pixel-${error.id}`;
16
- await patchError(fetchFn, ingestUrl, error.id, { status: "in_progress", branch }, secret);
17
- const exitCode = await runAgent({
18
- cwd: project.path,
19
- prompt: buildAgentPrompt(error, branch, project.path),
20
- systemPrompt: PIXEL_FIX_SYSTEM_PROMPT,
21
- spawnFn: opts.spawnFn ?? spawn,
22
- ggcoderBin: opts.ggcoderBin ?? "ggcoder",
23
- inheritStdio: opts.inheritStdio ?? true,
24
- maxTurns: opts.maxTurns ?? 60,
25
- });
26
- const observed = await observeOutcome(project.path, branch, opts.spawnFn ?? spawn);
27
- let outcome;
28
- let reason;
29
- if (exitCode !== 0) {
30
- outcome = "failed";
31
- reason = `Agent exited with code ${exitCode}`;
32
- }
33
- else if (!observed.branchExists) {
34
- outcome = "failed";
35
- reason = `Branch ${branch} was not created`;
36
- }
37
- else if (!observed.hasCommits) {
38
- outcome = "failed";
39
- reason = `Branch ${branch} has no new commits`;
40
- }
41
- else {
42
- outcome = "awaiting_review";
43
- reason = `Branch ${branch} created with ${observed.commitCount} commit(s) — ready for review`;
44
- }
45
- await patchError(fetchFn, ingestUrl, error.id, { status: outcome, branch }, secret);
46
- return { errorId: error.id, projectName: project.name, branch, outcome, reason };
47
- }
48
- export async function runQueue(opts = {}) {
49
- const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\/+$/, "");
50
- const fetchFn = opts.fetchFn ?? fetch;
51
- const home = opts.homeDir ?? homedir();
52
- const log = opts.onProgress ?? ((msg) => console.log(msg));
53
- const projectsPath = join(home, ".gg", "projects.json");
54
- if (!existsSync(projectsPath)) {
55
- log(chalk.dim("No projects registered. Run `ggcoder pixel install` first."));
56
- return { fixed: 0, failed: 0, total: 0 };
57
- }
58
- const projects = JSON.parse(readFileSync(projectsPath, "utf8"));
59
- const queue = [];
60
- for (const [projectId, project] of Object.entries(projects)) {
61
- if (!project.secret)
62
- continue; // legacy entry: cannot list, must re-install
63
- try {
64
- const res = await fetchFn(`${ingestUrl}/api/projects/${projectId}/errors?status=open`, {
65
- headers: { authorization: `Bearer ${project.secret}` },
66
- });
67
- if (!res.ok)
68
- continue;
69
- const body = (await res.json());
70
- for (const e of body.errors) {
71
- queue.push({ projectName: project.name, errorId: e.id });
72
- }
73
- }
74
- catch {
75
- // skip unreachable project
76
- }
77
- }
78
- if (queue.length === 0) {
79
- log(chalk.hex("#4ade80")("No open errors. Queue is clean."));
80
- return { fixed: 0, failed: 0, total: 0 };
81
- }
82
- log(chalk.bold(`Fixing ${queue.length} ${queue.length === 1 ? "error" : "errors"}...`));
83
- log("");
84
- let fixed = 0;
85
- let failed = 0;
86
- for (const item of queue) {
87
- log(chalk.hex("#a78bfa").bold(`▸ ${item.projectName}`) + chalk.dim(` ${item.errorId}`));
88
- try {
89
- const result = await fixError(item.errorId, opts);
90
- if (result.outcome === "awaiting_review") {
91
- log(chalk.hex("#4ade80")(` ✓ ${result.reason}`));
92
- fixed++;
93
- }
94
- else {
95
- log(chalk.hex("#ef4444")(` ✗ ${result.reason}`));
96
- failed++;
97
- }
98
- }
99
- catch (err) {
100
- log(chalk.hex("#ef4444")(` ✗ ${err instanceof Error ? err.message : String(err)}`));
101
- failed++;
102
- }
103
- log("");
104
- }
105
- return { fixed, failed, total: queue.length };
106
- }
107
- export async function preparePixelFix(errorId, opts = {}) {
108
- const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\/+$/, "");
109
- const fetchFn = opts.fetchFn ?? fetch;
110
- const home = opts.homeDir ?? homedir();
111
- const owner = await resolveErrorOwner(fetchFn, ingestUrl, errorId, home);
112
- const { error, project, secret } = owner;
113
- const branch = `fix/pixel-${error.id}`;
114
- await patchError(fetchFn, ingestUrl, error.id, { status: "in_progress", branch }, secret);
115
- return {
116
- errorId: error.id,
117
- projectId: error.project_id,
118
- projectName: project.name,
119
- projectPath: project.path,
120
- branch,
121
- prompt: buildAgentPrompt(error, branch, project.path),
122
- };
123
- }
124
- export async function finalizePixelFix(prep, opts = {}) {
125
- const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\/+$/, "");
126
- const fetchFn = opts.fetchFn ?? fetch;
127
- const home = opts.homeDir ?? homedir();
128
- const observed = await observeOutcome(prep.projectPath, prep.branch, opts.spawnFn ?? spawn);
129
- let outcome;
130
- let reason;
131
- if (opts.agentExitedCleanly === false) {
132
- outcome = "failed";
133
- reason = "Agent did not finish cleanly";
134
- }
135
- else if (!observed.branchExists) {
136
- outcome = "failed";
137
- reason = `Branch ${prep.branch} was not created`;
138
- }
139
- else if (!observed.hasCommits) {
140
- outcome = "failed";
141
- reason = `Branch ${prep.branch} has no new commits`;
142
- }
143
- else {
144
- outcome = "awaiting_review";
145
- reason = `Branch ${prep.branch} created with ${observed.commitCount} commit(s) — ready for review`;
146
- }
147
- const secret = lookupProjectSecret(home, prep.projectId);
148
- await patchError(fetchFn, ingestUrl, prep.errorId, { status: outcome, branch: prep.branch }, secret);
149
- return { outcome, reason };
150
- }
151
- export function buildAgentPrompt(error, branch, projectDir) {
152
- let stack = parseStackJson(error.stack);
153
- // For browser stacks (URLs in the file field), try to resolve via local
154
- // source maps before showing the agent. Resolved frames point at the
155
- // user's TS/JS source — much more actionable than `app.min.js:1:48201`.
156
- if (projectDir && stack.length > 0 && looksLikeMinifiedBrowserStack(stack)) {
157
- stack = tryResolveStack(stack, projectDir);
158
- }
159
- const ctx = parseCodeContext(error.code_context);
160
- const lines = [];
161
- lines.push("An error has been identified in this project. Investigate and fix it.");
162
- lines.push("");
163
- lines.push(`Error: ${error.type ?? "Error"} — ${error.message ?? "(no message)"}`);
164
- const topInApp = stack.find((f) => f.in_app) ?? stack[0];
165
- if (topInApp)
166
- lines.push(`Location: ${topInApp.file}:${topInApp.line}`);
167
- if (ctx && ctx.lines.length > 0) {
168
- lines.push("");
169
- lines.push("Code at site:");
170
- const startLine = ctx.error_line - Math.floor((ctx.lines.length - 1) / 2);
171
- ctx.lines.forEach((line, i) => {
172
- const lineNum = startLine + i;
173
- const marker = lineNum === ctx.error_line ? ">" : " ";
174
- lines.push(` ${marker}${String(lineNum).padStart(4)} | ${line}`);
175
- });
176
- }
177
- if (stack.length > 0) {
178
- lines.push("");
179
- lines.push("Stack:");
180
- for (const f of stack.slice(0, 10)) {
181
- const lib = f.in_app ? "" : " (lib)";
182
- lines.push(` ${f.fn || "<anon>"} ${f.file}:${f.line}${lib}`);
183
- }
184
- }
185
- if (error.runtime)
186
- lines.push(`\nRuntime: ${error.runtime}`);
187
- lines.push(`Occurrences: ${error.occurrences}`);
188
- if (error.recurrence_count > 0) {
189
- lines.push("");
190
- lines.push(`Recurrence: this is the ${ordinal(error.recurrence_count)} time this fingerprint has appeared after a previous fix was merged. The earlier fix did not hold — investigate why.`);
191
- }
192
- lines.push("");
193
- lines.push("When done:");
194
- lines.push(` 1. Create branch: ${branch}`);
195
- lines.push(" 2. Commit the fix on that branch");
196
- lines.push(" 3. Run the project's quality checks (only commit if they pass)");
197
- lines.push("");
198
- lines.push("Do not merge. Do not push. Do not switch back to main.");
199
- return lines.join("\n");
200
- }
201
- /**
202
- * Walks ~/.gg/projects.json trying each project's bearer secret against
203
- * GET /api/errors/:id until one returns 200. Wrong secrets get 403/404 from
204
- * the server, so this scan exits as soon as the rightful owner is found.
205
- *
206
- * Bounded by the number of registered projects on this machine (typically
207
- * single digits) so cost is negligible per fix.
208
- */
209
- async function resolveErrorOwner(fetchFn, ingestUrl, errorId, home) {
210
- const projectsPath = join(home, ".gg", "projects.json");
211
- if (!existsSync(projectsPath)) {
212
- throw new Error(`No projects mapping at ${projectsPath} — run \`ggcoder pixel install\` in the project first.`);
213
- }
214
- const projects = JSON.parse(readFileSync(projectsPath, "utf8"));
215
- const ownersWithSecret = Object.entries(projects).filter(([, p]) => Boolean(p.secret));
216
- if (ownersWithSecret.length === 0) {
217
- throw new Error("No managed projects on this machine — run `ggcoder pixel install` in the project to refresh management access.");
218
- }
219
- for (const [, project] of ownersWithSecret) {
220
- const res = await fetchFn(`${ingestUrl}/api/errors/${errorId}`, {
221
- headers: { authorization: `Bearer ${project.secret}` },
222
- });
223
- if (res.ok) {
224
- const error = (await res.json());
225
- return { error, project, secret: project.secret };
226
- }
227
- // 401/403/404 → not this project; keep scanning.
228
- }
229
- throw new Error(`Error ${errorId} was not found in any registered project. Ensure the project is installed (\`ggcoder pixel install\`).`);
230
- }
231
- function lookupProjectSecret(home, projectId) {
232
- const projectsPath = join(home, ".gg", "projects.json");
233
- if (!existsSync(projectsPath)) {
234
- throw new Error(`No projects mapping at ${projectsPath} — run \`ggcoder pixel install\` in the project first.`);
235
- }
236
- const projects = JSON.parse(readFileSync(projectsPath, "utf8"));
237
- const project = projects[projectId];
238
- if (!project) {
239
- throw new Error(`No local mapping for project ${projectId} in ${projectsPath}. Run \`ggcoder pixel install\` in the project's directory.`);
240
- }
241
- if (!project.secret) {
242
- throw new Error(`Project ${projectId} is missing its bearer secret in ${projectsPath} — re-run \`ggcoder pixel install\` to refresh.`);
243
- }
244
- return project.secret;
245
- }
246
- async function patchError(fetchFn, ingestUrl, errorId, body, secret) {
247
- const res = await fetchFn(`${ingestUrl}/api/errors/${errorId}`, {
248
- method: "PATCH",
249
- headers: {
250
- "content-type": "application/json",
251
- authorization: `Bearer ${secret}`,
252
- },
253
- body: JSON.stringify(body),
254
- });
255
- if (!res.ok)
256
- throw new Error(`PATCH /api/errors/${errorId} failed: ${res.status}`);
257
- }
258
- async function runAgent(opts) {
259
- return new Promise((resolve, reject) => {
260
- const args = [
261
- "--json",
262
- "--max-turns",
263
- String(opts.maxTurns),
264
- "--system-prompt",
265
- opts.systemPrompt,
266
- opts.prompt,
267
- ];
268
- const child = opts.spawnFn(opts.ggcoderBin, args, {
269
- cwd: opts.cwd,
270
- stdio: opts.inheritStdio ? "inherit" : ["ignore", "pipe", "pipe"],
271
- });
272
- child.on("error", reject);
273
- child.on("exit", (code) => resolve(code ?? 1));
274
- });
275
- }
276
- async function observeOutcome(cwd, branch, spawnFn) {
277
- const exists = await runGit(cwd, ["show-ref", "--verify", `refs/heads/${branch}`], spawnFn);
278
- if (exists.code !== 0)
279
- return { branchExists: false, hasCommits: false, commitCount: 0 };
280
- let baseBranch = null;
281
- for (const candidate of ["main", "master"]) {
282
- const r = await runGit(cwd, ["show-ref", "--verify", `refs/heads/${candidate}`], spawnFn);
283
- if (r.code === 0) {
284
- baseBranch = candidate;
285
- break;
286
- }
287
- }
288
- if (!baseBranch)
289
- return { branchExists: true, hasCommits: false, commitCount: 0 };
290
- const ahead = await runGit(cwd, ["rev-list", "--count", `${baseBranch}..${branch}`], spawnFn);
291
- const count = ahead.code === 0 ? parseInt(ahead.stdout.trim(), 10) || 0 : 0;
292
- return { branchExists: true, hasCommits: count > 0, commitCount: count };
293
- }
294
- function runGit(cwd, args, spawnFn) {
295
- return new Promise((resolve) => {
296
- const child = spawnFn("git", args, { cwd, stdio: ["ignore", "pipe", "pipe"] });
297
- let stdout = "";
298
- let stderr = "";
299
- child.stdout?.on("data", (b) => (stdout += b.toString()));
300
- child.stderr?.on("data", (b) => (stderr += b.toString()));
301
- child.on("error", () => resolve({ code: 1, stdout, stderr }));
302
- child.on("exit", (code) => resolve({ code: code ?? 1, stdout, stderr }));
303
- });
304
- }
305
- function looksLikeMinifiedBrowserStack(stack) {
306
- // Heuristic: any frame whose file is an http(s) URL = browser stack.
307
- // We try map resolution for these. Native Node paths don't need it.
308
- return stack.some((f) => /^https?:\/\//.test(f.file));
309
- }
310
- function parseStackJson(raw) {
311
- if (!raw)
312
- return [];
313
- try {
314
- const parsed = JSON.parse(raw);
315
- if (Array.isArray(parsed))
316
- return parsed;
317
- }
318
- catch {
319
- // ignore
320
- }
321
- return [];
322
- }
323
- function parseCodeContext(raw) {
324
- if (!raw)
325
- return null;
326
- try {
327
- return JSON.parse(raw);
328
- }
329
- catch {
330
- return null;
331
- }
332
- }
333
- function ordinal(n) {
334
- const s = ["th", "st", "nd", "rd"];
335
- const v = n % 100;
336
- return `${n}${s[(v - 20) % 10] ?? s[v] ?? s[0]}`;
337
- }
338
- //# sourceMappingURL=pixel-fix.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pixel-fix.js","sourceRoot":"","sources":["../../src/core/pixel-fix.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pixel-fix.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pixel-fix.test.d.ts","sourceRoot":"","sources":["../../src/core/pixel-fix.test.ts"],"names":[],"mappings":""}