@kenkaiiii/ggcoder 5.23.2 → 5.24.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 (193) hide show
  1. package/dist/app-sidecar.js +32 -0
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/chat-agents/general.test.js +6 -3
  4. package/dist/chat-agents/general.test.js.map +1 -1
  5. package/dist/chat-agents/specialists.test.js +3 -2
  6. package/dist/chat-agents/specialists.test.js.map +1 -1
  7. package/dist/core/agent-session-add-dir.test.d.ts +2 -0
  8. package/dist/core/agent-session-add-dir.test.d.ts.map +1 -0
  9. package/dist/core/agent-session-add-dir.test.js +94 -0
  10. package/dist/core/agent-session-add-dir.test.js.map +1 -0
  11. package/dist/core/agent-session-compaction.test.js +4 -7
  12. package/dist/core/agent-session-compaction.test.js.map +1 -1
  13. package/dist/core/agent-session-marker-anchors.test.js +4 -7
  14. package/dist/core/agent-session-marker-anchors.test.js.map +1 -1
  15. package/dist/core/agent-session-memory-tail.test.js +4 -7
  16. package/dist/core/agent-session-memory-tail.test.js.map +1 -1
  17. package/dist/core/agent-session-queue.test.js +4 -7
  18. package/dist/core/agent-session-queue.test.js.map +1 -1
  19. package/dist/core/agent-session.d.ts +21 -0
  20. package/dist/core/agent-session.d.ts.map +1 -1
  21. package/dist/core/agent-session.js +62 -4
  22. package/dist/core/agent-session.js.map +1 -1
  23. package/dist/core/encode-cwd.d.ts +17 -0
  24. package/dist/core/encode-cwd.d.ts.map +1 -1
  25. package/dist/core/encode-cwd.js +20 -7
  26. package/dist/core/encode-cwd.js.map +1 -1
  27. package/dist/core/encode-cwd.test.js +20 -1
  28. package/dist/core/encode-cwd.test.js.map +1 -1
  29. package/dist/core/ideal-review.d.ts.map +1 -1
  30. package/dist/core/ideal-review.js +6 -1
  31. package/dist/core/ideal-review.js.map +1 -1
  32. package/dist/core/ideal-review.test.js +7 -2
  33. package/dist/core/ideal-review.test.js.map +1 -1
  34. package/dist/core/lsp/client.d.ts +50 -0
  35. package/dist/core/lsp/client.d.ts.map +1 -1
  36. package/dist/core/lsp/client.js +158 -13
  37. package/dist/core/lsp/client.js.map +1 -1
  38. package/dist/core/lsp/jsonrpc.d.ts +38 -1
  39. package/dist/core/lsp/jsonrpc.d.ts.map +1 -1
  40. package/dist/core/lsp/jsonrpc.js +13 -1
  41. package/dist/core/lsp/jsonrpc.js.map +1 -1
  42. package/dist/core/lsp/manager.d.ts.map +1 -1
  43. package/dist/core/lsp/manager.js +23 -2
  44. package/dist/core/lsp/manager.js.map +1 -1
  45. package/dist/core/lsp/manager.test.js +32 -1
  46. package/dist/core/lsp/manager.test.js.map +1 -1
  47. package/dist/core/lsp/test-support.d.ts +18 -0
  48. package/dist/core/lsp/test-support.d.ts.map +1 -0
  49. package/dist/core/lsp/test-support.js +27 -0
  50. package/dist/core/lsp/test-support.js.map +1 -0
  51. package/dist/core/lsp/uri.test.d.ts +2 -0
  52. package/dist/core/lsp/uri.test.d.ts.map +1 -0
  53. package/dist/core/lsp/uri.test.js +56 -0
  54. package/dist/core/lsp/uri.test.js.map +1 -0
  55. package/dist/core/lsp/windows.test.d.ts +2 -0
  56. package/dist/core/lsp/windows.test.d.ts.map +1 -0
  57. package/dist/core/lsp/windows.test.js +251 -0
  58. package/dist/core/lsp/windows.test.js.map +1 -0
  59. package/dist/core/mcp/resolve-stdio.d.ts +35 -0
  60. package/dist/core/mcp/resolve-stdio.d.ts.map +1 -1
  61. package/dist/core/mcp/resolve-stdio.js +80 -1
  62. package/dist/core/mcp/resolve-stdio.js.map +1 -1
  63. package/dist/core/mcp/resolve-stdio.test.js +99 -4
  64. package/dist/core/mcp/resolve-stdio.test.js.map +1 -1
  65. package/dist/core/network-guard.d.ts +47 -0
  66. package/dist/core/network-guard.d.ts.map +1 -0
  67. package/dist/core/network-guard.js +208 -0
  68. package/dist/core/network-guard.js.map +1 -0
  69. package/dist/core/network-guard.test.d.ts +2 -0
  70. package/dist/core/network-guard.test.d.ts.map +1 -0
  71. package/dist/core/network-guard.test.js +72 -0
  72. package/dist/core/network-guard.test.js.map +1 -0
  73. package/dist/core/persistent-shell.d.ts +3 -1
  74. package/dist/core/persistent-shell.d.ts.map +1 -1
  75. package/dist/core/persistent-shell.js +13 -3
  76. package/dist/core/persistent-shell.js.map +1 -1
  77. package/dist/core/process-manager-dev-server-repro.test.js +34 -12
  78. package/dist/core/process-manager-dev-server-repro.test.js.map +1 -1
  79. package/dist/core/process-manager.d.ts +1 -1
  80. package/dist/core/process-manager.d.ts.map +1 -1
  81. package/dist/core/process-manager.js +23 -13
  82. package/dist/core/process-manager.js.map +1 -1
  83. package/dist/core/project-discovery.d.ts +10 -0
  84. package/dist/core/project-discovery.d.ts.map +1 -1
  85. package/dist/core/project-discovery.js +42 -8
  86. package/dist/core/project-discovery.js.map +1 -1
  87. package/dist/core/project-discovery.test.js +102 -1
  88. package/dist/core/project-discovery.test.js.map +1 -1
  89. package/dist/core/prompt-commands.d.ts.map +1 -1
  90. package/dist/core/prompt-commands.js +55 -36
  91. package/dist/core/prompt-commands.js.map +1 -1
  92. package/dist/core/prompt-commands.test.js +49 -2
  93. package/dist/core/prompt-commands.test.js.map +1 -1
  94. package/dist/core/radio.test.js +4 -1
  95. package/dist/core/radio.test.js.map +1 -1
  96. package/dist/core/session-export.d.ts +98 -0
  97. package/dist/core/session-export.d.ts.map +1 -0
  98. package/dist/core/session-export.js +356 -0
  99. package/dist/core/session-export.js.map +1 -0
  100. package/dist/core/session-export.test.d.ts +2 -0
  101. package/dist/core/session-export.test.d.ts.map +1 -0
  102. package/dist/core/session-export.test.js +353 -0
  103. package/dist/core/session-export.test.js.map +1 -0
  104. package/dist/core/session-storage.d.ts.map +1 -1
  105. package/dist/core/session-storage.js +25 -1
  106. package/dist/core/session-storage.js.map +1 -1
  107. package/dist/core/session-storage.test.js +4 -1
  108. package/dist/core/session-storage.test.js.map +1 -1
  109. package/dist/core/settings-manager.d.ts +5 -0
  110. package/dist/core/settings-manager.d.ts.map +1 -1
  111. package/dist/core/settings-manager.js +10 -0
  112. package/dist/core/settings-manager.js.map +1 -1
  113. package/dist/core/skills-routing.test.js +3 -1
  114. package/dist/core/skills-routing.test.js.map +1 -1
  115. package/dist/core/slash-commands.d.ts +10 -0
  116. package/dist/core/slash-commands.d.ts.map +1 -1
  117. package/dist/core/slash-commands.js +16 -0
  118. package/dist/core/slash-commands.js.map +1 -1
  119. package/dist/core/slash-commands.test.d.ts +2 -0
  120. package/dist/core/slash-commands.test.d.ts.map +1 -0
  121. package/dist/core/slash-commands.test.js +48 -0
  122. package/dist/core/slash-commands.test.js.map +1 -0
  123. package/dist/core/speed-benchmark.test.js +9 -3
  124. package/dist/core/speed-benchmark.test.js.map +1 -1
  125. package/dist/core/subagent-store.test.js +14 -2
  126. package/dist/core/subagent-store.test.js.map +1 -1
  127. package/dist/core/workspace-guard.d.ts +2 -0
  128. package/dist/core/workspace-guard.d.ts.map +1 -1
  129. package/dist/core/workspace-guard.js +4 -1
  130. package/dist/core/workspace-guard.js.map +1 -1
  131. package/dist/core/workspace-guard.test.js +21 -0
  132. package/dist/core/workspace-guard.test.js.map +1 -1
  133. package/dist/system-prompt.d.ts +11 -1
  134. package/dist/system-prompt.d.ts.map +1 -1
  135. package/dist/system-prompt.js +19 -4
  136. package/dist/system-prompt.js.map +1 -1
  137. package/dist/system-prompt.test.js +9 -0
  138. package/dist/system-prompt.test.js.map +1 -1
  139. package/dist/test-support/fake-home.d.ts +20 -0
  140. package/dist/test-support/fake-home.d.ts.map +1 -0
  141. package/dist/test-support/fake-home.js +37 -0
  142. package/dist/test-support/fake-home.js.map +1 -0
  143. package/dist/tools/bash.d.ts +2 -1
  144. package/dist/tools/bash.d.ts.map +1 -1
  145. package/dist/tools/bash.js +16 -4
  146. package/dist/tools/bash.js.map +1 -1
  147. package/dist/tools/bash.test.js +122 -7
  148. package/dist/tools/bash.test.js.map +1 -1
  149. package/dist/tools/edit-robustness.test.js +3 -1
  150. package/dist/tools/edit-robustness.test.js.map +1 -1
  151. package/dist/tools/find.d.ts.map +1 -1
  152. package/dist/tools/find.js +4 -1
  153. package/dist/tools/find.js.map +1 -1
  154. package/dist/tools/grep.d.ts +3 -1
  155. package/dist/tools/grep.d.ts.map +1 -1
  156. package/dist/tools/grep.js +135 -11
  157. package/dist/tools/grep.js.map +1 -1
  158. package/dist/tools/grep.test.js +53 -0
  159. package/dist/tools/grep.test.js.map +1 -1
  160. package/dist/tools/index.d.ts +6 -0
  161. package/dist/tools/index.d.ts.map +1 -1
  162. package/dist/tools/index.js +3 -3
  163. package/dist/tools/index.js.map +1 -1
  164. package/dist/tools/overflow.test.js +4 -7
  165. package/dist/tools/overflow.test.js.map +1 -1
  166. package/dist/tools/path-utils.d.ts +15 -0
  167. package/dist/tools/path-utils.d.ts.map +1 -1
  168. package/dist/tools/path-utils.js +17 -0
  169. package/dist/tools/path-utils.js.map +1 -1
  170. package/dist/tools/path-utils.test.js +7 -2
  171. package/dist/tools/path-utils.test.js.map +1 -1
  172. package/dist/tools/search-code.d.ts.map +1 -1
  173. package/dist/tools/search-code.js +6 -4
  174. package/dist/tools/search-code.js.map +1 -1
  175. package/dist/tools/web-fetch.d.ts +2 -1
  176. package/dist/tools/web-fetch.d.ts.map +1 -1
  177. package/dist/tools/web-fetch.js +17 -6
  178. package/dist/tools/web-fetch.js.map +1 -1
  179. package/dist/tools/web-fetch.test.js +34 -0
  180. package/dist/tools/web-fetch.test.js.map +1 -1
  181. package/dist/tools/web-search.d.ts +2 -1
  182. package/dist/tools/web-search.d.ts.map +1 -1
  183. package/dist/tools/web-search.js +21 -5
  184. package/dist/tools/web-search.js.map +1 -1
  185. package/dist/utils/process.d.ts +26 -3
  186. package/dist/utils/process.d.ts.map +1 -1
  187. package/dist/utils/process.js +68 -10
  188. package/dist/utils/process.js.map +1 -1
  189. package/dist/utils/process.test.d.ts +2 -0
  190. package/dist/utils/process.test.d.ts.map +1 -0
  191. package/dist/utils/process.test.js +42 -0
  192. package/dist/utils/process.test.js.map +1 -0
  193. package/package.json +4 -4
