@kenkaiiii/ggcoder 4.10.1 → 4.10.2

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 (42) hide show
  1. package/dist/app-sidecar.d.ts +2 -0
  2. package/dist/app-sidecar.d.ts.map +1 -0
  3. package/dist/app-sidecar.js +848 -0
  4. package/dist/app-sidecar.js.map +1 -0
  5. package/dist/core/agent-session.d.ts +94 -0
  6. package/dist/core/agent-session.d.ts.map +1 -1
  7. package/dist/core/agent-session.js +313 -1
  8. package/dist/core/agent-session.js.map +1 -1
  9. package/dist/core/auth-providers.d.ts +18 -0
  10. package/dist/core/auth-providers.d.ts.map +1 -0
  11. package/dist/core/auth-providers.js +71 -0
  12. package/dist/core/auth-providers.js.map +1 -0
  13. package/dist/core/event-bus.d.ts +5 -0
  14. package/dist/core/event-bus.d.ts.map +1 -1
  15. package/dist/core/event-bus.js +1 -0
  16. package/dist/core/event-bus.js.map +1 -1
  17. package/dist/core/project-discovery.d.ts +41 -0
  18. package/dist/core/project-discovery.d.ts.map +1 -0
  19. package/dist/core/project-discovery.js +439 -0
  20. package/dist/core/project-discovery.js.map +1 -0
  21. package/dist/core/settings-manager.d.ts +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/tools/tasks.d.ts +1 -1
  27. package/dist/ui/hooks/useTranscriptHistory.d.ts +2 -0
  28. package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -1
  29. package/dist/ui/hooks/useTranscriptHistory.js +3 -2
  30. package/dist/ui/hooks/useTranscriptHistory.js.map +1 -1
  31. package/dist/ui/render.d.ts.map +1 -1
  32. package/dist/ui/render.js +60 -8
  33. package/dist/ui/render.js.map +1 -1
  34. package/dist/ui/terminal-history-repaint.test.d.ts +2 -0
  35. package/dist/ui/terminal-history-repaint.test.d.ts.map +1 -0
  36. package/dist/ui/terminal-history-repaint.test.js +73 -0
  37. package/dist/ui/terminal-history-repaint.test.js.map +1 -0
  38. package/dist/ui/terminal-history.d.ts +1 -0
  39. package/dist/ui/terminal-history.d.ts.map +1 -1
  40. package/dist/ui/terminal-history.js +31 -2
  41. package/dist/ui/terminal-history.js.map +1 -1
  42. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-sidecar.js","sourceRoot":"","sources":["../src/app-sidecar.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { type Message, type Provider, type ThinkingLevel } from "@kenkaiiii/gg-a
2
2
  import { EventBus } from "./event-bus.js";
3
3
  import { SlashCommandRegistry } from "./slash-commands.js";
4
4
  import { type BranchInfo } from "./session-manager.js";
