@kenkaiiii/ggcoder 5.23.3 → 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.
- package/dist/app-sidecar.js +32 -0
- package/dist/app-sidecar.js.map +1 -1
- package/dist/core/agent-session-add-dir.test.d.ts +2 -0
- package/dist/core/agent-session-add-dir.test.d.ts.map +1 -0
- package/dist/core/agent-session-add-dir.test.js +94 -0
- package/dist/core/agent-session-add-dir.test.js.map +1 -0
- package/dist/core/agent-session.d.ts +21 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +62 -4
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/network-guard.d.ts +47 -0
- package/dist/core/network-guard.d.ts.map +1 -0
- package/dist/core/network-guard.js +208 -0
- package/dist/core/network-guard.js.map +1 -0
- package/dist/core/network-guard.test.d.ts +2 -0
- package/dist/core/network-guard.test.d.ts.map +1 -0
- package/dist/core/network-guard.test.js +72 -0
- package/dist/core/network-guard.test.js.map +1 -0
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +55 -36
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/prompt-commands.test.js +49 -2
- package/dist/core/prompt-commands.test.js.map +1 -1
- package/dist/core/session-export.d.ts +98 -0
- package/dist/core/session-export.d.ts.map +1 -0
- package/dist/core/session-export.js +356 -0
- package/dist/core/session-export.js.map +1 -0
- package/dist/core/session-export.test.d.ts +2 -0
- package/dist/core/session-export.test.d.ts.map +1 -0
- package/dist/core/session-export.test.js +353 -0
- package/dist/core/session-export.test.js.map +1 -0
- package/dist/core/settings-manager.d.ts +5 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +10 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts +10 -0
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +16 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/slash-commands.test.d.ts +2 -0
- package/dist/core/slash-commands.test.d.ts.map +1 -0
- package/dist/core/slash-commands.test.js +48 -0
- package/dist/core/slash-commands.test.js.map +1 -0
- package/dist/core/workspace-guard.d.ts +2 -0
- package/dist/core/workspace-guard.d.ts.map +1 -1
- package/dist/core/workspace-guard.js +4 -1
- package/dist/core/workspace-guard.js.map +1 -1
- package/dist/core/workspace-guard.test.js +21 -0
- package/dist/core/workspace-guard.test.js.map +1 -1
- package/dist/system-prompt.d.ts +11 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +19 -4
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +9 -0
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/bash.d.ts +2 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +9 -1
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/bash.test.js +19 -0
- package/dist/tools/bash.test.js.map +1 -1
- package/dist/tools/grep.d.ts +3 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +132 -10
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/grep.test.js +53 -0
- package/dist/tools/grep.test.js.map +1 -1
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +2 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +17 -6
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-fetch.test.js +34 -0
- package/dist/tools/web-fetch.test.js.map +1 -1
- package/dist/tools/web-search.d.ts +2 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +21 -5
- package/dist/tools/web-search.js.map +1 -1
- package/package.json +4 -4
|
@@ -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, "&")
|
|
188
|
+
.replace(/</g, "<")
|
|
189
|
+
.replace(/>/g, ">")
|
|
190
|
+
.replace(/"/g, """);
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"session-export.test.d.ts","sourceRoot":"","sources":["../../src/core/session-export.test.ts"],"names":[],"mappings":""}
|