@@ -93,7 +93,7 @@ describe("prompt commands", () => {
93
93
  expect(expand?.prompt).not.toContain("Create a Goal");
94
94
  expect(expand?.prompt).not.toContain("planning-only Goal tasks");
95
95
  });
96
- it("keeps /init focused on project-specific CLAUDE.md content", () => {
96
+ it("keeps /init focused on project-specific context", () => {
97
97
  const init = PROMPT_COMMANDS.find((command) => command.name === "init");
98
98
  expect(init).toBeDefined();
99
99
  expect(init?.prompt).toContain("project-specific context only");
@@ -105,12 +105,59 @@ describe("prompt commands", () => {
105
105
  expect(init?.prompt).toContain("Do not duplicate language style packs, generic verification rules");
106
106
  expect(init?.prompt).toContain("Do NOT embed generated symbol maps");
107
107
  expect(init?.prompt).toContain("auto-generated project inventories");
108
- expect(init?.prompt).toContain("CLAUDE.md must remain durable, agent-focused project context");
108
+ expect(init?.prompt).toContain("context file must remain durable, agent-focused project context");
109
109
  expect(init?.prompt).not.toContain("human-authored");
110
110
  expect(init?.prompt).not.toContain("one file per component");
111
111
  expect(init?.prompt).not.toContain("single responsibility");
112
112
  expect(init?.prompt).not.toContain("zero-tolerance code quality checks");
113
113
  expect(init?.prompt).not.toContain("run full quality suite after every edit");
114
114
  });
115
+ it("states each redundancy rule exactly once so /init reads as one filter", () => {
116
+ const init = PROMPT_COMMANDS.find((command) => command.name === "init");
117
+ const count = (needle) => init.prompt.split(needle).length - 1;
118
+ // The old prompt restated these across the preamble and 3 separate steps.
119
+ // Repetition-as-emphasis is what you write when a rule isn't structurally
120
+ // enforceable; the fence + budget now carry that load instead.
121
+ expect(count("Do NOT add generic agent behavior")).toBe(1);
122
+ expect(count("Do NOT embed generated symbol maps")).toBe(1);
123
+ expect(count("Never add guidance that requires running checks")).toBe(1);
124
+ });
125
+ it("makes /init regeneration replace a fenced block instead of appending", () => {
126
+ const init = PROMPT_COMMANDS.find((command) => command.name === "init");
127
+ // /init is re-run over a project's lifetime. Without a marker separating
128
+ // agent-generated from user-written content, "preserve custom sections"
129
+ // preserves everything and the file grows monotonically.
130
+ expect(init?.prompt).toContain("<!-- gg:init:start -->");
131
+ expect(init?.prompt).toContain("<!-- gg:init:end -->");
132
+ expect(init?.prompt).toContain("replace everything between the markers wholesale");
133
+ expect(init?.prompt).toContain("Text outside the fence is user-owned");
134
+ });
135
+ it("makes /init write to the context file the loader actually reads", () => {
136
+ const init = PROMPT_COMMANDS.find((command) => command.name === "init");
137
+ // CONTEXT_FILES takes one file per directory, AGENTS.md outranks CLAUDE.md.
138
+ // Writing a fresh CLAUDE.md next to an existing AGENTS.md creates a file
139
+ // that is silently never loaded.
140
+ expect(init?.prompt).toContain("one per directory, first match wins");
141
+ expect(init?.prompt).toContain("AGENTS.override.md`");
142
+ expect(init?.prompt).toContain("already has an `AGENTS.md`, update that file");
143
+ });
144
+ it("budgets /init output in bytes with a stated token cost, not a line cap", () => {
145
+ const init = PROMPT_COMMANDS.find((command) => command.name === "init");
146
+ // A line cap is unverifiable by the model and doesn't constrain tables or
147
+ // code fences; the real constraint is PROJECT_CONTEXT_MAX_BYTES (32KB).
148
+ expect(init?.prompt).toContain("cached prefix of every request");
149
+ expect(init?.prompt).toContain("Target 6KB or less");
150
+ expect(init?.prompt).toContain("`wc -c`");
151
+ expect(init?.prompt).not.toContain("under 100 lines");
152
+ });
153
+ it("hunts non-derivable knowledge instead of mapping directories", () => {
154
+ const init = PROMPT_COMMANDS.find((command) => command.name === "init");
155
+ // Gotchas/invariants are the only content an agent can't recover by
156
+ // reading the code, so they replace the directory-structure sweep whose
157
+ // output the prompt then forbids embedding anyway.
158
+ expect(init?.prompt).toContain("Gotchas & Invariants Agent");
159
+ expect(init?.prompt).toContain("would a competent agent get this wrong without being told?");
160
+ expect(init?.prompt).not.toContain("Directory Structure Agent");
161
+ });
115
162
  });
116
163
  //# sourceMappingURL=prompt-commands.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-commands.test.js","sourceRoot":"","sources":["../../src/core/prompt-commands.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-commands.test.js","sourceRoot":"","sources":["../../src/core/prompt-commands.test.ts"],"names":[],"mappings":"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"}
@@ -76,7 +76,10 @@ describe("radio", () => {
76
76
  mocks.spawn.mockClear();
77
77
  expect(setRadioVolume(42)).toEqual({ ok: true });
78
78
  expect(mocks.spawn).not.toHaveBeenCalled();
79
- expect(mocks.createConnection).toHaveBeenCalledWith(expect.stringMatching(/gg-radio-.+\.sock$/));
79
+ // mpv's IPC endpoint is a Unix socket on POSIX but a NAMED PIPE on Windows
80
+ // (`\\.\pipe\gg-radio-…`), which radio.ts already builds correctly — only
81
+ // this assertion assumed the POSIX spelling.
82
+ expect(mocks.createConnection).toHaveBeenCalledWith(expect.stringMatching(process.platform === "win32" ? /^\\\\\.\\pipe\\gg-radio-/ : /gg-radio-.+\.sock$/));
80
83
  expect(mocks.socket.end).toHaveBeenCalledWith(`${JSON.stringify({ command: ["set_property", "volume", 42] })}\n`);
81
84
  });
82
85
  it.runIf(process.platform === "darwin")("changes native macOS volume without restarting or queueing audio", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"radio.test.js","sourceRoot":"","sources":["../../src/core/radio.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radio.test.js","sourceRoot":"","sources":["../../src/core/radio.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { Message } from "@kenkaiiii/gg-ai";
2
+ /**
3
+ * Markdown transcript export.
4
+ *
5
+ * Renders a session's persisted messages into a single self-contained `.md`
6
+ * file a human can read, paste into a PR, or hand to a teammate. Deliberately
7
+ * NOT built on the webview's `Item[]`: the app keeps tool activity in the
8
+ * pinned LiveToolPanel and never in the transcript, so serializing from there
9
+ * would export a chat with the actual work missing.
10
+ *
11
+ * Bubble text goes through the SAME `restoreUserRow` / `restoreAssistantTexts`
12
+ * helpers the `/history` resume path uses, so what lands in the file matches
13
+ * what the user saw on screen (steering wrappers, attachment notes and
14
+ * autopilot preambles stripped) rather than the raw provider payload.
15
+ */
16
+ /** Hard cap on a single tool result's rendered text. Sessions already cap
17
+ * persisted tool text at 40k chars; an export is for reading, so it gets a
18
+ * much tighter budget — enough to see what happened, not a data dump. */
19
+ export declare const MAX_TOOL_RESULT_CHARS = 1500;
20
+ /** Hard cap on a single tool call's rendered arguments. */
21
+ export declare const MAX_TOOL_ARGS_CHARS = 800;
22
+ export interface SessionExportMeta {
23
+ /** Workspace mode this session ran in — picks the filename + title wording. */
24
+ mode: "chat" | "code";
25
+ cwd: string;
26
+ provider: string;
27
+ model: string;
28
+ /** Session id (a short prefix is shown in the header). */
29
+ sessionId?: string;
30
+ /** Export timestamp. Defaults to now. */
31
+ date?: Date;
32
+ }
33
+ /**
34
+ * How much of the agent's tool work to render.
35
+ *
36
+ * - `summary` (default) — one dim line per burst of tool calls, naming what ran
37
+ * (`read src/a.ts`, `bash pnpm build`). Keeps the narrative of what the agent
38
+ * did without the payloads. A real 1,346-message session is 708KB at `full`
39
+ * and 71KB here — the same story, minus the 90% no human was going to read.
40
+ * - `none` — pure conversation, nothing but the two voices.
41
+ * - `full` — collapsed `<details>` with arguments and (truncated) results. For
42
+ * debugging and bug reports, not for sharing.
43
+ */
44
+ export type ToolDetail = "none" | "summary" | "full";
45
+ export interface SessionExportOptions {
46
+ /** How much tool work to render. Default `summary`. */
47
+ toolDetail?: ToolDetail;
48
+ /** Render the model's reasoning blocks. Default false — thinking is scratch
49
+ * work, and a shared transcript is better without it. */
50
+ includeThinking?: boolean;
51
+ }
52
+ /** `2026-07-26-1402` — local time, sortable, and unique enough that two
53
+ * exports in the same day don't silently collide in the save dialog. */
54
+ export declare function exportTimestamp(date: Date): string;
55
+ /**
56
+ * Default filename offered in the native save dialog, e.g.
57
+ * `your-chat-2026-07-26-1402.md`. Coding sessions say `session` instead of
58
+ * `chat` so a folder of exports stays self-describing.
59
+ */
60
+ export declare function defaultExportFilename(mode: "chat" | "code", date?: Date): string;
61
+ /** One-line summary of a tool call for the `<details>` summary row: the tool
62
+ * name plus its most identifying argument (path, command, pattern, …). */
63
+ export declare function toolSummary(name: string, args: Record<string, unknown>): string;
64
+ /**
65
+ * Render a tool call's arguments, or null when there's nothing worth showing.
66
+ *
67
+ * A lone string argument (the overwhelmingly common shape — `bash`'s command, a
68
+ * `web_fetch` url) is rendered raw in a fence: `JSON.stringify` would turn a
69
+ * shell one-liner into unreadable `\"` / `\n` soup. It's dropped entirely when
70
+ * the summary row already showed that exact value in full, so short calls don't
71
+ * say the same thing twice. Everything else falls back to pretty JSON.
72
+ */
73
+ export declare function renderToolArgs(args: Record<string, unknown>): string | null;
74
+ /**
75
+ * One dim line standing in for a burst of tool calls, e.g.
76
+ * `_🔧 read src/a.ts · bash pnpm build · edit App.tsx · +4 more_`.
77
+ *
78
+ * Entries are deduped so an agent that reads the same file three times says it
79
+ * once, and capped so a 40-tool burst doesn't become a wall. Failures are still
80
+ * called out — a reader skimming for what went wrong shouldn't have to re-export
81
+ * at `full` to discover that something did.
82
+ */
83
+ export declare function renderToolSummaryLine(calls: readonly {
84
+ name: string;
85
+ args: Record<string, unknown>;
86
+ failed: boolean;
87
+ }[]): string | null;
88
+ /**
89
+ * Render a session's messages as Markdown.
90
+ *
91
+ * System messages are always dropped (the system prompt is ours, not the
92
+ * user's, and shipping it in a shared file leaks internals). Compaction
93
+ * summaries and self-correction hook prompts are machine-facing injections —
94
+ * they render as a quiet italic marker instead of a user bubble, exactly like
95
+ * the app shows them.
96
+ */
97
+ export declare function sessionToMarkdown(meta: SessionExportMeta, messages: readonly Message[], options?: SessionExportOptions): string;
98
+ //# sourceMappingURL=session-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-export.d.ts","sourceRoot":"","sources":["../../src/core/session-export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAGnE;;;;;;;;;;;;;GAaG;AAEH;;0EAE0E;AAC1E,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;8DAC0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD;yEACyE;AACzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKlD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,OAAa,GAAG,MAAM,CAGtF;AAsDD;2EAC2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAO/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAkB3E;AAMD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,EAAE,GACjF,MAAM,GAAG,IAAI,CAkBf;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAwJR"}
@@ -0,0 +1,356 @@
1
+ import { restoreUserRow, restoreAssistantTexts } from "./session-history.js";
2
+ /**
3
+ * Markdown transcript export.
4
+ *
5
+ * Renders a session's persisted messages into a single self-contained `.md`
6
+ * file a human can read, paste into a PR, or hand to a teammate. Deliberately
7
+ * NOT built on the webview's `Item[]`: the app keeps tool activity in the
8
+ * pinned LiveToolPanel and never in the transcript, so serializing from there
9
+ * would export a chat with the actual work missing.
10
+ *
11
+ * Bubble text goes through the SAME `restoreUserRow` / `restoreAssistantTexts`
12
+ * helpers the `/history` resume path uses, so what lands in the file matches
13
+ * what the user saw on screen (steering wrappers, attachment notes and
14
+ * autopilot preambles stripped) rather than the raw provider payload.
15
+ */
16
+ /** Hard cap on a single tool result's rendered text. Sessions already cap
17
+ * persisted tool text at 40k chars; an export is for reading, so it gets a
18
+ * much tighter budget — enough to see what happened, not a data dump. */
19
+ export const MAX_TOOL_RESULT_CHARS = 1500;
20
+ /** Hard cap on a single tool call's rendered arguments. */
21
+ export const MAX_TOOL_ARGS_CHARS = 800;
22
+ /** Distinct entries named in one summary line before it says “+N more”. Sized
23
+ * for a coalesced burst (a whole run of tool work between two paragraphs), not
24
+ * a single message — too low and every line degenerates into “+37 more”. */
25
+ const MAX_SUMMARY_TOOLS = 8;
26
+ // ── Filename ───────────────────────────────────────────────
27
+ function pad(n) {
28
+ return String(n).padStart(2, "0");
29
+ }
30
+ /** `2026-07-26-1402` — local time, sortable, and unique enough that two
31
+ * exports in the same day don't silently collide in the save dialog. */
32
+ export function exportTimestamp(date) {
33
+ return (`${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}` +
34
+ `-${pad(date.getHours())}${pad(date.getMinutes())}`);
35
+ }
36
+ /**
37
+ * Default filename offered in the native save dialog, e.g.
38
+ * `your-chat-2026-07-26-1402.md`. Coding sessions say `session` instead of
39
+ * `chat` so a folder of exports stays self-describing.
40
+ */
41
+ export function defaultExportFilename(mode, date = new Date()) {
42
+ const kind = mode === "chat" ? "chat" : "session";
43
+ return `your-${kind}-${exportTimestamp(date)}.md`;
44
+ }
45
+ // ── Rendering helpers ──────────────────────────────────────
46
+ function truncate(text, max) {
47
+ if (text.length <= max)
48
+ return text;
49
+ const omitted = text.length - max;
50
+ return `${text.slice(0, max)}\n… ${omitted.toLocaleString()} more characters truncated`;
51
+ }
52
+ /** Fence a block with enough backticks that any fences inside it survive. */
53
+ function fence(body, lang = "") {
54
+ let ticks = 3;
55
+ for (const run of body.match(/`{3,}/g) ?? [])
56
+ ticks = Math.max(ticks, run.length + 1);
57
+ const bar = "`".repeat(ticks);
58
+ return `${bar}${lang}\n${body}\n${bar}`;
59
+ }
60
+ /** Flatten a tool result's content (string or block array) to display text.
61
+ * Image/video blocks become a one-line placeholder — inlining base64 would
62
+ * turn a screenshot-heavy session into an unopenable multi-megabyte file. */
63
+ function toolResultText(content) {
64
+ if (typeof content === "string")
65
+ return content;
66
+ const parts = [];
67
+ for (const block of content) {
68
+ if (block.type === "text")
69
+ parts.push(block.text);
70
+ else if (block.type === "image")
71
+ parts.push(`[image: ${block.mediaType}]`);
72
+ else if (block.type === "video")
73
+ parts.push(`[video: ${block.mediaType}]`);
74
+ }
75
+ return parts.join("\n");
76
+ }
77
+ /** Longest argument value the `<summary>` row shows before clipping. */
78
+ const SUMMARY_ARG_CHARS = 90;
79
+ /** Argument keys the summary row will show, most identifying first. */
80
+ const SUMMARY_ARG_KEYS = [
81
+ "file_path",
82
+ "path",
83
+ "command",
84
+ "pattern",
85
+ "query",
86
+ "url",
87
+ "task",
88
+ ];
89
+ /** The argument key `toolSummary` picked for this call, if any. */
90
+ function summaryKey(args) {
91
+ return SUMMARY_ARG_KEYS.find((key) => {
92
+ const v = args[key];
93
+ return typeof v === "string" && v.trim().length > 0;
94
+ });
95
+ }
96
+ /** One-line summary of a tool call for the `<details>` summary row: the tool
97
+ * name plus its most identifying argument (path, command, pattern, …). */
98
+ export function toolSummary(name, args) {
99
+ const key = summaryKey(args);
100
+ const primary = key ? String(args[key]) : "";
101
+ const oneLine = primary.replace(/\s+/g, " ").trim();
102
+ const clipped = oneLine.length > SUMMARY_ARG_CHARS ? `${oneLine.slice(0, SUMMARY_ARG_CHARS - 1)}…` : oneLine;
103
+ return clipped ? `${name} · ${clipped}` : name;
104
+ }
105
+ /**
106
+ * Render a tool call's arguments, or null when there's nothing worth showing.
107
+ *
108
+ * A lone string argument (the overwhelmingly common shape — `bash`'s command, a
109
+ * `web_fetch` url) is rendered raw in a fence: `JSON.stringify` would turn a
110
+ * shell one-liner into unreadable `\"` / `\n` soup. It's dropped entirely when
111
+ * the summary row already showed that exact value in full, so short calls don't
112
+ * say the same thing twice. Everything else falls back to pretty JSON.
113
+ */
114
+ export function renderToolArgs(args) {
115
+ const entries = Object.entries(args);
116
+ const only = entries.length === 1 ? entries[0] : undefined;
117
+ if (only && typeof only[1] === "string") {
118
+ const [key, raw] = only;
119
+ const value = raw.trim();
120
+ if (!value)
121
+ return null;
122
+ // Redundant only when the summary actually rendered THIS key and didn't
123
+ // clip it — an unlisted key (e.g. subagent's `agent`) never reached the
124
+ // summary, so its value still has to be shown here.
125
+ const shownWhole = key === summaryKey(args) && value.replace(/\s+/g, " ").length <= SUMMARY_ARG_CHARS;
126
+ if (shownWhole)
127
+ return null;
128
+ return fence(truncate(value, MAX_TOOL_ARGS_CHARS), key === "command" ? "sh" : "");
129
+ }
130
+ const json = JSON.stringify(args, null, 2);
131
+ if (!json || json === "{}")
132
+ return null;
133
+ return fence(truncate(json, MAX_TOOL_ARGS_CHARS), "json");
134
+ }
135
+ /** Longest argument value a summary line shows per tool — tighter than the
136
+ * `<details>` row, since several of these share one line. */
137
+ const SUMMARY_LINE_ARG_CHARS = 44;
138
+ /**
139
+ * One dim line standing in for a burst of tool calls, e.g.
140
+ * `_🔧 read src/a.ts · bash pnpm build · edit App.tsx · +4 more_`.
141
+ *
142
+ * Entries are deduped so an agent that reads the same file three times says it
143
+ * once, and capped so a 40-tool burst doesn't become a wall. Failures are still
144
+ * called out — a reader skimming for what went wrong shouldn't have to re-export
145
+ * at `full` to discover that something did.
146
+ */
147
+ export function renderToolSummaryLine(calls) {
148
+ if (calls.length === 0)
149
+ return null;
150
+ const seen = [];
151
+ for (const call of calls) {
152
+ const key = summaryKey(call.args);
153
+ const arg = key ? String(call.args[key]).replace(/\s+/g, " ").trim() : "";
154
+ const clipped = arg.length > SUMMARY_LINE_ARG_CHARS ? `${arg.slice(0, SUMMARY_LINE_ARG_CHARS - 1)}…` : arg;
155
+ const label = clipped ? `${call.name} ${clipped}` : call.name;
156
+ if (!seen.includes(label))
157
+ seen.push(label);
158
+ }
159
+ const shown = seen.slice(0, MAX_SUMMARY_TOOLS);
160
+ const hidden = seen.length - shown.length;
161
+ const parts = [...shown];
162
+ if (hidden > 0)
163
+ parts.push(`+${hidden} more`);
164
+ const failures = calls.filter((c) => c.failed).length;
165
+ const suffix = failures > 0 ? ` — ${failures} failed` : "";
166
+ return `_🔧 ${parts.join(" · ")}${suffix}_`;
167
+ }
168
+ function renderToolBlock(name, args, result) {
169
+ const lines = [];
170
+ const flag = result?.isError ? " — failed" : "";
171
+ lines.push(`<details>`);
172
+ lines.push(`<summary>🔧 ${escapeHtml(toolSummary(name, args))}${flag}</summary>`);
173
+ lines.push("");
174
+ const renderedArgs = renderToolArgs(args);
175
+ if (renderedArgs)
176
+ lines.push(renderedArgs);
177
+ if (result && result.text.trim()) {
178
+ lines.push("");
179
+ lines.push(fence(truncate(result.text.trim(), MAX_TOOL_RESULT_CHARS)));
180
+ }
181
+ lines.push("");
182
+ lines.push(`</details>`);
183
+ return lines.join("\n");
184
+ }
185
+ function escapeHtml(text) {
186
+ return text
187
+ .replace(/&/g, "&amp;")
188
+ .replace(/</g, "&lt;")
189
+ .replace(/>/g, "&gt;")
190
+ .replace(/"/g, "&quot;");
191
+ }
192
+ // ── Main serializer ────────────────────────────────────────
193
+ /**
194
+ * Render a session's messages as Markdown.
195
+ *
196
+ * System messages are always dropped (the system prompt is ours, not the
197
+ * user's, and shipping it in a shared file leaks internals). Compaction
198
+ * summaries and self-correction hook prompts are machine-facing injections —
199
+ * they render as a quiet italic marker instead of a user bubble, exactly like
200
+ * the app shows them.
201
+ */
202
+ export function sessionToMarkdown(meta, messages, options = {}) {
203
+ const { toolDetail = "summary", includeThinking = false } = options;
204
+ const date = meta.date ?? new Date();
205
+ // Pair tool calls with their results up front — the result lives in a later
206
+ // `tool` message, but it belongs with the call that produced it (inside its
207
+ // `<details>` block at `full`, or as the failure count at `summary`).
208
+ const resultsByCallId = new Map();
209
+ for (const msg of messages) {
210
+ if (msg.role !== "tool")
211
+ continue;
212
+ for (const tr of msg.content) {
213
+ resultsByCallId.set(tr.toolCallId, {
214
+ text: toolResultText(tr.content),
215
+ isError: tr.isError ?? false,
216
+ });
217
+ }
218
+ }
219
+ const out = [];
220
+ const title = meta.mode === "chat" ? "Chat transcript" : "Coding session";
221
+ out.push(`# ${title}`);
222
+ out.push("");
223
+ const metaLines = [
224
+ `- **Date:** ${date.toLocaleString()}`,
225
+ `- **Model:** ${meta.model} (${meta.provider})`,
226
+ `- **Project:** \`${meta.cwd}\``,
227
+ ];
228
+ if (meta.sessionId)
229
+ metaLines.push(`- **Session:** \`${meta.sessionId.slice(0, 8)}\``);
230
+ out.push(metaLines.join("\n"));
231
+ out.push("");
232
+ out.push("---");
233
+ // Anything the reader would consider content: a bubble, a reply, or a tool
234
+ // call. Only a truly empty session gets the placeholder line.
235
+ let rows = 0;
236
+ // At `summary`, tool calls accumulate across consecutive assistant messages
237
+ // and flush as ONE line when the narrative resumes (prose, a user turn, or
238
+ // the end). A tool-using agent emits one assistant message per call, so
239
+ // per-message lines would stack twenty identical-looking markers between two
240
+ // paragraphs — which is the very noise this mode exists to remove. Coalesced,
241
+ // that run reads as a single “then it went and did these things” beat.
242
+ let pending = [];
243
+ const flushPending = () => {
244
+ if (pending.length === 0)
245
+ return;
246
+ const line = renderToolSummaryLine(pending);
247
+ pending = [];
248
+ if (!line)
249
+ return;
250
+ rows++;
251
+ out.push("");
252
+ out.push(line);
253
+ };
254
+ for (const msg of messages) {
255
+ if (msg.role === "system" || msg.role === "tool")
256
+ continue;
257
+ if (msg.role === "user") {
258
+ const restored = restoreUserRow(msg.content);
259
+ const text = restored.text.trim();
260
+ const isHook = HOOK_PREFIXES.some((p) => text.startsWith(p));
261
+ const isCompaction = text.startsWith("[Previous conversation summary]");
262
+ flushPending();
263
+ if (isHook) {
264
+ out.push("");
265
+ out.push(`> _(agent self-correction check)_`);
266
+ continue;
267
+ }
268
+ if (isCompaction) {
269
+ out.push("");
270
+ out.push(`> _(conversation compacted here)_`);
271
+ continue;
272
+ }
273
+ if (!text && restored.images.length === 0)
274
+ continue;
275
+ rows++;
276
+ out.push("");
277
+ out.push("## 🧑‍💻 You");
278
+ out.push("");
279
+ if (text)
280
+ out.push(text);
281
+ if (restored.images.length > 0) {
282
+ out.push("");
283
+ out.push(`_${restored.images.length} image${restored.images.length === 1 ? "" : "s"} attached_`);
284
+ }
285
+ continue;
286
+ }
287
+ // Assistant: reasoning (optional), then one section per text block, then
288
+ // any tool calls it made.
289
+ if (includeThinking && typeof msg.content !== "string") {
290
+ const thinking = msg.content
291
+ .filter((c) => c.type === "thinking")
292
+ .map((c) => (c.type === "thinking" ? c.text : ""))
293
+ .join("\n")
294
+ .trim();
295
+ if (thinking) {
296
+ flushPending();
297
+ out.push("");
298
+ out.push("<details>");
299
+ out.push("<summary>💭 Thinking</summary>");
300
+ out.push("");
301
+ out.push(thinking);
302
+ out.push("");
303
+ out.push("</details>");
304
+ }
305
+ }
306
+ for (const blockText of restoreAssistantTexts(msg.content)) {
307
+ if (!blockText.trim())
308
+ continue;
309
+ flushPending();
310
+ rows++;
311
+ out.push("");
312
+ out.push("## ✨ GG Coder");
313
+ out.push("");
314
+ out.push(blockText.trim());
315
+ }
316
+ if (toolDetail !== "none" && typeof msg.content !== "string") {
317
+ const calls = msg.content.flatMap((block) => block.type === "tool_call"
318
+ ? [{ id: block.id, name: block.name, args: block.args ?? {} }]
319
+ : []);
320
+ if (toolDetail === "full") {
321
+ for (const call of calls) {
322
+ rows++;
323
+ out.push("");
324
+ out.push(renderToolBlock(call.name, call.args, resultsByCallId.get(call.id)));
325
+ }
326
+ }
327
+ else {
328
+ for (const call of calls) {
329
+ pending.push({
330
+ name: call.name,
331
+ args: call.args,
332
+ failed: resultsByCallId.get(call.id)?.isError ?? false,
333
+ });
334
+ }
335
+ }
336
+ }
337
+ }
338
+ flushPending();
339
+ if (rows === 0) {
340
+ out.push("");
341
+ out.push("_This session has no messages yet._");
342
+ }
343
+ out.push("");
344
+ return `${out
345
+ .join("\n")
346
+ .replace(/\n{3,}/g, "\n\n")
347
+ .trim()}\n`;
348
+ }
349
+ /** Prefixes of the agent's self-correction hook prompts (mirrors the sidecar's
350
+ * `detectHookKind`) — machine-facing injections, never user bubbles. */
351
+ const HOOK_PREFIXES = [
352
+ "Ideal? Review the actual work",
353
+ "Stuck? You've repeated essentially",
354
+ "Re-ground. The conversation was just compacted",
355
+ ];
356
+ //# sourceMappingURL=session-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-export.js","sourceRoot":"","sources":["../../src/core/session-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session-export.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-export.test.d.ts","sourceRoot":"","sources":["../../src/core/session-export.test.ts"],"names":[],"mappings":""}