5
+ import type { BackgroundProcess } from "./process-manager.js";
5
6
  export interface AgentSessionOptions {
6
7
  provider: Provider;
7
8
  model: string;
@@ -30,6 +31,14 @@ export interface AgentSessionOptions {
30
31
  * resumable identity.
31
32
  */
32
33
  transient?: boolean;
34
+ /**
35
+ * Plan-mode callbacks. When provided, the `enter_plan`/`exit_plan` tools are
36
+ * registered and the session manages plan-mode restrictions + system-prompt
37
+ * rebuilds. Hosts (e.g. the gg-app sidecar) use these to surface plan-mode
38
+ * UI. Omitted by callers that don't want plan mode (CLI wires its own).
39
+ */
40
+ onEnterPlan?: (reason?: string) => void | Promise<void>;
41
+ onExitPlan?: (planPath: string) => Promise<string>;
33
42
  }
34
43
  export interface AgentSessionState {
35
44
  provider: Provider;
@@ -38,6 +47,7 @@ export interface AgentSessionState {
38
47
  sessionId: string;
39
48
  sessionPath: string;
40
49
  messageCount: number;
50
+ planMode: boolean;
41
51
  }
42
52
  export declare class AgentSession {
43
53
  readonly eventBus: EventBus;
@@ -50,6 +60,20 @@ export declare class AgentSession {
50
60
  private tools;
51
61
  private skills;
52
62
  private cacheKeyLogged;
63
+ private hookStats;
64
+ private hookText;
65
+ private hookConsecutiveFailures;
66
+ private hookMaxSignatureRepeats;
67
+ private hookMaxSameFileEdits;
68
+ private hookSignatureCounts;
69
+ private hookFileEditCounts;
70
+ private hookToolCalls;
71
+ private idealReviewInjected;
72
+ private loopBreakInjected;
73
+ private regroundingInjected;
74
+ private compactionOccurred;
75
+ private originalRequest;
76
+ private userQueue;
53
77
  private processManager?;
54
78
  private lspManager?;
55
79
  private mcpManager?;
@@ -60,6 +84,8 @@ export declare class AgentSession {
60
84
  private maxTokens;
61
85
  private thinkingLevel?;
62
86
  private customSystemPrompt?;
87
+ /** Shared with the tool layer so plan-mode restrictions read live state. */
88
+ private planModeRef;
63
89
  private sessionId;
64
90
  private sessionPath;
65
91
  private lastPersistedIndex;
@@ -72,6 +98,44 @@ export declare class AgentSession {
72
98
  * Process user input. Handles slash commands or runs agent loop.
73
99
  */
74
100
  prompt(content: string): Promise<void>;
101
+ /**
102
+ * Prompt with multimodal attachments (images / videos) alongside optional
103
+ * text. Images and videos become native content blocks the model can see;
104
+ * non-media files are surfaced as a text note with their saved path so the
105
+ * agent can open them with its tools. Slash-command parsing is skipped —
106
+ * attachments are always a direct conversational turn.
107
+ */
108
+ promptWithAttachments(text: string, attachments: Array<{
109
+ kind: "image" | "video" | "file";
110
+ mediaType: string;
111
+ data: string;
112
+ name: string;
113
+ path?: string;
114
+ }>): Promise<void>;
115
+ /**
116
+ * Reset per-run self-correction hook state. Mirrors the TUI's run_start
117
+ * resets so each run evaluates the hooks from a clean slate. `originalRequest`
118
+ * is the verbatim user ask, pinned for post-compaction re-grounding.
119
+ */
120
+ private resetHookState;
121
+ /**
122
+ * Fold one agent event into the hook stat accumulators. Pure bookkeeping —
123
+ * the same signals the TUI's useAgentLoop collects, so the loop-break and
124
+ * ideal-review decisions match across the CLI and the app.
125
+ */
126
+ private trackHookEvent;
127
+ /**
128
+ * Mid-loop steering hook: fires the loop-breaker when the agent looks stuck,
129
+ * then post-compaction re-grounding. At most one of each per run. Mirrors the
130
+ * TUI's getSteeringMessages ordering (minus user steering, which the app
131
+ * delivers as normal prompts).
132
+ */
133
+ private getHookSteeringMessages;
134
+ /**
135
+ * Pre-stop follow-up hook: runs the ideal review once, when the agent would
136
+ * otherwise finish and the change set is substantial enough to warrant it.
137
+ */
138
+ private getHookFollowUpMessages;
75
139
  /** Auto-compact if needed, run agent loop with auth retry, and persist messages. */
76
140
  private runLoop;
77
141
  switchModel(provider: string, model: string): Promise<void>;
@@ -99,7 +163,37 @@ export declare class AgentSession {
99
163
  */
100
164
  listBranches(): Promise<BranchInfo[]>;
101
165
  getState(): AgentSessionState;
166
+ getPlanMode(): boolean;
167
+ /** Queue a user message to be injected mid-run as steering. Returns the new
168
+ * queue length. No-op semantics are the caller's concern. */
169
+ queueMessage(text: string): number;
170
+ /** Number of messages currently queued. */
171
+ getQueuedCount(): number;
172
+ /** Clear the queue, returning the combined text (to restore to the composer). */
173
+ drainQueue(): string;
174
+ /** Snapshot of background processes (bash run_in_background), newest-state. */
175
+ listBackgroundProcesses(): BackgroundProcess[];
176
+ /** Stop a background process by id. Returns a human-readable status string. */
177
+ killBackgroundProcess(id: string): Promise<string>;
178
+ /**
179
+ * Toggle plan mode: flips the shared ref (so tools enforce read-only
180
+ * restrictions) and rebuilds the system prompt in place so the model is told
181
+ * about the mode change on its next turn. No-op when a custom system prompt
182
+ * is in force (the host owns the prompt then).
183
+ */
184
+ setPlanMode(active: boolean): Promise<void>;
102
185
  getMessages(): Message[];
186
+ /**
187
+ * Generate a short LLM session title from the conversation so far (first user
188
+ * message + first assistant reply). Best-effort; returns null on failure or
189
+ * when there's no user message yet. Uses the cheapest model for the provider.
190
+ */
191
+ generateTitle(): Promise<string | null>;
192
+ /** Current reasoning/thinking level, or undefined when thinking is off. */
193
+ getThinkingLevel(): ThinkingLevel | undefined;
194
+ /** Set the reasoning/thinking level (undefined turns thinking off). Takes
195
+ * effect on the next prompt, since the in-flight loop reads it at start. */
196
+ setThinkingLevel(level: ThinkingLevel | undefined): void;
103
197
  /** Replace the abort signal (e.g. after cancellation). */
104
198
  setSignal(signal: AbortSignal): void;
105
199
  private getPromptCacheKey;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,oBAAoB,EAGrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAwB1F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,WAAkB;IACnC,QAAQ,CAAC,aAAa,uBAA8B;IAEpD,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAyB;IAEhD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,kBAAkB,CAAC,CAAS;IAEpC,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,wFAAwF;IACxF,OAAO,CAAC,aAAa,CAAuB;IAE5C,OAAO,CAAC,IAAI,CAAsB;gBAEtB,OAAO,EAAE,mBAAmB;IAWlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4JjC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C5C,oFAAoF;YACtE,OAAO;IA8Gf,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2D3D,OAAO,CAAC,mBAAmB,CAAC,EAAE;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCX,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;;;;OAMG;IACG,MAAM,CAAC,SAAS,SAAI,GAAG,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAmCpF;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAK3C,QAAQ,IAAI,iBAAiB;IAW7B,WAAW,IAAI,OAAO,EAAE;IAIxB,0DAA0D;IAC1D,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIpC,OAAO,CAAC,iBAAiB;IAMzB,mEAAmE;IACnE,kBAAkB,IAAI,MAAM,GAAG,SAAS;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAYhB,gBAAgB;YAOhB,mBAAmB;YAmDnB,qBAAqB;YAIrB,cAAc;IAgB5B,OAAO,CAAC,yBAAyB;CA4ClC"}
1
+ {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { agentLoop, isAbortError } from "@kenkaiiii/gg-agent";
2
- import { ProviderError } from "@kenkaiiii/gg-ai";
2
+ import { ProviderError, } from "@kenkaiiii/gg-ai";
3
3
  import { EventBus } from "./event-bus.js";
4
4
  import { SlashCommandRegistry, createBuiltinCommands, } from "./slash-commands.js";
5
5
  import { PROMPT_COMMANDS, getPromptCommand } from "./prompt-commands.js";
@@ -20,6 +20,10 @@ import { MCPClientManager, getMCPServers, getAllMcpServers } from "./mcp/index.j
20
20
  import { log } from "./logger.js";
21
21
  import { setEstimatorModel } from "./compaction/token-estimator.js";
22
22
  import { discoverAgents } from "./agents.js";
23
+ import { generateSessionTitle } from "../utils/session-title.js";
24
+ import { evaluateIdealReview, buildIdealReviewMessage, } from "./ideal-review.js";
25
+ import { evaluateLoopBreak, buildLoopBreakMessage, toolCallSignature, detectTextRepetition, } from "./loop-breaker.js";
26
+ import { buildRegroundingMessage } from "./regrounding.js";
23
27
  import crypto from "node:crypto";
24
28
  import fs from "node:fs/promises";
25
29
  import path from "node:path";
@@ -35,6 +39,34 @@ export class AgentSession {
35
39
  tools = [];
36
40
  skills = [];
37
41
  cacheKeyLogged = false;
42
+ // ── Self-correction hook state (mirrors the TUI's useAgentLoop refs) ──
43
+ // Reset at the start of every run; observed from the event stream; read by
44
+ // the loop-break (mid-loop) and ideal-review (pre-stop) callbacks.
45
+ hookStats = {
46
+ changedLines: 0,
47
+ toolCalls: 0,
48
+ toolFailures: 0,
49
+ turns: 0,
50
+ writeCalls: 0,
51
+ editCalls: 0,
52
+ bashCalls: 0,
53
+ };
54
+ hookText = "";
55
+ hookConsecutiveFailures = 0;
56
+ hookMaxSignatureRepeats = 0;
57
+ hookMaxSameFileEdits = 0;
58
+ hookSignatureCounts = new Map();
59
+ hookFileEditCounts = new Map();
60
+ hookToolCalls = new Map();
61
+ idealReviewInjected = false;
62
+ loopBreakInjected = false;
63
+ regroundingInjected = false;
64
+ compactionOccurred = false;
65
+ originalRequest = "";
66
+ // Messages queued by the user while a run is in flight. Drained at the
67
+ // mid-loop steering boundary (user steering wins over the hooks), mirroring
68
+ // the TUI's getSteeringMessages.
69
+ userQueue = [];
38
70
  processManager;
39
71
  lspManager;
40
72
  mcpManager;
@@ -45,6 +77,8 @@ export class AgentSession {
45
77
  maxTokens;
46
78
  thinkingLevel;
47
79
  customSystemPrompt;
80
+ /** Shared with the tool layer so plan-mode restrictions read live state. */
81
+ planModeRef = { current: false };
48
82
  sessionId = "";
49
83
  sessionPath = "";
50
84
  lastPersistedIndex = 0;
@@ -96,6 +130,15 @@ export class AgentSession {
96
130
  // Lazy — sessionId isn't assigned yet when createTools() runs, so we
97
131
  // must defer reading the cache key until the sub-agent actually fires.
98
132
  getCacheKey: () => this.getPromptCacheKey(),
133
+ // Plan mode: only wired when the host supplies callbacks. The ref is
134
+ // shared so bash/edit/write enforce read-only restrictions live.
135
+ ...(this.opts.onEnterPlan || this.opts.onExitPlan
136
+ ? {
137
+ planModeRef: this.planModeRef,
138
+ onEnterPlan: this.opts.onEnterPlan,
139
+ onExitPlan: this.opts.onExitPlan,
140
+ }
141
+ : {}),
99
142
  });
100
143
  this.tools = tools;
101
144
  this.processManager = processManager;
@@ -228,6 +271,176 @@ export class AgentSession {
228
271
  this.lastPersistedIndex = this.messages.length;
229
272
  await this.runLoop();
230
273
  }
274
+ /**
275
+ * Prompt with multimodal attachments (images / videos) alongside optional
276
+ * text. Images and videos become native content blocks the model can see;
277
+ * non-media files are surfaced as a text note with their saved path so the
278
+ * agent can open them with its tools. Slash-command parsing is skipped —
279
+ * attachments are always a direct conversational turn.
280
+ */
281
+ async promptWithAttachments(text, attachments) {
282
+ const parts = [];
283
+ const fileNotes = [];
284
+ for (const a of attachments) {
285
+ if (a.kind === "image") {
286
+ parts.push({ type: "image", mediaType: a.mediaType, data: a.data });
287
+ }
288
+ else if (a.kind === "video") {
289
+ parts.push({ type: "video", mediaType: a.mediaType, data: a.data });
290
+ }
291
+ else if (a.path) {
292
+ fileNotes.push(`- ${a.name} (saved at ${a.path})`);
293
+ }
294
+ }
295
+ const textParts = [];
296
+ if (text.trim())
297
+ textParts.push(text.trim());
298
+ if (fileNotes.length > 0) {
299
+ textParts.push(`Attached files (inspect with your tools):\n${fileNotes.join("\n")}`);
300
+ }
301
+ if (textParts.length > 0)
302
+ parts.unshift({ type: "text", text: textParts.join("\n\n") });
303
+ if (parts.length === 0)
304
+ return;
305
+ const userMessage = { role: "user", content: parts };
306
+ this.messages.push(userMessage);
307
+ await this.persistMessage(userMessage);
308
+ this.lastPersistedIndex = this.messages.length;
309
+ await this.runLoop();
310
+ }
311
+ /**
312
+ * Reset per-run self-correction hook state. Mirrors the TUI's run_start
313
+ * resets so each run evaluates the hooks from a clean slate. `originalRequest`
314
+ * is the verbatim user ask, pinned for post-compaction re-grounding.
315
+ */
316
+ resetHookState(originalRequest) {
317
+ this.hookStats = {
318
+ changedLines: 0,
319
+ toolCalls: 0,
320
+ toolFailures: 0,
321
+ turns: 0,
322
+ writeCalls: 0,
323
+ editCalls: 0,
324
+ bashCalls: 0,
325
+ };
326
+ this.hookText = "";
327
+ this.hookConsecutiveFailures = 0;
328
+ this.hookMaxSignatureRepeats = 0;
329
+ this.hookMaxSameFileEdits = 0;
330
+ this.hookSignatureCounts.clear();
331
+ this.hookFileEditCounts.clear();
332
+ this.hookToolCalls.clear();
333
+ this.idealReviewInjected = false;
334
+ this.loopBreakInjected = false;
335
+ this.regroundingInjected = false;
336
+ this.compactionOccurred = false;
337
+ this.originalRequest = originalRequest;
338
+ }
339
+ /**
340
+ * Fold one agent event into the hook stat accumulators. Pure bookkeeping —
341
+ * the same signals the TUI's useAgentLoop collects, so the loop-break and
342
+ * ideal-review decisions match across the CLI and the app.
343
+ */
344
+ trackHookEvent(event) {
345
+ switch (event.type) {
346
+ case "text_delta":
347
+ this.hookText += event.text;
348
+ break;
349
+ case "tool_call_start":
350
+ this.hookToolCalls.set(event.toolCallId, { name: event.name, args: event.args ?? {} });
351
+ break;
352
+ case "tool_call_end": {
353
+ const call = this.hookToolCalls.get(event.toolCallId);
354
+ const name = call?.name ?? "";
355
+ const args = call?.args;
356
+ this.hookStats.toolCalls += 1;
357
+ if (event.isError)
358
+ this.hookStats.toolFailures += 1;
359
+ if (name === "write")
360
+ this.hookStats.writeCalls += 1;
361
+ if (name === "edit")
362
+ this.hookStats.editCalls += 1;
363
+ if (name === "bash")
364
+ this.hookStats.bashCalls += 1;
365
+ this.hookConsecutiveFailures = event.isError ? this.hookConsecutiveFailures + 1 : 0;
366
+ const sig = toolCallSignature(name, args);
367
+ const sigNext = (this.hookSignatureCounts.get(sig) ?? 0) + 1;
368
+ this.hookSignatureCounts.set(sig, sigNext);
369
+ if (sigNext > this.hookMaxSignatureRepeats)
370
+ this.hookMaxSignatureRepeats = sigNext;
371
+ if ((name === "edit" || name === "write") && args) {
372
+ const filePath = args.file_path;
373
+ if (typeof filePath === "string") {
374
+ const fileNext = (this.hookFileEditCounts.get(filePath) ?? 0) + 1;
375
+ this.hookFileEditCounts.set(filePath, fileNext);
376
+ if (fileNext > this.hookMaxSameFileEdits)
377
+ this.hookMaxSameFileEdits = fileNext;
378
+ }
379
+ }
380
+ if (name === "edit" && !event.isError) {
381
+ const diff = event.details?.diff ?? event.result;
382
+ const added = (diff.match(/^\+[^+]/gm) ?? []).length;
383
+ const removed = (diff.match(/^-[^-]/gm) ?? []).length;
384
+ this.hookStats.changedLines += added + removed;
385
+ }
386
+ break;
387
+ }
388
+ case "turn_end":
389
+ this.hookStats.turns = event.turn;
390
+ break;
391
+ }
392
+ }
393
+ /**
394
+ * Mid-loop steering hook: fires the loop-breaker when the agent looks stuck,
395
+ * then post-compaction re-grounding. At most one of each per run. Mirrors the
396
+ * TUI's getSteeringMessages ordering (minus user steering, which the app
397
+ * delivers as normal prompts).
398
+ */
399
+ getHookSteeringMessages() {
400
+ // User steering wins: drain any messages queued during this run first so the
401
+ // agent sees them mid-loop instead of after it stops.
402
+ if (this.userQueue.length > 0) {
403
+ const merged = this.userQueue.splice(0).join("\n\n");
404
+ return [{ role: "user", content: merged }];
405
+ }
406
+ if (!this.settingsManager.get("idealReviewEnabled"))
407
+ return null;
408
+ if (!this.loopBreakInjected) {
409
+ const decision = evaluateLoopBreak({
410
+ consecutiveFailures: this.hookConsecutiveFailures,
411
+ maxSignatureRepeats: this.hookMaxSignatureRepeats,
412
+ maxSameFileEdits: this.hookMaxSameFileEdits,
413
+ textRepetitionDetected: detectTextRepetition(this.hookText),
414
+ });
415
+ if (decision.shouldBreak) {
416
+ this.loopBreakInjected = true;
417
+ this.eventBus.emit("hook", { kind: "loop_break" });
418
+ return [buildLoopBreakMessage(decision.reasons)];
419
+ }
420
+ }
421
+ if (!this.regroundingInjected && this.compactionOccurred) {
422
+ this.regroundingInjected = true;
423
+ this.eventBus.emit("hook", { kind: "regrounding" });
424
+ return [buildRegroundingMessage(this.originalRequest)];
425
+ }
426
+ return null;
427
+ }
428
+ /**
429
+ * Pre-stop follow-up hook: runs the ideal review once, when the agent would
430
+ * otherwise finish and the change set is substantial enough to warrant it.
431
+ */
432
+ getHookFollowUpMessages() {
433
+ if (!this.settingsManager.get("idealReviewEnabled"))
434
+ return null;
435
+ if (this.idealReviewInjected)
436
+ return null;
437
+ const decision = evaluateIdealReview(this.hookStats);
438
+ if (!decision.shouldReview)
439
+ return null;
440
+ this.idealReviewInjected = true;
441
+ this.eventBus.emit("hook", { kind: "ideal" });
442
+ return [buildIdealReviewMessage(decision.reasons)];
443
+ }
231
444
  /** Auto-compact if needed, run agent loop with auth retry, and persist messages. */
232
445
  async runLoop() {
233
446
  // One-shot cache-key marker per session so turn_end cacheRead numbers
@@ -242,6 +455,11 @@ export class AgentSession {
242
455
  transient: String(!!this.opts.transient),
243
456
  });
244
457
  }
458
+ // Reset self-correction hook state for this run; pin the latest user message
459
+ // as the verbatim original request for post-compaction re-grounding.
460
+ const lastUser = [...this.messages].reverse().find((m) => m.role === "user");
461
+ const originalRequest = typeof lastUser?.content === "string" ? lastUser.content : "";
462
+ this.resetHookState(originalRequest);
245
463
  // Resolve OAuth credentials and run agent loop.
246
464
  // On 401, force-refresh the token and retry once — the provider may have
247
465
  // revoked the token server-side before the stored expiry (e.g. after a restart).
@@ -257,6 +475,8 @@ export class AgentSession {
257
475
  const threshold = this.settingsManager.get("compactThreshold");
258
476
  if (shouldCompact(this.messages, contextWindow, threshold)) {
259
477
  await this.compact(creds);
478
+ // Re-grounding hook keys off this — the context was just summarized.
479
+ this.compactionOccurred = true;
260
480
  }
261
481
  }
262
482
  const userAgent = this.provider === "anthropic" ? await getClaudeCliUserAgent() : undefined;
@@ -289,8 +509,13 @@ export class AgentSession {
289
509
  // clearToolUses disabled — causes model to output unsolicited context summaries
290
510
  // Single tool result shouldn't exceed 30% of context window (in chars)
291
511
  maxToolResultChars: Math.floor(getContextWindow(this.model, { provider: this.provider, accountId }) * 3.5 * 0.3),
512
+ // Self-correction hooks (same as the TUI): loop-break + re-grounding are
513
+ // polled mid-loop; the ideal review is polled when the agent would stop.
514
+ getSteeringMessages: () => this.getHookSteeringMessages(),
515
+ getFollowUpMessages: () => this.getHookFollowUpMessages(),
292
516
  });
293
517
  for await (const event of generator) {
518
+ this.trackHookEvent(event);
294
519
  this.eventBus.forwardAgentEvent(event);
295
520
  }
296
521
  };
@@ -478,11 +703,98 @@ export class AgentSession {
478
703
  sessionId: this.sessionId,
479
704
  sessionPath: this.sessionPath,
480
705
  messageCount: this.messages.length,
706
+ planMode: this.planModeRef.current,
481
707
  };
482
708
  }
709
+ getPlanMode() {
710
+ return this.planModeRef.current;
711
+ }
712
+ /** Queue a user message to be injected mid-run as steering. Returns the new
713
+ * queue length. No-op semantics are the caller's concern. */
714
+ queueMessage(text) {
715
+ this.userQueue.push(text);
716
+ return this.userQueue.length;
717
+ }
718
+ /** Number of messages currently queued. */
719
+ getQueuedCount() {
720
+ return this.userQueue.length;
721
+ }
722
+ /** Clear the queue, returning the combined text (to restore to the composer). */
723
+ drainQueue() {
724
+ return this.userQueue.splice(0).join("\n\n");
725
+ }
726
+ /** Snapshot of background processes (bash run_in_background), newest-state. */
727
+ listBackgroundProcesses() {
728
+ return this.processManager?.list() ?? [];
729
+ }
730
+ /** Stop a background process by id. Returns a human-readable status string. */
731
+ async killBackgroundProcess(id) {
732
+ if (!this.processManager)
733
+ return `No background process with id "${id}"`;
734
+ return this.processManager.stop(id);
735
+ }
736
+ /**
737
+ * Toggle plan mode: flips the shared ref (so tools enforce read-only
738
+ * restrictions) and rebuilds the system prompt in place so the model is told
739
+ * about the mode change on its next turn. No-op when a custom system prompt
740
+ * is in force (the host owns the prompt then).
741
+ */
742
+ async setPlanMode(active) {
743
+ this.planModeRef.current = active;
744
+ if (this.customSystemPrompt)
745
+ return;
746
+ const rebuilt = await buildSystemPrompt(this.cwd, this.skills, active, undefined, this.tools.map((tool) => tool.name), undefined, this.provider);
747
+ if (this.messages[0]?.role === "system") {
748
+ this.messages[0] = { role: "system", content: rebuilt };
749
+ }
750
+ else {
751
+ this.messages.unshift({ role: "system", content: rebuilt });
752
+ }
753
+ }
483
754
  getMessages() {
484
755
  return this.messages;
485
756
  }
757
+ /**
758
+ * Generate a short LLM session title from the conversation so far (first user
759
+ * message + first assistant reply). Best-effort; returns null on failure or
760
+ * when there's no user message yet. Uses the cheapest model for the provider.
761
+ */
762
+ async generateTitle() {
763
+ const extractText = (content) => typeof content === "string"
764
+ ? content
765
+ : content
766
+ .map((c) => c.type === "text" && "text" in c && typeof c.text === "string" ? c.text : "")
767
+ .join(" ");
768
+ const userMsg = this.messages.find((m) => m.role === "user");
769
+ const assistantMsg = this.messages.find((m) => m.role === "assistant");
770
+ const userText = userMsg ? extractText(userMsg.content) : "";
771
+ if (!userText.trim())
772
+ return null;
773
+ try {
774
+ const creds = await this.authStorage.resolveCredentials(this.provider);
775
+ const title = await generateSessionTitle({
776
+ provider: this.provider,
777
+ userMessage: userText,
778
+ assistantPreview: assistantMsg ? extractText(assistantMsg.content).slice(0, 200) : "",
779
+ apiKey: creds.accessToken,
780
+ baseUrl: this.baseUrl ?? creds.baseUrl,
781
+ accountId: creds.accountId,
782
+ });
783
+ return title || null;
784
+ }
785
+ catch {
786
+ return null;
787
+ }
788
+ }
789
+ /** Current reasoning/thinking level, or undefined when thinking is off. */
790
+ getThinkingLevel() {
791
+ return this.thinkingLevel;
792
+ }
793
+ /** Set the reasoning/thinking level (undefined turns thinking off). Takes
794
+ * effect on the next prompt, since the in-flight loop reads it at start. */
795
+ setThinkingLevel(level) {
796
+ this.thinkingLevel = level;
797
+ }
486
798
  /** Replace the abort signal (e.g. after cancellation). */
487
799
  setSignal(signal) {
488
800
  this.opts = { ...this.opts, signal };