@kenkaiiii/ggcoder 5.68.1 → 5.69.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 (76) hide show
  1. package/dist/app-sidecar.js +26 -11
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/cli.js +15 -14
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/agent-session.d.ts +17 -0
  6. package/dist/core/agent-session.js +77 -0
  7. package/dist/core/agent-session.js.map +1 -1
  8. package/dist/core/cache-diagnostics.d.ts +6 -0
  9. package/dist/core/cache-diagnostics.js +31 -0
  10. package/dist/core/cache-diagnostics.js.map +1 -1
  11. package/dist/core/cache-expiry.d.ts +87 -0
  12. package/dist/core/cache-expiry.js +111 -0
  13. package/dist/core/cache-expiry.js.map +1 -0
  14. package/dist/core/destructive-git-guard.d.ts +27 -0
  15. package/dist/core/destructive-git-guard.js +94 -54
  16. package/dist/core/destructive-git-guard.js.map +1 -1
  17. package/dist/core/injection-detect.d.ts +38 -0
  18. package/dist/core/injection-detect.js +232 -0
  19. package/dist/core/injection-detect.js.map +1 -0
  20. package/dist/core/mcp/client.d.ts +72 -0
  21. package/dist/core/mcp/client.js +264 -41
  22. package/dist/core/mcp/client.js.map +1 -1
  23. package/dist/core/mcp/store.d.ts +6 -1
  24. package/dist/core/mcp/store.js +12 -1
  25. package/dist/core/mcp/store.js.map +1 -1
  26. package/dist/core/mcp/types.d.ts +18 -0
  27. package/dist/core/persistent-shell.d.ts +58 -6
  28. package/dist/core/persistent-shell.js +331 -49
  29. package/dist/core/persistent-shell.js.map +1 -1
  30. package/dist/core/progress/git-xp.js +8 -14
  31. package/dist/core/progress/git-xp.js.map +1 -1
  32. package/dist/core/subagent-manager.d.ts +9 -0
  33. package/dist/core/subagent-manager.js +7 -1
  34. package/dist/core/subagent-manager.js.map +1 -1
  35. package/dist/core/subagent-receipt.d.ts +54 -0
  36. package/dist/core/subagent-receipt.js +276 -0
  37. package/dist/core/subagent-receipt.js.map +1 -0
  38. package/dist/core/subagent-turn-record.d.ts +2 -0
  39. package/dist/core/subagent-turn-record.js.map +1 -1
  40. package/dist/core/verification-snapshot.js +3 -5
  41. package/dist/core/verification-snapshot.js.map +1 -1
  42. package/dist/core/workspace-guard.d.ts +18 -7
  43. package/dist/core/workspace-guard.js +227 -60
  44. package/dist/core/workspace-guard.js.map +1 -1
  45. package/dist/modes/subagent-worker-mode.js +18 -2
  46. package/dist/modes/subagent-worker-mode.js.map +1 -1
  47. package/dist/tools/bash.js +12 -4
  48. package/dist/tools/bash.js.map +1 -1
  49. package/dist/tools/read.js +3 -2
  50. package/dist/tools/read.js.map +1 -1
  51. package/dist/tools/steroids.d.ts +1 -1
  52. package/dist/tools/subagent-control.js +34 -6
  53. package/dist/tools/subagent-control.js.map +1 -1
  54. package/dist/tools/subagent-shared.d.ts +13 -0
  55. package/dist/tools/subagent-shared.js +25 -0
  56. package/dist/tools/subagent-shared.js.map +1 -1
  57. package/dist/tools/subagent.js +14 -3
  58. package/dist/tools/subagent.js.map +1 -1
  59. package/dist/tools/task-output.js +3 -2
  60. package/dist/tools/task-output.js.map +1 -1
  61. package/dist/tools/truncate.d.ts +21 -0
  62. package/dist/tools/truncate.js +187 -0
  63. package/dist/tools/truncate.js.map +1 -1
  64. package/dist/tools/ui-adopt.js +2 -0
  65. package/dist/tools/ui-adopt.js.map +1 -1
  66. package/dist/utils/git.d.ts +77 -0
  67. package/dist/utils/git.js +285 -21
  68. package/dist/utils/git.js.map +1 -1
  69. package/dist/utils/github-ci.js +2 -1
  70. package/dist/utils/github-ci.js.map +1 -1
  71. package/dist/utils/github.js +11 -9
  72. package/dist/utils/github.js.map +1 -1
  73. package/dist/utils/process.d.ts +20 -0
  74. package/dist/utils/process.js +98 -0
  75. package/dist/utils/process.js.map +1 -1
  76. package/package.json +4 -4
