@kenkaiiii/gg-boss 4.3.140 → 4.3.142

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 (162) hide show
  1. package/dist/{chunk-JVQDTPYR.js → chunk-3EWLK53W.js} +18 -9
  2. package/dist/{chunk-JVQDTPYR.js.map → chunk-3EWLK53W.js.map} +1 -1
  3. package/dist/{chunk-5WNYQQPQ.js → chunk-QT366Y52.js} +4 -3
  4. package/dist/{chunk-5WNYQQPQ.js.map → chunk-QT366Y52.js.map} +1 -1
  5. package/dist/{chunk-PQAHDHVY.js → chunk-WJ4S4TOY.js} +3 -2
  6. package/dist/{chunk-PQAHDHVY.js.map → chunk-WJ4S4TOY.js.map} +1 -1
  7. package/dist/{chunk-B2WQ5E5J.js → chunk-YNWFCUMR.js} +2 -1
  8. package/dist/{chunk-B2WQ5E5J.js.map → chunk-YNWFCUMR.js.map} +1 -1
  9. package/dist/cli.js +2248 -182
  10. package/dist/cli.js.map +1 -1
  11. package/dist/{devtools-VBUDNGEI.js → devtools-4TI4D7F2.js} +3 -2
  12. package/dist/{devtools-VBUDNGEI.js.map → devtools-4TI4D7F2.js.map} +1 -1
  13. package/dist/{dist-7DAPKZGX.js → dist-VXOVSHZ5.js} +3 -2
  14. package/dist/{dist-7DAPKZGX.js.map → dist-VXOVSHZ5.js.map} +1 -1
  15. package/dist/{ignore-3AEIALHQ.js → ignore-76P4EAAU.js} +3 -2
  16. package/dist/{ignore-3AEIALHQ.js.map → ignore-76P4EAAU.js.map} +1 -1
  17. package/dist/index.js +21 -4
  18. package/dist/index.js.map +1 -1
  19. package/dist/{out-D65DTPFZ.js → out-XEXARMKS.js} +3 -2
  20. package/dist/{out-D65DTPFZ.js.map → out-XEXARMKS.js.map} +1 -1
  21. package/dist/pixel-WPYTQADG.js +14 -0
  22. package/dist/{pixel-fix-ALWXCLTS.js → pixel-fix-4WGZAJ5W.js} +4 -3
  23. package/dist/{pixel-fix-ALWXCLTS.js.map → pixel-fix-4WGZAJ5W.js.map} +1 -1
  24. package/package.json +10 -11
  25. package/dist/audio.d.ts +0 -21
  26. package/dist/audio.d.ts.map +0 -1
  27. package/dist/audio.js +0 -231
  28. package/dist/audio.js.map +0 -1
  29. package/dist/audio.test.d.ts +0 -2
  30. package/dist/audio.test.d.ts.map +0 -1
  31. package/dist/audio.test.js +0 -13
  32. package/dist/audio.test.js.map +0 -1
  33. package/dist/auto-update.d.ts +0 -24
  34. package/dist/auto-update.d.ts.map +0 -1
  35. package/dist/auto-update.js +0 -231
  36. package/dist/auto-update.js.map +0 -1
  37. package/dist/banner.d.ts +0 -17
  38. package/dist/banner.d.ts.map +0 -1
  39. package/dist/banner.js +0 -25
  40. package/dist/banner.js.map +0 -1
  41. package/dist/boss-footer.d.ts +0 -25
  42. package/dist/boss-footer.d.ts.map +0 -1
  43. package/dist/boss-footer.js +0 -107
  44. package/dist/boss-footer.js.map +0 -1
  45. package/dist/boss-phrases.d.ts +0 -9
  46. package/dist/boss-phrases.d.ts.map +0 -1
  47. package/dist/boss-phrases.js +0 -71
  48. package/dist/boss-phrases.js.map +0 -1
  49. package/dist/boss-store.d.ts +0 -245
  50. package/dist/boss-store.d.ts.map +0 -1
  51. package/dist/boss-store.js +0 -623
  52. package/dist/boss-store.js.map +0 -1
  53. package/dist/boss-system-prompt.d.ts +0 -3
  54. package/dist/boss-system-prompt.d.ts.map +0 -1
  55. package/dist/boss-system-prompt.js +0 -180
  56. package/dist/boss-system-prompt.js.map +0 -1
  57. package/dist/boss-tasks-overlay.d.ts +0 -22
  58. package/dist/boss-tasks-overlay.d.ts.map +0 -1
  59. package/dist/boss-tasks-overlay.js +0 -157
  60. package/dist/boss-tasks-overlay.js.map +0 -1
  61. package/dist/branding.d.ts +0 -32
  62. package/dist/branding.d.ts.map +0 -1
  63. package/dist/branding.js +0 -59
  64. package/dist/branding.js.map +0 -1
  65. package/dist/cli.d.ts +0 -3
  66. package/dist/cli.d.ts.map +0 -1
  67. package/dist/cli.smoke.test.d.ts +0 -2
  68. package/dist/cli.smoke.test.d.ts.map +0 -1
  69. package/dist/cli.smoke.test.js +0 -48
  70. package/dist/cli.smoke.test.js.map +0 -1
  71. package/dist/colors.d.ts +0 -14
  72. package/dist/colors.d.ts.map +0 -1
  73. package/dist/colors.js +0 -31
  74. package/dist/colors.js.map +0 -1
  75. package/dist/discover.d.ts +0 -13
  76. package/dist/discover.d.ts.map +0 -1
  77. package/dist/discover.js +0 -92
  78. package/dist/discover.js.map +0 -1
  79. package/dist/event-queue.d.ts +0 -16
  80. package/dist/event-queue.d.ts.map +0 -1
  81. package/dist/event-queue.js +0 -39
  82. package/dist/event-queue.js.map +0 -1
  83. package/dist/index.d.ts +0 -6
  84. package/dist/index.d.ts.map +0 -1
  85. package/dist/link-command.d.ts +0 -2
  86. package/dist/link-command.d.ts.map +0 -1
  87. package/dist/link-command.js +0 -120
  88. package/dist/link-command.js.map +0 -1
  89. package/dist/links.d.ts +0 -11
  90. package/dist/links.d.ts.map +0 -1
  91. package/dist/links.js +0 -22
  92. package/dist/links.js.map +0 -1
  93. package/dist/logger.d.ts +0 -41
  94. package/dist/logger.d.ts.map +0 -1
  95. package/dist/logger.js +0 -112
  96. package/dist/logger.js.map +0 -1
  97. package/dist/orchestrator-app.d.ts +0 -15
  98. package/dist/orchestrator-app.d.ts.map +0 -1
  99. package/dist/orchestrator-app.js +0 -599
  100. package/dist/orchestrator-app.js.map +0 -1
  101. package/dist/orchestrator.d.ts +0 -147
  102. package/dist/orchestrator.d.ts.map +0 -1
  103. package/dist/orchestrator.js +0 -707
  104. package/dist/orchestrator.js.map +0 -1
  105. package/dist/orchestrator.test.d.ts +0 -2
  106. package/dist/orchestrator.test.d.ts.map +0 -1
  107. package/dist/orchestrator.test.js +0 -55
  108. package/dist/orchestrator.test.js.map +0 -1
  109. package/dist/pixel-WB6VRJWP.js +0 -13
  110. package/dist/radio-picker.d.ts +0 -20
  111. package/dist/radio-picker.d.ts.map +0 -1
  112. package/dist/radio-picker.js +0 -31
  113. package/dist/radio-picker.js.map +0 -1
  114. package/dist/radio.d.ts +0 -43
  115. package/dist/radio.d.ts.map +0 -1
  116. package/dist/radio.js +0 -150
  117. package/dist/radio.js.map +0 -1
  118. package/dist/sessions.d.ts +0 -21
  119. package/dist/sessions.d.ts.map +0 -1
  120. package/dist/sessions.js +0 -122
  121. package/dist/sessions.js.map +0 -1
  122. package/dist/settings.d.ts +0 -11
  123. package/dist/settings.d.ts.map +0 -1
  124. package/dist/settings.js +0 -38
  125. package/dist/settings.js.map +0 -1
  126. package/dist/slash-commands.d.ts +0 -19
  127. package/dist/slash-commands.d.ts.map +0 -1
  128. package/dist/slash-commands.js +0 -76
  129. package/dist/slash-commands.js.map +0 -1
  130. package/dist/splash.d.ts +0 -21
  131. package/dist/splash.d.ts.map +0 -1
  132. package/dist/splash.js +0 -137
  133. package/dist/splash.js.map +0 -1
  134. package/dist/task-tools.d.ts +0 -18
  135. package/dist/task-tools.d.ts.map +0 -1
  136. package/dist/task-tools.js +0 -172
  137. package/dist/task-tools.js.map +0 -1
  138. package/dist/tasks-store.d.ts +0 -66
  139. package/dist/tasks-store.d.ts.map +0 -1
  140. package/dist/tasks-store.js +0 -199
  141. package/dist/tasks-store.js.map +0 -1
  142. package/dist/tasks-store.test.d.ts +0 -2
  143. package/dist/tasks-store.test.d.ts.map +0 -1
  144. package/dist/tasks-store.test.js +0 -138
  145. package/dist/tasks-store.test.js.map +0 -1
  146. package/dist/tool-formatters.d.ts +0 -7
  147. package/dist/tool-formatters.d.ts.map +0 -1
  148. package/dist/tool-formatters.js +0 -111
  149. package/dist/tool-formatters.js.map +0 -1
  150. package/dist/tools.d.ts +0 -26
  151. package/dist/tools.d.ts.map +0 -1
  152. package/dist/tools.js +0 -133
  153. package/dist/tools.js.map +0 -1
  154. package/dist/types.d.ts +0 -32
  155. package/dist/types.d.ts.map +0 -1
  156. package/dist/types.js +0 -2
  157. package/dist/types.js.map +0 -1
  158. package/dist/worker.d.ts +0 -47
  159. package/dist/worker.d.ts.map +0 -1
  160. package/dist/worker.js +0 -123
  161. package/dist/worker.js.map +0 -1
  162. /package/dist/{pixel-WB6VRJWP.js.map → pixel-WPYTQADG.js.map} +0 -0
