@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.
Files changed (82) hide show
  1. package/dist/app-sidecar.js +32 -0
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/core/agent-session-add-dir.test.d.ts +2 -0
  4. package/dist/core/agent-session-add-dir.test.d.ts.map +1 -0
  5. package/dist/core/agent-session-add-dir.test.js +94 -0
  6. package/dist/core/agent-session-add-dir.test.js.map +1 -0
  7. package/dist/core/agent-session.d.ts +21 -0
  8. package/dist/core/agent-session.d.ts.map +1 -1
  9. package/dist/core/agent-session.js +62 -4
  10. package/dist/core/agent-session.js.map +1 -1
  11. package/dist/core/network-guard.d.ts +47 -0
  12. package/dist/core/network-guard.d.ts.map +1 -0
  13. package/dist/core/network-guard.js +208 -0
  14. package/dist/core/network-guard.js.map +1 -0
  15. package/dist/core/network-guard.test.d.ts +2 -0
  16. package/dist/core/network-guard.test.d.ts.map +1 -0
  17. package/dist/core/network-guard.test.js +72 -0
  18. package/dist/core/network-guard.test.js.map +1 -0
  19. package/dist/core/prompt-commands.d.ts.map +1 -1
  20. package/dist/core/prompt-commands.js +55 -36
  21. package/dist/core/prompt-commands.js.map +1 -1
  22. package/dist/core/prompt-commands.test.js +49 -2
  23. package/dist/core/prompt-commands.test.js.map +1 -1
  24. package/dist/core/session-export.d.ts +98 -0
  25. package/dist/core/session-export.d.ts.map +1 -0
  26. package/dist/core/session-export.js +356 -0
  27. package/dist/core/session-export.js.map +1 -0
  28. package/dist/core/session-export.test.d.ts +2 -0
  29. package/dist/core/session-export.test.d.ts.map +1 -0
  30. package/dist/core/session-export.test.js +353 -0
  31. package/dist/core/session-export.test.js.map +1 -0
  32. package/dist/core/settings-manager.d.ts +5 -0
  33. package/dist/core/settings-manager.d.ts.map +1 -1
  34. package/dist/core/settings-manager.js +10 -0
  35. package/dist/core/settings-manager.js.map +1 -1
  36. package/dist/core/slash-commands.d.ts +10 -0
  37. package/dist/core/slash-commands.d.ts.map +1 -1
  38. package/dist/core/slash-commands.js +16 -0
  39. package/dist/core/slash-commands.js.map +1 -1
  40. package/dist/core/slash-commands.test.d.ts +2 -0
  41. package/dist/core/slash-commands.test.d.ts.map +1 -0
  42. package/dist/core/slash-commands.test.js +48 -0
  43. package/dist/core/slash-commands.test.js.map +1 -0
  44. package/dist/core/workspace-guard.d.ts +2 -0
  45. package/dist/core/workspace-guard.d.ts.map +1 -1
  46. package/dist/core/workspace-guard.js +4 -1
  47. package/dist/core/workspace-guard.js.map +1 -1
  48. package/dist/core/workspace-guard.test.js +21 -0
  49. package/dist/core/workspace-guard.test.js.map +1 -1
  50. package/dist/system-prompt.d.ts +11 -1
  51. package/dist/system-prompt.d.ts.map +1 -1
  52. package/dist/system-prompt.js +19 -4
  53. package/dist/system-prompt.js.map +1 -1
  54. package/dist/system-prompt.test.js +9 -0
  55. package/dist/system-prompt.test.js.map +1 -1
  56. package/dist/tools/bash.d.ts +2 -1
  57. package/dist/tools/bash.d.ts.map +1 -1
  58. package/dist/tools/bash.js +9 -1
  59. package/dist/tools/bash.js.map +1 -1
  60. package/dist/tools/bash.test.js +19 -0
  61. package/dist/tools/bash.test.js.map +1 -1
  62. package/dist/tools/grep.d.ts +3 -1
  63. package/dist/tools/grep.d.ts.map +1 -1
  64. package/dist/tools/grep.js +132 -10
  65. package/dist/tools/grep.js.map +1 -1
  66. package/dist/tools/grep.test.js +53 -0
  67. package/dist/tools/grep.test.js.map +1 -1
  68. package/dist/tools/index.d.ts +6 -0
  69. package/dist/tools/index.d.ts.map +1 -1
  70. package/dist/tools/index.js +3 -3
  71. package/dist/tools/index.js.map +1 -1
  72. package/dist/tools/web-fetch.d.ts +2 -1
  73. package/dist/tools/web-fetch.d.ts.map +1 -1
  74. package/dist/tools/web-fetch.js +17 -6
  75. package/dist/tools/web-fetch.js.map +1 -1
  76. package/dist/tools/web-fetch.test.js +34 -0
  77. package/dist/tools/web-fetch.test.js.map +1 -1
  78. package/dist/tools/web-search.d.ts +2 -1
  79. package/dist/tools/web-search.d.ts.map +1 -1
  80. package/dist/tools/web-search.js +21 -5
  81. package/dist/tools/web-search.js.map +1 -1
  82. package/package.json +4 -4
