@kenkaiiii/ggcoder 5.16.0 → 5.18.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 (162) hide show
  1. package/README.md +2 -2
  2. package/dist/app-sidecar.js +303 -88
  3. package/dist/app-sidecar.js.map +1 -1
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +24 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/core/agent-session-review-coverage.test.d.ts +2 -0
  8. package/dist/core/agent-session-review-coverage.test.d.ts.map +1 -0
  9. package/dist/core/agent-session-review-coverage.test.js +57 -0
  10. package/dist/core/agent-session-review-coverage.test.js.map +1 -0
  11. package/dist/core/agent-session-tool-result-policy.test.d.ts +2 -0
  12. package/dist/core/agent-session-tool-result-policy.test.d.ts.map +1 -0
  13. package/dist/core/agent-session-tool-result-policy.test.js +12 -0
  14. package/dist/core/agent-session-tool-result-policy.test.js.map +1 -0
  15. package/dist/core/agent-session.d.ts +19 -12
  16. package/dist/core/agent-session.d.ts.map +1 -1
  17. package/dist/core/agent-session.js +185 -66
  18. package/dist/core/agent-session.js.map +1 -1
  19. package/dist/core/auth-providers.js +1 -1
  20. package/dist/core/auth-providers.js.map +1 -1
  21. package/dist/core/compaction/compactor.test.js +2 -1
  22. package/dist/core/compaction/compactor.test.js.map +1 -1
  23. package/dist/core/event-bus.d.ts +2 -0
  24. package/dist/core/event-bus.d.ts.map +1 -1
  25. package/dist/core/event-bus.js.map +1 -1
  26. package/dist/core/ideal-review.d.ts +27 -0
  27. package/dist/core/ideal-review.d.ts.map +1 -1
  28. package/dist/core/ideal-review.js +64 -0
  29. package/dist/core/ideal-review.js.map +1 -1
  30. package/dist/core/ideal-review.test.js +34 -1
  31. package/dist/core/ideal-review.test.js.map +1 -1
  32. package/dist/core/lsp/client.d.ts +3 -0
  33. package/dist/core/lsp/client.d.ts.map +1 -1
  34. package/dist/core/lsp/client.js +20 -0
  35. package/dist/core/lsp/client.js.map +1 -1
  36. package/dist/core/lsp/manager.d.ts +32 -9
  37. package/dist/core/lsp/manager.d.ts.map +1 -1
  38. package/dist/core/lsp/manager.js +89 -37
  39. package/dist/core/lsp/manager.js.map +1 -1
  40. package/dist/core/lsp/manager.test.js +56 -4
  41. package/dist/core/lsp/manager.test.js.map +1 -1
  42. package/dist/core/project-discovery.d.ts +4 -11
  43. package/dist/core/project-discovery.d.ts.map +1 -1
  44. package/dist/core/project-discovery.js +33 -30
  45. package/dist/core/project-discovery.js.map +1 -1
  46. package/dist/core/project-discovery.test.js +148 -0
  47. package/dist/core/project-discovery.test.js.map +1 -1
  48. package/dist/core/run-lifecycle.d.ts +40 -0
  49. package/dist/core/run-lifecycle.d.ts.map +1 -0
  50. package/dist/core/run-lifecycle.js +95 -0
  51. package/dist/core/run-lifecycle.js.map +1 -0
  52. package/dist/core/run-lifecycle.test.d.ts +2 -0
  53. package/dist/core/run-lifecycle.test.d.ts.map +1 -0
  54. package/dist/core/run-lifecycle.test.js +64 -0
  55. package/dist/core/run-lifecycle.test.js.map +1 -0
  56. package/dist/core/session-compaction.d.ts +3 -0
  57. package/dist/core/session-compaction.d.ts.map +1 -1
  58. package/dist/core/session-compaction.js +14 -1
  59. package/dist/core/session-compaction.js.map +1 -1
  60. package/dist/core/session-compaction.test.js +5 -0
  61. package/dist/core/session-compaction.test.js.map +1 -1
  62. package/dist/core/session-manager.d.ts +33 -2
  63. package/dist/core/session-manager.d.ts.map +1 -1
  64. package/dist/core/session-manager.js +73 -2
  65. package/dist/core/session-manager.js.map +1 -1
  66. package/dist/core/session-manager.test.js +97 -2
  67. package/dist/core/session-manager.test.js.map +1 -1
  68. package/dist/core/session-preview.d.ts +11 -0
  69. package/dist/core/session-preview.d.ts.map +1 -0
  70. package/dist/core/session-preview.js +50 -0
  71. package/dist/core/session-preview.js.map +1 -0
  72. package/dist/core/subagent-manager.d.ts +42 -7
  73. package/dist/core/subagent-manager.d.ts.map +1 -1
  74. package/dist/core/subagent-manager.js +346 -30
  75. package/dist/core/subagent-manager.js.map +1 -1
  76. package/dist/core/subagent-manager.test.js +195 -3
  77. package/dist/core/subagent-manager.test.js.map +1 -1
  78. package/dist/core/subagent-store.d.ts +20 -0
  79. package/dist/core/subagent-store.d.ts.map +1 -0
  80. package/dist/core/subagent-store.js +177 -0
  81. package/dist/core/subagent-store.js.map +1 -0
  82. package/dist/core/subagent-store.test.d.ts +2 -0
  83. package/dist/core/subagent-store.test.d.ts.map +1 -0
  84. package/dist/core/subagent-store.test.js +94 -0
  85. package/dist/core/subagent-store.test.js.map +1 -0
  86. package/dist/modes/agent-home-mode.d.ts.map +1 -1
  87. package/dist/modes/agent-home-mode.js +10 -3
  88. package/dist/modes/agent-home-mode.js.map +1 -1
  89. package/dist/modes/serve-mode.d.ts.map +1 -1
  90. package/dist/modes/serve-mode.js +10 -3
  91. package/dist/modes/serve-mode.js.map +1 -1
  92. package/dist/modes/subagent-worker-mode.d.ts +2 -0
  93. package/dist/modes/subagent-worker-mode.d.ts.map +1 -1
  94. package/dist/modes/subagent-worker-mode.js +13 -3
  95. package/dist/modes/subagent-worker-mode.js.map +1 -1
  96. package/dist/tools/subagent-shared.d.ts +8 -0
  97. package/dist/tools/subagent-shared.d.ts.map +1 -1
  98. package/dist/tools/subagent-shared.js.map +1 -1
  99. package/dist/tools/subagent.d.ts +3 -8
  100. package/dist/tools/subagent.d.ts.map +1 -1
  101. package/dist/tools/subagent.js +10 -8
  102. package/dist/tools/subagent.js.map +1 -1
  103. package/dist/tools/subagent.test.js +17 -1
  104. package/dist/tools/subagent.test.js.map +1 -1
  105. package/dist/tools/tasks.d.ts +1 -1
  106. package/dist/tools/web-fetch.d.ts +1 -1
  107. package/dist/ui/App.d.ts +7 -3
  108. package/dist/ui/App.d.ts.map +1 -1
  109. package/dist/ui/App.js +66 -83
  110. package/dist/ui/App.js.map +1 -1
  111. package/dist/ui/components/Footer.d.ts +1 -0
  112. package/dist/ui/components/Footer.d.ts.map +1 -1
  113. package/dist/ui/components/Footer.js +3 -3
  114. package/dist/ui/components/Footer.js.map +1 -1
  115. package/dist/ui/components/Footer.test.d.ts +2 -0
  116. package/dist/ui/components/Footer.test.d.ts.map +1 -0
  117. package/dist/ui/components/Footer.test.js +16 -0
  118. package/dist/ui/components/Footer.test.js.map +1 -0
  119. package/dist/ui/components/SubAgentPanel.d.ts +2 -0
  120. package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
  121. package/dist/ui/components/SubAgentPanel.js +4 -2
  122. package/dist/ui/components/SubAgentPanel.js.map +1 -1
  123. package/dist/ui/hooks/useAgentLoop.d.ts +8 -3
  124. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  125. package/dist/ui/hooks/useAgentLoop.js +64 -8
  126. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  127. package/dist/ui/hooks/useSessionPersistence.d.ts +4 -2
  128. package/dist/ui/hooks/useSessionPersistence.d.ts.map +1 -1
  129. package/dist/ui/hooks/useSessionPersistence.js +10 -1
  130. package/dist/ui/hooks/useSessionPersistence.js.map +1 -1
  131. package/dist/ui/hooks/useTerminalTitle.d.ts +3 -3
  132. package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
  133. package/dist/ui/hooks/useTerminalTitle.js +5 -9
  134. package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
  135. package/dist/ui/login.d.ts.map +1 -1
  136. package/dist/ui/login.js +5 -1
  137. package/dist/ui/login.js.map +1 -1
  138. package/dist/ui/render.d.ts +7 -2
  139. package/dist/ui/render.d.ts.map +1 -1
  140. package/dist/ui/render.js +4 -4
  141. package/dist/ui/render.js.map +1 -1
  142. package/dist/ui/render.test.js +10 -1
  143. package/dist/ui/render.test.js.map +1 -1
  144. package/dist/ui/terminal-history.js +6 -2
  145. package/dist/ui/terminal-history.js.map +1 -1
  146. package/dist/ui/terminal-history.test.js +2 -2
  147. package/dist/ui/terminal-history.test.js.map +1 -1
  148. package/dist/ui/tui-history-parity.test.js +8 -1
  149. package/dist/ui/tui-history-parity.test.js.map +1 -1
  150. package/dist/utils/git.d.ts +2 -0
  151. package/dist/utils/git.d.ts.map +1 -1
  152. package/dist/utils/git.js +12 -0
  153. package/dist/utils/git.js.map +1 -1
  154. package/dist/utils/git.test.d.ts +2 -0
  155. package/dist/utils/git.test.d.ts.map +1 -0
  156. package/dist/utils/git.test.js +36 -0
  157. package/dist/utils/git.test.js.map +1 -0
  158. package/package.json +4 -4
  159. package/dist/utils/session-title.d.ts +0 -19
  160. package/dist/utils/session-title.d.ts.map +0 -1
  161. package/dist/utils/session-title.js +0 -82
  162. package/dist/utils/session-title.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.test.js","sourceRoot":"","sources":["../../src/tools/subagent.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.test.js","sourceRoot":"","sources":["../../src/tools/subagent.test.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import type { AgentTool } from "@kenkaiiii/gg-agent";