@@ -1,13 +1,14 @@
1
+ import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
1
2
  import {
2
3
  DEFAULT_INGEST_URL,
3
4
  install,
4
5
  isInstallProbeFingerprint,
5
6
  source_default,
6
7
  verifyInstall
7
- } from "./chunk-PQAHDHVY.js";
8
+ } from "./chunk-WJ4S4TOY.js";
8
9
  import {
9
10
  init_esm_shims
10
- } from "./chunk-B2WQ5E5J.js";
11
+ } from "./chunk-YNWFCUMR.js";
11
12
 
12
13
  // ../ggcoder/dist/core/pixel.js
13
14
  init_esm_shims();
@@ -354,4 +355,4 @@ export {
354
355
  listAllErrors,
355
356
  runPixelInstall
356
357
  };
357
- //# sourceMappingURL=chunk-5WNYQQPQ.js.map
358
+ //# sourceMappingURL=chunk-QT366Y52.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ggcoder/src/core/pixel.ts"],"sourcesContent":["import { readFileSync, existsSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport {\n DEFAULT_INGEST_URL,\n install,\n isInstallProbeFingerprint,\n verifyInstall,\n type VerifyOutcome,\n} from \"@kenkaiiii/gg-pixel\";\n\ninterface ProjectMapping {\n name: string;\n path: string;\n /** Bearer secret for /api/* calls. Missing on legacy entries — those projects\n * can't be queried until they're re-installed. */\n secret?: string;\n}\n\ninterface ErrorRow {\n id: string;\n fingerprint: string;\n status: string;\n type: string | null;\n message: string | null;\n stack: string | null;\n occurrences: number;\n recurrence_count: number;\n last_seen_at: number;\n branch: string | null;\n}\n\ninterface ListOptions {\n ingestUrl?: string;\n homeDir?: string;\n fetchFn?: typeof fetch;\n}\n\nexport interface PixelEntry {\n errorId: string;\n projectId: string;\n projectName: string;\n projectPath: string;\n status: string;\n type: string;\n message: string;\n occurrences: number;\n recurrenceCount: number;\n location: string;\n branch: string | null;\n lastSeenAt?: number;\n}\n\nexport interface PixelFetchResult {\n entries: PixelEntry[];\n unreachable: string[];\n /** Project names that exist in projects.json but are missing the bearer\n * secret — they need to be re-installed before they can be managed. */\n unmanaged: string[];\n hasProjects: boolean;\n}\n\nexport async function fetchPixelEntries(opts: ListOptions = {}): Promise<PixelFetchResult> {\n const home = opts.homeDir ?? homedir();\n const path = join(home, \".gg\", \"projects.json\");\n const fetchFn = opts.fetchFn ?? fetch;\n\n if (!existsSync(path)) return { entries: [], unreachable: [], unmanaged: [], hasProjects: false };\n\n let map: Record<string, ProjectMapping>;\n try {\n map = JSON.parse(readFileSync(path, \"utf8\")) as Record<string, ProjectMapping>;\n } catch {\n return { entries: [], unreachable: [], unmanaged: [], hasProjects: false };\n }\n\n const projectIds = Object.keys(map);\n if (projectIds.length === 0)\n return { entries: [], unreachable: [], unmanaged: [], hasProjects: false };\n\n const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\\/+$/, \"\");\n const entries: PixelEntry[] = [];\n const unreachable: string[] = [];\n const unmanaged: string[] = [];\n\n for (const id of projectIds) {\n const project = map[id];\n if (!project) continue;\n if (!project.secret) {\n unmanaged.push(project.name);\n continue;\n }\n try {\n const res = await fetchFn(`${ingestUrl}/api/projects/${id}/errors`, {\n headers: { authorization: `Bearer ${project.secret}` },\n });\n if (!res.ok) {\n unreachable.push(project.name);\n continue;\n }\n const body = (await res.json()) as { errors: ErrorRow[] };\n for (const err of body.errors) {\n if (err.status === \"merged\") continue;\n // Hide install-verification probes from the overlay even if the\n // probe-cleanup DELETE didn't land (network blip, etc.).\n if (isInstallProbeFingerprint(err.fingerprint)) continue;\n entries.push({\n errorId: err.id,\n projectId: id,\n projectName: project.name,\n projectPath: project.path,\n status: err.status,\n type: err.type ?? \"Error\",\n message: (err.message ?? \"\").trim(),\n occurrences: err.occurrences,\n recurrenceCount: err.recurrence_count,\n location: deriveLocation(err.stack, project.path),\n branch: err.branch,\n lastSeenAt: err.last_seen_at,\n });\n }\n } catch {\n unreachable.push(project.name);\n }\n }\n\n // Group by project name; within project, order by status priority then count.\n const statusOrder: Record<string, number> = {\n failed: 0,\n open: 1,\n in_progress: 2,\n awaiting_review: 3,\n };\n const grouped = new Map<string, PixelEntry[]>();\n for (const e of entries) {\n if (!grouped.has(e.projectName)) grouped.set(e.projectName, []);\n grouped.get(e.projectName)!.push(e);\n }\n const sorted: PixelEntry[] = [];\n const projectNames = [...grouped.keys()].sort();\n for (const name of projectNames) {\n const group = grouped.get(name)!;\n group.sort((a, b) => {\n const ord = (statusOrder[a.status] ?? 99) - (statusOrder[b.status] ?? 99);\n if (ord !== 0) return ord;\n if (a.recurrenceCount !== b.recurrenceCount) return b.recurrenceCount - a.recurrenceCount;\n return b.occurrences - a.occurrences;\n });\n sorted.push(...group);\n }\n\n return { entries: sorted, unreachable, unmanaged, hasProjects: true };\n}\n\nfunction deriveLocation(stack: string | null, projectPath?: string): string {\n if (!stack) return \"unknown\";\n try {\n const parsed = JSON.parse(stack) as unknown;\n if (Array.isArray(parsed)) {\n const top =\n parsed.find(\n (f): f is { file: string; line: number; in_app: boolean } =>\n typeof f === \"object\" &&\n f !== null &&\n \"file\" in f &&\n \"line\" in f &&\n \"in_app\" in f &&\n (f as { in_app: boolean }).in_app === true,\n ) ?? (parsed[0] as { file?: string; line?: number } | undefined);\n if (top && top.file) {\n const rel = relativizeFile(top.file, projectPath);\n return `${rel}:${top.line ?? \"?\"}`;\n }\n }\n } catch {\n // ignore\n }\n return \"unknown\";\n}\n\nfunction relativizeFile(file: string, projectPath?: string): string {\n let f = file;\n if (f.startsWith(\"file://\")) f = f.slice(\"file://\".length);\n if (projectPath && f.startsWith(projectPath + \"/\")) f = f.slice(projectPath.length + 1);\n return f;\n}\n\nexport async function listAllErrors(opts: ListOptions = {}): Promise<void> {\n const home = opts.homeDir ?? homedir();\n const path = join(home, \".gg\", \"projects.json\");\n const fetchFn = opts.fetchFn ?? fetch;\n\n if (!existsSync(path)) {\n printNoProjects();\n return;\n }\n\n let map: Record<string, ProjectMapping>;\n try {\n map = JSON.parse(readFileSync(path, \"utf8\")) as Record<string, ProjectMapping>;\n } catch {\n console.error(chalk.red(`✗ ${path} is not valid JSON.`));\n process.exitCode = 1;\n return;\n }\n\n const projectIds = Object.keys(map);\n if (projectIds.length === 0) {\n printNoProjects();\n return;\n }\n\n const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\\/+$/, \"\");\n\n let totalOpen = 0;\n let totalAwaiting = 0;\n let totalInProgress = 0;\n let totalFailed = 0;\n\n for (const id of projectIds) {\n const project = map[id];\n if (!project) continue;\n const url = `${ingestUrl}/api/projects/${id}/errors`;\n\n if (!project.secret) {\n console.log(\n chalk.hex(\"#fbbf24\")(\n `⚠ ${project.name}: missing bearer secret — re-run \\`ggcoder pixel install\\` to refresh management access`,\n ),\n );\n continue;\n }\n\n let body: { errors: ErrorRow[] };\n try {\n const res = await fetchFn(url, {\n headers: { authorization: `Bearer ${project.secret}` },\n });\n if (!res.ok) {\n console.log(\n chalk.red(`✗ ${project.name}: failed to fetch (${res.status})`) + chalk.dim(` ${url}`),\n );\n continue;\n }\n body = (await res.json()) as { errors: ErrorRow[] };\n } catch (err) {\n console.log(\n chalk.red(`✗ ${project.name}: ${err instanceof Error ? err.message : String(err)}`),\n );\n continue;\n }\n\n const errors = body.errors.filter(\n (e) => e.status !== \"merged\" && !isInstallProbeFingerprint(e.fingerprint),\n );\n if (errors.length === 0) {\n console.log(chalk.hex(\"#4ade80\")(`✓ ${project.name}`) + chalk.dim(\" no open errors\"));\n continue;\n }\n\n console.log(\"\");\n console.log(chalk.hex(\"#a78bfa\").bold(`▾ ${project.name}`) + chalk.dim(` ${project.path}`));\n\n for (const err of errors) {\n switch (err.status) {\n case \"open\":\n totalOpen++;\n break;\n case \"in_progress\":\n totalInProgress++;\n break;\n case \"awaiting_review\":\n totalAwaiting++;\n break;\n case \"failed\":\n totalFailed++;\n break;\n }\n printError(err);\n }\n }\n\n printSummary(totalOpen, totalInProgress, totalAwaiting, totalFailed, projectIds.length);\n}\n\nfunction printError(err: ErrorRow): void {\n const stack = parseStack(err.stack);\n const topInApp = stack.find((f) => f.in_app) ?? stack[0];\n const loc = topInApp ? `${topInApp.file}:${topInApp.line}` : \"unknown location\";\n\n const statusBadge = badgeFor(err.status);\n const message = (err.message ?? \"\").trim().slice(0, 100);\n const recurrence =\n err.recurrence_count > 0 ? chalk.hex(\"#fbbf24\")(` ↻${err.recurrence_count}`) : \"\";\n\n console.log(\n \" \" +\n statusBadge +\n \" \" +\n chalk.bold(err.type ?? \"Error\") +\n chalk.dim(` ×${err.occurrences}`) +\n recurrence,\n );\n if (message) console.log(\" \" + chalk.hex(\"#cbd5e1\")(message));\n console.log(\" \" + chalk.dim(loc));\n if (err.branch) console.log(\" \" + chalk.dim(`branch: ${err.branch}`));\n}\n\nfunction badgeFor(status: string): string {\n const labels: Record<string, string> = {\n open: chalk.bgHex(\"#dc2626\").white(\" OPEN \"),\n in_progress: chalk.bgHex(\"#2563eb\").white(\" WORKING \"),\n awaiting_review: chalk.bgHex(\"#eab308\").black(\" REVIEW \"),\n failed: chalk.bgHex(\"#7f1d1d\").white(\" FAILED \"),\n };\n return labels[status] ?? chalk.bgHex(\"#374151\").white(` ${status.toUpperCase()} `);\n}\n\nfunction parseStack(raw: string | null): Array<{ file: string; line: number; in_app: boolean }> {\n if (!raw) return [];\n try {\n const parsed = JSON.parse(raw) as unknown;\n if (Array.isArray(parsed)) {\n return parsed.filter(\n (f): f is { file: string; line: number; in_app: boolean } =>\n typeof f === \"object\" && f !== null && \"file\" in f && \"line\" in f && \"in_app\" in f,\n );\n }\n } catch {\n // ignore\n }\n return [];\n}\n\nfunction printNoProjects(): void {\n console.log(\"\");\n console.log(chalk.dim(\"No projects registered yet.\"));\n console.log(\"\");\n console.log(\n \"Run \" +\n chalk.hex(\"#60a5fa\").bold(\"ggcoder pixel install\") +\n \" inside any project to wire it up.\",\n );\n console.log(\"\");\n}\n\nfunction printSummary(\n open: number,\n inProgress: number,\n awaiting: number,\n failed: number,\n projectCount: number,\n): void {\n const total = open + inProgress + awaiting + failed;\n console.log(\"\");\n if (total === 0) {\n console.log(chalk.hex(\"#4ade80\")(`All clean across ${plural(projectCount, \"project\")}.`));\n console.log(\"\");\n return;\n }\n const parts: string[] = [];\n if (open) parts.push(chalk.hex(\"#ef4444\")(`${open} open`));\n if (inProgress) parts.push(chalk.hex(\"#60a5fa\")(`${inProgress} working`));\n if (awaiting) parts.push(chalk.hex(\"#eab308\")(`${awaiting} awaiting review`));\n if (failed) parts.push(chalk.hex(\"#7f1d1d\")(`${failed} failed`));\n console.log(\n parts.join(chalk.dim(\" · \")) + chalk.dim(` across ${plural(projectCount, \"project\")}`),\n );\n console.log(\"\");\n}\n\nfunction plural(n: number, word: string): string {\n return `${n} ${word}${n === 1 ? \"\" : \"s\"}`;\n}\n\ninterface InstallCliOptions {\n ingestUrl?: string;\n name?: string;\n skipPackageInstall: boolean;\n}\n\nexport async function runPixelInstall(opts: InstallCliOptions): Promise<void> {\n const result = await install({\n ingestUrl: opts.ingestUrl,\n projectName: opts.name,\n skipPackageInstall: opts.skipPackageInstall,\n });\n\n console.log(\"\");\n console.log(\n chalk\n .hex(\"#4ade80\")\n .bold(result.reused ? \"Pixel re-wired (existing project).\" : \"Pixel installed.\"),\n );\n console.log(\n chalk.dim(` Project: `) + result.projectName + chalk.dim(` (${result.projectId})`),\n );\n console.log(chalk.dim(` Kind: `) + result.projectKind);\n console.log(chalk.dim(` Init file: `) + result.initFilePath);\n console.log(chalk.dim(` Env file: `) + result.envFilePath);\n console.log(chalk.dim(` Mapping: `) + result.projectsJsonPath);\n switch (result.entryWiring.kind) {\n case \"injected\":\n console.log(chalk.dim(` Wired: `) + result.entryWiring.entryPath);\n break;\n case \"already_present\":\n console.log(\n chalk.dim(` Entry: `) + result.entryWiring.entryPath + chalk.dim(\" (already wired)\"),\n );\n break;\n case \"no_entry_found\":\n console.log(chalk.hex(\"#fbbf24\")(` ⚠ Could not auto-detect your entry file.`));\n console.log(chalk.dim(` Add to the TOP of your entry: `));\n console.log(\" \" + chalk.hex(\"#60a5fa\")(`import \"./gg-pixel.init.mjs\";`));\n break;\n case \"skipped\":\n console.log(chalk.hex(\"#fbbf24\")(` ⚠ Entry wiring skipped: ${result.entryWiring.reason}`));\n break;\n }\n if (!result.packageInstalled && !opts.skipPackageInstall) {\n console.log(\n chalk.hex(\"#fbbf24\")(\n ` ⚠ Package install via ${result.packageManager} failed. Run it manually.`,\n ),\n );\n }\n if (result.secondaryInit) {\n console.log(chalk.dim(` Also wrote: `) + result.secondaryInit.path);\n console.log(chalk.dim(` `) + chalk.dim(result.secondaryInit.description));\n }\n for (const w of result.warnings) {\n console.log(chalk.hex(\"#fbbf24\")(` ⚠ ${w}`));\n }\n console.log(\"\");\n\n await runVerification(result, opts.ingestUrl);\n console.log(\"\");\n}\n\n/**\n * Fires a synthetic event end-to-end and waits for it to round-trip through\n * D1. Catches the silent-failure modes that wiring alone can't (stale env,\n * sandboxed renderer, missing dotenv, broken `node_modules`, etc.).\n */\nasync function runVerification(\n result: {\n projectId: string;\n projectKey: string;\n projectSecret: string;\n projectKind: string;\n projectRoot: string;\n },\n ingestUrl: string | undefined,\n): Promise<void> {\n if (!canVerify(result.projectKind)) {\n // Non-JS kinds (python/go/ruby) have their own SDKs; verification path\n // doesn't apply yet. Print a one-line note instead of leaving silence.\n console.log(chalk.dim(\" Verification skipped — not implemented for \") + result.projectKind);\n return;\n }\n console.log(chalk.dim(\" Verifying install…\"));\n const ingest = (ingestUrl ?? DEFAULT_INGEST_URL).replace(/\\/+$/, \"\");\n let outcome: VerifyOutcome;\n try {\n outcome = await verifyInstall({\n projectId: result.projectId,\n projectKey: result.projectKey,\n projectSecret: result.projectSecret,\n ingestUrl: ingest,\n projectRoot: result.projectRoot,\n // React Native's runtime isn't Node, so don't try to spawn a Node child\n // there — but still attempt direct ingest so we at least confirm the\n // server side of the wiring.\n skipChildProbe: result.projectKind === \"react-native\",\n });\n } catch (err) {\n console.log(\n chalk.hex(\"#ef4444\")(\n ` ✗ Verification crashed: ${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n return;\n }\n\n if (outcome.kind === \"ok\") {\n const via = outcome.method === \"child_process\" ? \"via spawned probe\" : \"via direct ingest\";\n console.log(\n chalk.hex(\"#4ade80\")(` ✓ Pixel verified end-to-end`) +\n chalk.dim(` (${outcome.latencyMs}ms ${via})`),\n );\n } else {\n console.log(chalk.hex(\"#ef4444\")(` ✗ Verification failed: ${outcome.reason}`));\n if (outcome.hint) {\n console.log(chalk.dim(` hint: ${outcome.hint}`));\n }\n console.log(\n chalk.dim(\n ` The install files are written, but no event arrived at the backend. Inspect the project's runtime to see why.`,\n ),\n );\n }\n}\n\nfunction canVerify(kind: string): boolean {\n // Python/Go/Ruby SDKs have their own probe paths; not wiring them through\n // the JS verifier yet. Everything else (browser, node, hybrid frameworks,\n // electron, even react-native) gets the round-trip check.\n return kind !== \"python\" && kind !== \"go\" && kind !== \"ruby\";\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../ggcoder/src/core/pixel.ts"],"sourcesContent":["import { readFileSync, existsSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport {\n DEFAULT_INGEST_URL,\n install,\n isInstallProbeFingerprint,\n verifyInstall,\n type VerifyOutcome,\n} from \"@kenkaiiii/gg-pixel\";\n\ninterface ProjectMapping {\n name: string;\n path: string;\n /** Bearer secret for /api/* calls. Missing on legacy entries — those projects\n * can't be queried until they're re-installed. */\n secret?: string;\n}\n\ninterface ErrorRow {\n id: string;\n fingerprint: string;\n status: string;\n type: string | null;\n message: string | null;\n stack: string | null;\n occurrences: number;\n recurrence_count: number;\n last_seen_at: number;\n branch: string | null;\n}\n\ninterface ListOptions {\n ingestUrl?: string;\n homeDir?: string;\n fetchFn?: typeof fetch;\n}\n\nexport interface PixelEntry {\n errorId: string;\n projectId: string;\n projectName: string;\n projectPath: string;\n status: string;\n type: string;\n message: string;\n occurrences: number;\n recurrenceCount: number;\n location: string;\n branch: string | null;\n lastSeenAt?: number;\n}\n\nexport interface PixelFetchResult {\n entries: PixelEntry[];\n unreachable: string[];\n /** Project names that exist in projects.json but are missing the bearer\n * secret — they need to be re-installed before they can be managed. */\n unmanaged: string[];\n hasProjects: boolean;\n}\n\nexport async function fetchPixelEntries(opts: ListOptions = {}): Promise<PixelFetchResult> {\n const home = opts.homeDir ?? homedir();\n const path = join(home, \".gg\", \"projects.json\");\n const fetchFn = opts.fetchFn ?? fetch;\n\n if (!existsSync(path)) return { entries: [], unreachable: [], unmanaged: [], hasProjects: false };\n\n let map: Record<string, ProjectMapping>;\n try {\n map = JSON.parse(readFileSync(path, \"utf8\")) as Record<string, ProjectMapping>;\n } catch {\n return { entries: [], unreachable: [], unmanaged: [], hasProjects: false };\n }\n\n const projectIds = Object.keys(map);\n if (projectIds.length === 0)\n return { entries: [], unreachable: [], unmanaged: [], hasProjects: false };\n\n const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\\/+$/, \"\");\n const entries: PixelEntry[] = [];\n const unreachable: string[] = [];\n const unmanaged: string[] = [];\n\n for (const id of projectIds) {\n const project = map[id];\n if (!project) continue;\n if (!project.secret) {\n unmanaged.push(project.name);\n continue;\n }\n try {\n const res = await fetchFn(`${ingestUrl}/api/projects/${id}/errors`, {\n headers: { authorization: `Bearer ${project.secret}` },\n });\n if (!res.ok) {\n unreachable.push(project.name);\n continue;\n }\n const body = (await res.json()) as { errors: ErrorRow[] };\n for (const err of body.errors) {\n if (err.status === \"merged\") continue;\n // Hide install-verification probes from the overlay even if the\n // probe-cleanup DELETE didn't land (network blip, etc.).\n if (isInstallProbeFingerprint(err.fingerprint)) continue;\n entries.push({\n errorId: err.id,\n projectId: id,\n projectName: project.name,\n projectPath: project.path,\n status: err.status,\n type: err.type ?? \"Error\",\n message: (err.message ?? \"\").trim(),\n occurrences: err.occurrences,\n recurrenceCount: err.recurrence_count,\n location: deriveLocation(err.stack, project.path),\n branch: err.branch,\n lastSeenAt: err.last_seen_at,\n });\n }\n } catch {\n unreachable.push(project.name);\n }\n }\n\n // Group by project name; within project, order by status priority then count.\n const statusOrder: Record<string, number> = {\n failed: 0,\n open: 1,\n in_progress: 2,\n awaiting_review: 3,\n };\n const grouped = new Map<string, PixelEntry[]>();\n for (const e of entries) {\n if (!grouped.has(e.projectName)) grouped.set(e.projectName, []);\n grouped.get(e.projectName)!.push(e);\n }\n const sorted: PixelEntry[] = [];\n const projectNames = [...grouped.keys()].sort();\n for (const name of projectNames) {\n const group = grouped.get(name)!;\n group.sort((a, b) => {\n const ord = (statusOrder[a.status] ?? 99) - (statusOrder[b.status] ?? 99);\n if (ord !== 0) return ord;\n if (a.recurrenceCount !== b.recurrenceCount) return b.recurrenceCount - a.recurrenceCount;\n return b.occurrences - a.occurrences;\n });\n sorted.push(...group);\n }\n\n return { entries: sorted, unreachable, unmanaged, hasProjects: true };\n}\n\nfunction deriveLocation(stack: string | null, projectPath?: string): string {\n if (!stack) return \"unknown\";\n try {\n const parsed = JSON.parse(stack) as unknown;\n if (Array.isArray(parsed)) {\n const top =\n parsed.find(\n (f): f is { file: string; line: number; in_app: boolean } =>\n typeof f === \"object\" &&\n f !== null &&\n \"file\" in f &&\n \"line\" in f &&\n \"in_app\" in f &&\n (f as { in_app: boolean }).in_app === true,\n ) ?? (parsed[0] as { file?: string; line?: number } | undefined);\n if (top && top.file) {\n const rel = relativizeFile(top.file, projectPath);\n return `${rel}:${top.line ?? \"?\"}`;\n }\n }\n } catch {\n // ignore\n }\n return \"unknown\";\n}\n\nfunction relativizeFile(file: string, projectPath?: string): string {\n let f = file;\n if (f.startsWith(\"file://\")) f = f.slice(\"file://\".length);\n if (projectPath && f.startsWith(projectPath + \"/\")) f = f.slice(projectPath.length + 1);\n return f;\n}\n\nexport async function listAllErrors(opts: ListOptions = {}): Promise<void> {\n const home = opts.homeDir ?? homedir();\n const path = join(home, \".gg\", \"projects.json\");\n const fetchFn = opts.fetchFn ?? fetch;\n\n if (!existsSync(path)) {\n printNoProjects();\n return;\n }\n\n let map: Record<string, ProjectMapping>;\n try {\n map = JSON.parse(readFileSync(path, \"utf8\")) as Record<string, ProjectMapping>;\n } catch {\n console.error(chalk.red(`✗ ${path} is not valid JSON.`));\n process.exitCode = 1;\n return;\n }\n\n const projectIds = Object.keys(map);\n if (projectIds.length === 0) {\n printNoProjects();\n return;\n }\n\n const ingestUrl = (opts.ingestUrl ?? DEFAULT_INGEST_URL).replace(/\\/+$/, \"\");\n\n let totalOpen = 0;\n let totalAwaiting = 0;\n let totalInProgress = 0;\n let totalFailed = 0;\n\n for (const id of projectIds) {\n const project = map[id];\n if (!project) continue;\n const url = `${ingestUrl}/api/projects/${id}/errors`;\n\n if (!project.secret) {\n console.log(\n chalk.hex(\"#fbbf24\")(\n `⚠ ${project.name}: missing bearer secret — re-run \\`ggcoder pixel install\\` to refresh management access`,\n ),\n );\n continue;\n }\n\n let body: { errors: ErrorRow[] };\n try {\n const res = await fetchFn(url, {\n headers: { authorization: `Bearer ${project.secret}` },\n });\n if (!res.ok) {\n console.log(\n chalk.red(`✗ ${project.name}: failed to fetch (${res.status})`) + chalk.dim(` ${url}`),\n );\n continue;\n }\n body = (await res.json()) as { errors: ErrorRow[] };\n } catch (err) {\n console.log(\n chalk.red(`✗ ${project.name}: ${err instanceof Error ? err.message : String(err)}`),\n );\n continue;\n }\n\n const errors = body.errors.filter(\n (e) => e.status !== \"merged\" && !isInstallProbeFingerprint(e.fingerprint),\n );\n if (errors.length === 0) {\n console.log(chalk.hex(\"#4ade80\")(`✓ ${project.name}`) + chalk.dim(\" no open errors\"));\n continue;\n }\n\n console.log(\"\");\n console.log(chalk.hex(\"#a78bfa\").bold(`▾ ${project.name}`) + chalk.dim(` ${project.path}`));\n\n for (const err of errors) {\n switch (err.status) {\n case \"open\":\n totalOpen++;\n break;\n case \"in_progress\":\n totalInProgress++;\n break;\n case \"awaiting_review\":\n totalAwaiting++;\n break;\n case \"failed\":\n totalFailed++;\n break;\n }\n printError(err);\n }\n }\n\n printSummary(totalOpen, totalInProgress, totalAwaiting, totalFailed, projectIds.length);\n}\n\nfunction printError(err: ErrorRow): void {\n const stack = parseStack(err.stack);\n const topInApp = stack.find((f) => f.in_app) ?? stack[0];\n const loc = topInApp ? `${topInApp.file}:${topInApp.line}` : \"unknown location\";\n\n const statusBadge = badgeFor(err.status);\n const message = (err.message ?? \"\").trim().slice(0, 100);\n const recurrence =\n err.recurrence_count > 0 ? chalk.hex(\"#fbbf24\")(` ↻${err.recurrence_count}`) : \"\";\n\n console.log(\n \" \" +\n statusBadge +\n \" \" +\n chalk.bold(err.type ?? \"Error\") +\n chalk.dim(` ×${err.occurrences}`) +\n recurrence,\n );\n if (message) console.log(\" \" + chalk.hex(\"#cbd5e1\")(message));\n console.log(\" \" + chalk.dim(loc));\n if (err.branch) console.log(\" \" + chalk.dim(`branch: ${err.branch}`));\n}\n\nfunction badgeFor(status: string): string {\n const labels: Record<string, string> = {\n open: chalk.bgHex(\"#dc2626\").white(\" OPEN \"),\n in_progress: chalk.bgHex(\"#2563eb\").white(\" WORKING \"),\n awaiting_review: chalk.bgHex(\"#eab308\").black(\" REVIEW \"),\n failed: chalk.bgHex(\"#7f1d1d\").white(\" FAILED \"),\n };\n return labels[status] ?? chalk.bgHex(\"#374151\").white(` ${status.toUpperCase()} `);\n}\n\nfunction parseStack(raw: string | null): Array<{ file: string; line: number; in_app: boolean }> {\n if (!raw) return [];\n try {\n const parsed = JSON.parse(raw) as unknown;\n if (Array.isArray(parsed)) {\n return parsed.filter(\n (f): f is { file: string; line: number; in_app: boolean } =>\n typeof f === \"object\" && f !== null && \"file\" in f && \"line\" in f && \"in_app\" in f,\n );\n }\n } catch {\n // ignore\n }\n return [];\n}\n\nfunction printNoProjects(): void {\n console.log(\"\");\n console.log(chalk.dim(\"No projects registered yet.\"));\n console.log(\"\");\n console.log(\n \"Run \" +\n chalk.hex(\"#60a5fa\").bold(\"ggcoder pixel install\") +\n \" inside any project to wire it up.\",\n );\n console.log(\"\");\n}\n\nfunction printSummary(\n open: number,\n inProgress: number,\n awaiting: number,\n failed: number,\n projectCount: number,\n): void {\n const total = open + inProgress + awaiting + failed;\n console.log(\"\");\n if (total === 0) {\n console.log(chalk.hex(\"#4ade80\")(`All clean across ${plural(projectCount, \"project\")}.`));\n console.log(\"\");\n return;\n }\n const parts: string[] = [];\n if (open) parts.push(chalk.hex(\"#ef4444\")(`${open} open`));\n if (inProgress) parts.push(chalk.hex(\"#60a5fa\")(`${inProgress} working`));\n if (awaiting) parts.push(chalk.hex(\"#eab308\")(`${awaiting} awaiting review`));\n if (failed) parts.push(chalk.hex(\"#7f1d1d\")(`${failed} failed`));\n console.log(\n parts.join(chalk.dim(\" · \")) + chalk.dim(` across ${plural(projectCount, \"project\")}`),\n );\n console.log(\"\");\n}\n\nfunction plural(n: number, word: string): string {\n return `${n} ${word}${n === 1 ? \"\" : \"s\"}`;\n}\n\ninterface InstallCliOptions {\n ingestUrl?: string;\n name?: string;\n skipPackageInstall: boolean;\n}\n\nexport async function runPixelInstall(opts: InstallCliOptions): Promise<void> {\n const result = await install({\n ingestUrl: opts.ingestUrl,\n projectName: opts.name,\n skipPackageInstall: opts.skipPackageInstall,\n });\n\n console.log(\"\");\n console.log(\n chalk\n .hex(\"#4ade80\")\n .bold(result.reused ? \"Pixel re-wired (existing project).\" : \"Pixel installed.\"),\n );\n console.log(\n chalk.dim(` Project: `) + result.projectName + chalk.dim(` (${result.projectId})`),\n );\n console.log(chalk.dim(` Kind: `) + result.projectKind);\n console.log(chalk.dim(` Init file: `) + result.initFilePath);\n console.log(chalk.dim(` Env file: `) + result.envFilePath);\n console.log(chalk.dim(` Mapping: `) + result.projectsJsonPath);\n switch (result.entryWiring.kind) {\n case \"injected\":\n console.log(chalk.dim(` Wired: `) + result.entryWiring.entryPath);\n break;\n case \"already_present\":\n console.log(\n chalk.dim(` Entry: `) + result.entryWiring.entryPath + chalk.dim(\" (already wired)\"),\n );\n break;\n case \"no_entry_found\":\n console.log(chalk.hex(\"#fbbf24\")(` ⚠ Could not auto-detect your entry file.`));\n console.log(chalk.dim(` Add to the TOP of your entry: `));\n console.log(\" \" + chalk.hex(\"#60a5fa\")(`import \"./gg-pixel.init.mjs\";`));\n break;\n case \"skipped\":\n console.log(chalk.hex(\"#fbbf24\")(` ⚠ Entry wiring skipped: ${result.entryWiring.reason}`));\n break;\n }\n if (!result.packageInstalled && !opts.skipPackageInstall) {\n console.log(\n chalk.hex(\"#fbbf24\")(\n ` ⚠ Package install via ${result.packageManager} failed. Run it manually.`,\n ),\n );\n }\n if (result.secondaryInit) {\n console.log(chalk.dim(` Also wrote: `) + result.secondaryInit.path);\n console.log(chalk.dim(` `) + chalk.dim(result.secondaryInit.description));\n }\n for (const w of result.warnings) {\n console.log(chalk.hex(\"#fbbf24\")(` ⚠ ${w}`));\n }\n console.log(\"\");\n\n await runVerification(result, opts.ingestUrl);\n console.log(\"\");\n}\n\n/**\n * Fires a synthetic event end-to-end and waits for it to round-trip through\n * D1. Catches the silent-failure modes that wiring alone can't (stale env,\n * sandboxed renderer, missing dotenv, broken `node_modules`, etc.).\n */\nasync function runVerification(\n result: {\n projectId: string;\n projectKey: string;\n projectSecret: string;\n projectKind: string;\n projectRoot: string;\n },\n ingestUrl: string | undefined,\n): Promise<void> {\n if (!canVerify(result.projectKind)) {\n // Non-JS kinds (python/go/ruby) have their own SDKs; verification path\n // doesn't apply yet. Print a one-line note instead of leaving silence.\n console.log(chalk.dim(\" Verification skipped — not implemented for \") + result.projectKind);\n return;\n }\n console.log(chalk.dim(\" Verifying install…\"));\n const ingest = (ingestUrl ?? DEFAULT_INGEST_URL).replace(/\\/+$/, \"\");\n let outcome: VerifyOutcome;\n try {\n outcome = await verifyInstall({\n projectId: result.projectId,\n projectKey: result.projectKey,\n projectSecret: result.projectSecret,\n ingestUrl: ingest,\n projectRoot: result.projectRoot,\n // React Native's runtime isn't Node, so don't try to spawn a Node child\n // there — but still attempt direct ingest so we at least confirm the\n // server side of the wiring.\n skipChildProbe: result.projectKind === \"react-native\",\n });\n } catch (err) {\n console.log(\n chalk.hex(\"#ef4444\")(\n ` ✗ Verification crashed: ${err instanceof Error ? err.message : String(err)}`,\n ),\n );\n return;\n }\n\n if (outcome.kind === \"ok\") {\n const via = outcome.method === \"child_process\" ? \"via spawned probe\" : \"via direct ingest\";\n console.log(\n chalk.hex(\"#4ade80\")(` ✓ Pixel verified end-to-end`) +\n chalk.dim(` (${outcome.latencyMs}ms ${via})`),\n );\n } else {\n console.log(chalk.hex(\"#ef4444\")(` ✗ Verification failed: ${outcome.reason}`));\n if (outcome.hint) {\n console.log(chalk.dim(` hint: ${outcome.hint}`));\n }\n console.log(\n chalk.dim(\n ` The install files are written, but no event arrived at the backend. Inspect the project's runtime to see why.`,\n ),\n );\n }\n}\n\nfunction canVerify(kind: string): boolean {\n // Python/Go/Ruby SDKs have their own probe paths; not wiring them through\n // the JS verifier yet. Everything else (browser, node, hybrid frameworks,\n // electron, even react-native) gets the round-trip check.\n return kind !== \"python\" && kind !== \"go\" && kind !== \"ruby\";\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,7 @@
1
+ import { createRequire as __createRequire } from "node:module"; const require = __createRequire(import.meta.url);
1
2
  import {
2
3
  init_esm_shims
3
- } from "./chunk-B2WQ5E5J.js";
4
+ } from "./chunk-YNWFCUMR.js";
4
5
 
5
6
  // ../../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js
6
7
  init_esm_shims();
@@ -2301,4 +2302,4 @@ export {
2301
2302
  isInstallProbeFingerprint,
2302
2303
  verifyInstall
2303
2304
  };
2304
- //# sourceMappingURL=chunk-PQAHDHVY.js.map
2305
+ //# sourceMappingURL=chunk-WJ4S4TOY.js.map