@@ -34,6 +34,7 @@ import { isWorkflowCommandText, countAssistantMessages, shouldStartAutopilotCycl
34
34
  import { driveAutopilotCycle, frameAutopilotInjection } from "./core/autopilot-cycle.js";
35
35
  import { validateKenModelPref, effectiveKenModel } from "./core/ken-model.js";
36
36
  import { normalizeAutopilotMarkersForHistory, normalizeAppMarkersForHistory, normalizeKenTurnsForHistory, restoreUserRow, restoreAssistantTexts, autopilotMarkerCopySeed, } from "./core/session-history.js";
37
+ import { sessionToMarkdown, defaultExportFilename, } from "./core/session-export.js";
37
38
  import { AuthStorage } from "./core/auth-storage.js";
38
39
  import { cleanupToolOutputs } from "./tools/overflow.js";
39
40
  import { readCappedBody } from "./utils/http-body.js";
@@ -346,6 +347,11 @@ async function searchProjectFiles(cwd, rawQuery) {
346
347
  * hook prompt, by its distinctive opening phrase. Returns the hook kind so the
347
348
  * webview can render the short notice line instead of the full prompt body.
348
349
  */
350
+ /** `?tools=` on /export. Anything unrecognised (including absent) falls back to
351
+ * the human-facing `summary` default rather than dumping every payload. */
352
+ function parseToolDetail(value) {
353
+ return value === "none" || value === "full" ? value : "summary";
354
+ }
349
355
  function detectHookKind(text) {
350
356
  const t = text.trimStart();
351
357
  if (t.startsWith("Ideal? Review the actual work"))
@@ -1260,6 +1266,8 @@ async function createSession(deps, opts) {
1260
1266
  gitHubPRs,
1261
1267
  gitHubRepoUrl: gitHubSlug ? `https://github.com/${gitHubSlug}` : null,
1262
1268
  tasks: session.listBackgroundProcesses(),
1269
+ // Roots added with /add-dir — the header shows a badge when non-empty.
1270
+ additionalRoots: session.getAdditionalRoots(),
1263
1271
  };
1264
1272
  }
1265
1273
  // Refresh the GitHub counts and broadcast only on change. Transient failures
@@ -2430,6 +2438,30 @@ async function createSession(deps, opts) {
2430
2438
  });
2431
2439
  return;
2432
2440
  }
2441
+ // Markdown transcript export for the app's download button. Serialized
2442
+ // here rather than in the webview because the webview's transcript model
2443
+ // deliberately keeps tool activity in the LiveToolPanel — exporting from
2444
+ // there would hand the user a coding session with the coding missing.
2445
+ // `?name=1` asks for the suggested filename only (the save dialog needs it
2446
+ // before there is a path), so the markdown never crosses IPC twice.
2447
+ if (method === "GET" && (url === "/export" || url.startsWith("/export?"))) {
2448
+ const query = new URLSearchParams(url.slice(url.indexOf("?") + 1));
2449
+ const st = session.getState();
2450
+ const filename = defaultExportFilename(mode);
2451
+ if (query.get("name") === "1") {
2452
+ json(res, 200, { filename });
2453
+ return;
2454
+ }
2455
+ const markdown = sessionToMarkdown({
2456
+ mode,
2457
+ cwd,
2458
+ provider: st.provider,
2459
+ model: st.model,
2460
+ ...(st.sessionId ? { sessionId: st.sessionId } : {}),
2461
+ }, session.getMessages(), { toolDetail: parseToolDetail(query.get("tools")) });
2462
+ json(res, 200, { filename, markdown });
2463
+ return;
2464
+ }
2433
2465
  if (method === "GET" && url === "/history") {
2434
2466
  // Reconstruct the transcript from persisted messages so resume is 1:1 with
2435
2467
  // the live SSE stream. Walks ALL message types (not just user/assistant):