@prestyj/cli 4.3.15 → 4.3.54

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 (148) hide show
  1. package/README.md +4 -4
  2. package/dist/cli.js +529 -74
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +122 -3
  6. package/dist/config.js.map +1 -1
  7. package/dist/core/agent-session.d.ts.map +1 -1
  8. package/dist/core/agent-session.js +41 -23
  9. package/dist/core/agent-session.js.map +1 -1
  10. package/dist/core/auth-storage.d.ts.map +1 -1
  11. package/dist/core/auth-storage.js +14 -2
  12. package/dist/core/auth-storage.js.map +1 -1
  13. package/dist/core/auto-update.d.ts +24 -3
  14. package/dist/core/auto-update.d.ts.map +1 -1
  15. package/dist/core/auto-update.js +143 -55
  16. package/dist/core/auto-update.js.map +1 -1
  17. package/dist/core/auto-update.test.d.ts +2 -0
  18. package/dist/core/auto-update.test.d.ts.map +1 -0
  19. package/dist/core/auto-update.test.js +205 -0
  20. package/dist/core/auto-update.test.js.map +1 -0
  21. package/dist/core/compaction/compactor.d.ts +4 -0
  22. package/dist/core/compaction/compactor.d.ts.map +1 -1
  23. package/dist/core/compaction/compactor.js +17 -1
  24. package/dist/core/compaction/compactor.js.map +1 -1
  25. package/dist/core/compaction/compactor.test.js +44 -11
  26. package/dist/core/compaction/compactor.test.js.map +1 -1
  27. package/dist/core/compaction/token-estimator.d.ts.map +1 -1
  28. package/dist/core/compaction/token-estimator.js +14 -1
  29. package/dist/core/compaction/token-estimator.js.map +1 -1
  30. package/dist/core/compaction/token-estimator.test.js +1 -1
  31. package/dist/core/logger.d.ts +7 -2
  32. package/dist/core/logger.d.ts.map +1 -1
  33. package/dist/core/logger.js +48 -4
  34. package/dist/core/logger.js.map +1 -1
  35. package/dist/core/model-registry.d.ts.map +1 -1
  36. package/dist/core/model-registry.js +56 -21
  37. package/dist/core/model-registry.js.map +1 -1
  38. package/dist/core/prompt-commands.d.ts.map +1 -1
  39. package/dist/core/prompt-commands.js +356 -1
  40. package/dist/core/prompt-commands.js.map +1 -1
  41. package/dist/core/settings-manager.d.ts +1 -0
  42. package/dist/core/settings-manager.d.ts.map +1 -1
  43. package/dist/core/settings-manager.js +3 -1
  44. package/dist/core/settings-manager.js.map +1 -1
  45. package/dist/core/skills.d.ts.map +1 -1
  46. package/dist/core/skills.js +29 -14
  47. package/dist/core/skills.js.map +1 -1
  48. package/dist/modes/agent-home-mode.d.ts +21 -0
  49. package/dist/modes/agent-home-mode.d.ts.map +1 -0
  50. package/dist/modes/agent-home-mode.js +553 -0
  51. package/dist/modes/agent-home-mode.js.map +1 -0
  52. package/dist/system-prompt.d.ts +5 -1
  53. package/dist/system-prompt.d.ts.map +1 -1
  54. package/dist/system-prompt.js +118 -82
  55. package/dist/system-prompt.js.map +1 -1
  56. package/dist/tools/bash.js +1 -1
  57. package/dist/tools/bash.js.map +1 -1
  58. package/dist/tools/edit.d.ts +4 -2
  59. package/dist/tools/edit.d.ts.map +1 -1
  60. package/dist/tools/edit.js +61 -33
  61. package/dist/tools/edit.js.map +1 -1
  62. package/dist/tools/edit.test.js +80 -20
  63. package/dist/tools/edit.test.js.map +1 -1
  64. package/dist/tools/grep.d.ts.map +1 -1
  65. package/dist/tools/grep.js +12 -0
  66. package/dist/tools/grep.js.map +1 -1
  67. package/dist/tools/plan-mode.test.js +22 -6
  68. package/dist/tools/plan-mode.test.js.map +1 -1
  69. package/dist/tools/prompt-hints.d.ts +10 -0
  70. package/dist/tools/prompt-hints.d.ts.map +1 -0
  71. package/dist/tools/prompt-hints.js +45 -0
  72. package/dist/tools/prompt-hints.js.map +1 -0
  73. package/dist/tools/read.d.ts.map +1 -1
  74. package/dist/tools/read.js +32 -6
  75. package/dist/tools/read.js.map +1 -1
  76. package/dist/tools/read.test.js +23 -4
  77. package/dist/tools/read.test.js.map +1 -1
  78. package/dist/tools/subagent.d.ts.map +1 -1
  79. package/dist/tools/subagent.js +20 -3
  80. package/dist/tools/subagent.js.map +1 -1
  81. package/dist/tools/write.test.js +13 -1
  82. package/dist/tools/write.test.js.map +1 -1
  83. package/dist/ui/App.d.ts +6 -1
  84. package/dist/ui/App.d.ts.map +1 -1
  85. package/dist/ui/App.js +195 -70
  86. package/dist/ui/App.js.map +1 -1
  87. package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
  88. package/dist/ui/components/ActivityIndicator.js +0 -1
  89. package/dist/ui/components/ActivityIndicator.js.map +1 -1
  90. package/dist/ui/components/EyesOverlay.d.ts +10 -0
  91. package/dist/ui/components/EyesOverlay.d.ts.map +1 -0
  92. package/dist/ui/components/EyesOverlay.js +220 -0
  93. package/dist/ui/components/EyesOverlay.js.map +1 -0
  94. package/dist/ui/components/Footer.d.ts.map +1 -1
  95. package/dist/ui/components/Footer.js +7 -6
  96. package/dist/ui/components/Footer.js.map +1 -1
  97. package/dist/ui/components/InputArea.d.ts +4 -1
  98. package/dist/ui/components/InputArea.d.ts.map +1 -1
  99. package/dist/ui/components/InputArea.js +6 -5
  100. package/dist/ui/components/InputArea.js.map +1 -1
  101. package/dist/ui/components/ModelSelector.d.ts.map +1 -1
  102. package/dist/ui/components/ModelSelector.js +2 -1
  103. package/dist/ui/components/ModelSelector.js.map +1 -1
  104. package/dist/ui/components/PlanOverlay.d.ts.map +1 -1
  105. package/dist/ui/components/PlanOverlay.js +7 -1
  106. package/dist/ui/components/PlanOverlay.js.map +1 -1
  107. package/dist/ui/components/SelectList.d.ts +3 -1
  108. package/dist/ui/components/SelectList.d.ts.map +1 -1
  109. package/dist/ui/components/SelectList.js +15 -2
  110. package/dist/ui/components/SelectList.js.map +1 -1
  111. package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
  112. package/dist/ui/components/SkillsOverlay.js +6 -59
  113. package/dist/ui/components/SkillsOverlay.js.map +1 -1
  114. package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -1
  115. package/dist/ui/components/SlashCommandMenu.js +18 -8
  116. package/dist/ui/components/SlashCommandMenu.js.map +1 -1
  117. package/dist/ui/hooks/stall-retry-duplicate.test.d.ts +2 -0
  118. package/dist/ui/hooks/stall-retry-duplicate.test.d.ts.map +1 -0
  119. package/dist/ui/hooks/stall-retry-duplicate.test.js +94 -0
  120. package/dist/ui/hooks/stall-retry-duplicate.test.js.map +1 -0
  121. package/dist/ui/hooks/useAgentLoop.d.ts +1 -1
  122. package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
  123. package/dist/ui/hooks/useAgentLoop.js +19 -0
  124. package/dist/ui/hooks/useAgentLoop.js.map +1 -1
  125. package/dist/ui/login.d.ts.map +1 -1
  126. package/dist/ui/login.js +6 -5
  127. package/dist/ui/login.js.map +1 -1
  128. package/dist/ui/stores/create-store.d.ts +15 -0
  129. package/dist/ui/stores/create-store.d.ts.map +1 -0
  130. package/dist/ui/stores/create-store.js +30 -0
  131. package/dist/ui/stores/create-store.js.map +1 -0
  132. package/dist/ui/stores/index.d.ts +3 -0
  133. package/dist/ui/stores/index.d.ts.map +1 -0
  134. package/dist/ui/stores/index.js +3 -0
  135. package/dist/ui/stores/index.js.map +1 -0
  136. package/dist/ui/stores/taskbar-store.d.ts +19 -0
  137. package/dist/ui/stores/taskbar-store.d.ts.map +1 -0
  138. package/dist/ui/stores/taskbar-store.js +59 -0
  139. package/dist/ui/stores/taskbar-store.js.map +1 -0
  140. package/dist/ui/utils/token-to-ansi.d.ts.map +1 -1
  141. package/dist/ui/utils/token-to-ansi.js +9 -1
  142. package/dist/ui/utils/token-to-ansi.js.map +1 -1
  143. package/dist/utils/image.d.ts +18 -1
  144. package/dist/utils/image.d.ts.map +1 -1
  145. package/dist/utils/image.js +80 -31
  146. package/dist/utils/image.js.map +1 -1
  147. package/dist/utils/session-title.js +1 -1
  148. package/package.json +13 -9