3
3
  declare const TasksParams: z.ZodObject<{
4
4
  action: z.ZodEnum<{
5
5
  done: "done";
6
- add: "add";
7
6
  list: "list";
7
+ add: "add";
8
8
  remove: "remove";
9
9
  }>;
10
10
  title: z.ZodOptional<z.ZodString>;
@@ -21,8 +21,8 @@ declare const parameters: z.ZodObject<{
21
21
  urls: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
22
  max_length: z.ZodOptional<z.ZodNumber>;
23
23
  format: z.ZodOptional<z.ZodEnum<{
24
- text: "text";
25
24
  html: "html";
25
+ text: "text";
26
26
  markdown: "markdown";
27
27
  }>>;
28
28
  prefer_llms_txt: z.ZodOptional<z.ZodBoolean>;
package/dist/ui/App.d.ts CHANGED
@@ -1,13 +1,16 @@
1
1
  import { type Message, type Provider, type ThinkingLevel } from "@kenkaiiii/gg-ai";
2
2
  import type { AgentTool } from "@kenkaiiii/gg-agent";
3
- import type { SubAgentManager } from "../core/subagent-manager.js";
3
+ import { type SubAgentManager } from "../core/subagent-manager.js";
4
4
  import type { ProcessManager } from "../core/process-manager.js";
5
+ import { type TurnMetricPayload } from "../core/session-manager.js";
5
6
  import type { Skill } from "../core/skills.js";
6
7
  import type { CheckpointStore } from "../core/checkpoint-store.js";
7
8
  import { type PlanStep } from "../utils/plan-steps.js";
8
9
  import type { MCPClientManager } from "../core/mcp/index.js";
9
10
  import type { AuthStorage } from "../core/auth-storage.js";
10
11
  import type { TerminalHistoryPrinter } from "./terminal-history.js";
12
+ import { type ReviewCoverageTracker } from "../core/ideal-review.js";
13
+ import type { LspManager } from "../core/lsp/manager.js";
11
14
  import { type DoneStatus } from "./layout-decisions.js";
12
15
  import { type SessionStats } from "./session-summary.js";
13
16
  import type { CompletedItem } from "./app-items.js";
@@ -47,6 +50,8 @@ export interface AppProps {
47
50
  sessionId?: string;
48
51
  processManager?: ProcessManager;
49
52
  subAgentManager?: SubAgentManager;
53
+ lspManager?: LspManager;
54
+ reviewCoverageTracker?: ReviewCoverageTracker;
50
55
  settingsFile?: string;
51
56
  mcpManager?: MCPClientManager;
52
57
  authStorage?: AuthStorage;
@@ -137,14 +142,13 @@ export interface AppProps {
137
142
  sessionStore?: {
138
143
  messages: Message[];
139
144
  history: CompletedItem[];
145
+ turnMetrics?: TurnMetricPayload[];
140
146
  liveItems?: CompletedItem[];
141
147
  doneStatus?: DoneStatus | null;
142
148
  approvedPlanPath?: string;
143
149
  planSteps: PlanStep[];
144
150
  sessionPath?: string;
145
151
  sessionId?: string;
146
- sessionTitle?: string;
147
- sessionTitleGenerated: boolean;
148
152
  overlay?: "model" | "skills" | "plan" | "theme" | null;
149
153
  planAutoExpand?: boolean;
150
154
  pendingAction?: {
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,6BAA6B,CAAC;AAarC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAkBpF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAkB,eAAe,EAAe,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAa3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAIpE,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAY9B,OAAO,KAAK,EACV,aAAa,EAYd,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAOnE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,8BAA8B,EAC9B,mBAAmB,EACnB,gCAAgC,EAChC,qBAAqB,EACrB,+BAA+B,EAC/B,mCAAmC,EACnC,kCAAkC,EAClC,uCAAuC,EACvC,wCAAwC,EACxC,gCAAgC,GACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,kCAAkC,GACnC,MAAM,mBAAmB,CAAC;AAiB3B,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAC5B,MAAM,EACN;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAClF,CAAC;IACF,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IACnC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,qEAAqE;IACrE,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;+EAC2E;IAC3E,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC/C,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,aAAa,CAAC,EAAE;QACd,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KACpD,CAAC;IACF,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;QACnB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;QAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE;YACd,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE;gBAAE,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SAC/E,CAAC;KACH,KAAK,IAAI,CAAC;IACX;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;KAC1B,KAAK,IAAI,CAAC;IACX;;;;;OAKG;IACH,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,aAAa,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;QAClC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;QAC5B,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;QAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,QAAQ,EAAE,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;QACvD,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE;YACd,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE;gBAAE,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SAC/E,CAAC;QACF,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;CACH;AAuBD,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,2CAs2FlC"}
package/dist/ui/App.js CHANGED
@@ -12,6 +12,7 @@ import { useTaskBarStore, useTaskBarPolling, focusTaskBar, exitTaskBar, expandTa
12
12
  import { playNotificationSound } from "../utils/sound.js";
13
13
  import {} from "@kenkaiiii/gg-ai";
14
14
  import { downscaleForPreview, extractMediaPaths } from "../utils/image.js";
15
+ import { buildSubAgentCompletionFollowUp, } from "../core/subagent-manager.js";
15
16
  import { useAgentLoop } from "./hooks/useAgentLoop.js";
16
17
  import { useTranscriptHistory } from "./hooks/useTranscriptHistory.js";
17
18
  import { createWebSearchTool } from "../tools/web-search.js";
@@ -26,7 +27,6 @@ import { getAuthStorageKeys, getModel, getVideoByteLimit } from "../core/model-r
26
27
  import { SessionManager } from "../core/session-manager.js";
27
28
  import { log } from "../core/logger.js";
28
29
  import { getPendingUpdate, startPeriodicUpdateCheck, stopPeriodicUpdateCheck, } from "../core/auto-update.js";
29
- import { generateSessionTitle } from "../utils/session-title.js";
30
30
  import { SettingsManager } from "../core/settings-manager.js";
31
31
  import { PROMPT_COMMANDS, getPromptCommand } from "../core/prompt-commands.js";
32
32
  import { isFirstTimeSetup, markSetupAudited, getAnnouncedLanguages, markLanguagesAnnounced, } from "../core/setup-history.js";
@@ -101,22 +101,14 @@ export function App(props) {
101
101
  // measured further down; 0 means "not measured yet" and disables the
102
102
  // oversized-item flush below.
103
103
  const liveLayoutRef = useRef({ columns, liveAreaRows: 0 });
104
- // Hoisted before terminal title hook so it can reference them
105
104
  const [lastUserMessage, setLastUserMessage] = useState("");
106
105
  // Bumped on every prompt submit; the fullscreen transcript scroll controller
107
106
  // watches this to snap back to the bottom so the newest output is visible.
108
107
  const [scrollResetToken, setScrollResetToken] = useState(0);
109
108
  const [exitPending, setExitPending] = useState(false);
110
109
  const [quittingSummary, setQuittingSummary] = useState(null);
111
- // Terminal title updated later after agentLoop is created
112
- // (hoisted here so the hook is always called in the same order)
110
+ // Native terminal title keeps the active project visible outside the app frame.
113
111
  const [titleRunning, setTitleRunning] = useState(false);
114
- const [sessionTitle, setSessionTitle] = useState(() => props.sessionStore?.sessionTitle);
115
- const sessionTitleGeneratedRef = useRef(props.sessionStore?.sessionTitleGenerated ?? false);
116
- useTerminalTitle({
117
- isRunning: titleRunning,
118
- sessionTitle,
119
- });
120
112
  // Completed transcript rows are kept as durable session data but are no longer
121
113
  // rendered through Ink history. They are serialized once into real terminal
122
114
  // scrollback via terminalHistoryPrinter, while Ink owns only live rows and
@@ -213,6 +205,7 @@ export function App(props) {
213
205
  // Suppress "done" status when a plan overlay is about to open
214
206
  const planOverlayPendingRef = useRef(false);
215
207
  const [gitBranch, setGitBranch] = useState(null);
208
+ useTerminalTitle({ isRunning: titleRunning, cwd: displayedCwd, gitBranch });
216
209
  const [currentModel, setCurrentModel] = useState(props.model);
217
210
  const [currentProvider, setCurrentProvider] = useState(props.provider);
218
211
  const currentProviderRef = useRef(props.provider);
@@ -247,6 +240,7 @@ export function App(props) {
247
240
  const sessionManagerRef = useRef(props.sessionsDir ? new SessionManager(props.sessionsDir) : null);
248
241
  const sessionPathRef = useRef(props.sessionStore?.sessionPath ?? props.sessionPath);
249
242
  const persistedIndexRef = useRef(messagesRef.current.length);
243
+ const turnMetricsRef = useRef(props.sessionStore?.turnMetrics ?? []);
250
244
  const sessionStatsRef = useRef(props.sessionStore?.sessionStats ??
251
245
  createSessionStats({ sessionId: props.sessionStore?.sessionId ?? props.sessionId }));
252
246
  const [idealReviewEnabled, setIdealReviewEnabled] = useState(props.sessionStore?.idealReviewEnabled ?? props.idealReviewEnabled ?? true);
@@ -382,10 +376,6 @@ export function App(props) {
382
376
  if (sessionStore)
383
377
  sessionStore.planSteps = planSteps;
384
378
  }, [planSteps, sessionStore]);
385
- useEffect(() => {
386
- if (sessionStore)
387
- sessionStore.sessionTitle = sessionTitle;
388
- }, [sessionTitle, sessionStore]);
389
379
  useEffect(() => {
390
380
  if (sessionStore)
391
381
  sessionStore.overlay = overlay;
@@ -410,9 +400,9 @@ export function App(props) {
410
400
  .map((key) => props.credentialsByProvider?.[key])
411
401
  .find((c) => c !== undefined);
412
402
  const activeApiKey = currentCreds?.accessToken ?? props.apiKey;
413
- const activeAccountId = currentCreds?.accountId ?? props.accountId;
414
- const activeProjectId = currentCreds?.projectId ?? props.projectId;
415
- const activeBaseUrl = currentProvider === "gemini" ? undefined : (currentCreds?.baseUrl ?? props.baseUrl);
403
+ const activeAccountId = currentCreds ? currentCreds.accountId : props.accountId;
404
+ const activeProjectId = currentCreds ? currentCreds.projectId : props.projectId;
405
+ const activeBaseUrl = currentProvider === "gemini" ? undefined : currentCreds ? currentCreds.baseUrl : props.baseUrl;
416
406
  const contextWindowOptions = useMemo(() => ({ provider: currentProvider, accountId: activeAccountId }), [currentProvider, activeAccountId]);
417
407
  // Load git branch — re-runs whenever the displayed cwd changes.
418
408
  useEffect(() => {
@@ -544,16 +534,19 @@ export function App(props) {
544
534
  useEffect(() => {
545
535
  void applyLanguageDetectionRef.current("initial");
546
536
  }, []);
537
+ const rebindSubagentsAfterCompaction = useCallback((sessionId) => props.subAgentManager?.rebindParentSession(sessionId) ?? Promise.resolve(), [props.subAgentManager]);
547
538
  const { persistCompactedSession, persistNewMessages } = useSessionPersistence({
548
539
  sessionManagerRef,
549
540
  sessionPathRef,
550
541
  sessionStatsRef,
551
542
  persistedIndexRef,
552
543
  messagesRef,
544
+ turnMetricsRef,
553
545
  cwdRef,
554
546
  currentProvider,
555
547
  currentModel,
556
548
  sessionStore,
549
+ onCompactedSession: rebindSubagentsAfterCompaction,
557
550
  });
558
551
  /**
559
552
  * Run the language detector against the current cwd. If the detected set is a
@@ -657,6 +650,8 @@ export function App(props) {
657
650
  projectId: activeProjectId,
658
651
  resolveCredentials,
659
652
  transformContext,
653
+ lspManager: props.lspManager,
654
+ reviewCoverageTracker: props.reviewCoverageTracker,
660
655
  getIdealReviewMessage: (stats, touchedFiles) => {
661
656
  if (!idealReviewEnabledRef.current)
662
657
  return null;
@@ -714,56 +709,7 @@ export function App(props) {
714
709
  // Rebuild system prompt to remove the completed plan from context
715
710
  void replaceSystemPrompt({ clearApprovedPlan: true });
716
711
  }
717
- // Generate session title after the first turn (background, best-effort)
718
- if (!sessionTitleGeneratedRef.current) {
719
- sessionTitleGeneratedRef.current = true;
720
- const msgs = messagesRef.current;
721
- // Find the first user message and first assistant text
722
- const userMsg = msgs.find((m) => m.role === "user");
723
- const assistantMsg = msgs.find((m) => m.role === "assistant");
724
- const userText = typeof userMsg?.content === "string"
725
- ? userMsg.content
726
- : Array.isArray(userMsg?.content)
727
- ? userMsg.content
728
- .filter((c) => c.type === "text")
729
- .map((c) => c.text)
730
- .join(" ")
731
- : "";
732
- const assistantText = typeof assistantMsg?.content === "string"
733
- ? assistantMsg.content
734
- : Array.isArray(assistantMsg?.content)
735
- ? assistantMsg.content
736
- .filter((c) => c.type === "text")
737
- .map((c) => c.text)
738
- .join(" ")
739
- : "";
740
- if (userText) {
741
- generateSessionTitle({
742
- provider: currentProvider,
743
- userMessage: userText,
744
- assistantPreview: assistantText.slice(0, 200),
745
- apiKey: activeApiKey,
746
- baseUrl: activeBaseUrl,
747
- accountId: activeAccountId,
748
- resolveCredentials,
749
- }).then((title) => {
750
- setSessionTitle(title);
751
- log("INFO", "title", `Session title generated: ${title}`);
752
- }, () => {
753
- // Best-effort — silently ignore failures
754
- });
755
- }
756
- }
757
- }, [
758
- persistNewMessages,
759
- props.cwd,
760
- props.skills,
761
- currentProvider,
762
- activeApiKey,
763
- activeAccountId,
764
- activeBaseUrl,
765
- resolveCredentials,
766
- ]),
712
+ }, [persistNewMessages, props.cwd, props.skills]),
767
713
  onTurnText: useCallback((text, thinking, thinkingMs) => {
768
714
  const hadStreamedAssistantFlush = streamedAssistantFlushRef.current.flushedChars > 0;
769
715
  const unflushedAssistantText = text.slice(streamedAssistantFlushRef.current.flushedChars);
@@ -1243,14 +1189,37 @@ export function App(props) {
1243
1189
  return remaining;
1244
1190
  });
1245
1191
  }, [queueFlush]),
1246
- onTurnEnd: useCallback((turn, stopReason, usage) => {
1192
+ onTurnEnd: useCallback((turn, stopReason, usage, timing) => {
1247
1193
  recordTurnEnd(sessionStatsRef.current, usage);
1194
+ const metric = {
1195
+ version: 1,
1196
+ turn,
1197
+ provider: currentProvider,
1198
+ model: currentModel,
1199
+ stopReason,
1200
+ usage: { ...usage },
1201
+ timing: { ...timing },
1202
+ cost: {
1203
+ status: "unavailable",
1204
+ reason: "No authoritative effective-dated provider pricing is available",
1205
+ },
1206
+ };
1207
+ turnMetricsRef.current.push(metric);
1208
+ if (sessionStore)
1209
+ sessionStore.turnMetrics = [...turnMetricsRef.current];
1210
+ const metricSessionPath = sessionPathRef.current;
1211
+ const metricManager = sessionManagerRef.current;
1212
+ if (metricSessionPath && metricManager) {
1213
+ void metricManager.appendTurnMetric(metricSessionPath, metric);
1214
+ }
1248
1215
  log("INFO", "turn", `Turn ${turn} ended`, {
1249
1216
  stopReason,
1250
1217
  inputTokens: String(usage.inputTokens),
1251
1218
  outputTokens: String(usage.outputTokens),
1252
1219
  ...(usage.cacheRead != null && { cacheRead: String(usage.cacheRead) }),
1253
1220
  ...(usage.cacheWrite != null && { cacheWrite: String(usage.cacheWrite) }),
1221
+ providerDurationMs: String(timing.providerDurationMs),
1222
+ ...(timing.ttftMs != null && { ttftMs: String(timing.ttftMs) }),
1254
1223
  });
1255
1224
  // Track actual token count for compaction decisions.
1256
1225
  // Anthropic has separate input/output limits — only count input.
@@ -1268,7 +1237,7 @@ export function App(props) {
1268
1237
  }
1269
1238
  return remaining;
1270
1239
  });
1271
- }, [queueFlush]),
1240
+ }, [currentModel, currentProvider, queueFlush, sessionStore]),
1272
1241
  onDone: useCallback((durationMs, toolsUsed, runStats) => {
1273
1242
  log("INFO", "agent", `Agent done`, {
1274
1243
  duration: `${durationMs}ms`,
@@ -1398,6 +1367,9 @@ export function App(props) {
1398
1367
  // natural completion boundary regardless. The stuck-guard caps
1399
1368
  // nudges per step so a genuinely blocked agent surfaces.
1400
1369
  getFollowUpMessages: useCallback(() => {
1370
+ const childCompletionFollowUp = buildSubAgentCompletionFollowUp(props.subAgentManager);
1371
+ if (childCompletionFollowUp)
1372
+ return childCompletionFollowUp;
1401
1373
  const steps = planStepsRef.current;
1402
1374
  if (steps.length === 0 || !approvedPlanPathRef.current)
1403
1375
  return null;
@@ -1421,7 +1393,7 @@ export function App(props) {
1421
1393
  `or you genuinely need user input.`,
1422
1394
  },
1423
1395
  ];
1424
- }, []),
1396
+ }, [props.subAgentManager]),
1425
1397
  onRetry: useCallback(() => {
1426
1398
  // Roll back any pending progressive flushes from the aborted attempt.
1427
1399
  // Without this, a stall retry regenerates the preamble and the old
@@ -1664,8 +1636,6 @@ export function App(props) {
1664
1636
  persistedIndexRef.current = messagesRef.current.length;
1665
1637
  })();
1666
1638
  agentLoop.reset();
1667
- setSessionTitle(undefined);
1668
- sessionTitleGeneratedRef.current = false;
1669
1639
  setLiveItems([{ kind: "info", text: "Session cleared.", id: getId() }]);
1670
1640
  },
1671
1641
  openThemeSelector: () => setOverlay("theme"),
@@ -2140,6 +2110,10 @@ export function App(props) {
2140
2110
  try {
2141
2111
  const session = await sm.create(taskCwd, currentProvider, currentModel);
2142
2112
  newSessionPath = session.path;
2113
+ sessionStatsRef.current.sessionId = session.id;
2114
+ if (props.sessionStore)
2115
+ props.sessionStore.sessionId = session.id;
2116
+ await props.subAgentManager?.resetParentSession(session.id);
2143
2117
  log("INFO", "tasks", "New session for task", { path: session.path });
2144
2118
  }
2145
2119
  catch {
@@ -2165,22 +2139,27 @@ export function App(props) {
2165
2139
  agentLoop.reset();
2166
2140
  persistedIndexRef.current = messagesRef.current.length;
2167
2141
  const sm = sessionManagerRef.current;
2168
- if (sm) {
2169
- void sm.create(taskCwd, currentProvider, currentModel).then((session) => {
2170
- sessionPathRef.current = session.path;
2171
- log("INFO", "tasks", "New session for task", { path: session.path });
2172
- });
2173
- }
2174
2142
  const taskItem = { kind: "task", title, id: getId() };
2175
2143
  setLastUserMessage(title);
2176
2144
  setDoneStatus(null);
2177
2145
  setLiveItems([taskItem]);
2178
- void agentLoop.run(fullPrompt).catch((err) => {
2179
- if (agentLoop.isRunning) {
2180
- agentLoop.reset();
2146
+ void (async () => {
2147
+ try {
2148
+ if (sm) {
2149
+ const session = await sm.create(taskCwd, currentProvider, currentModel);
2150
+ sessionPathRef.current = session.path;
2151
+ sessionStatsRef.current.sessionId = session.id;
2152
+ await props.subAgentManager?.resetParentSession(session.id);
2153
+ log("INFO", "tasks", "New session for task", { path: session.path });
2154
+ }
2155
+ await agentLoop.run(fullPrompt);
2181
2156
  }
2182
- setLiveItems((prev) => [...prev, toErrorItem(err, getId())]);
2183
- });
2157
+ catch (err) {
2158
+ if (agentLoop.isRunning)
2159
+ agentLoop.reset();
2160
+ setLiveItems((prev) => [...prev, toErrorItem(err, getId())]);
2161
+ }
2162
+ })();
2184
2163
  }, [agentLoop, currentModel, currentProvider, props]);
2185
2164
  // Keep the ref in sync so stale closures (task picker, onDone run-all) can
2186
2165
  // start a task without being recreated each render.
@@ -2549,6 +2528,10 @@ export function App(props) {
2549
2528
  if (sm) {
2550
2529
  const s = await sm.create(props.cwd, currentProvider, currentModel);
2551
2530
  newSessionPath = s.path;
2531
+ sessionStatsRef.current.sessionId = s.id;
2532
+ if (props.sessionStore)
2533
+ props.sessionStore.sessionId = s.id;
2534
+ await props.subAgentManager?.resetParentSession(s.id);
2552
2535
  }
2553
2536
  if (props.resetUI && props.sessionStore) {
2554
2537
  // Clear the overlay so the new mount lands on the chat,