@@ -42,6 +42,7 @@ import { sessionToMarkdown, defaultExportFilename, } from "./core/session-export
42
42
  import { AuthStorage } from "./core/auth-storage.js";
43
43
  import { advancesPhase, explainPullFailure, isGgufShard, isValidHfRepoId, parseOllamaPullLine, pickGgufQuant, SHARDED_MESSAGE, toHfSearchRow, } from "./hf-pull.js";
44
44
  import { cleanupToolOutputs } from "./tools/overflow.js";
45
+ import { spawnedTasks } from "./tools/subagent-shared.js";
45
46
  import { readCappedBody } from "./utils/http-body.js";
46
47
  import { fetchSubscriptionUsage, SubscriptionUsageError, XIAOMI_CREDITS_KEY, dualAuthProvider, oauthStorageKey, discoverLocalModels, findProbedModel, formatLocalModelId, parseLocalModelId, probeEndpoint, toModelInfo as localModelInfo, } from "@kenkaiiii/gg-core";
47
48
  import { LocalEndpointError, addCustomEndpoint, listAllEndpoints, removeCustomEndpoint, syncEndpointCredentials, } from "./core/local-endpoint-store.js";
@@ -1993,6 +1994,12 @@ async function createSession(deps, opts) {
1993
1994
  session.eventBus.on("subagent_state", (d) => broadcast("subagent_state", d));
1994
1995
  session.eventBus.on("compaction_start", (d) => broadcast("compaction_start", d));
1995
1996
  session.eventBus.on("compaction_end", (d) => broadcast("compaction_end", d));
1997
+ // Cold-prompt-cache notice: push the fresh TTL anchor + context size whenever
1998
+ // a run or compaction settles. Expiry itself is time-based, so the webview
1999
+ // also re-reads `cacheExpiry` from /state when the user returns or types.
2000
+ for (const ev of ["agent_done", "compaction_end", "model_change"]) {
2001
+ session.eventBus.on(ev, () => broadcast("cache_expiry", session.getCacheExpiryStatus()));
2002
+ }
1996
2003
  // Keep the computer awake while this window's agent works: owned runs and
1997
2004
  // autopilot cycles (RunLifecycle state), Ken replies, and background
1998
2005
  // sub-agents that outlive their parent run. Released on settle (completed,
@@ -2930,6 +2937,7 @@ async function createSession(deps, opts) {
2930
2937
  supportedThinkingLevels: getSupportedThinkingLevels(st.provider, st.model),
2931
2938
  supportsVideo: getModel(st.model)?.supportsVideo ?? false,
2932
2939
  autopilot,
2940
+ cacheExpiry: session.getCacheExpiryStatus(),
2933
2941
  ...kenStatePayload(),
2934
2942
  ...footerExtras(),
2935
2943
  });
@@ -3550,18 +3558,25 @@ async function createSession(deps, opts) {
3550
3558
  if (msg.role === "assistant" && typeof msg.content !== "string") {
3551
3559
  const subagentCalls = msg.content.filter((c) => c.type === "tool_call" && (c.name === "subagent" || c.name === "spawn_agent"));
3552
3560
  if (subagentCalls.length > 0) {
3553
- const agents = subagentCalls.map((c) => {
3561
+ const agents = subagentCalls.flatMap((c) => {
3554
3562
  const result = toolResultMap.get(c.id);
3555
- return {
3556
- agentName: c.name === "spawn_agent" && typeof c.args?.task_name === "string"
3557
- ? c.args.task_name
3558
- : typeof c.args?.agent === "string"
3559
- ? c.args.agent
3560
- : undefined,
3561
- // Async workers are intentionally non-resumable; restored rows are historical.
3562
- status: result?.isError ? "error" : "done",
3563
- toolUseCount: 0,
3564
- };
3563
+ // Async workers are intentionally non-resumable; restored rows are historical.
3564
+ const status = result?.isError ? "error" : "done";
3565
+ if (c.name === "spawn_agent") {
3566
+ // One row per child: a batch call starts several.
3567
+ return spawnedTasks(c.args).map((spawn) => ({
3568
+ agentName: spawn.task_name ?? spawn.agent,
3569
+ status,
3570
+ toolUseCount: 0,
3571
+ }));
3572
+ }
3573
+ return [
3574
+ {
3575
+ agentName: typeof c.args?.agent === "string" ? c.args.agent : undefined,
3576
+ status,
3577
+ toolUseCount: 0,
3578
+ },
3579
+ ];
3565
3580
  });
3566
3581
  history.push({
3567
3582
  role: "assistant",