@@ -6,6 +6,7 @@ const SUB_AGENT_MAX_TURNS = 10;
6
6
  const SUB_AGENT_MAX_OUTPUT_CHARS = 100_000; // ~25k tokens, matches other tool limits
7
7
  const SUB_AGENT_MAX_OUTPUT_LINES = 500;
8
8
  const SUB_AGENT_MAX_STDERR_CHARS = 10_000; // Cap stderr to prevent unbounded growth
9
+ const SUB_AGENT_TIMEOUT_MS = 10 * 60 * 1000; // 10 minute hard timeout
9
10
  const SubAgentParams = z.object({
10
11
  task: z.string().describe("The task to delegate to the sub-agent"),
11
12
  agent: z
@@ -65,16 +66,28 @@ export function createSubAgentTool(cwd, agents, parentProvider, parentModel, pla
65
66
  const tokenUsage = { input: 0, output: 0 };
66
67
  let currentActivity;
67
68
  let textOutput = "";
68
- // Handle abort signal
69
- const abortHandler = () => {
69
+ // Track whether the child has actually exited
70
+ let childExited = false;
71
+ const killChild = () => {
72
+ if (childExited)
73
+ return;
70
74
  child.kill("SIGTERM");
71
75
  setTimeout(() => {
72
- if (!child.killed)
76
+ if (!childExited)
73
77
  child.kill("SIGKILL");
74
78
  }, 3000);
75
79
  };
80
+ // Handle abort signal
81
+ const abortHandler = () => killChild();
76
82
  context.signal.addEventListener("abort", abortHandler, { once: true });
83
+ // If already aborted (e.g. reset happened before we got here), kill immediately
84
+ if (context.signal.aborted)
85
+ killChild();
77
86
  return new Promise((resolve) => {
87
+ // Hard timeout to prevent subagents from hanging indefinitely
88
+ const timeout = setTimeout(() => {
89
+ killChild();
90
+ }, SUB_AGENT_TIMEOUT_MS);
78
91
  // Read NDJSON from stdout
79
92
  const rl = createInterface({ input: child.stdout });
80
93
  rl.on("line", (line) => {
@@ -132,6 +145,8 @@ export function createSubAgentTool(cwd, agents, parentProvider, parentModel, pla
132
145
  }
133
146
  });
134
147
  child.on("close", (code) => {
148
+ childExited = true;
149
+ clearTimeout(timeout);
135
150
  rl.close();
136
151
  context.signal.removeEventListener("abort", abortHandler);
137
152
  const durationMs = Date.now() - startTime;
@@ -157,6 +172,8 @@ export function createSubAgentTool(cwd, agents, parentProvider, parentModel, pla
157
172
  resolve({ content, details });
158
173
  });
159
174
  child.on("error", (err) => {
175
+ childExited = true;
176
+ clearTimeout(timeout);
160
177
  rl.close();
161
178
  context.signal.removeEventListener("abort", abortHandler);
162
179
  resolve({
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,19 @@ import path from "node:path";
4
4
  import os from "node:os";
5
5
  import { createWriteTool } from "./write.js";
6
6
  function resultToString(result) {
7
- return typeof result === "string" ? result : result.content;
7
+ if (typeof result === "string")
8
+ return result;
9
+ if (result && typeof result === "object" && "content" in result) {
10
+ const c = result.content;
11
+ if (typeof c === "string")
12
+ return c;
13
+ if (Array.isArray(c)) {
14
+ return c
15
+ .map((b) => b.type === "text" ? (b.text ?? "") : "[image]")
16
+ .join("\n");
17
+ }
18
+ }
19
+ return String(result);
8
20
  }
9
21
  describe("createWriteTool", () => {
10
22
  let tmpDir;
@@ -1 +1 @@
1
- {"version":3,"file":"write.test.js","sourceRoot":"","sources":["../../src/tools/write.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.test.js","sourceRoot":"","sources":["../../src/tools/write.test.ts"],"names":[],"mappings":"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"}
package/dist/ui/App.d.ts CHANGED
@@ -55,6 +55,11 @@ interface InfoItem {
55
55
  text: string;
56
56
  id: string;
57
57
  }
58
+ interface UpdateNoticeItem {
59
+ kind: "update_notice";
60
+ text: string;
61
+ id: string;
62
+ }
58
63
  interface QueuedItem {
59
64
  kind: "queued";
60
65
  text: string;
@@ -130,7 +135,7 @@ export interface ToolGroupItem {
130
135
  tools: ToolGroupTool[];
131
136
  id: string;
132
137
  }
133
- export type CompletedItem = UserItem | TaskItem | AssistantItem | ToolStartItem | ToolDoneItem | ServerToolStartItem | ServerToolDoneItem | ErrorItem | InfoItem | QueuedItem | CompactingItem | CompactedItem | DurationItem | BannerItem | SubAgentGroupItem | ToolGroupItem | PlanTransitionItem | TombstoneItem;
138
+ export type CompletedItem = UserItem | TaskItem | AssistantItem | ToolStartItem | ToolDoneItem | ServerToolStartItem | ServerToolDoneItem | ErrorItem | InfoItem | UpdateNoticeItem | QueuedItem | CompactingItem | CompactedItem | DurationItem | BannerItem | SubAgentGroupItem | ToolGroupItem | PlanTransitionItem | TombstoneItem;
134
139
  export interface AppProps {
135
140
  provider: Provider;
136
141
  model: string;
@@ -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":"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"}
package/dist/ui/App.js CHANGED
@@ -11,6 +11,7 @@ import { join } from "node:path";
11
11
  import { playNotificationSound } from "../utils/sound.js";
12
12
  import { extractImagePaths } from "../utils/image.js";
13
13
  import { useAgentLoop } from "./hooks/useAgentLoop.js";
14
+ import { isEyesActive, journalCount } from "@prestyj/ezcoder-eyes";
14
15
  import { UserMessage } from "./components/UserMessage.js";
15
16
  import { AssistantMessage } from "./components/AssistantMessage.js";
16
17
  import { ToolExecution } from "./components/ToolExecution.js";
@@ -18,6 +19,7 @@ import { ToolGroupExecution } from "./components/ToolGroupExecution.js";
18
19
  import { ServerToolExecution } from "./components/ServerToolExecution.js";
19
20
  import { SubAgentPanel } from "./components/SubAgentPanel.js";
20
21
  import { CompactionSpinner, CompactionDone } from "./components/CompactionNotice.js";
22
+ import { createWebSearchTool } from "../tools/web-search.js";
21
23
  import { StreamingArea } from "./components/StreamingArea.js";
22
24
  import { ActivityIndicator } from "./components/ActivityIndicator.js";
23
25
  import { InputArea } from "./components/InputArea.js";
@@ -27,6 +29,7 @@ import { PlanOverlay } from "./components/PlanOverlay.js";
27
29
  import { ModelSelector } from "./components/ModelSelector.js";
28
30
  import { TaskOverlay } from "./components/TaskOverlay.js";
29
31
  import { SkillsOverlay } from "./components/SkillsOverlay.js";
32
+ import { EyesOverlay } from "./components/EyesOverlay.js";
30
33
  import { ThemeSelector } from "./components/ThemeSelector.js";
31
34
  import { BackgroundTasksBar } from "./components/BackgroundTasksBar.js";
32
35
  import { useTheme, useSetTheme } from "./theme/theme.js";
@@ -37,6 +40,7 @@ import { getGitBranch } from "../utils/git.js";
37
40
  import { getModel, getContextWindow } from "../core/model-registry.js";
38
41
  import { SessionManager } from "../core/session-manager.js";
39
42
  import { log } from "../core/logger.js";
43
+ import { getPendingUpdate, startPeriodicUpdateCheck, stopPeriodicUpdateCheck, } from "../core/auto-update.js";
40
44
  import { generateSessionTitle } from "../utils/session-title.js";
41
45
  import { SettingsManager } from "../core/settings-manager.js";
42
46
  import { shouldCompact, compact } from "../core/compaction/compactor.js";
@@ -303,6 +307,8 @@ export function App(props) {
303
307
  const [liveItems, setLiveItems] = useState([]);
304
308
  const [overlay, setOverlay] = useState(null);
305
309
  const [taskCount, setTaskCount] = useState(() => getTaskCount(props.cwd));
310
+ const [eyesCount, setEyesCount] = useState(() => isEyesActive(props.cwd) ? journalCount({ status: "open" }, props.cwd) : undefined);
311
+ const [updatePending, setUpdatePending] = useState(() => getPendingUpdate(props.version) !== null);
306
312
  const [runAllTasks, setRunAllTasks] = useState(false);
307
313
  const runAllTasksRef = useRef(false);
308
314
  const startTaskRef = useRef(() => { });
@@ -327,7 +333,9 @@ export function App(props) {
327
333
  const persistedIndexRef = useRef(messagesRef.current.length);
328
334
  /** Last actual API-reported input token count (from turn_end). */
329
335
  const lastActualTokensRef = useRef(0);
330
- /** Timestamp of last compaction used for time-based cooldown. */
336
+ /** Timestamp (ms) when lastActualTokensRef was last updated by turn_end. */
337
+ const lastActualTokensTimestampRef = useRef(0);
338
+ /** Timestamp of last compaction — used for time-based cooldown and staleness detection. */
331
339
  const lastCompactionTimeRef = useRef(0);
332
340
  const getId = () => String(nextIdRef.current++);
333
341
  // Two-phase flush: items waiting to be moved to Static history after the
@@ -350,6 +358,14 @@ export function App(props) {
350
358
  useEffect(() => {
351
359
  getGitBranch(props.cwd).then(setGitBranch);
352
360
  }, [props.cwd]);
361
+ // Periodic update check during long sessions
362
+ useEffect(() => {
363
+ startPeriodicUpdateCheck(props.version, (msg) => {
364
+ setLiveItems((prev) => [...prev, { kind: "update_notice", text: msg, id: getId() }]);
365
+ setUpdatePending(true);
366
+ });
367
+ return () => stopPeriodicUpdateCheck();
368
+ }, [props.version]);
353
369
  // Load custom commands from .ezcoder/commands/
354
370
  const [customCommands, setCustomCommands] = useState([]);
355
371
  const reloadCustomCommands = useCallback(() => {
@@ -479,17 +495,24 @@ export function App(props) {
479
495
  signal: undefined,
480
496
  approvedPlanPath: approvedPlanPathRef.current,
481
497
  });
482
- // Replace spinner with completed notice
483
- setLiveItems((prev) => prev.map((item) => item.id === spinId
484
- ? {
485
- kind: "compacted",
486
- originalCount: result.result.originalCount,
487
- newCount: result.result.newCount,
488
- tokensBefore: result.result.tokensBeforeEstimate,
489
- tokensAfter: result.result.tokensAfterEstimate,
490
- id: spinId,
491
- }
492
- : item));
498
+ if (result.result.compacted) {
499
+ // Replace spinner with completed notice
500
+ setLiveItems((prev) => prev.map((item) => item.id === spinId
501
+ ? {
502
+ kind: "compacted",
503
+ originalCount: result.result.originalCount,
504
+ newCount: result.result.newCount,
505
+ tokensBefore: result.result.tokensBeforeEstimate,
506
+ tokensAfter: result.result.tokensAfterEstimate,
507
+ id: spinId,
508
+ }
509
+ : item));
510
+ }
511
+ else {
512
+ // Nothing was actually compacted — remove spinner silently
513
+ log("INFO", "compaction", `Compaction skipped: ${result.result.reason ?? "unknown"}`);
514
+ setLiveItems((prev) => prev.filter((item) => item.id !== spinId));
515
+ }
493
516
  return result.messages;
494
517
  }
495
518
  catch (err) {
@@ -520,7 +543,6 @@ export function App(props) {
520
543
  if (options?.force) {
521
544
  const result = await compactConversation(messages);
522
545
  lastCompactionTimeRef.current = Date.now();
523
- lastActualTokensRef.current = 0; // Reset stale pre-compaction count
524
546
  return result;
525
547
  }
526
548
  if (!autoCompact)
@@ -531,12 +553,20 @@ export function App(props) {
531
553
  return messages;
532
554
  }
533
555
  const contextWindow = getContextWindow(currentModel);
534
- // Prefer actual API-reported tokens over char-based estimate
535
- const actualTokens = lastActualTokensRef.current > 0 ? lastActualTokensRef.current : undefined;
556
+ // Prefer actual API-reported tokens over char-based estimate, but only
557
+ // when the token count was recorded AFTER the most recent compaction.
558
+ // A count from before compaction is stale — it reflects the old context
559
+ // size and would trigger compaction again immediately for no reason.
560
+ const tokensFresh = lastActualTokensTimestampRef.current > lastCompactionTimeRef.current;
561
+ const actualTokens = lastActualTokensRef.current > 0 && tokensFresh ? lastActualTokensRef.current : undefined;
536
562
  if (shouldCompact(messages, contextWindow, threshold, actualTokens)) {
563
+ const before = messages.length;
537
564
  const result = await compactConversation(messages);
538
565
  lastCompactionTimeRef.current = Date.now();
539
- lastActualTokensRef.current = 0; // Reset stale pre-compaction count
566
+ // If compaction was a no-op (e.g. too few middle messages to summarize),
567
+ // return the original reference so the agent loop doesn't replace messages.
568
+ if (result.length === before)
569
+ return messages;
540
570
  return result;
541
571
  }
542
572
  return messages;
@@ -969,6 +999,7 @@ export function App(props) {
969
999
  const inputContext = usage.inputTokens + (usage.cacheRead ?? 0) + (usage.cacheWrite ?? 0);
970
1000
  lastActualTokensRef.current =
971
1001
  currentProvider === "anthropic" ? inputContext : inputContext + usage.outputTokens;
1002
+ lastActualTokensTimestampRef.current = Date.now();
972
1003
  // For tool-only turns (no text), flush completed items to Static so
973
1004
  // liveItems doesn't grow unbounded across consecutive tool-only turns.
974
1005
  setLiveItems((prev) => {
@@ -1110,6 +1141,14 @@ export function App(props) {
1110
1141
  useEffect(() => {
1111
1142
  setTitleRunning(agentLoop.isRunning);
1112
1143
  }, [agentLoop.isRunning]);
1144
+ // Refresh eyes badge count when the agent settles (end of a turn) — a turn
1145
+ // may have logged new rough/wish/blocked signals. Also covers the case where
1146
+ // /eyes was run for the first time (manifest now exists).
1147
+ useEffect(() => {
1148
+ if (!agentLoop.isRunning) {
1149
+ setEyesCount(isEyesActive(props.cwd) ? journalCount({ status: "open" }, props.cwd) : undefined);
1150
+ }
1151
+ }, [agentLoop.isRunning, props.cwd]);
1113
1152
  // Terminal progress bar (OSC 9;4) — pulsing bar in supported terminals
1114
1153
  useTerminalProgress(agentLoop.isRunning, agentLoop.activeToolCalls.length > 0);
1115
1154
  // Animated thinking border — derived from global animation tick
@@ -1150,6 +1189,9 @@ export function App(props) {
1150
1189
  // Clear terminal screen + scrollback — needed because Ink's <Static>
1151
1190
  // writes directly to stdout and can't be removed by clearing React state
1152
1191
  stdout?.write("\x1b[2J\x1b[3J\x1b[H");
1192
+ // Discard any items queued for two-phase flush so they don't leak
1193
+ // into the new session after the Static remount.
1194
+ pendingFlushRef.current = [];
1153
1195
  setHistory([{ kind: "banner", id: "banner" }]);
1154
1196
  setLiveItems([]);
1155
1197
  setDoneStatus(null);
@@ -1160,10 +1202,14 @@ export function App(props) {
1160
1202
  void (async () => {
1161
1203
  const newPrompt = await buildSystemPrompt(props.cwd, props.skills, planMode, undefined);
1162
1204
  messagesRef.current = [{ role: "system", content: newPrompt }];
1205
+ persistedIndexRef.current = messagesRef.current.length;
1163
1206
  })();
1164
1207
  agentLoop.reset();
1165
1208
  setSessionTitle(undefined);
1166
1209
  sessionTitleGeneratedRef.current = false;
1210
+ // Bump staticKey to force Ink's <Static> to remount, discarding its
1211
+ // internal record of previously rendered items so they don't reappear.
1212
+ setStaticKey((k) => k + 1);
1167
1213
  setLiveItems([{ kind: "info", text: "Session cleared.", id: getId() }]);
1168
1214
  return;
1169
1215
  }
@@ -1172,6 +1218,24 @@ export function App(props) {
1172
1218
  setOverlay("theme");
1173
1219
  return;
1174
1220
  }
1221
+ // Open the Eyes pane — read-only review of installed probes + open signals.
1222
+ // Gated by the ezcoder-eyes manifest: in projects without /eyes set up,
1223
+ // there's nothing useful to show.
1224
+ if (trimmed === "/eyes-view" || trimmed === "/ev") {
1225
+ if (!isEyesActive(props.cwd)) {
1226
+ setLiveItems((prev) => [
1227
+ ...prev,
1228
+ {
1229
+ kind: "info",
1230
+ text: "Eyes not set up in this project. Run /setup-eyes to get started.",
1231
+ id: getId(),
1232
+ },
1233
+ ]);
1234
+ return;
1235
+ }
1236
+ setOverlay("eyes");
1237
+ return;
1238
+ }
1175
1239
  // Handle /plan — toggle plan mode
1176
1240
  if (trimmed === "/plan" || trimmed === "/plan on") {
1177
1241
  setPlanMode(true);
@@ -1351,10 +1415,14 @@ export function App(props) {
1351
1415
  setLiveItems((prev) => [...prev, queuedItem]);
1352
1416
  return;
1353
1417
  }
1354
- // Move any remaining live items into history (Static) before starting new turn
1418
+ // Move any remaining live items into history (Static) before starting a
1419
+ // new turn. Must go through queueFlush so flushGeneration bumps and the
1420
+ // drain effect actually runs — mutating pendingFlushRef directly here
1421
+ // stashed items that nothing was signalled to pick up, so they sat in
1422
+ // limbo until some unrelated later code path happened to call queueFlush.
1355
1423
  setLiveItems((prev) => {
1356
1424
  if (prev.length > 0) {
1357
- pendingFlushRef.current = [...pendingFlushRef.current, ...prev];
1425
+ queueFlush(prev);
1358
1426
  }
1359
1427
  return [];
1360
1428
  });
@@ -1429,40 +1497,57 @@ export function App(props) {
1429
1497
  const newProvider = value.slice(0, colonIdx);
1430
1498
  const newModelId = value.slice(colonIdx + 1);
1431
1499
  log("INFO", "model", `Model changed`, { provider: newProvider, model: newModelId });
1432
- // Reconnect MCP servers when provider changes
1500
+ // Handle provider-specific tool changes when provider changes
1433
1501
  setCurrentProvider((prevProvider) => {
1434
- if (newProvider !== prevProvider && props.mcpManager) {
1435
- void (async () => {
1436
- // Disconnect old MCP servers
1437
- await props.mcpManager.dispose();
1438
- // Remove old MCP tools, connect new ones
1439
- let apiKey;
1440
- if (newProvider === "glm" && props.authStorage) {
1502
+ if (newProvider !== prevProvider) {
1503
+ // Add/remove client-side web_search tool based on provider.
1504
+ // Anthropic has native server-side web search; all other providers need the client tool.
1505
+ setCurrentTools((prev) => {
1506
+ const hasWebSearch = prev.some((t) => t.name === "web_search");
1507
+ if (newProvider === "anthropic" && hasWebSearch) {
1508
+ // Switching TO anthropic remove client-side web_search (server-side handles it)
1509
+ return prev.filter((t) => t.name !== "web_search");
1510
+ }
1511
+ else if (newProvider !== "anthropic" && !hasWebSearch) {
1512
+ // Switching FROM anthropic — add client-side web_search
1513
+ return [...prev, createWebSearchTool()];
1514
+ }
1515
+ return prev;
1516
+ });
1517
+ // Reconnect MCP servers
1518
+ if (props.mcpManager) {
1519
+ void (async () => {
1520
+ // Disconnect old MCP servers
1521
+ await props.mcpManager.dispose();
1522
+ // Remove old MCP tools, connect new ones
1523
+ let apiKey;
1524
+ if (newProvider === "glm" && props.authStorage) {
1525
+ try {
1526
+ const glmCreds = await props.authStorage.resolveCredentials("glm");
1527
+ apiKey = glmCreds.accessToken;
1528
+ }
1529
+ catch {
1530
+ // GLM not configured — skip Z.AI MCP servers
1531
+ }
1532
+ }
1533
+ else if (newProvider === "glm") {
1534
+ apiKey = props.credentialsByProvider?.["glm"]?.accessToken;
1535
+ }
1441
1536
  try {
1442
- const glmCreds = await props.authStorage.resolveCredentials("glm");
1443
- apiKey = glmCreds.accessToken;
1537
+ const mcpTools = await props.mcpManager.connectAll(getMCPServers(newProvider, apiKey));
1538
+ setCurrentTools((prev) => [
1539
+ ...prev.filter((t) => !t.name.startsWith("mcp__")),
1540
+ ...mcpTools,
1541
+ ]);
1542
+ log("INFO", "mcp", `MCP servers reconnected for provider ${newProvider}`);
1444
1543
  }
1445
- catch {
1446
- // GLM not configured skip Z.AI MCP servers
1544
+ catch (err) {
1545
+ log("WARN", "mcp", `MCP reconnection failed: ${err instanceof Error ? err.message : String(err)}`);
1546
+ // Still remove old MCP tools even if reconnection fails
1547
+ setCurrentTools((prev) => prev.filter((t) => !t.name.startsWith("mcp__")));
1447
1548
  }
1448
- }
1449
- else if (newProvider === "glm") {
1450
- apiKey = props.credentialsByProvider?.["glm"]?.accessToken;
1451
- }
1452
- try {
1453
- const mcpTools = await props.mcpManager.connectAll(getMCPServers(newProvider, apiKey));
1454
- setCurrentTools((prev) => [
1455
- ...prev.filter((t) => !t.name.startsWith("mcp__")),
1456
- ...mcpTools,
1457
- ]);
1458
- log("INFO", "mcp", `MCP servers reconnected for provider ${newProvider}`);
1459
- }
1460
- catch (err) {
1461
- log("WARN", "mcp", `MCP reconnection failed: ${err instanceof Error ? err.message : String(err)}`);
1462
- // Still remove old MCP tools even if reconnection fails
1463
- setCurrentTools((prev) => prev.filter((t) => !t.name.startsWith("mcp__")));
1464
- }
1465
- })();
1549
+ })();
1550
+ }
1466
1551
  }
1467
1552
  return newProvider;
1468
1553
  });
@@ -1497,26 +1582,54 @@ export function App(props) {
1497
1582
  { kind: "info", text: `Theme switched to: ${name}`, id: getId() },
1498
1583
  ]);
1499
1584
  }, [switchTheme, props.settingsFile]);
1500
- // All available slash commands for the command palette
1501
- const allCommands = useMemo(() => [
1502
- { name: "model", aliases: ["m"], description: "Switch model" },
1503
- { name: "compact", aliases: ["c"], description: "Compact conversation" },
1504
- { name: "clear", aliases: [], description: "Clear session and terminal" },
1505
- { name: "quit", aliases: ["q", "exit"], description: "Exit the agent" },
1506
- { name: "theme", aliases: ["t"], description: "Switch theme" },
1507
- { name: "plan", aliases: [], description: "Toggle plan mode (on/off)" },
1508
- { name: "plans", aliases: [], description: "Open plans pane" },
1509
- ...PROMPT_COMMANDS.map((cmd) => ({
1510
- name: cmd.name,
1511
- aliases: cmd.aliases,
1512
- description: cmd.description,
1513
- })),
1514
- ...customCommands.map((cmd) => ({
1515
- name: cmd.name,
1516
- aliases: [],
1517
- description: cmd.description,
1518
- })),
1519
- ], [customCommands]);
1585
+ // All available slash commands for the command palette — ordered by how
1586
+ // commonly they're used and grouped by purpose; /quit stays dead last.
1587
+ const allCommands = useMemo(() => {
1588
+ const promptByName = new Map(PROMPT_COMMANDS.map((c) => [c.name, c]));
1589
+ const fromPrompt = (name) => {
1590
+ const c = promptByName.get(name);
1591
+ return c ? { name: c.name, aliases: c.aliases, description: c.description } : null;
1592
+ };
1593
+ const promptOrder = [
1594
+ // Project audits / one-shot analysis
1595
+ "init",
1596
+ "research",
1597
+ "scan",
1598
+ "verify",
1599
+ "simplify",
1600
+ "compare",
1601
+ "batch",
1602
+ // Setup / installers
1603
+ "setup-lint",
1604
+ "setup-tests",
1605
+ "setup-commit",
1606
+ "setup-update",
1607
+ "setup-eyes",
1608
+ "eyes-improve",
1609
+ "setup-skills",
1610
+ ];
1611
+ const orderedPromptCommands = promptOrder
1612
+ .map(fromPrompt)
1613
+ .filter((c) => c !== null);
1614
+ const knownPromptNames = new Set(promptOrder);
1615
+ const remainingPromptCommands = PROMPT_COMMANDS.filter((c) => !knownPromptNames.has(c.name)).map((c) => ({ name: c.name, aliases: c.aliases, description: c.description }));
1616
+ return [
1617
+ // Session actions (most frequent)
1618
+ { name: "model", aliases: ["m"], description: "Switch model" },
1619
+ { name: "compact", aliases: ["c"], description: "Compact conversation" },
1620
+ { name: "clear", aliases: [], description: "Clear session and terminal" },
1621
+ { name: "theme", aliases: ["t"], description: "Switch theme" },
1622
+ { name: "plans", aliases: [], description: "Open plans pane" },
1623
+ ...orderedPromptCommands,
1624
+ ...remainingPromptCommands,
1625
+ ...customCommands.map((cmd) => ({
1626
+ name: cmd.name,
1627
+ aliases: [],
1628
+ description: cmd.description,
1629
+ })),
1630
+ { name: "quit", aliases: ["q", "exit"], description: "Exit the agent" },
1631
+ ];
1632
+ }, [customCommands]);
1520
1633
  const renderItem = (item) => {
1521
1634
  switch (item.kind) {
1522
1635
  case "tombstone":
@@ -1545,6 +1658,8 @@ export function App(props) {
1545
1658
  }
1546
1659
  case "info":
1547
1660
  return (_jsx(Box, { marginTop: 1, flexShrink: 1, children: _jsx(Text, { color: theme.textDim, wrap: "wrap", children: item.text }) }, item.id));
1661
+ case "update_notice":
1662
+ return (_jsx(Box, { marginTop: 1, flexShrink: 1, borderStyle: "round", borderColor: theme.success, paddingX: 1, children: _jsxs(Text, { color: theme.success, bold: true, wrap: "wrap", children: ["✨ ", item.text] }) }, item.id));
1548
1663
  case "plan_transition":
1549
1664
  return (_jsx(Box, { marginTop: 1, flexShrink: 1, children: _jsxs(Text, { color: theme.planPrimary, bold: true, wrap: "wrap", children: [item.active ? "● " : "● ", item.text] }) }, item.id));
1550
1665
  case "queued":
@@ -1615,7 +1730,8 @@ export function App(props) {
1615
1730
  const isTaskView = overlay === "tasks";
1616
1731
  const isSkillsView = overlay === "skills";
1617
1732
  const isPlanView = overlay === "plan";
1618
- const isOverlayView = isTaskView || isSkillsView || isPlanView;
1733
+ const isEyesView = overlay === "eyes";
1734
+ const isOverlayView = isTaskView || isSkillsView || isPlanView || isEyesView;
1619
1735
  return (_jsxs(Box, { flexDirection: "column", width: columns, children: [_jsx(Static, { items: isOverlayView ? [] : history, style: { width: "100%" }, children: (item) => (_jsx(Box, { flexDirection: "column", paddingRight: 1, children: renderItem(item) }, item.id)) }, `${resizeKey}-${staticKey}`), isTaskView ? (_jsx(TaskOverlay, { cwd: props.cwd, agentRunning: agentLoop.isRunning, onClose: () => {
1620
1736
  stdout?.write("\x1b[2J\x1b[3J\x1b[H");
1621
1737
  setTaskCount(getTaskCount(props.cwd));
@@ -1636,6 +1752,13 @@ export function App(props) {
1636
1752
  stdout?.write("\x1b[2J\x1b[3J\x1b[H");
1637
1753
  setStaticKey((k) => k + 1);
1638
1754
  setOverlay(null);
1755
+ } })) : isEyesView ? (_jsx(EyesOverlay, { cwd: props.cwd, onClose: () => {
1756
+ stdout?.write("\x1b[2J\x1b[3J\x1b[H");
1757
+ setEyesCount(isEyesActive(props.cwd) ? journalCount({ status: "open" }, props.cwd) : undefined);
1758
+ setStaticKey((k) => k + 1);
1759
+ setOverlay(null);
1760
+ }, onQueueMessage: (msg) => {
1761
+ agentLoop.queueMessage(msg);
1639
1762
  } })) : isPlanView ? (_jsx(PlanOverlay, { cwd: props.cwd, autoExpandNewest: planAutoExpand, onClose: () => {
1640
1763
  planOverlayPendingRef.current = false;
1641
1764
  stdout?.write("\x1b[2J\x1b[3J\x1b[H");
@@ -1734,6 +1857,8 @@ export function App(props) {
1734
1857
  id: getId(),
1735
1858
  },
1736
1859
  ]);
1737
- }, cwd: props.cwd, commands: allCommands }), overlay === "model" ? (_jsx(ModelSelector, { onSelect: handleModelSelect, onCancel: () => setOverlay(null), loggedInProviders: props.loggedInProviders ?? [currentProvider], currentModel: currentModel, currentProvider: currentProvider })) : overlay === "theme" ? (_jsx(ThemeSelector, { onSelect: handleThemeSelect, onCancel: () => setOverlay(null), currentTheme: theme.name })) : (_jsx(Footer, { model: currentModel, tokensIn: agentLoop.contextUsed, cwd: props.cwd, gitBranch: gitBranch, thinkingEnabled: thinkingEnabled, planMode: planMode, exitPending: exitPending })), buddyEnabled && _jsx(Buddy, { phase: agentLoop.activityPhase }), bgTasks.length > 0 && (_jsx(BackgroundTasksBar, { tasks: bgTasks, focused: taskBarFocused, expanded: taskBarExpanded, selectedIndex: selectedTaskIndex, onExpand: handleTaskBarExpand, onCollapse: handleTaskBarCollapse, onKill: handleTaskKill, onExit: handleTaskBarExit, onNavigate: handleTaskNavigate }))] }))] }));
1860
+ }, cwd: props.cwd, commands: allCommands, eyesCount: eyesCount }), overlay === "model" ? (_jsx(ModelSelector, { onSelect: handleModelSelect, onCancel: () => setOverlay(null), loggedInProviders: props.loggedInProviders ?? [currentProvider], currentModel: currentModel, currentProvider: currentProvider })) : overlay === "theme" ? (_jsx(ThemeSelector, { onSelect: handleThemeSelect, onCancel: () => setOverlay(null), currentTheme: theme.name })) : (_jsx(Footer, { model: currentModel, tokensIn: agentLoop.contextUsed, cwd: props.cwd, gitBranch: gitBranch, thinkingEnabled: thinkingEnabled, planMode: planMode, exitPending: exitPending })), buddyEnabled && _jsx(Buddy, { phase: agentLoop.activityPhase }), (bgTasks.length > 0 ||
1861
+ (eyesCount !== undefined && eyesCount > 0) ||
1862
+ updatePending) && (_jsxs(Box, { children: [bgTasks.length > 0 && (_jsx(BackgroundTasksBar, { tasks: bgTasks, focused: taskBarFocused, expanded: taskBarExpanded, selectedIndex: selectedTaskIndex, onExpand: handleTaskBarExpand, onCollapse: handleTaskBarCollapse, onKill: handleTaskKill, onExit: handleTaskBarExit, onNavigate: handleTaskNavigate })), eyesCount !== undefined && eyesCount > 0 && (_jsx(Box, { paddingLeft: bgTasks.length > 0 ? 2 : 1, paddingRight: 1, children: _jsx(Text, { color: theme.accent, bold: true, children: `${eyesCount} eyes signal${eyesCount === 1 ? "" : "s"} · Run /eyes-improve to enhance GG Coder` }) })), updatePending && (_jsx(Box, { paddingLeft: bgTasks.length > 0 || (eyesCount !== undefined && eyesCount > 0) ? 2 : 1, paddingRight: 1, children: _jsx(Text, { color: theme.success, bold: true, children: "\u2728 Update ready \u00B7 restart to apply" }) }))] }))] }))] }));
1738
1863
  }
1739
1864
  //# sourceMappingURL=App.js.map